summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Paul Duffin <paulduffin@google.com> 2021-09-15 17:25:10 +0100
committer Paul Duffin <paulduffin@google.com> 2021-09-25 10:17:31 +0100
commit12a0a310a76b8219e7cbb5cb89edd1384c7c0b42 (patch)
tree80873cc0321ad4e3646f2fa713f3d156a2f8b4b3
parenta02157a4b7cb60da1cce3c169ea61f5f1555ab10 (diff)
Add ramdisk image sdk trait to cc_library_headers
Allows an sdk to require that a cc_library_headers module provides a ramdisk image variant for the prebuilt. Previously, "ramdisk_available: true" would be set in the generated prebuilt snapshot for any sdk member that specified "ramdisk_available: true" in the source module. This change will only add that setting to the snapshot if the ramdisk image variant trait was explicitly requested for a member. Bug: 195754365 Test: m nothing Change-Id: I21e0dd02d380beabf228a72c463fcc603c77d87f
-rw-r--r--cc/image_sdk_traits.go7
-rw-r--r--cc/library_headers.go1
-rw-r--r--cc/library_sdk_member.go14
-rw-r--r--sdk/cc_sdk_test.go4
4 files changed, 26 insertions, 0 deletions
diff --git a/cc/image_sdk_traits.go b/cc/image_sdk_traits.go
index 371bb24e8..1d282301c 100644
--- a/cc/image_sdk_traits.go
+++ b/cc/image_sdk_traits.go
@@ -19,6 +19,7 @@ import "android/soong/android"
// This file contains support for the image variant sdk traits.
func init() {
+ android.RegisterSdkMemberTrait(ramdiskImageRequiredSdkTrait)
android.RegisterSdkMemberTrait(recoveryImageRequiredSdkTrait)
}
@@ -26,6 +27,12 @@ type imageSdkTraitStruct struct {
android.SdkMemberTraitBase
}
+var ramdiskImageRequiredSdkTrait android.SdkMemberTrait = &imageSdkTraitStruct{
+ SdkMemberTraitBase: android.SdkMemberTraitBase{
+ PropertyName: "ramdisk_image_required",
+ },
+}
+
var recoveryImageRequiredSdkTrait android.SdkMemberTrait = &imageSdkTraitStruct{
SdkMemberTraitBase: android.SdkMemberTraitBase{
PropertyName: "recovery_image_required",
diff --git a/cc/library_headers.go b/cc/library_headers.go
index 4022392bb..cabeb0156 100644
--- a/cc/library_headers.go
+++ b/cc/library_headers.go
@@ -35,6 +35,7 @@ var headersLibrarySdkMemberType = &librarySdkMemberType{
HostOsDependent: true,
Traits: []android.SdkMemberTrait{
nativeBridgeSdkTrait,
+ ramdiskImageRequiredSdkTrait,
recoveryImageRequiredSdkTrait,
},
},
diff --git a/cc/library_sdk_member.go b/cc/library_sdk_member.go
index a28ccd062..8988de2e5 100644
--- a/cc/library_sdk_member.go
+++ b/cc/library_sdk_member.go
@@ -134,6 +134,16 @@ func (mt *librarySdkMemberType) AddDependencies(ctx android.SdkDependencyContext
targets: targets,
})
+ // If required add additional dependencies on the image:ramdisk variants.
+ if ctx.RequiresTrait(lib, ramdiskImageRequiredSdkTrait) {
+ memberDependencies = append(memberDependencies, memberDependency{
+ imageVariations: []blueprint.Variation{{Mutator: "image", Variation: android.RamdiskVariation}},
+ // Only add a dependency on the first target as that is the only one which will have an
+ // image:ramdisk variant.
+ targets: targets[:1],
+ })
+ }
+
// If required add additional dependencies on the image:recovery variants.
if ctx.RequiresTrait(lib, recoveryImageRequiredSdkTrait) {
memberDependencies = append(memberDependencies, memberDependency{
@@ -199,6 +209,10 @@ func (mt *librarySdkMemberType) AddPrebuiltModule(ctx android.SdkMemberContext,
pbm.AddProperty("native_bridge_supported", true)
}
+ if ctx.RequiresTrait(ramdiskImageRequiredSdkTrait) {
+ pbm.AddProperty("ramdisk_available", true)
+ }
+
if ctx.RequiresTrait(recoveryImageRequiredSdkTrait) {
pbm.AddProperty("recovery_available", true)
}
diff --git a/sdk/cc_sdk_test.go b/sdk/cc_sdk_test.go
index 7afdac4a0..cd63dac8c 100644
--- a/sdk/cc_sdk_test.go
+++ b/sdk/cc_sdk_test.go
@@ -2126,6 +2126,10 @@ myinclude/Test.h -> include/myinclude/Test.h
)
}
+ t.Run("ramdisk", func(t *testing.T) {
+ testImageVariant(t, "ramdisk_available", "ramdisk_image_required")
+ })
+
t.Run("recovery", func(t *testing.T) {
testImageVariant(t, "recovery_available", "recovery_image_required")
})