From 4247f0d0ed57d435862d90d69de922d477ceed3b Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Thu, 13 Apr 2017 16:56:14 -0700 Subject: 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 --- android/arch.go | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/android/arch.go b/android/arch.go index f9697bc1..2d0515ff 100644 --- a/android/arch.go +++ b/android/arch.go @@ -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 -- cgit v1.2.3