summaryrefslogtreecommitdiff
path: root/android/arch.go
diff options
context:
space:
mode:
authoralk3pInjection <webmaster@raspii.tech>2023-04-20 00:08:54 +0800
committeralk3pInjection <webmaster@raspii.tech>2023-04-20 00:08:54 +0800
commit923de58d67f7706e390551aa39c3c200100508b3 (patch)
treee7624ee1c43130597c12251dc0e93798bb853af8 /android/arch.go
parent3ba16183209cb452f73eb482cb04c1e7403c8586 (diff)
parent4993a08b8d37d5075ea0101a09ed9bbde4687ab9 (diff)
Merge tag 'LA.QSSI.13.0.r1-09800-qssi.0' into tachibanatachibana
"LA.QSSI.13.0.r1-09800-qssi.0" Change-Id: If5115134fea6c667ca1b5c8f50861ef9e3398842
Diffstat (limited to 'android/arch.go')
-rw-r--r--android/arch.go12
1 files changed, 10 insertions, 2 deletions
diff --git a/android/arch.go b/android/arch.go
index cbf77c758..3587b469f 100644
--- a/android/arch.go
+++ b/android/arch.go
@@ -655,7 +655,8 @@ func archMutator(bpctx blueprint.BottomUpMutatorContext) {
prefer32 := os == Windows
// Determine the multilib selection for this module.
- multilib, extraMultilib := decodeMultilib(base, os)
+ force_first_on_device := mctx.Config().ForceMultilibFirstOnDevice()
+ multilib, extraMultilib := decodeMultilib(base, os, force_first_on_device)
// Convert the multilib selection into a list of Targets.
targets, err := decodeMultilibTargets(multilib, osTargets, prefer32)
@@ -730,7 +731,7 @@ func addTargetProperties(m Module, target Target, multiTargets []Target, primary
// multilib from the factory's call to InitAndroidArchModule if none was set. For modules that
// called InitAndroidMultiTargetsArchModule it always returns "common" for multilib, and returns
// the actual multilib in extraMultilib.
-func decodeMultilib(base *ModuleBase, os OsType) (multilib, extraMultilib string) {
+func decodeMultilib(base *ModuleBase, os OsType, force_first_on_device bool) (multilib, extraMultilib string) {
// First check the "android.compile_multilib" or "host.compile_multilib" properties.
switch os.Class {
case Device:
@@ -749,6 +750,13 @@ func decodeMultilib(base *ModuleBase, os OsType) (multilib, extraMultilib string
multilib = base.commonProperties.Default_multilib
}
+ // If a device is configured with multiple targets, this option
+ // force all device targets that prefer32 to be compiled only as
+ // the first target.
+ if force_first_on_device && os.Class == Device && (multilib == "prefer32" || multilib == "first_prefer32") {
+ multilib = "first"
+ }
+
if base.commonProperties.UseTargetVariants {
// Darwin has the concept of "universal binaries" which is implemented in Soong by
// building both x86_64 and arm64 variants, and having select module types know how to