diff --git a/sysprop/sysprop_library.go b/sysprop/sysprop_library.go index 30cbd6b47..a2e35d9b0 100644 --- a/sysprop/sysprop_library.go +++ b/sysprop/sysprop_library.go @@ -116,6 +116,7 @@ func syspropJavaGenFactory() android.Module { type syspropLibrary struct { android.ModuleBase + android.ApexModuleBase properties syspropLibraryProperties @@ -314,6 +315,7 @@ func syspropLibraryFactory() android.Module { &m.properties, ) android.InitAndroidModule(m) + android.InitApexModule(m) android.AddLoadHook(m, func(ctx android.LoadHookContext) { syspropLibraryHook(ctx, m) }) return m } @@ -341,6 +343,7 @@ type ccLibraryProperties struct { Recovery_available *bool Vendor_available *bool Host_supported *bool + Apex_available []string } type javaLibraryProperties struct { @@ -429,6 +432,7 @@ func syspropLibraryHook(ctx android.LoadHookContext, m *syspropLibrary) { ccProps.Recovery_available = m.properties.Recovery_available ccProps.Vendor_available = m.properties.Vendor_available ccProps.Host_supported = m.properties.Host_supported + ccProps.Apex_available = m.ApexProperties.Apex_available ctx.CreateModule(cc.LibraryFactory, &ccProps) scope := "internal" diff --git a/sysprop/sysprop_test.go b/sysprop/sysprop_test.go index 51da22205..850338675 100644 --- a/sysprop/sysprop_test.go +++ b/sysprop/sysprop_test.go @@ -15,6 +15,8 @@ package sysprop import ( + "reflect" + "android/soong/android" "android/soong/cc" "android/soong/java" @@ -157,6 +159,7 @@ func TestSyspropLibrary(t *testing.T) { ctx := test(t, ` sysprop_library { name: "sysprop-platform", + apex_available: ["//apex_available:platform"], srcs: ["android/sysprop/PlatformProperties.sysprop"], api_packages: ["android.sysprop"], property_owner: "Platform", @@ -305,7 +308,12 @@ func TestSyspropLibrary(t *testing.T) { "android_arm64_armv8-a_shared", "android_arm64_armv8-a_static", } { - ctx.ModuleForTests("libsysprop-platform", variant) + library := ctx.ModuleForTests("libsysprop-platform", variant).Module().(*cc.Module) + expectedApexAvailableOnLibrary := []string{"//apex_available:platform"} + if !reflect.DeepEqual(library.ApexProperties.Apex_available, expectedApexAvailableOnLibrary) { + t.Errorf("apex available property on libsysprop-platform must be %#v, but was %#v.", + expectedApexAvailableOnLibrary, library.ApexProperties.Apex_available) + } // core variant of vendor-owned sysprop_library is for product ctx.ModuleForTests("libsysprop-vendor", variant)