diff --git a/android/module.go b/android/module.go index 2a8837b32..66859fa56 100644 --- a/android/module.go +++ b/android/module.go @@ -108,6 +108,7 @@ type ModuleContext interface { ModuleSubDir() string + VisitDirectDepsBlueprint(visit func(blueprint.Module)) VisitDirectDeps(visit func(Module)) VisitDirectDepsIf(pred func(Module) bool, visit func(Module)) VisitDepsDepthFirst(visit func(Module)) @@ -686,6 +687,10 @@ func (a *androidModuleContext) validateAndroidModule(module blueprint.Module) Mo return aModule } +func (a *androidModuleContext) VisitDirectDepsBlueprint(visit func(blueprint.Module)) { + a.ModuleContext.VisitDirectDeps(visit) +} + func (a *androidModuleContext) VisitDirectDeps(visit func(Module)) { a.ModuleContext.VisitDirectDeps(func(module blueprint.Module) { if aModule := a.validateAndroidModule(module); aModule != nil { diff --git a/genrule/genrule.go b/genrule/genrule.go index c5b7e1d34..c142c53e0 100644 --- a/genrule/genrule.go +++ b/genrule/genrule.go @@ -158,7 +158,7 @@ func (g *Module) GenerateAndroidBuildActions(ctx android.ModuleContext) { tools := map[string]android.Path{} if len(g.properties.Tools) > 0 { - ctx.VisitDirectDeps(func(module android.Module) { + ctx.VisitDirectDepsBlueprint(func(module blueprint.Module) { switch ctx.OtherModuleDependencyTag(module) { case android.SourceDepTag: // Nothing to do @@ -167,6 +167,14 @@ func (g *Module) GenerateAndroidBuildActions(ctx android.ModuleContext) { var path android.OptionalPath if t, ok := module.(HostToolProvider); ok { + if !t.(android.Module).Enabled() { + if ctx.AConfig().AllowMissingDependencies() { + ctx.AddMissingDependencies([]string{tool}) + } else { + ctx.ModuleErrorf("depends on disabled module %q", tool) + } + break + } path = t.HostToolPath() } else if t, ok := module.(bootstrap.GoBinaryTool); ok { if s, err := filepath.Rel(android.PathForOutput(ctx).String(), t.InstallPath()); err == nil {