Add -D__ANDROID_NATIVE_BRIDGE__ to native_bridge targets
And remove dual meaning from arm_on_x86 target. It was set for x86 targets with arm support and for arm targets with x86 support - and that 2nd one was abused for native_bridge version of RenderScript. It's much safer and cleaner to rely on __ANDROID_NATIVE_BRIDGE__ there while leaving arm_on_x86 to mean "x86 binary built in the image with arm support". It's only used by bcc compiler which is in canadian-cross situation here: it's pure x86-64 binary, but it needs to know about ALL supported architectures on device because it needs to include appropriate codegen module. Bug: http://b/153609531 Test: cts-tradefed run cts --abi armeabi-v7a -m CtsRsCppTestCases Test: cts-tradefed run cts --abi arm64-v8a -m CtsRsCppTestCases Change-Id: I869212e0b82eeaa30361a4e183d5c862ab40ef12
This commit is contained in:
@@ -1396,20 +1396,15 @@ func (m *ModuleBase) setArchProperties(ctx BottomUpMutatorContext) {
|
|||||||
// key: value,
|
// key: value,
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// TODO(ccross): is this still necessary with native bridge?
|
|
||||||
if os.Class == Device {
|
if os.Class == Device {
|
||||||
if (arch.ArchType == X86 && (hasArmAbi(arch) ||
|
if arch.ArchType == X86 && (hasArmAbi(arch) ||
|
||||||
hasArmAndroidArch(ctx.Config().Targets[Android]))) ||
|
hasArmAndroidArch(ctx.Config().Targets[Android])) {
|
||||||
(arch.ArchType == Arm &&
|
|
||||||
hasX86AndroidArch(ctx.Config().Targets[Android])) {
|
|
||||||
field := "Arm_on_x86"
|
field := "Arm_on_x86"
|
||||||
prefix := "target.arm_on_x86"
|
prefix := "target.arm_on_x86"
|
||||||
m.appendProperties(ctx, genProps, targetProp, field, prefix)
|
m.appendProperties(ctx, genProps, targetProp, field, prefix)
|
||||||
}
|
}
|
||||||
if (arch.ArchType == X86_64 && (hasArmAbi(arch) ||
|
if arch.ArchType == X86_64 && (hasArmAbi(arch) ||
|
||||||
hasArmAndroidArch(ctx.Config().Targets[Android]))) ||
|
hasArmAndroidArch(ctx.Config().Targets[Android])) {
|
||||||
(arch.ArchType == Arm &&
|
|
||||||
hasX8664AndroidArch(ctx.Config().Targets[Android])) {
|
|
||||||
field := "Arm_on_x86_64"
|
field := "Arm_on_x86_64"
|
||||||
prefix := "target.arm_on_x86_64"
|
prefix := "target.arm_on_x86_64"
|
||||||
m.appendProperties(ctx, genProps, targetProp, field, prefix)
|
m.appendProperties(ctx, genProps, targetProp, field, prefix)
|
||||||
@@ -1556,27 +1551,7 @@ func hasArmAbi(arch Arch) bool {
|
|||||||
// hasArmArch returns true if targets has at least non-native_bridge arm Android arch
|
// hasArmArch returns true if targets has at least non-native_bridge arm Android arch
|
||||||
func hasArmAndroidArch(targets []Target) bool {
|
func hasArmAndroidArch(targets []Target) bool {
|
||||||
for _, target := range targets {
|
for _, target := range targets {
|
||||||
if target.Os == Android && target.Arch.ArchType == Arm && target.NativeBridge == NativeBridgeDisabled {
|
if target.Os == Android && target.Arch.ArchType == Arm {
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// hasX86Arch returns true if targets has at least x86 Android arch
|
|
||||||
func hasX86AndroidArch(targets []Target) bool {
|
|
||||||
for _, target := range targets {
|
|
||||||
if target.Os == Android && target.Arch.ArchType == X86 {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// hasX8664Arch returns true if targets has at least x86_64 Android arch
|
|
||||||
func hasX8664AndroidArch(targets []Target) bool {
|
|
||||||
for _, target := range targets {
|
|
||||||
if target.Os == Android && target.Arch.ArchType == X86_64 {
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -345,6 +345,10 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags, deps
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ctx.Target().NativeBridge == android.NativeBridgeEnabled {
|
||||||
|
flags.Global.CommonFlags = append(flags.Global.CommonFlags, "-D__ANDROID_NATIVE_BRIDGE__")
|
||||||
|
}
|
||||||
|
|
||||||
instructionSet := String(compiler.Properties.Instruction_set)
|
instructionSet := String(compiler.Properties.Instruction_set)
|
||||||
if flags.RequiredInstructionSet != "" {
|
if flags.RequiredInstructionSet != "" {
|
||||||
instructionSet = flags.RequiredInstructionSet
|
instructionSet = flags.RequiredInstructionSet
|
||||||
|
Reference in New Issue
Block a user