Make Contents and Standalone_contents configurable
For use in Android.bp select statements
Test: m nothing --no-skip-soong-tests
Bug: 373868171
Change-Id: I2ca90dd1289c4cf7f728a00db93d08516856fdfa
diff --git a/java/systemserver_classpath_fragment.go b/java/systemserver_classpath_fragment.go
index aad1060..608a616 100644
--- a/java/systemserver_classpath_fragment.go
+++ b/java/systemserver_classpath_fragment.go
@@ -19,6 +19,7 @@
"android/soong/dexpreopt"
"github.com/google/blueprint"
+ "github.com/google/blueprint/proptools"
)
func init() {
@@ -98,12 +99,12 @@
// List of system_server classpath jars, could be either java_library, or java_sdk_library.
//
// The order of this list matters as it is the order that is used in the SYSTEMSERVERCLASSPATH.
- Contents []string
+ Contents proptools.Configurable[[]string] `android:"arch_variant"`
// List of jars that system_server loads dynamically using separate classloaders.
//
// The order does not matter.
- Standalone_contents []string
+ Standalone_contents proptools.Configurable[[]string] `android:"arch_variant"`
}
func systemServerClasspathFactory() android.Module {
@@ -116,7 +117,7 @@
}
func (s *SystemServerClasspathModule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
- if len(s.properties.Contents) == 0 && len(s.properties.Standalone_contents) == 0 {
+ if len(s.properties.Contents.GetOrDefault(ctx, nil)) == 0 && len(s.properties.Standalone_contents.GetOrDefault(ctx, nil)) == 0 {
ctx.PropertyErrorf("contents", "Either contents or standalone_contents needs to be non-empty")
}
@@ -152,7 +153,7 @@
func (s *SystemServerClasspathModule) configuredJars(ctx android.ModuleContext) android.ConfiguredJarList {
global := dexpreopt.GetGlobalConfig(ctx)
- possibleUpdatableModules := gatherPossibleApexModuleNamesAndStems(ctx, s.properties.Contents, systemServerClasspathFragmentContentDepTag)
+ possibleUpdatableModules := gatherPossibleApexModuleNamesAndStems(ctx, s.properties.Contents.GetOrDefault(ctx, nil), systemServerClasspathFragmentContentDepTag)
jars, unknown := global.ApexSystemServerJars.Filter(possibleUpdatableModules)
// TODO(satayev): remove geotz ssc_fragment, since geotz is not part of SSCP anymore.
_, unknown = android.RemoveFromList("geotz", unknown)
@@ -184,7 +185,7 @@
func (s *SystemServerClasspathModule) standaloneConfiguredJars(ctx android.ModuleContext) android.ConfiguredJarList {
global := dexpreopt.GetGlobalConfig(ctx)
- possibleUpdatableModules := gatherPossibleApexModuleNamesAndStems(ctx, s.properties.Standalone_contents, systemServerClasspathFragmentContentDepTag)
+ possibleUpdatableModules := gatherPossibleApexModuleNamesAndStems(ctx, s.properties.Standalone_contents.GetOrDefault(ctx, nil), systemServerClasspathFragmentContentDepTag)
jars, _ := global.ApexStandaloneSystemServerJars.Filter(possibleUpdatableModules)
// TODO(jiakaiz): add a check to ensure that the contents are declared in make.
@@ -245,8 +246,8 @@
module := ctx.Module()
_, isSourceModule := module.(*SystemServerClasspathModule)
var deps []string
- deps = append(deps, s.properties.Contents...)
- deps = append(deps, s.properties.Standalone_contents...)
+ deps = append(deps, s.properties.Contents.GetOrDefault(ctx, nil)...)
+ deps = append(deps, s.properties.Standalone_contents.GetOrDefault(ctx, nil)...)
for _, name := range deps {
// A systemserverclasspath_fragment must depend only on other source modules, while the
@@ -260,8 +261,8 @@
// Collect information for opening IDE project files in java/jdeps.go.
func (s *SystemServerClasspathModule) IDEInfo(ctx android.BaseModuleContext, dpInfo *android.IdeInfo) {
- dpInfo.Deps = append(dpInfo.Deps, s.properties.Contents...)
- dpInfo.Deps = append(dpInfo.Deps, s.properties.Standalone_contents...)
+ dpInfo.Deps = append(dpInfo.Deps, s.properties.Contents.GetOrDefault(ctx, nil)...)
+ dpInfo.Deps = append(dpInfo.Deps, s.properties.Standalone_contents.GetOrDefault(ctx, nil)...)
}
type systemServerClasspathFragmentMemberType struct {
@@ -302,8 +303,8 @@
func (s *systemServerClasspathFragmentSdkMemberProperties) PopulateFromVariant(ctx android.SdkMemberContext, variant android.Module) {
module := variant.(*SystemServerClasspathModule)
- s.Contents = module.properties.Contents
- s.Standalone_contents = module.properties.Standalone_contents
+ s.Contents = module.properties.Contents.GetOrDefault(ctx.SdkModuleContext(), nil)
+ s.Standalone_contents = module.properties.Standalone_contents.GetOrDefault(ctx.SdkModuleContext(), nil)
}
func (s *systemServerClasspathFragmentSdkMemberProperties) AddToPropertySet(ctx android.SdkMemberContext, propertySet android.BpPropertySet) {