diff --git a/android/androidmk.go b/android/androidmk.go index 5df4a8560..703052315 100644 --- a/android/androidmk.go +++ b/android/androidmk.go @@ -215,7 +215,7 @@ func translateAndroidModule(ctx SingletonContext, w io.Writer, mod blueprint.Mod } - if amod.Arch().ArchType != ctx.Config().Targets[amod.Os().Class][0].Arch.ArchType { + if amod.Arch().ArchType != ctx.Config().Targets[amod.Os()][0].Arch.ArchType { prefix = "2ND_" + prefix } } diff --git a/android/arch.go b/android/arch.go index 33783170b..e250c6e79 100644 --- a/android/arch.go +++ b/android/arch.go @@ -325,37 +325,46 @@ func archMutator(mctx BottomUpMutatorContext) { return } - osClasses := base.OsClassSupported() - var moduleTargets []Target moduleMultiTargets := make(map[int][]Target) primaryModules := make(map[int]bool) + osClasses := base.OsClassSupported() - for _, class := range osClasses { - classTargets := mctx.Config().Targets[class] - if len(classTargets) == 0 { + for _, os := range osTypeList { + supportedClass := false + for _, osClass := range osClasses { + if os.Class == osClass { + supportedClass = true + } + } + if !supportedClass { + continue + } + + osTargets := mctx.Config().Targets[os] + if len(osTargets) == 0 { continue } // only the primary arch in the recovery partition - if module.InstallInRecovery() { - classTargets = []Target{mctx.Config().Targets[Device][0]} + if os == Android && module.InstallInRecovery() { + osTargets = []Target{osTargets[0]} } prefer32 := false if base.prefer32 != nil { - prefer32 = base.prefer32(mctx, base, class) + prefer32 = base.prefer32(mctx, base, os.Class) } - multilib, extraMultilib := decodeMultilib(base, class) - targets, err := decodeMultilibTargets(multilib, classTargets, prefer32) + multilib, extraMultilib := decodeMultilib(base, os.Class) + targets, err := decodeMultilibTargets(multilib, osTargets, prefer32) if err != nil { mctx.ModuleErrorf("%s", err.Error()) } var multiTargets []Target if extraMultilib != "" { - multiTargets, err = decodeMultilibTargets(extraMultilib, classTargets, prefer32) + multiTargets, err = decodeMultilibTargets(extraMultilib, osTargets, prefer32) if err != nil { mctx.ModuleErrorf("%s", err.Error()) } @@ -839,17 +848,17 @@ func (a *ModuleBase) setArchProperties(ctx BottomUpMutatorContext) { } if (arch.ArchType == X86 && (hasArmAbi(arch) || - hasArmAndroidArch(ctx.Config().Targets[Device]))) || + hasArmAndroidArch(ctx.Config().Targets[Android]))) || (arch.ArchType == Arm && - hasX86AndroidArch(ctx.Config().Targets[Device])) { + hasX86AndroidArch(ctx.Config().Targets[Android])) { field := "Arm_on_x86" prefix := "target.arm_on_x86" a.appendProperties(ctx, genProps, targetProp, field, prefix) } if (arch.ArchType == X86_64 && (hasArmAbi(arch) || - hasArmAndroidArch(ctx.Config().Targets[Device]))) || + hasArmAndroidArch(ctx.Config().Targets[Android]))) || (arch.ArchType == Arm && - hasX8664AndroidArch(ctx.Config().Targets[Device])) { + hasX8664AndroidArch(ctx.Config().Targets[Android])) { field := "Arm_on_x86_64" prefix := "target.arm_on_x86_64" a.appendProperties(ctx, genProps, targetProp, field, prefix) @@ -874,10 +883,10 @@ func forEachInterface(v reflect.Value, f func(reflect.Value)) { } // Convert the arch product variables into a list of targets for each os class structs -func decodeTargetProductVariables(config *config) (map[OsClass][]Target, error) { +func decodeTargetProductVariables(config *config) (map[OsType][]Target, error) { variables := config.productVariables - targets := make(map[OsClass][]Target) + targets := make(map[OsType][]Target) var targetErr error addTarget := func(os OsType, archName string, archVariant, cpuVariant *string, abi *[]string) { @@ -891,7 +900,7 @@ func decodeTargetProductVariables(config *config) (map[OsClass][]Target, error) return } - targets[os.Class] = append(targets[os.Class], + targets[os] = append(targets[os], Target{ Os: os, Arch: arch, @@ -938,7 +947,7 @@ func decodeTargetProductVariables(config *config) (map[OsClass][]Target, error) variables.DeviceSecondaryArchVariant, variables.DeviceSecondaryCpuVariant, variables.DeviceSecondaryAbi) - deviceArches := targets[Device] + deviceArches := targets[Android] if deviceArches[0].Arch.ArchType.Multilib == deviceArches[1].Arch.ArchType.Multilib { deviceArches[1].Arch.Native = false } diff --git a/android/config.go b/android/config.go index bea6f603f..0aee0e306 100644 --- a/android/config.go +++ b/android/config.go @@ -90,7 +90,7 @@ type config struct { ConfigFileName string ProductVariablesFileName string - Targets map[OsClass][]Target + Targets map[OsType][]Target BuildOsVariant string BuildOsCommonVariant string @@ -230,18 +230,18 @@ func TestArchConfig(buildDir string, env map[string]string) Config { testConfig := TestConfig(buildDir, env) config := testConfig.config - config.Targets = map[OsClass][]Target{ - Device: []Target{ + config.Targets = map[OsType][]Target{ + Android: []Target{ {Android, Arch{ArchType: Arm64, ArchVariant: "armv8-a", Native: true, Abi: []string{"arm64-v8a"}}}, {Android, Arch{ArchType: Arm, ArchVariant: "armv7-a-neon", Native: true, Abi: []string{"armeabi-v7a"}}}, }, - Host: []Target{ + BuildOs: []Target{ {BuildOs, Arch{ArchType: X86_64}}, {BuildOs, Arch{ArchType: X86}}, }, } - config.BuildOsVariant = config.Targets[Host][0].String() + config.BuildOsVariant = config.Targets[BuildOs][0].String() return testConfig } @@ -304,16 +304,16 @@ func NewConfig(srcDir, buildDir string) (Config, error) { } if archConfig != nil { - deviceTargets, err := decodeArchSettings(archConfig) + androidTargets, err := decodeArchSettings(archConfig) if err != nil { return Config{}, err } - targets[Device] = deviceTargets + targets[Android] = androidTargets } config.Targets = targets - config.BuildOsVariant = targets[Host][0].String() - config.BuildOsCommonVariant = getCommonTargets(targets[Host])[0].String() + config.BuildOsVariant = targets[BuildOs][0].String() + config.BuildOsCommonVariant = getCommonTargets(targets[BuildOs])[0].String() if err := config.fromEnv(); err != nil { return Config{}, err @@ -587,7 +587,7 @@ func (c *config) DevicePrefer32BitExecutables() bool { } func (c *config) DevicePrimaryArchType() ArchType { - return c.Targets[Device][0].Arch.ArchType + return c.Targets[Android][0].Arch.ArchType } func (c *config) SkipDeviceInstall() bool { @@ -624,7 +624,7 @@ func (c *config) EnableCFI() bool { } func (c *config) Android64() bool { - for _, t := range c.Targets[Device] { + for _, t := range c.Targets[Android] { if t.Arch.ArchType.Multilib == "lib64" { return true } @@ -663,8 +663,8 @@ func (c *config) LibartImgHostBaseAddress() string { func (c *config) LibartImgDeviceBaseAddress() string { archType := Common - if len(c.Targets[Device]) > 0 { - archType = c.Targets[Device][0].Arch.ArchType + if len(c.Targets[Android]) > 0 { + archType = c.Targets[Android][0].Arch.ArchType } switch archType { default: @@ -711,7 +711,7 @@ func (c *config) HostStaticBinaries() bool { func (c *deviceConfig) Arches() []Arch { var arches []Arch - for _, target := range c.config.Targets[Device] { + for _, target := range c.config.Targets[Android] { arches = append(arches, target.Arch) } return arches diff --git a/android/module.go b/android/module.go index 9d9d9a938..556c73dca 100644 --- a/android/module.go +++ b/android/module.go @@ -1071,10 +1071,10 @@ func (a *androidBaseContextImpl) Debug() bool { } func (a *androidBaseContextImpl) PrimaryArch() bool { - if len(a.config.Targets[a.target.Os.Class]) <= 1 { + if len(a.config.Targets[a.target.Os]) <= 1 { return true } - return a.target.Arch.ArchType == a.config.Targets[a.target.Os.Class][0].Arch.ArchType + return a.target.Arch.ArchType == a.config.Targets[a.target.Os][0].Arch.ArchType } func (a *androidBaseContextImpl) AConfig() Config { diff --git a/cc/makevars.go b/cc/makevars.go index b59078609..32674a9d2 100644 --- a/cc/makevars.go +++ b/cc/makevars.go @@ -172,13 +172,13 @@ func makeVarsProvider(ctx android.MakeVarsContext) { sort.Strings(ndkMigratedLibs) ctx.Strict("NDK_MIGRATED_LIBS", strings.Join(ndkMigratedLibs, " ")) - hostTargets := ctx.Config().Targets[android.Host] + hostTargets := ctx.Config().Targets[android.BuildOs] makeVarsToolchain(ctx, "", hostTargets[0]) if len(hostTargets) > 1 { makeVarsToolchain(ctx, "2ND_", hostTargets[1]) } - crossTargets := ctx.Config().Targets[android.HostCross] + crossTargets := ctx.Config().Targets[android.Windows] if len(crossTargets) > 0 { makeVarsToolchain(ctx, "", crossTargets[0]) if len(crossTargets) > 1 { @@ -186,7 +186,7 @@ func makeVarsProvider(ctx android.MakeVarsContext) { } } - deviceTargets := ctx.Config().Targets[android.Device] + deviceTargets := ctx.Config().Targets[android.Android] makeVarsToolchain(ctx, "", deviceTargets[0]) if len(deviceTargets) > 1 { makeVarsToolchain(ctx, "2ND_", deviceTargets[1])