Add IsModulePreferred

Bug: 177892522
Test: m nothing
Change-Id: I47268b81359d6fceb60e899a730b3b6034e09814
This commit is contained in:
Paul Duffin 2021-04-02 10:35:24 +01:00
parent 8f8029a92b
commit e1d3837645
3 changed files with 22 additions and 19 deletions

View File

@ -213,6 +213,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()
}

View File

@ -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) {

View File

@ -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) {