Enable arm_on_x86 mode when arm is a secondary arch

Enable arm_on_x86 mode whenever compiling for x86 on the device,
and either arm is listed as an ABI on the x86 arch, or arm exists
as a target arch.

Bug: 35286489
Test: examine bcc cflags
Change-Id: Iebd0e7b95f584d25773a60474c27425cac7a578e
This commit is contained in:
Colin Cross 2017-04-13 16:56:14 -07:00
parent 1b59409256
commit 4247f0d0ed
1 changed files with 22 additions and 10 deletions

View File

@ -716,17 +716,19 @@ func (a *ModuleBase) setArchProperties(ctx BottomUpMutatorContext) {
prefix := "target.android32"
a.appendProperties(ctx, genProps, targetProp, field, prefix)
}
}
if arch.ArchType == X86 && hasArmAbi(arch) {
field := "Arm_on_x86"
prefix := "target.arm_on_x86"
a.appendProperties(ctx, genProps, targetProp, field, prefix)
}
if arch.ArchType == X86_64 && hasArmAbi(arch) {
field := "Arm_on_x86_64"
prefix := "target.arm_on_x86_64"
a.appendProperties(ctx, genProps, targetProp, field, prefix)
if arch.ArchType == X86 && (hasArmAbi(arch) ||
hasArmAndroidArch(ctx.AConfig().Targets[Device])) {
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.AConfig().Targets[Device])) {
field := "Arm_on_x86_64"
prefix := "target.arm_on_x86_64"
a.appendProperties(ctx, genProps, targetProp, field, prefix)
}
}
}
}
@ -835,6 +837,16 @@ func hasArmAbi(arch Arch) bool {
return false
}
// hasArmArch returns true if targets has at least arm Android arch
func hasArmAndroidArch(targets []Target) bool {
for _, target := range targets {
if target.Os == Android && target.Arch.ArchType == Arm {
return true
}
}
return false
}
type archConfig struct {
arch string
archVariant string