summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Paul Duffin <paulduffin@google.com> 2021-04-22 12:08:59 +0100
committer Paul Duffin <paulduffin@google.com> 2021-04-23 09:32:14 +0100
commit4994d26bfac6791f3729c5a1331f89c6ab20765e (patch)
tree0f13ec221beb114835577232983e951f5b6b9c26
parentb67d878b8008866fbab73b1b7f3b4457d6c6ea1b (diff)
Generalize the platformBootclasspathDepsMutator
Adds a BootclasspathDepsMutator that is currently only implemented by the platform_bootclasspath but which can be implemented by bootclasspath_fragment too. Bug: 177892522 Test: m nothing Change-Id: Ibe35854281004d6e40bf1f797144fb582e8c08b9
-rw-r--r--java/bootclasspath.go27
-rw-r--r--java/platform_bootclasspath.go33
-rw-r--r--java/testing.go1
3 files changed, 41 insertions, 20 deletions
diff --git a/java/bootclasspath.go b/java/bootclasspath.go
index b140a3080..6ca0f7533 100644
--- a/java/bootclasspath.go
+++ b/java/bootclasspath.go
@@ -24,6 +24,33 @@ import (
// Contains code that is common to both platform_bootclasspath and bootclasspath_fragment.
+func init() {
+ registerBootclasspathBuildComponents(android.InitRegistrationContext)
+}
+
+func registerBootclasspathBuildComponents(ctx android.RegistrationContext) {
+ ctx.FinalDepsMutators(func(ctx android.RegisterMutatorsContext) {
+ ctx.BottomUp("bootclasspath_deps", bootclasspathDepsMutator)
+ })
+}
+
+// BootclasspathDepsMutator is the interface that a module must implement if it wants to add
+// dependencies onto APEX specific variants of bootclasspath fragments or bootclasspath contents.
+type BootclasspathDepsMutator interface {
+ // BootclasspathDepsMutator implementations should add dependencies using
+ // addDependencyOntoApexModulePair and addDependencyOntoApexVariants.
+ BootclasspathDepsMutator(ctx android.BottomUpMutatorContext)
+}
+
+// bootclasspathDepsMutator is called during the final deps phase after all APEX variants have
+// been created so can add dependencies onto specific APEX variants of modules.
+func bootclasspathDepsMutator(ctx android.BottomUpMutatorContext) {
+ m := ctx.Module()
+ if p, ok := m.(BootclasspathDepsMutator); ok {
+ p.BootclasspathDepsMutator(ctx)
+ }
+}
+
// addDependencyOntoApexVariants adds dependencies onto the appropriate apex specific variants of
// the module as specified in the ApexVariantReference list.
func addDependencyOntoApexVariants(ctx android.BottomUpMutatorContext, propertyName string, refs []ApexVariantReference, tag blueprint.DependencyTag) {
diff --git a/java/platform_bootclasspath.go b/java/platform_bootclasspath.go
index 38ce98525..b1a0ac43f 100644
--- a/java/platform_bootclasspath.go
+++ b/java/platform_bootclasspath.go
@@ -27,10 +27,6 @@ func init() {
func registerPlatformBootclasspathBuildComponents(ctx android.RegistrationContext) {
ctx.RegisterModuleType("platform_bootclasspath", platformBootclasspathFactory)
-
- ctx.FinalDepsMutators(func(ctx android.RegisterMutatorsContext) {
- ctx.BottomUp("platform_bootclasspath_deps", platformBootclasspathDepsMutator)
- })
}
// The tag used for the dependency between the platform bootclasspath and any configured boot jars.
@@ -126,25 +122,22 @@ func (b *platformBootclasspathModule) hiddenAPIDepsMutator(ctx android.BottomUpM
hiddenAPIAddStubLibDependencies(ctx, sdkKindToStubLibModules)
}
-func platformBootclasspathDepsMutator(ctx android.BottomUpMutatorContext) {
- m := ctx.Module()
- if p, ok := m.(*platformBootclasspathModule); ok {
- // Add dependencies on all the modules configured in the "art" boot image.
- artImageConfig := genBootImageConfigs(ctx)[artBootImageName]
- addDependenciesOntoBootImageModules(ctx, artImageConfig.modules)
+func (b *platformBootclasspathModule) BootclasspathDepsMutator(ctx android.BottomUpMutatorContext) {
+ // Add dependencies on all the modules configured in the "art" boot image.
+ artImageConfig := genBootImageConfigs(ctx)[artBootImageName]
+ addDependenciesOntoBootImageModules(ctx, artImageConfig.modules)
- // Add dependencies on all the modules configured in the "boot" boot image. That does not
- // include modules configured in the "art" boot image.
- bootImageConfig := p.getImageConfig(ctx)
- addDependenciesOntoBootImageModules(ctx, bootImageConfig.modules)
+ // Add dependencies on all the modules configured in the "boot" boot image. That does not
+ // include modules configured in the "art" boot image.
+ bootImageConfig := b.getImageConfig(ctx)
+ addDependenciesOntoBootImageModules(ctx, bootImageConfig.modules)
- // Add dependencies on all the updatable modules.
- updatableModules := dexpreopt.GetGlobalConfig(ctx).UpdatableBootJars
- addDependenciesOntoBootImageModules(ctx, updatableModules)
+ // Add dependencies on all the updatable modules.
+ updatableModules := dexpreopt.GetGlobalConfig(ctx).UpdatableBootJars
+ addDependenciesOntoBootImageModules(ctx, updatableModules)
- // Add dependencies on all the fragments.
- p.properties.BootclasspathFragmentsDepsProperties.addDependenciesOntoFragments(ctx)
- }
+ // Add dependencies on all the fragments.
+ b.properties.BootclasspathFragmentsDepsProperties.addDependenciesOntoFragments(ctx)
}
func addDependenciesOntoBootImageModules(ctx android.BottomUpMutatorContext, modules android.ConfiguredJarList) {
diff --git a/java/testing.go b/java/testing.go
index 08a71b880..e9cdddc53 100644
--- a/java/testing.go
+++ b/java/testing.go
@@ -232,6 +232,7 @@ func registerRequiredBuildComponentsForTest(ctx android.RegistrationContext) {
RegisterAppBuildComponents(ctx)
RegisterAppImportBuildComponents(ctx)
RegisterAppSetBuildComponents(ctx)
+ registerBootclasspathBuildComponents(ctx)
RegisterBootImageBuildComponents(ctx)
RegisterDexpreoptBootJarsComponents(ctx)
RegisterDocsBuildComponents(ctx)