link type of recovery variant of a vendor module should not be native:vendor
This CL fixes a bug that when a module is configured as 'vendor: true' &&
'recovery_available: true', the link type of the recovery variant of the
module is incorrectly set to 'native:vendor'. This was because,
androidmk.go emits 'LOCAL_PROPRIETARY_MODULE := true' whenever
Proprietary property is set to true, regardless of whether it is a
recovery variant or not. This in turn makes LOCAL_USE_VNDK := true for
the module which in turn causes the link type to be 'native:vendor'.
Fixing the bug by resetting the properties like Proprietary, Vendor,
Soc_specific, etc. for the recovery variants.
Bug: 113277544
Test: m -j (test added)
Change-Id: I5d6ae76e46ef8fcd9204d386d0809862a7b0ff7e
diff --git a/cc/cc_test.go b/cc/cc_test.go
index 3d162e7..3d5dfb1 100644
--- a/cc/cc_test.go
+++ b/cc/cc_test.go
@@ -158,11 +158,13 @@
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 @@
}
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 @@
recovery: true,
compile_multilib:"32",
}
+ cc_library_shared {
+ name: "libHalInRecovery",
+ recovery_available: true,
+ vendor: true,
+ }
`)
variants := ctx.ModuleVariantsForTests("librecovery")
@@ -1686,4 +1694,10 @@
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")
+ }
+
}