Merge "Make override modules compatible with prebuilts." into rvc-dev
This commit is contained in:
commit
ddac56e375
|
@ -208,7 +208,21 @@ var overrideBaseDepTag overrideBaseDependencyTag
|
|||
// next phase.
|
||||
func overrideModuleDepsMutator(ctx BottomUpMutatorContext) {
|
||||
if module, ok := ctx.Module().(OverrideModule); ok {
|
||||
ctx.AddDependency(ctx.Module(), overrideBaseDepTag, *module.getOverrideModuleProperties().Base)
|
||||
// Skip this overriding module if there's a prebuilt module that overrides it with prefer flag.
|
||||
overriddenByPrebuilt := false
|
||||
ctx.VisitDirectDepsWithTag(PrebuiltDepTag, func(dep Module) {
|
||||
prebuilt, ok := dep.(PrebuiltInterface)
|
||||
if !ok {
|
||||
panic("PrebuiltDepTag leads to a non-prebuilt module " + dep.Name())
|
||||
}
|
||||
if prebuilt.Prebuilt().UsePrebuilt() {
|
||||
overriddenByPrebuilt = true
|
||||
return
|
||||
}
|
||||
})
|
||||
if !overriddenByPrebuilt {
|
||||
ctx.AddDependency(ctx.Module(), overrideBaseDepTag, *module.getOverrideModuleProperties().Base)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -122,6 +122,44 @@ var prebuiltsTests = []struct {
|
|||
}`,
|
||||
prebuilt: true,
|
||||
},
|
||||
{
|
||||
name: "prebuilt override not preferred",
|
||||
modules: `
|
||||
source {
|
||||
name: "baz",
|
||||
}
|
||||
|
||||
override_source {
|
||||
name: "bar",
|
||||
base: "baz",
|
||||
}
|
||||
|
||||
prebuilt {
|
||||
name: "bar",
|
||||
prefer: false,
|
||||
srcs: ["prebuilt_file"],
|
||||
}`,
|
||||
prebuilt: false,
|
||||
},
|
||||
{
|
||||
name: "prebuilt override preferred",
|
||||
modules: `
|
||||
source {
|
||||
name: "baz",
|
||||
}
|
||||
|
||||
override_source {
|
||||
name: "bar",
|
||||
base: "baz",
|
||||
}
|
||||
|
||||
prebuilt {
|
||||
name: "bar",
|
||||
prefer: true,
|
||||
srcs: ["prebuilt_file"],
|
||||
}`,
|
||||
prebuilt: true,
|
||||
},
|
||||
}
|
||||
|
||||
func TestPrebuilts(t *testing.T) {
|
||||
|
@ -213,8 +251,10 @@ func TestPrebuilts(t *testing.T) {
|
|||
func registerTestPrebuiltBuildComponents(ctx RegistrationContext) {
|
||||
ctx.RegisterModuleType("prebuilt", newPrebuiltModule)
|
||||
ctx.RegisterModuleType("source", newSourceModule)
|
||||
ctx.RegisterModuleType("override_source", newOverrideSourceModule)
|
||||
|
||||
RegisterPrebuiltMutators(ctx)
|
||||
ctx.PostDepsMutators(RegisterOverridePostDepsMutators)
|
||||
}
|
||||
|
||||
type prebuiltModule struct {
|
||||
|
@ -257,11 +297,15 @@ func (p *prebuiltModule) OutputFiles(tag string) (Paths, error) {
|
|||
}
|
||||
}
|
||||
|
||||
type sourceModuleProperties struct {
|
||||
Deps []string `android:"path"`
|
||||
}
|
||||
|
||||
type sourceModule struct {
|
||||
ModuleBase
|
||||
properties struct {
|
||||
Deps []string `android:"path"`
|
||||
}
|
||||
OverridableModuleBase
|
||||
|
||||
properties sourceModuleProperties
|
||||
dependsOnSourceModule, dependsOnPrebuiltModule bool
|
||||
deps Paths
|
||||
src Path
|
||||
|
@ -271,10 +315,11 @@ func newSourceModule() Module {
|
|||
m := &sourceModule{}
|
||||
m.AddProperties(&m.properties)
|
||||
InitAndroidModule(m)
|
||||
InitOverridableModule(m, nil)
|
||||
return m
|
||||
}
|
||||
|
||||
func (s *sourceModule) DepsMutator(ctx BottomUpMutatorContext) {
|
||||
func (s *sourceModule) OverridablePropertiesDepsMutator(ctx BottomUpMutatorContext) {
|
||||
// s.properties.Deps are annotated with android:path, so they are
|
||||
// automatically added to the dependency by pathDeps mutator
|
||||
}
|
||||
|
@ -287,3 +332,20 @@ func (s *sourceModule) GenerateAndroidBuildActions(ctx ModuleContext) {
|
|||
func (s *sourceModule) Srcs() Paths {
|
||||
return Paths{s.src}
|
||||
}
|
||||
|
||||
type overrideSourceModule struct {
|
||||
ModuleBase
|
||||
OverrideModuleBase
|
||||
}
|
||||
|
||||
func (o *overrideSourceModule) GenerateAndroidBuildActions(_ ModuleContext) {
|
||||
}
|
||||
|
||||
func newOverrideSourceModule() Module {
|
||||
m := &overrideSourceModule{}
|
||||
m.AddProperties(&sourceModuleProperties{})
|
||||
|
||||
InitAndroidModule(m)
|
||||
InitOverrideModule(m)
|
||||
return m
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue