diff --git a/cc/cc.go b/cc/cc.go
index 5d72097..a928312 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -342,10 +342,11 @@
 
 func (c *CCBase) findToolchain(ctx common.AndroidModuleContext) Toolchain {
 	arch := ctx.Arch()
-	factory := toolchainFactories[arch.HostOrDevice][arch.ArchType]
+	hod := ctx.HostOrDevice()
+	factory := toolchainFactories[hod][arch.ArchType]
 	if factory == nil {
 		panic(fmt.Sprintf("Toolchain not found for %s arch %q",
-			arch.HostOrDevice.String(), arch.String()))
+			hod.String(), arch.String()))
 	}
 	return factory(arch.ArchVariant, arch.CpuVariant)
 }
@@ -471,13 +472,13 @@
 			flags.GlobalFlags = append(flags.GlobalFlags,
 				toolchain.ClangCflags(),
 				"${commonClangGlobalCflags}",
-				fmt.Sprintf("${%sClangGlobalCflags}", ctx.Arch().HostOrDevice))
+				fmt.Sprintf("${%sClangGlobalCflags}", ctx.HostOrDevice()))
 		} else {
 			flags.CppFlags = append(flags.CppFlags, "${commonGlobalCppflags}")
 			flags.GlobalFlags = append(flags.GlobalFlags,
 				toolchain.Cflags(),
 				"${commonGlobalCflags}",
-				fmt.Sprintf("${%sGlobalCflags}", ctx.Arch().HostOrDevice))
+				fmt.Sprintf("${%sGlobalCflags}", ctx.HostOrDevice()))
 		}
 
 		if ctx.Device() {
@@ -588,7 +589,7 @@
 					// of host and device.  Ignore the disabled one.
 					return
 				}
-				if a.HostOrDevice() != ctx.Arch().HostOrDevice {
+				if a.HostOrDevice() != ctx.HostOrDevice() {
 					ctx.ModuleErrorf("host/device mismatch between %q and %q", ctx.ModuleName(),
 						otherName)
 					return
diff --git a/cmd/soong_build/main.go b/cmd/soong_build/main.go
index f8c32cb..b7c4198 100644
--- a/cmd/soong_build/main.go
+++ b/cmd/soong_build/main.go
@@ -75,6 +75,7 @@
 	ctx.RegisterModuleType("android_app", java.AndroidAppFactory)
 
 	// Mutators
+	ctx.RegisterEarlyMutator("host_or_device", common.HostOrDeviceMutator)
 	ctx.RegisterEarlyMutator("arch", common.ArchMutator)
 	ctx.RegisterEarlyMutator("link", cc.LinkageMutator)
 	ctx.RegisterEarlyMutator("test_per_src", cc.TestPerSrcMutator)
diff --git a/common/arch.go b/common/arch.go
index 38613a0..2a09ae9 100644
--- a/common/arch.go
+++ b/common/arch.go
@@ -129,15 +129,14 @@
 
 // An Arch indicates a single CPU architecture.
 type Arch struct {
-	HostOrDevice HostOrDevice
-	ArchType     ArchType
-	ArchVariant  string
-	CpuVariant   string
-	Abi          string
+	ArchType    ArchType
+	ArchVariant string
+	CpuVariant  string
+	Abi         string
 }
 
 func (a Arch) String() string {
-	s := a.HostOrDevice.String() + "_" + a.ArchType.String()
+	s := a.ArchType.String()
 	if a.ArchVariant != "" {
 		s += "_" + a.ArchVariant
 	}
@@ -247,37 +246,60 @@
 
 var (
 	armArch = Arch{
-		HostOrDevice: Device,
-		ArchType:     Arm,
-		ArchVariant:  "armv7-a-neon",
-		CpuVariant:   "cortex-a15",
-		Abi:          "armeabi-v7a",
+		ArchType:    Arm,
+		ArchVariant: "armv7-a-neon",
+		CpuVariant:  "cortex-a15",
+		Abi:         "armeabi-v7a",
 	}
 	arm64Arch = Arch{
-		HostOrDevice: Device,
-		ArchType:     Arm64,
-		ArchVariant:  "armv8-a",
-		CpuVariant:   "denver",
-		Abi:          "arm64-v8a",
+		ArchType:    Arm64,
+		ArchVariant: "armv8-a",
+		CpuVariant:  "denver",
+		Abi:         "arm64-v8a",
 	}
-	hostArch = Arch{
-		HostOrDevice: Host,
-		ArchType:     X86,
+	x86Arch = Arch{
+		ArchType: X86,
 	}
-	host64Arch = Arch{
-		HostOrDevice: Host,
-		ArchType:     X86_64,
+	x8664Arch = Arch{
+		ArchType: X86_64,
 	}
-	commonDevice = Arch{
-		HostOrDevice: Device,
-		ArchType:     Common,
-	}
-	commonHost = Arch{
-		HostOrDevice: Host,
-		ArchType:     Common,
+	commonArch = Arch{
+		ArchType: Common,
 	}
 )
 
+func HostOrDeviceMutator(mctx blueprint.EarlyMutatorContext) {
+	var module AndroidModule
+	var ok bool
+	if module, ok = mctx.Module().(AndroidModule); !ok {
+		return
+	}
+
+	hods := []HostOrDevice{}
+
+	if module.base().HostSupported() {
+		hods = append(hods, Host)
+	}
+
+	if module.base().DeviceSupported() {
+		hods = append(hods, Device)
+	}
+
+	if len(hods) == 0 {
+		return
+	}
+
+	hodNames := []string{}
+	for _, hod := range hods {
+		hodNames = append(hodNames, hod.String())
+	}
+
+	modules := mctx.CreateVariations(hodNames...)
+	for i, m := range modules {
+		m.(AndroidModule).base().SetHostOrDevice(hods[i])
+	}
+}
+
 func ArchMutator(mctx blueprint.EarlyMutatorContext) {
 	var module AndroidModule
 	var ok bool
@@ -290,19 +312,19 @@
 
 	arches := []Arch{}
 
-	if module.base().HostSupported() {
+	if module.base().HostSupported() && module.base().HostOrDevice().Host() {
 		switch module.base().commonProperties.Compile_multilib {
 		case "common":
-			arches = append(arches, commonHost)
+			arches = append(arches, commonArch)
 		default:
-			arches = append(arches, host64Arch)
+			arches = append(arches, x8664Arch)
 		}
 	}
 
-	if module.base().DeviceSupported() {
+	if module.base().DeviceSupported() && module.base().HostOrDevice().Device() {
 		switch module.base().commonProperties.Compile_multilib {
 		case "common":
-			arches = append(arches, commonDevice)
+			arches = append(arches, commonArch)
 		case "both":
 			arches = append(arches, arm64Arch, armArch)
 		case "first", "64":
@@ -328,7 +350,7 @@
 
 	for i, m := range modules {
 		m.(AndroidModule).base().SetArch(arches[i])
-		m.(AndroidModule).base().setArchProperties(mctx, arches[i])
+		m.(AndroidModule).base().setArchProperties(mctx)
 	}
 }
 
@@ -373,7 +395,10 @@
 }
 
 // Rewrite the module's properties structs to contain arch-specific values.
-func (a *AndroidModuleBase) setArchProperties(ctx blueprint.EarlyMutatorContext, arch Arch) {
+func (a *AndroidModuleBase) setArchProperties(ctx blueprint.EarlyMutatorContext) {
+	arch := a.commonProperties.CompileArch
+	hod := a.commonProperties.CompileHostOrDevice
+
 	if arch.ArchType == Common {
 		return
 	}
@@ -406,7 +431,6 @@
 		//         key: value,
 		//     },
 		// },
-		hod := arch.HostOrDevice
 		a.extendProperties(ctx, "target", hod.FieldLower(), generalPropsValue,
 			reflect.ValueOf(a.archProperties[i].Target).FieldByName(hod.Field()).Elem().Elem())
 
diff --git a/common/module.go b/common/module.go
index d933788..ef7c63a 100644
--- a/common/module.go
+++ b/common/module.go
@@ -32,6 +32,7 @@
 
 type androidBaseContext interface {
 	Arch() Arch
+	HostOrDevice() HostOrDevice
 	Host() bool
 	Device() bool
 	Darwin() bool
@@ -86,6 +87,9 @@
 	// platform
 	Compile_multilib string
 
+	// Set by HostOrDeviceMutator
+	CompileHostOrDevice HostOrDevice `blueprint:"mutated"`
+
 	// Set by ArchMutator
 	CompileArch Arch `blueprint:"mutated"`
 
@@ -196,12 +200,16 @@
 	return a
 }
 
+func (a *AndroidModuleBase) SetHostOrDevice(hod HostOrDevice) {
+	a.commonProperties.CompileHostOrDevice = hod
+}
+
 func (a *AndroidModuleBase) SetArch(arch Arch) {
 	a.commonProperties.CompileArch = arch
 }
 
 func (a *AndroidModuleBase) HostOrDevice() HostOrDevice {
-	return a.commonProperties.CompileArch.HostOrDevice
+	return a.commonProperties.CompileHostOrDevice
 }
 
 func (a *AndroidModuleBase) HostSupported() bool {
@@ -293,6 +301,7 @@
 		DynamicDependerModuleContext: ctx,
 		androidBaseContextImpl: androidBaseContextImpl{
 			arch:   a.commonProperties.CompileArch,
+			hod:    a.commonProperties.CompileHostOrDevice,
 			config: ctx.Config().(Config),
 		},
 	}
@@ -309,6 +318,7 @@
 		ModuleContext: ctx,
 		androidBaseContextImpl: androidBaseContextImpl{
 			arch:   a.commonProperties.CompileArch,
+			hod:    a.commonProperties.CompileHostOrDevice,
 			config: ctx.Config().(Config),
 		},
 		installDeps:        a.computeInstallDeps(ctx),
@@ -336,6 +346,7 @@
 
 type androidBaseContextImpl struct {
 	arch   Arch
+	hod    HostOrDevice
 	debug  bool
 	config Config
 }
@@ -366,16 +377,20 @@
 	return a.arch
 }
 
+func (a *androidBaseContextImpl) HostOrDevice() HostOrDevice {
+	return a.hod
+}
+
 func (a *androidBaseContextImpl) Host() bool {
-	return a.arch.HostOrDevice.Host()
+	return a.hod.Host()
 }
 
 func (a *androidBaseContextImpl) Device() bool {
-	return a.arch.HostOrDevice.Device()
+	return a.hod.Device()
 }
 
 func (a *androidBaseContextImpl) Darwin() bool {
-	return a.arch.HostOrDevice.Host() && runtime.GOOS == "darwin"
+	return a.hod.Host() && runtime.GOOS == "darwin"
 }
 
 func (a *androidBaseContextImpl) Debug() bool {
@@ -391,7 +406,7 @@
 
 	config := a.AConfig()
 	var fullInstallPath string
-	if a.arch.HostOrDevice.Device() {
+	if a.hod.Device() {
 		// TODO: replace unset with a device name once we have device targeting
 		fullInstallPath = filepath.Join(config.DeviceOut(), "system",
 			installPath, name)
