diff --git a/android/module.go b/android/module.go index a05819957..77765f1b1 100644 --- a/android/module.go +++ b/android/module.go @@ -1067,6 +1067,16 @@ func (a *androidBaseContextImpl) ProductServicesSpecific() bool { return a.kind == productServicesSpecificModule } +// Makes this module a platform module, i.e. not specific to soc, device, +// product, or product_services. +func (a *ModuleBase) MakeAsPlatform() { + a.commonProperties.Vendor = boolPtr(false) + a.commonProperties.Proprietary = boolPtr(false) + a.commonProperties.Soc_specific = boolPtr(false) + a.commonProperties.Product_specific = boolPtr(false) + a.commonProperties.Product_services_specific = boolPtr(false) +} + func (a *androidModuleContext) InstallInData() bool { return a.module.InstallInData() } diff --git a/cc/cc.go b/cc/cc.go index 7f6564097..07dd23c20 100644 --- a/cc/cc.go +++ b/cc/cc.go @@ -1741,6 +1741,7 @@ func imageMutator(mctx android.BottomUpMutatorContext) { } else if v == recoveryMode { m := mod[i].(*Module) m.Properties.InRecovery = true + m.MakeAsPlatform() squashRecoverySrcs(m) } } diff --git a/cc/cc_test.go b/cc/cc_test.go index 3d162e7e8..3d5dfb155 100644 --- a/cc/cc_test.go +++ b/cc/cc_test.go @@ -158,11 +158,13 @@ func createTestContext(t *testing.T, config android.Config, bp string) *android. cc_object { name: "crtbegin_so", recovery_available: true, + vendor_available: true, } cc_object { name: "crtend_so", recovery_available: true, + vendor_available: true, } cc_library { @@ -236,8 +238,9 @@ func testCcError(t *testing.T, pattern string, bp string) { } const ( - coreVariant = "android_arm64_armv8-a_core_shared" - vendorVariant = "android_arm64_armv8-a_vendor_shared" + coreVariant = "android_arm64_armv8-a_core_shared" + vendorVariant = "android_arm64_armv8-a_vendor_shared" + recoveryVariant = "android_arm64_armv8-a_recovery_shared" ) func TestVendorSrc(t *testing.T) { @@ -1674,6 +1677,11 @@ func TestRecovery(t *testing.T) { recovery: true, compile_multilib:"32", } + cc_library_shared { + name: "libHalInRecovery", + recovery_available: true, + vendor: true, + } `) variants := ctx.ModuleVariantsForTests("librecovery") @@ -1686,4 +1694,10 @@ func TestRecovery(t *testing.T) { if android.InList(arm64, variants) { t.Errorf("multilib was set to 32 for librecovery32, but its variants has %s.", arm64) } + + recoveryModule := ctx.ModuleForTests("libHalInRecovery", recoveryVariant).Module().(*Module) + if !recoveryModule.Platform() { + t.Errorf("recovery variant of libHalInRecovery must not specific to device, soc, or product") + } + }