aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2017-11-16 00:11:20 -0800
committerColin Cross <ccross@android.com>2017-11-17 11:22:08 -0800
commit35143d0466461f5d83dfc7aeda53b36a274f8cc8 (patch)
tree0edf1549368f4ce7f512f652da6e84158f89f816
parentb1bd1aabca24a97cf319dfd5268a89e969f1dd98 (diff)
downloadbuild_soong-35143d0466461f5d83dfc7aeda53b36a274f8cc8.tar.gz
build_soong-35143d0466461f5d83dfc7aeda53b36a274f8cc8.tar.bz2
build_soong-35143d0466461f5d83dfc7aeda53b36a274f8cc8.zip
Fix genrules depending on Go tools
genrules lost the ability to depend on Go tools after I05e945f38915d49cd3c0ab72a86576949bc7eff2 which converted VisitDirectDeps from blueprint Modules to android Modules. Add VisitDirectDepsBlueprint to visit all modules including blueprint Modules, and use it in genrule. Also add a check for disabled modules that was being handled by VisitDirectDeps. Test: m checkbuild Change-Id: I65724283166c63596d071e598c08fed87ef32896
-rw-r--r--android/module.go5
-rw-r--r--genrule/genrule.go10
2 files changed, 14 insertions, 1 deletions
diff --git a/android/module.go b/android/module.go
index 2a8837b3..66859fa5 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 c5b7e1d3..c142c53e 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 {