Loading android/override_module.go +3 −3 Original line number Diff line number Diff line Loading @@ -244,11 +244,11 @@ func overrideModuleDepsMutator(ctx BottomUpMutatorContext) { // See if there's a prebuilt module that overrides this override module with prefer flag, // in which case we call HideFromMake on the corresponding variant later. ctx.VisitDirectDepsWithTag(PrebuiltDepTag, func(dep Module) { prebuilt, ok := dep.(PrebuiltInterface) if !ok { prebuilt := GetEmbeddedPrebuilt(dep) if prebuilt == nil { panic("PrebuiltDepTag leads to a non-prebuilt module " + dep.Name()) } if prebuilt.Prebuilt().UsePrebuilt() { if prebuilt.UsePrebuilt() { module.setOverriddenByPrebuilt(true) return } Loading android/prebuilt.go +38 −21 Original line number Diff line number Diff line Loading @@ -242,14 +242,30 @@ func IsModulePreferred(module Module) bool { // 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 { if p := GetEmbeddedPrebuilt(module); p != nil { return p.UsePrebuilt() } } return true } // IsModulePrebuilt returns true if the module implements PrebuiltInterface and // has been initialized as a prebuilt and so returns a non-nil value from the // PrebuiltInterface.Prebuilt() method. func IsModulePrebuilt(module Module) bool { return GetEmbeddedPrebuilt(module) != nil } // GetEmbeddedPrebuilt returns a pointer to the embedded Prebuilt structure or // nil if the module does not implement PrebuiltInterface or has not been // initialized as a prebuilt module. func GetEmbeddedPrebuilt(module Module) *Prebuilt { if p, ok := module.(PrebuiltInterface); ok { return p.Prebuilt() } return nil } func RegisterPrebuiltsPreArchMutators(ctx RegisterMutatorsContext) { ctx.BottomUp("prebuilt_rename", PrebuiltRenameMutator).Parallel() } Loading @@ -263,11 +279,12 @@ func RegisterPrebuiltsPostDepsMutators(ctx RegisterMutatorsContext) { // PrebuiltRenameMutator ensures that there always is a module with an // undecorated name. func PrebuiltRenameMutator(ctx BottomUpMutatorContext) { if m, ok := ctx.Module().(PrebuiltInterface); ok && m.Prebuilt() != nil { m := ctx.Module() if p := GetEmbeddedPrebuilt(m); p != nil { name := m.base().BaseModuleName() if !ctx.OtherModuleExists(name) { ctx.Rename(name) m.Prebuilt().properties.PrebuiltRenamedToSource = true p.properties.PrebuiltRenamedToSource = true } } } Loading @@ -275,9 +292,10 @@ func PrebuiltRenameMutator(ctx BottomUpMutatorContext) { // PrebuiltSourceDepsMutator adds dependencies to the prebuilt module from the // corresponding source module, if one exists for the same variant. func PrebuiltSourceDepsMutator(ctx BottomUpMutatorContext) { if m, ok := ctx.Module().(PrebuiltInterface); ok && m.Enabled() && m.Prebuilt() != nil { p := m.Prebuilt() if !p.properties.PrebuiltRenamedToSource { m := ctx.Module() // If this module is a prebuilt, is enabled and has not been renamed to source then add a // dependency onto the source if it is present. if p := GetEmbeddedPrebuilt(m); p != nil && m.Enabled() && !p.properties.PrebuiltRenamedToSource { name := m.base().BaseModuleName() if ctx.OtherModuleReverseDependencyVariantExists(name) { ctx.AddReverseDependency(ctx.Module(), PrebuiltDepTag, name) Loading @@ -285,13 +303,12 @@ func PrebuiltSourceDepsMutator(ctx BottomUpMutatorContext) { } } } } // PrebuiltSelectModuleMutator marks prebuilts that are used, either overriding source modules or // because the source module doesn't exist. It also disables installing overridden source modules. func PrebuiltSelectModuleMutator(ctx TopDownMutatorContext) { if m, ok := ctx.Module().(PrebuiltInterface); ok && m.Prebuilt() != nil { p := m.Prebuilt() m := ctx.Module() if p := GetEmbeddedPrebuilt(m); p != nil { if p.srcsSupplier == nil { panic(fmt.Errorf("prebuilt module did not have InitPrebuiltModule called on it")) } Loading @@ -299,9 +316,9 @@ func PrebuiltSelectModuleMutator(ctx TopDownMutatorContext) { p.properties.UsePrebuilt = p.usePrebuilt(ctx, nil, m) } } else if s, ok := ctx.Module().(Module); ok { ctx.VisitDirectDepsWithTag(PrebuiltDepTag, func(m Module) { p := m.(PrebuiltInterface).Prebuilt() if p.usePrebuilt(ctx, s, m) { ctx.VisitDirectDepsWithTag(PrebuiltDepTag, func(prebuiltModule Module) { p := GetEmbeddedPrebuilt(prebuiltModule) if p.usePrebuilt(ctx, s, prebuiltModule) { p.properties.UsePrebuilt = true s.ReplacedByPrebuilt() } Loading @@ -313,8 +330,8 @@ func PrebuiltSelectModuleMutator(ctx TopDownMutatorContext) { // prebuilt when both modules exist and the prebuilt should be used. When the prebuilt should not // be used, disable installing it. func PrebuiltPostDepsMutator(ctx BottomUpMutatorContext) { if m, ok := ctx.Module().(PrebuiltInterface); ok && m.Prebuilt() != nil { p := m.Prebuilt() m := ctx.Module() if p := GetEmbeddedPrebuilt(m); p != nil { name := m.base().BaseModuleName() if p.properties.UsePrebuilt { if p.properties.SourceExists { Loading cc/fuzz.go +1 −2 Original line number Diff line number Diff line Loading @@ -221,8 +221,7 @@ func isValidSharedDependency(dependency android.Module) bool { // If the same library is present both as source and a prebuilt we must pick // only one to avoid a conflict. Always prefer the source since the prebuilt // probably won't be built with sanitizers enabled. if prebuilt, ok := dependency.(android.PrebuiltInterface); ok && prebuilt.Prebuilt() != nil && prebuilt.Prebuilt().SourceExists() { if prebuilt := android.GetEmbeddedPrebuilt(dependency); prebuilt != nil && prebuilt.SourceExists() { return false } Loading dexpreopt/config.go +2 −2 Original line number Diff line number Diff line Loading @@ -404,14 +404,14 @@ func dex2oatPathFromDep(ctx android.ModuleContext) android.Path { if parent == ctx.Module() && ctx.OtherModuleDependencyTag(child) == Dex2oatDepTag { // Found the source module, or prebuilt module that has replaced the source. dex2oatModule = child if p, ok := child.(android.PrebuiltInterface); ok && p.Prebuilt() != nil { if android.IsModulePrebuilt(child) { return false // If it's the prebuilt we're done. } else { return true // Recurse to check if the source has a prebuilt dependency. } } if parent == dex2oatModule && ctx.OtherModuleDependencyTag(child) == android.PrebuiltDepTag { if p, ok := child.(android.PrebuiltInterface); ok && p.Prebuilt() != nil && p.Prebuilt().UsePrebuilt() { if p := android.GetEmbeddedPrebuilt(child); p != nil && p.UsePrebuilt() { dex2oatModule = child // Found a prebuilt that should be used. } } Loading Loading
android/override_module.go +3 −3 Original line number Diff line number Diff line Loading @@ -244,11 +244,11 @@ func overrideModuleDepsMutator(ctx BottomUpMutatorContext) { // See if there's a prebuilt module that overrides this override module with prefer flag, // in which case we call HideFromMake on the corresponding variant later. ctx.VisitDirectDepsWithTag(PrebuiltDepTag, func(dep Module) { prebuilt, ok := dep.(PrebuiltInterface) if !ok { prebuilt := GetEmbeddedPrebuilt(dep) if prebuilt == nil { panic("PrebuiltDepTag leads to a non-prebuilt module " + dep.Name()) } if prebuilt.Prebuilt().UsePrebuilt() { if prebuilt.UsePrebuilt() { module.setOverriddenByPrebuilt(true) return } Loading
android/prebuilt.go +38 −21 Original line number Diff line number Diff line Loading @@ -242,14 +242,30 @@ func IsModulePreferred(module Module) bool { // 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 { if p := GetEmbeddedPrebuilt(module); p != nil { return p.UsePrebuilt() } } return true } // IsModulePrebuilt returns true if the module implements PrebuiltInterface and // has been initialized as a prebuilt and so returns a non-nil value from the // PrebuiltInterface.Prebuilt() method. func IsModulePrebuilt(module Module) bool { return GetEmbeddedPrebuilt(module) != nil } // GetEmbeddedPrebuilt returns a pointer to the embedded Prebuilt structure or // nil if the module does not implement PrebuiltInterface or has not been // initialized as a prebuilt module. func GetEmbeddedPrebuilt(module Module) *Prebuilt { if p, ok := module.(PrebuiltInterface); ok { return p.Prebuilt() } return nil } func RegisterPrebuiltsPreArchMutators(ctx RegisterMutatorsContext) { ctx.BottomUp("prebuilt_rename", PrebuiltRenameMutator).Parallel() } Loading @@ -263,11 +279,12 @@ func RegisterPrebuiltsPostDepsMutators(ctx RegisterMutatorsContext) { // PrebuiltRenameMutator ensures that there always is a module with an // undecorated name. func PrebuiltRenameMutator(ctx BottomUpMutatorContext) { if m, ok := ctx.Module().(PrebuiltInterface); ok && m.Prebuilt() != nil { m := ctx.Module() if p := GetEmbeddedPrebuilt(m); p != nil { name := m.base().BaseModuleName() if !ctx.OtherModuleExists(name) { ctx.Rename(name) m.Prebuilt().properties.PrebuiltRenamedToSource = true p.properties.PrebuiltRenamedToSource = true } } } Loading @@ -275,9 +292,10 @@ func PrebuiltRenameMutator(ctx BottomUpMutatorContext) { // PrebuiltSourceDepsMutator adds dependencies to the prebuilt module from the // corresponding source module, if one exists for the same variant. func PrebuiltSourceDepsMutator(ctx BottomUpMutatorContext) { if m, ok := ctx.Module().(PrebuiltInterface); ok && m.Enabled() && m.Prebuilt() != nil { p := m.Prebuilt() if !p.properties.PrebuiltRenamedToSource { m := ctx.Module() // If this module is a prebuilt, is enabled and has not been renamed to source then add a // dependency onto the source if it is present. if p := GetEmbeddedPrebuilt(m); p != nil && m.Enabled() && !p.properties.PrebuiltRenamedToSource { name := m.base().BaseModuleName() if ctx.OtherModuleReverseDependencyVariantExists(name) { ctx.AddReverseDependency(ctx.Module(), PrebuiltDepTag, name) Loading @@ -285,13 +303,12 @@ func PrebuiltSourceDepsMutator(ctx BottomUpMutatorContext) { } } } } // PrebuiltSelectModuleMutator marks prebuilts that are used, either overriding source modules or // because the source module doesn't exist. It also disables installing overridden source modules. func PrebuiltSelectModuleMutator(ctx TopDownMutatorContext) { if m, ok := ctx.Module().(PrebuiltInterface); ok && m.Prebuilt() != nil { p := m.Prebuilt() m := ctx.Module() if p := GetEmbeddedPrebuilt(m); p != nil { if p.srcsSupplier == nil { panic(fmt.Errorf("prebuilt module did not have InitPrebuiltModule called on it")) } Loading @@ -299,9 +316,9 @@ func PrebuiltSelectModuleMutator(ctx TopDownMutatorContext) { p.properties.UsePrebuilt = p.usePrebuilt(ctx, nil, m) } } else if s, ok := ctx.Module().(Module); ok { ctx.VisitDirectDepsWithTag(PrebuiltDepTag, func(m Module) { p := m.(PrebuiltInterface).Prebuilt() if p.usePrebuilt(ctx, s, m) { ctx.VisitDirectDepsWithTag(PrebuiltDepTag, func(prebuiltModule Module) { p := GetEmbeddedPrebuilt(prebuiltModule) if p.usePrebuilt(ctx, s, prebuiltModule) { p.properties.UsePrebuilt = true s.ReplacedByPrebuilt() } Loading @@ -313,8 +330,8 @@ func PrebuiltSelectModuleMutator(ctx TopDownMutatorContext) { // prebuilt when both modules exist and the prebuilt should be used. When the prebuilt should not // be used, disable installing it. func PrebuiltPostDepsMutator(ctx BottomUpMutatorContext) { if m, ok := ctx.Module().(PrebuiltInterface); ok && m.Prebuilt() != nil { p := m.Prebuilt() m := ctx.Module() if p := GetEmbeddedPrebuilt(m); p != nil { name := m.base().BaseModuleName() if p.properties.UsePrebuilt { if p.properties.SourceExists { Loading
cc/fuzz.go +1 −2 Original line number Diff line number Diff line Loading @@ -221,8 +221,7 @@ func isValidSharedDependency(dependency android.Module) bool { // If the same library is present both as source and a prebuilt we must pick // only one to avoid a conflict. Always prefer the source since the prebuilt // probably won't be built with sanitizers enabled. if prebuilt, ok := dependency.(android.PrebuiltInterface); ok && prebuilt.Prebuilt() != nil && prebuilt.Prebuilt().SourceExists() { if prebuilt := android.GetEmbeddedPrebuilt(dependency); prebuilt != nil && prebuilt.SourceExists() { return false } Loading
dexpreopt/config.go +2 −2 Original line number Diff line number Diff line Loading @@ -404,14 +404,14 @@ func dex2oatPathFromDep(ctx android.ModuleContext) android.Path { if parent == ctx.Module() && ctx.OtherModuleDependencyTag(child) == Dex2oatDepTag { // Found the source module, or prebuilt module that has replaced the source. dex2oatModule = child if p, ok := child.(android.PrebuiltInterface); ok && p.Prebuilt() != nil { if android.IsModulePrebuilt(child) { return false // If it's the prebuilt we're done. } else { return true // Recurse to check if the source has a prebuilt dependency. } } if parent == dex2oatModule && ctx.OtherModuleDependencyTag(child) == android.PrebuiltDepTag { if p, ok := child.(android.PrebuiltInterface); ok && p.Prebuilt() != nil && p.Prebuilt().UsePrebuilt() { if p := android.GetEmbeddedPrebuilt(child); p != nil && p.UsePrebuilt() { dex2oatModule = child // Found a prebuilt that should be used. } } Loading