aboutsummaryrefslogtreecommitdiffstats
path: root/android
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2017-12-30 17:54:27 -0800
committerColin Cross <ccross@android.com>2018-01-02 18:23:43 -0800
commitee6143cde25cbe41df754337de89d608ca890bb1 (patch)
tree7e972f8184630590cc38542c9cda9758cd7609f1 /android
parentb4330e222b8df54727d0054075d63f2dcdf0a959 (diff)
downloadbuild_soong-ee6143cde25cbe41df754337de89d608ca890bb1.tar.gz
build_soong-ee6143cde25cbe41df754337de89d608ca890bb1.tar.bz2
build_soong-ee6143cde25cbe41df754337de89d608ca890bb1.zip
Add VisitDirectDepsWithTag
Add a method on ModuleContext and TopDownMutatorContext to visit direct dependencies that have a given dependency tag. Test: m checkbuild Change-Id: Ib875563091dcae6b7282b3e3427d0eb07d8c8af5
Diffstat (limited to 'android')
-rw-r--r--android/module.go11
-rw-r--r--android/mutator.go11
-rw-r--r--android/prebuilt.go12
3 files changed, 27 insertions, 7 deletions
diff --git a/android/module.go b/android/module.go
index cb068abb..0fb94796 100644
--- a/android/module.go
+++ b/android/module.go
@@ -139,6 +139,7 @@ type ModuleContext interface {
VisitDirectDepsBlueprint(visit func(blueprint.Module))
VisitDirectDeps(visit func(Module))
+ VisitDirectDepsWithTag(tag blueprint.DependencyTag, visit func(Module))
VisitDirectDepsIf(pred func(Module) bool, visit func(Module))
VisitDepsDepthFirst(visit func(Module))
VisitDepsDepthFirstIf(pred func(Module) bool, visit func(Module))
@@ -831,6 +832,16 @@ func (a *androidModuleContext) VisitDirectDeps(visit func(Module)) {
})
}
+func (a *androidModuleContext) VisitDirectDepsWithTag(tag blueprint.DependencyTag, visit func(Module)) {
+ a.ModuleContext.VisitDirectDeps(func(module blueprint.Module) {
+ if aModule := a.validateAndroidModule(module); aModule != nil {
+ if a.ModuleContext.OtherModuleDependencyTag(aModule) == tag {
+ visit(aModule)
+ }
+ }
+ })
+}
+
func (a *androidModuleContext) VisitDirectDepsIf(pred func(Module) bool, visit func(Module)) {
a.ModuleContext.VisitDirectDepsIf(
// pred
diff --git a/android/mutator.go b/android/mutator.go
index 8de57e1b..2f13f6ca 100644
--- a/android/mutator.go
+++ b/android/mutator.go
@@ -127,6 +127,7 @@ type TopDownMutatorContext interface {
GetDirectDep(name string) (blueprint.Module, blueprint.DependencyTag)
VisitDirectDeps(visit func(Module))
+ VisitDirectDepsWithTag(tag blueprint.DependencyTag, visit func(Module))
VisitDirectDepsIf(pred func(Module) bool, visit func(Module))
VisitDepsDepthFirst(visit func(Module))
VisitDepsDepthFirstIf(pred func(Module) bool, visit func(Module))
@@ -230,6 +231,16 @@ func (a *androidTopDownMutatorContext) VisitDirectDeps(visit func(Module)) {
})
}
+func (a *androidTopDownMutatorContext) VisitDirectDepsWithTag(tag blueprint.DependencyTag, visit func(Module)) {
+ a.TopDownMutatorContext.VisitDirectDeps(func(module blueprint.Module) {
+ if aModule, _ := module.(Module); aModule != nil {
+ if a.TopDownMutatorContext.OtherModuleDependencyTag(aModule) == tag {
+ visit(aModule)
+ }
+ }
+ })
+}
+
func (a *androidTopDownMutatorContext) VisitDirectDepsIf(pred func(Module) bool, visit func(Module)) {
a.TopDownMutatorContext.VisitDirectDepsIf(
// pred
diff --git a/android/prebuilt.go b/android/prebuilt.go
index d3f97041..9356aabb 100644
--- a/android/prebuilt.go
+++ b/android/prebuilt.go
@@ -109,13 +109,11 @@ func PrebuiltSelectModuleMutator(ctx TopDownMutatorContext) {
p.properties.UsePrebuilt = p.usePrebuilt(ctx, nil)
}
} else if s, ok := ctx.Module().(Module); ok {
- ctx.VisitDirectDeps(func(m Module) {
- if ctx.OtherModuleDependencyTag(m) == prebuiltDepTag {
- p := m.(PrebuiltInterface).Prebuilt()
- if p.usePrebuilt(ctx, s) {
- p.properties.UsePrebuilt = true
- s.SkipInstall()
- }
+ ctx.VisitDirectDepsWithTag(prebuiltDepTag, func(m Module) {
+ p := m.(PrebuiltInterface).Prebuilt()
+ if p.usePrebuilt(ctx, s) {
+ p.properties.UsePrebuilt = true
+ s.SkipInstall()
}
})
}