Use Rule-local implicit dependencies

Depends on https://github.com/google/blueprint/pull/78

This uses the new CommandDeps field to move implicit dependencies
embedded in the Command string next to the definition, instead of having
to specify them in every BuildParam struct. This should make it easier
to verify dependencies.

Change-Id: I2711b160920e22fa962a436e1f7041272166f50f
This commit is contained in:
Dan Willemsen
2015-11-17 15:27:28 -08:00
parent 322a0a6b59
commit c94a768a2a
8 changed files with 67 additions and 74 deletions

View File

@@ -34,6 +34,7 @@ var (
`$aaptCmd package -m $aaptFlags -P $publicResourcesFile -G $proguardOptionsFile ` +
`-J $javaDir || ( rm -rf "$javaDir/*"; exit 41 ) && ` +
`find $javaDir -name "*.java" > $javaFileList`,
CommandDeps: []string{"$aaptCmd"},
Description: "aapt create R.java $out",
},
"aaptFlags", "publicResourcesFile", "proguardOptionsFile", "javaDir", "javaFileList")
@@ -41,6 +42,7 @@ var (
aaptCreateAssetsPackage = pctx.StaticRule("aaptCreateAssetsPackage",
blueprint.RuleParams{
Command: `rm -f $out && $aaptCmd package $aaptFlags -F $out`,
CommandDeps: []string{"$aaptCmd"},
Description: "aapt export package $out",
},
"aaptFlags", "publicResourcesFile", "proguardOptionsFile", "javaDir", "javaFileList")
@@ -49,6 +51,7 @@ var (
blueprint.RuleParams{
// TODO: add-jni-shared-libs-to-package
Command: `cp -f $in $out.tmp && $aaptCmd package -u $aaptFlags -F $out.tmp && mv $out.tmp $out`,
CommandDeps: []string{"$aaptCmd"},
Description: "aapt package $out",
},
"aaptFlags")
@@ -56,6 +59,7 @@ var (
zipalign = pctx.StaticRule("zipalign",
blueprint.RuleParams{
Command: `$zipalignCmd -f $zipalignFlags 4 $in $out`,
CommandDeps: []string{"$zipalignCmd"},
Description: "zipalign $out",
},
"zipalignFlags")
@@ -63,6 +67,7 @@ var (
signapk = pctx.StaticRule("signapk",
blueprint.RuleParams{
Command: `java -jar $signapkCmd $certificates $in $out`,
CommandDeps: []string{"$signapkCmd"},
Description: "signapk $out",
},
"certificates")
@@ -71,6 +76,7 @@ var (
blueprint.RuleParams{
Command: "java -classpath $androidManifestMergerCmd com.android.manifmerger.Main merge " +
"--main $in --libs $libsManifests --out $out",
CommandDeps: []string{"$androidManifestMergerCmd"},
Description: "merge manifest files $out",
},
"libsManifests")
@@ -96,8 +102,6 @@ func CreateResourceJavaFiles(ctx common.AndroidModuleContext, flags []string,
publicResourcesFile := filepath.Join(common.ModuleOutDir(ctx), "public_resources.xml")
proguardOptionsFile := filepath.Join(common.ModuleOutDir(ctx), "proguard.options")
deps = append([]string{"$aaptCmd"}, deps...)
ctx.Build(pctx, blueprint.BuildParams{
Rule: aaptCreateResourceJavaFile,
Outputs: []string{publicResourcesFile, proguardOptionsFile, javaFileList},
@@ -117,8 +121,6 @@ func CreateResourceJavaFiles(ctx common.AndroidModuleContext, flags []string,
func CreateExportPackage(ctx common.AndroidModuleContext, flags []string, deps []string) string {
outputFile := filepath.Join(common.ModuleOutDir(ctx), "package-export.apk")
deps = append([]string{"$aaptCmd"}, deps...)
ctx.Build(pctx, blueprint.BuildParams{
Rule: aaptCreateAssetsPackage,
Outputs: []string{outputFile},
@@ -137,10 +139,9 @@ func CreateAppPackage(ctx common.AndroidModuleContext, flags []string, jarFile s
resourceApk := filepath.Join(common.ModuleOutDir(ctx), "resources.apk")
ctx.Build(pctx, blueprint.BuildParams{
Rule: aaptAddResources,
Outputs: []string{resourceApk},
Inputs: []string{jarFile},
Implicits: []string{"$aaptCmd"},
Rule: aaptAddResources,
Outputs: []string{resourceApk},
Inputs: []string{jarFile},
Args: map[string]string{
"aaptFlags": strings.Join(flags, " "),
},
@@ -154,10 +155,9 @@ func CreateAppPackage(ctx common.AndroidModuleContext, flags []string, jarFile s
}
ctx.Build(pctx, blueprint.BuildParams{
Rule: signapk,
Outputs: []string{signedApk},
Inputs: []string{resourceApk},
Implicits: []string{"$signapkCmd"},
Rule: signapk,
Outputs: []string{signedApk},
Inputs: []string{resourceApk},
Args: map[string]string{
"certificates": strings.Join(certificateArgs, " "),
},
@@ -166,10 +166,9 @@ func CreateAppPackage(ctx common.AndroidModuleContext, flags []string, jarFile s
outputFile := filepath.Join(common.ModuleOutDir(ctx), "package.apk")
ctx.Build(pctx, blueprint.BuildParams{
Rule: zipalign,
Outputs: []string{outputFile},
Inputs: []string{signedApk},
Implicits: []string{"$zipalignCmd"},
Rule: zipalign,
Outputs: []string{outputFile},
Inputs: []string{signedApk},
Args: map[string]string{
"zipalignFlags": "",
},

View File

@@ -52,6 +52,7 @@ var (
jar = pctx.StaticRule("jar",
blueprint.RuleParams{
Command: `$jarCmd -o $out $jarArgs`,
CommandDeps: []string{"$jarCmd"},
Description: "jar $out",
},
"jarCmd", "jarArgs")
@@ -61,6 +62,7 @@ var (
Command: `rm -rf "$outDir" && mkdir -p "$outDir" && ` +
`$dxCmd --dex --output=$outDir $dxFlags $in || ( rm -rf "$outDir"; exit 41 ) && ` +
`find "$outDir" -name "classes*.dex" > $out`,
CommandDeps: []string{"$dxCmd"},
Description: "dex $out",
},
"outDir", "dxFlags")
@@ -68,6 +70,7 @@ var (
jarjar = pctx.StaticRule("jarjar",
blueprint.RuleParams{
Command: "java -jar $jarjarCmd process $rulesFile $in $out",
CommandDeps: []string{"$jarjarCmd", "$rulesFile"},
Description: "jarjar $out",
},
"rulesFile")
@@ -156,8 +159,6 @@ func TransformClassesToJar(ctx common.AndroidModuleContext, classes []jarSpec,
jarArgs = append(jarArgs, "-m "+manifest)
}
deps = append(deps, "$jarCmd")
ctx.Build(pctx, blueprint.BuildParams{
Rule: jar,
Outputs: []string{outputFile},
@@ -177,10 +178,9 @@ func TransformClassesJarToDex(ctx common.AndroidModuleContext, classesJar string
outputFile := filepath.Join(common.ModuleOutDir(ctx), "dex.filelist")
ctx.Build(pctx, blueprint.BuildParams{
Rule: dx,
Outputs: []string{outputFile},
Inputs: []string{classesJar},
Implicits: []string{"$dxCmd"},
Rule: dx,
Outputs: []string{outputFile},
Inputs: []string{classesJar},
Args: map[string]string{
"dxFlags": flags.dxFlags,
"outDir": outDir,
@@ -205,8 +205,6 @@ func TransformDexToJavaLib(ctx common.AndroidModuleContext, resources []jarSpec,
deps = append(deps, dexJarSpec.fileList)
jarArgs = append(jarArgs, dexJarSpec.soongJarArgs())
deps = append(deps, "$jarCmd")
ctx.Build(pctx, blueprint.BuildParams{
Rule: jar,
Outputs: []string{outputFile},
@@ -222,10 +220,9 @@ func TransformDexToJavaLib(ctx common.AndroidModuleContext, resources []jarSpec,
func TransformJarJar(ctx common.AndroidModuleContext, classesJar string, rulesFile string) string {
outputFile := filepath.Join(common.ModuleOutDir(ctx), "classes-jarjar.jar")
ctx.Build(pctx, blueprint.BuildParams{
Rule: jarjar,
Outputs: []string{outputFile},
Inputs: []string{classesJar},
Implicits: []string{"$jarjarCmd"},
Rule: jarjar,
Outputs: []string{outputFile},
Inputs: []string{classesJar},
Args: map[string]string{
"rulesFile": rulesFile,
},

View File

@@ -44,6 +44,7 @@ var (
aidl = pctx.StaticRule("aidl",
blueprint.RuleParams{
Command: "$aidlCmd -d$depFile $aidlFlags $in $out",
CommandDeps: []string{"$aidlCmd"},
Description: "aidl $out",
},
"depFile", "aidlFlags")
@@ -51,12 +52,14 @@ var (
logtags = pctx.StaticRule("logtags",
blueprint.RuleParams{
Command: "$logtagsCmd -o $out $in $allLogtagsFile",
CommandDeps: []string{"$logtagsCmd"},
Description: "logtags $out",
})
mergeLogtags = pctx.StaticRule("mergeLogtags",
blueprint.RuleParams{
Command: "$mergeLogtagsCmd -o $out $in",
CommandDeps: []string{"$mergeLogtagsCmd"},
Description: "merge logtags $out",
})
)
@@ -68,10 +71,9 @@ func genAidl(ctx common.AndroidModuleContext, aidlFile, aidlFlags string) string
depFile := javaFile + ".d"
ctx.Build(pctx, blueprint.BuildParams{
Rule: aidl,
Outputs: []string{javaFile},
Inputs: []string{aidlFile},
Implicits: []string{"$aidlCmd"},
Rule: aidl,
Outputs: []string{javaFile},
Inputs: []string{aidlFile},
Args: map[string]string{
"depFile": depFile,
"aidlFlags": aidlFlags,
@@ -87,10 +89,9 @@ func genLogtags(ctx common.AndroidModuleContext, logtagsFile string) string {
javaFile = pathtools.ReplaceExtension(javaFile, "java")
ctx.Build(pctx, blueprint.BuildParams{
Rule: logtags,
Outputs: []string{javaFile},
Inputs: []string{logtagsFile},
Implicits: []string{"$logtagsCmd"},
Rule: logtags,
Outputs: []string{javaFile},
Inputs: []string{logtagsFile},
})
return javaFile