diff --git a/android/prebuilt.go b/android/prebuilt.go index ebccaa765..817629948 100644 --- a/android/prebuilt.go +++ b/android/prebuilt.go @@ -82,6 +82,12 @@ func RemoveOptionalPrebuiltPrefix(name string) string { } func (p *Prebuilt) Name(name string) string { + return PrebuiltNameFromSource(name) +} + +// PrebuiltNameFromSource returns the result of prepending the "prebuilt_" prefix to the supplied +// name. +func PrebuiltNameFromSource(name string) string { return "prebuilt_" + name } @@ -213,6 +219,26 @@ type PrebuiltInterface interface { Prebuilt() *Prebuilt } +// IsModulePreferred returns true if the given module is preferred. +// +// A source module is preferred if there is no corresponding prebuilt module or the prebuilt module +// does not have "prefer: true". +// +// A prebuilt module is preferred if there is no corresponding source module or the prebuilt module +// has "prefer: true". +func IsModulePreferred(module Module) bool { + if module.IsReplacedByPrebuilt() { + // A source module that has been replaced by a prebuilt counterpart. + return false + } + if prebuilt, ok := module.(PrebuiltInterface); ok { + if p := prebuilt.Prebuilt(); p != nil { + return p.UsePrebuilt() + } + } + return true +} + func RegisterPrebuiltsPreArchMutators(ctx RegisterMutatorsContext) { ctx.BottomUp("prebuilt_rename", PrebuiltRenameMutator).Parallel() } diff --git a/apex/prebuilt.go b/apex/prebuilt.go index 3280cd8e5..68f285936 100644 --- a/apex/prebuilt.go +++ b/apex/prebuilt.go @@ -250,7 +250,7 @@ func prebuiltApexExportedModuleName(ctx android.BottomUpMutatorContext, name str // the unprefixed name is the one to use. If the unprefixed one turns out to be a source module // and not a renamed prebuilt module then that will be detected and reported as an error when // processing the dependency in ApexInfoMutator(). - prebuiltName := "prebuilt_" + name + prebuiltName := android.PrebuiltNameFromSource(name) if ctx.OtherModuleExists(prebuiltName) { name = prebuiltName } diff --git a/java/boot_jars.go b/java/boot_jars.go index ac8107b7c..1fb3deb0a 100644 --- a/java/boot_jars.go +++ b/java/boot_jars.go @@ -56,16 +56,7 @@ func isActiveModule(module android.Module) bool { if !module.Enabled() { return false } - if module.IsReplacedByPrebuilt() { - // A source module that has been replaced by a prebuilt counterpart. - return false - } - if prebuilt, ok := module.(android.PrebuiltInterface); ok { - if p := prebuilt.Prebuilt(); p != nil { - return p.UsePrebuilt() - } - } - return true + return android.IsModulePreferred(module) } func (b *bootJarsSingleton) GenerateBuildActions(ctx android.SingletonContext) { diff --git a/java/platform_compat_config.go b/java/platform_compat_config.go index c3d13ae65..edfa146f9 100644 --- a/java/platform_compat_config.go +++ b/java/platform_compat_config.go @@ -232,15 +232,7 @@ func isModulePreferredByCompatConfig(module android.Module) bool { } } - // A prebuilt module should only be used when it is preferred. - if pi, ok := module.(android.PrebuiltInterface); ok { - if p := pi.Prebuilt(); p != nil { - return p.UsePrebuilt() - } - } - - // Otherwise, a module should only be used if it has not been replaced by a prebuilt. - return !module.IsReplacedByPrebuilt() + return android.IsModulePreferred(module) } func (p *platformCompatConfigSingleton) GenerateBuildActions(ctx android.SingletonContext) { diff --git a/java/sdk_library.go b/java/sdk_library.go index 37b8d9f62..eb9ba9bde 100644 --- a/java/sdk_library.go +++ b/java/sdk_library.go @@ -1945,11 +1945,11 @@ func (module *SdkLibraryImport) ComponentDepsMutator(ctx android.BottomUpMutator } // Add dependencies to the prebuilt stubs library - ctx.AddVariationDependencies(nil, apiScope.stubsTag, "prebuilt_"+module.stubsLibraryModuleName(apiScope)) + ctx.AddVariationDependencies(nil, apiScope.stubsTag, android.PrebuiltNameFromSource(module.stubsLibraryModuleName(apiScope))) if len(scopeProperties.Stub_srcs) > 0 { // Add dependencies to the prebuilt stubs source library - ctx.AddVariationDependencies(nil, apiScope.stubsSourceTag, "prebuilt_"+module.stubsSourceModuleName(apiScope)) + ctx.AddVariationDependencies(nil, apiScope.stubsSourceTag, android.PrebuiltNameFromSource(module.stubsSourceModuleName(apiScope))) } } } diff --git a/java/system_modules.go b/java/system_modules.go index 8c69051ae..320a2bbbf 100644 --- a/java/system_modules.go +++ b/java/system_modules.go @@ -236,7 +236,7 @@ func (system *systemModulesImport) Prebuilt() *android.Prebuilt { // modules. func (system *systemModulesImport) ComponentDepsMutator(ctx android.BottomUpMutatorContext) { for _, lib := range system.properties.Libs { - ctx.AddVariationDependencies(nil, systemModulesLibsTag, "prebuilt_"+lib) + ctx.AddVariationDependencies(nil, systemModulesLibsTag, android.PrebuiltNameFromSource(lib)) } }