Przeglądaj źródła

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
Colin Cross 6 lat temu
rodzic
commit
ee6143cde2
6 zmienionych plików z 32 dodań i 21 usunięć
  1. 11 0
      android/module.go
  2. 11 0
      android/mutator.go
  3. 5 7
      android/prebuilt.go
  4. 1 5
      cc/coverage.go
  5. 3 5
      java/system_modules.go
  6. 1 4
      python/binary.go

+ 11 - 0
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

+ 11 - 0
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

+ 5 - 7
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()
 			}
 		})
 	}

+ 1 - 5
cc/coverage.go

@@ -59,11 +59,7 @@ func (cov *coverage) flags(ctx ModuleContext, flags Flags) Flags {
 			// For static libraries, the only thing that changes our object files
 			// are included whole static libraries, so check to see if any of
 			// those have coverage enabled.
-			ctx.VisitDirectDeps(func(m android.Module) {
-				if ctx.OtherModuleDependencyTag(m) != wholeStaticDepTag {
-					return
-				}
-
+			ctx.VisitDirectDepsWithTag(wholeStaticDepTag, func(m android.Module) {
 				if cc, ok := m.(*Module); ok && cc.coverage != nil {
 					if cc.coverage.linkCoverage {
 						cov.linkCoverage = true

+ 3 - 5
java/system_modules.go

@@ -112,11 +112,9 @@ type SystemModulesProperties struct {
 func (system *SystemModules) GenerateAndroidBuildActions(ctx android.ModuleContext) {
 	var jars android.Paths
 
-	ctx.VisitDirectDeps(func(module android.Module) {
-		if ctx.OtherModuleDependencyTag(module) == libTag {
-			dep, _ := module.(Dependency)
-			jars = append(jars, dep.HeaderJars()...)
-		}
+	ctx.VisitDirectDepsWithTag(libTag, func(module android.Module) {
+		dep, _ := module.(Dependency)
+		jars = append(jars, dep.HeaderJars()...)
 	})
 
 	jars = append(jars, android.PathsForModuleSrc(ctx, system.properties.Jars)...)

+ 1 - 4
python/binary.go

@@ -133,10 +133,7 @@ func (binary *binaryDecorator) bootstrap(ctx android.ModuleContext, actual_versi
 
 	var launcher_path android.Path
 	if embedded_launcher {
-		ctx.VisitDirectDeps(func(m android.Module) {
-			if ctx.OtherModuleDependencyTag(m) != launcherTag {
-				return
-			}
+		ctx.VisitDirectDepsWithTag(launcherTag, func(m android.Module) {
 			if provider, ok := m.(IntermPathProvider); ok {
 				if launcher_path != nil {
 					panic(fmt.Errorf("launcher path was found before: %q",