|
@@ -1809,8 +1809,8 @@ func (m *ModuleBase) GenerateBuildActions(blueprintCtx blueprint.ModuleContext)
|
|
|
if m.Enabled() {
|
|
|
// ensure all direct android.Module deps are enabled
|
|
|
ctx.VisitDirectDepsBlueprint(func(bm blueprint.Module) {
|
|
|
- if _, ok := bm.(Module); ok {
|
|
|
- ctx.validateAndroidModule(bm, ctx.baseModuleContext.strictVisitDeps)
|
|
|
+ if m, ok := bm.(Module); ok {
|
|
|
+ ctx.validateAndroidModule(bm, ctx.OtherModuleDependencyTag(m), ctx.baseModuleContext.strictVisitDeps)
|
|
|
}
|
|
|
})
|
|
|
|
|
@@ -2234,7 +2234,12 @@ func (b *baseModuleContext) AddMissingDependencies(deps []string) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func (b *baseModuleContext) validateAndroidModule(module blueprint.Module, strict bool) Module {
|
|
|
+type AllowDisabledModuleDependency interface {
|
|
|
+ blueprint.DependencyTag
|
|
|
+ AllowDisabledModuleDependency(target Module) bool
|
|
|
+}
|
|
|
+
|
|
|
+func (b *baseModuleContext) validateAndroidModule(module blueprint.Module, tag blueprint.DependencyTag, strict bool) Module {
|
|
|
aModule, _ := module.(Module)
|
|
|
|
|
|
if !strict {
|
|
@@ -2247,10 +2252,12 @@ func (b *baseModuleContext) validateAndroidModule(module blueprint.Module, stric
|
|
|
}
|
|
|
|
|
|
if !aModule.Enabled() {
|
|
|
- if b.Config().AllowMissingDependencies() {
|
|
|
- b.AddMissingDependencies([]string{b.OtherModuleName(aModule)})
|
|
|
- } else {
|
|
|
- b.ModuleErrorf("depends on disabled module %q", b.OtherModuleName(aModule))
|
|
|
+ if t, ok := tag.(AllowDisabledModuleDependency); !ok || !t.AllowDisabledModuleDependency(aModule) {
|
|
|
+ if b.Config().AllowMissingDependencies() {
|
|
|
+ b.AddMissingDependencies([]string{b.OtherModuleName(aModule)})
|
|
|
+ } else {
|
|
|
+ b.ModuleErrorf("depends on disabled module %q", b.OtherModuleName(aModule))
|
|
|
+ }
|
|
|
}
|
|
|
return nil
|
|
|
}
|
|
@@ -2343,7 +2350,7 @@ func (b *baseModuleContext) VisitDirectDepsBlueprint(visit func(blueprint.Module
|
|
|
|
|
|
func (b *baseModuleContext) VisitDirectDeps(visit func(Module)) {
|
|
|
b.bp.VisitDirectDeps(func(module blueprint.Module) {
|
|
|
- if aModule := b.validateAndroidModule(module, b.strictVisitDeps); aModule != nil {
|
|
|
+ if aModule := b.validateAndroidModule(module, b.bp.OtherModuleDependencyTag(module), b.strictVisitDeps); aModule != nil {
|
|
|
visit(aModule)
|
|
|
}
|
|
|
})
|
|
@@ -2351,7 +2358,7 @@ func (b *baseModuleContext) VisitDirectDeps(visit func(Module)) {
|
|
|
|
|
|
func (b *baseModuleContext) VisitDirectDepsWithTag(tag blueprint.DependencyTag, visit func(Module)) {
|
|
|
b.bp.VisitDirectDeps(func(module blueprint.Module) {
|
|
|
- if aModule := b.validateAndroidModule(module, b.strictVisitDeps); aModule != nil {
|
|
|
+ if aModule := b.validateAndroidModule(module, b.bp.OtherModuleDependencyTag(module), b.strictVisitDeps); aModule != nil {
|
|
|
if b.bp.OtherModuleDependencyTag(aModule) == tag {
|
|
|
visit(aModule)
|
|
|
}
|
|
@@ -2363,7 +2370,7 @@ func (b *baseModuleContext) VisitDirectDepsIf(pred func(Module) bool, visit func
|
|
|
b.bp.VisitDirectDepsIf(
|
|
|
// pred
|
|
|
func(module blueprint.Module) bool {
|
|
|
- if aModule := b.validateAndroidModule(module, b.strictVisitDeps); aModule != nil {
|
|
|
+ if aModule := b.validateAndroidModule(module, b.bp.OtherModuleDependencyTag(module), b.strictVisitDeps); aModule != nil {
|
|
|
return pred(aModule)
|
|
|
} else {
|
|
|
return false
|
|
@@ -2377,7 +2384,7 @@ func (b *baseModuleContext) VisitDirectDepsIf(pred func(Module) bool, visit func
|
|
|
|
|
|
func (b *baseModuleContext) VisitDepsDepthFirst(visit func(Module)) {
|
|
|
b.bp.VisitDepsDepthFirst(func(module blueprint.Module) {
|
|
|
- if aModule := b.validateAndroidModule(module, b.strictVisitDeps); aModule != nil {
|
|
|
+ if aModule := b.validateAndroidModule(module, b.bp.OtherModuleDependencyTag(module), b.strictVisitDeps); aModule != nil {
|
|
|
visit(aModule)
|
|
|
}
|
|
|
})
|
|
@@ -2387,7 +2394,7 @@ func (b *baseModuleContext) VisitDepsDepthFirstIf(pred func(Module) bool, visit
|
|
|
b.bp.VisitDepsDepthFirstIf(
|
|
|
// pred
|
|
|
func(module blueprint.Module) bool {
|
|
|
- if aModule := b.validateAndroidModule(module, b.strictVisitDeps); aModule != nil {
|
|
|
+ if aModule := b.validateAndroidModule(module, b.bp.OtherModuleDependencyTag(module), b.strictVisitDeps); aModule != nil {
|
|
|
return pred(aModule)
|
|
|
} else {
|
|
|
return false
|