diff --git a/android/api_levels.go b/android/api_levels.go index c77ced16e..70b251b61 100644 --- a/android/api_levels.go +++ b/android/api_levels.go @@ -16,6 +16,7 @@ package android import ( "encoding/json" + "path/filepath" "github.com/google/blueprint" ) @@ -39,8 +40,9 @@ func createApiLevelsJson(ctx blueprint.SingletonContext, file string, } ctx.Build(pctx, blueprint.BuildParams{ - Rule: WriteFile, - Outputs: []string{file}, + Rule: WriteFile, + Description: "generate " + filepath.Base(file), + Outputs: []string{file}, Args: map[string]string{ "content": string(jsonStr[:]), }, diff --git a/android/arch.go b/android/arch.go index 39477ad72..51fc444e9 100644 --- a/android/arch.go +++ b/android/arch.go @@ -224,6 +224,21 @@ const ( HostCross ) +func (class OsClass) String() string { + switch class { + case Generic: + return "generic" + case Device: + return "device" + case Host: + return "host" + case HostCross: + return "host cross" + default: + panic(fmt.Errorf("unknown class %d", class)) + } +} + func (os OsType) String() string { return os.Name } diff --git a/android/module.go b/android/module.go index 90d61e2aa..8f8f34b33 100644 --- a/android/module.go +++ b/android/module.go @@ -36,6 +36,7 @@ type ModuleBuildParams struct { Rule blueprint.Rule Deps blueprint.Deps Depfile WritablePath + Description string Output WritablePath Outputs WritablePaths ImplicitOutput WritablePath @@ -480,6 +481,23 @@ func (a *ModuleBase) GenerateBuildActions(ctx blueprint.ModuleContext) { missingDeps: ctx.GetMissingDependencies(), } + desc := "//" + ctx.ModuleDir() + ":" + ctx.ModuleName() + " " + var suffix []string + if androidCtx.Os().Class != Device && androidCtx.Os().Class != Generic { + suffix = append(suffix, androidCtx.Os().String()) + } + if !androidCtx.PrimaryArch() { + suffix = append(suffix, androidCtx.Arch().ArchType.String()) + } + + ctx.Variable(pctx, "moduleDesc", desc) + + s := "" + if len(suffix) > 0 { + s = " [" + strings.Join(suffix, " ") + "]" + } + ctx.Variable(pctx, "moduleDescSuffix", s) + if a.Enabled() { a.module.GenerateAndroidBuildActions(androidCtx) if ctx.Failed() { @@ -516,11 +534,12 @@ type androidModuleContext struct { module Module } -func (a *androidModuleContext) ninjaError(outputs []string, err error) { +func (a *androidModuleContext) ninjaError(desc string, outputs []string, err error) { a.ModuleContext.Build(pctx, blueprint.BuildParams{ - Rule: ErrorRule, - Outputs: outputs, - Optional: true, + Rule: ErrorRule, + Description: desc, + Outputs: outputs, + Optional: true, Args: map[string]string{ "error": err.Error(), }, @@ -530,8 +549,9 @@ func (a *androidModuleContext) ninjaError(outputs []string, err error) { func (a *androidModuleContext) Build(pctx blueprint.PackageContext, params blueprint.BuildParams) { if a.missingDeps != nil { - a.ninjaError(params.Outputs, fmt.Errorf("module %s missing dependencies: %s\n", - a.ModuleName(), strings.Join(a.missingDeps, ", "))) + a.ninjaError(params.Description, params.Outputs, + fmt.Errorf("module %s missing dependencies: %s\n", + a.ModuleName(), strings.Join(a.missingDeps, ", "))) return } @@ -552,6 +572,10 @@ func (a *androidModuleContext) ModuleBuild(pctx blueprint.PackageContext, params Optional: !params.Default, } + if params.Description != "" { + bparams.Description = "${moduleDesc}" + params.Description + "${moduleDescSuffix}" + } + if params.Depfile != nil { bparams.Depfile = params.Depfile.String() } @@ -569,8 +593,9 @@ func (a *androidModuleContext) ModuleBuild(pctx blueprint.PackageContext, params } if a.missingDeps != nil { - a.ninjaError(bparams.Outputs, fmt.Errorf("module %s missing dependencies: %s\n", - a.ModuleName(), strings.Join(a.missingDeps, ", "))) + a.ninjaError(bparams.Description, bparams.Outputs, + fmt.Errorf("module %s missing dependencies: %s\n", + a.ModuleName(), strings.Join(a.missingDeps, ", "))) return } @@ -624,6 +649,9 @@ func (a *androidBaseContextImpl) Debug() bool { } func (a *androidBaseContextImpl) PrimaryArch() bool { + if len(a.config.Targets[a.target.Os.Class]) <= 1 { + return true + } return a.target.Arch.ArchType == a.config.Targets[a.target.Os.Class][0].Arch.ArchType } @@ -686,12 +714,13 @@ func (a *androidModuleContext) InstallFileName(installPath OutputPath, name stri } a.ModuleBuild(pctx, ModuleBuildParams{ - Rule: Cp, - Output: fullInstallPath, - Input: srcPath, - Implicits: implicitDeps, - OrderOnly: orderOnlyDeps, - Default: !a.AConfig().EmbeddedInMake(), + Rule: Cp, + Description: "install " + fullInstallPath.Base(), + Output: fullInstallPath, + Input: srcPath, + Implicits: implicitDeps, + OrderOnly: orderOnlyDeps, + Default: !a.AConfig().EmbeddedInMake(), }) a.installFiles = append(a.installFiles, fullInstallPath) @@ -711,10 +740,11 @@ func (a *androidModuleContext) InstallSymlink(installPath OutputPath, name strin if !a.skipInstall(fullInstallPath) { a.ModuleBuild(pctx, ModuleBuildParams{ - Rule: Symlink, - Output: fullInstallPath, - OrderOnly: Paths{srcPath}, - Default: !a.AConfig().EmbeddedInMake(), + Rule: Symlink, + Description: "install symlink " + fullInstallPath.Base(), + Output: fullInstallPath, + OrderOnly: Paths{srcPath}, + Default: !a.AConfig().EmbeddedInMake(), Args: map[string]string{ "fromPath": srcPath.String(), }, diff --git a/cc/builder.go b/cc/builder.go index 8a0c7f4cf..a4fda5bc4 100644 --- a/cc/builder.go +++ b/cc/builder.go @@ -45,7 +45,6 @@ var ( Deps: blueprint.DepsGCC, Command: "$relPwd ${config.CcWrapper}$ccCmd -c $cFlags -MD -MF ${out}.d -o $out $in", CommandDeps: []string{"$ccCmd"}, - Description: "cc $out", }, "ccCmd", "cFlags") @@ -54,7 +53,6 @@ var ( Command: "$ldCmd ${crtBegin} @${out}.rsp " + "${libFlags} ${crtEnd} -o ${out} ${ldFlags}", CommandDeps: []string{"$ldCmd"}, - Description: "ld $out", Rspfile: "${out}.rsp", RspfileContent: "${in}", }, @@ -64,7 +62,6 @@ var ( blueprint.RuleParams{ Command: "$ldCmd -nostdlib -Wl,-r ${in} -o ${out} ${ldFlags}", CommandDeps: []string{"$ldCmd"}, - Description: "partialLd $out", }, "ldCmd", "ldFlags") @@ -72,7 +69,6 @@ var ( blueprint.RuleParams{ Command: "rm -f ${out} && $arCmd $arFlags $out @${out}.rsp", CommandDeps: []string{"$arCmd"}, - Description: "ar $out", Rspfile: "${out}.rsp", RspfileContent: "${in}", }, @@ -82,7 +78,6 @@ var ( blueprint.RuleParams{ Command: "rm -f ${out} && ${config.MacArPath} $arFlags $out $in", CommandDeps: []string{"${config.MacArPath}"}, - Description: "ar $out", }, "arFlags") @@ -90,7 +85,6 @@ var ( blueprint.RuleParams{ Command: "cp -f ${inAr} ${out}.tmp && ${config.MacArPath} $arFlags ${out}.tmp $in && mv ${out}.tmp ${out}", CommandDeps: []string{"${config.MacArPath}", "${inAr}"}, - Description: "ar $out", }, "arFlags", "inAr") @@ -98,14 +92,12 @@ var ( blueprint.RuleParams{ Command: "${config.MacStripPath} -u -r -o $out $in", CommandDeps: []string{"${config.MacStripPath}"}, - Description: "strip $out", }) prefixSymbols = pctx.AndroidStaticRule("prefixSymbols", blueprint.RuleParams{ Command: "$objcopyCmd --prefix-symbols=${prefix} ${in} ${out}", CommandDeps: []string{"$objcopyCmd"}, - Description: "prefixSymbols $out", }, "objcopyCmd", "prefix") @@ -117,14 +109,12 @@ var ( Deps: blueprint.DepsGCC, Command: "CROSS_COMPILE=$crossCompile $stripPath ${args} -i ${in} -o ${out} -d ${out}.d", CommandDeps: []string{"$stripPath"}, - Description: "strip $out", }, "args", "crossCompile") emptyFile = pctx.AndroidStaticRule("emptyFile", blueprint.RuleParams{ - Command: "rm -f $out && touch $out", - Description: "empty file $out", + Command: "rm -f $out && touch $out", }) _ = pctx.SourcePathVariable("copyGccLibPath", "build/soong/scripts/copygcclib.sh") @@ -135,7 +125,6 @@ var ( Deps: blueprint.DepsGCC, Command: "$copyGccLibPath $out $ccCmd $cFlags -print-file-name=${libName}", CommandDeps: []string{"$copyGccLibPath", "$ccCmd"}, - Description: "copy gcc $out", }, "ccCmd", "cFlags", "libName") @@ -155,7 +144,6 @@ var ( blueprint.RuleParams{ Command: "rm -f $out && ${config.ClangBin}/clang-tidy $tidyFlags $in -- $cFlags && touch $out", CommandDeps: []string{"${config.ClangBin}/clang-tidy"}, - Description: "tidy $out", }, "cFlags", "tidyFlags") @@ -165,7 +153,6 @@ var ( blueprint.RuleParams{ Command: "$yasmCmd $asFlags -o $out $in", CommandDeps: []string{"$yasmCmd"}, - Description: "yasm $out", }, "asFlags") @@ -175,7 +162,6 @@ var ( blueprint.RuleParams{ Command: "rm -f $out && $sAbiDumper -o ${out} $in $exportDirs -- $cFlags -Wno-packed -Qunused-arguments -isystem ${config.RSIncludePath}", CommandDeps: []string{"$sAbiDumper"}, - Description: "header-abi-dumper $in -o $out $exportDirs", }, "cFlags", "exportDirs") @@ -185,7 +171,6 @@ var ( blueprint.RuleParams{ Command: "$sAbiLinker -o ${out} $symbolFile -arch $arch -api $api $exportedHeaderFlags @${out}.rsp ", CommandDeps: []string{"$sAbiLinker"}, - Description: "header-abi-linker $in -o $out", Rspfile: "${out}.rsp", RspfileContent: "${in}", }, @@ -197,7 +182,6 @@ var ( blueprint.RuleParams{ Command: "$sAbiDiffer -advice-only -o ${out} -new $in -old $referenceDump", CommandDeps: []string{"$sAbiDiffer"}, - Description: "header-abi-diff -o ${out} -new $in -old $referenceDump", }, "referenceDump") ) @@ -323,10 +307,11 @@ func TransformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles and if srcFile.Ext() == ".asm" { ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: yasm, - Output: objFile, - Input: srcFile, - OrderOnly: deps, + Rule: yasm, + Description: "yasm " + srcFile.Rel(), + Output: objFile, + Input: srcFile, + OrderOnly: deps, Args: map[string]string{ "asFlags": flags.yasmFlags, }, @@ -367,7 +352,11 @@ func TransformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles and default: panic("unrecoginzied ccCmd") } + } + ccDesc := ccCmd + + if flags.clang { ccCmd = "${config.ClangBin}/" + ccCmd } else { ccCmd = gccCmd(flags.toolchain, ccCmd) @@ -382,6 +371,7 @@ func TransformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles and ctx.ModuleBuild(pctx, android.ModuleBuildParams{ Rule: cc, + Description: ccDesc + " " + srcFile.Rel(), Output: objFile, ImplicitOutputs: implicitOutputs, Input: srcFile, @@ -397,9 +387,10 @@ func TransformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles and tidyFiles = append(tidyFiles, tidyFile) ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: clangTidy, - Output: tidyFile, - Input: srcFile, + Rule: clangTidy, + Description: "clang-tidy " + srcFile.Rel(), + Output: tidyFile, + Input: srcFile, // We must depend on objFile, since clang-tidy doesn't // support exporting dependencies. Implicit: objFile, @@ -415,10 +406,11 @@ func TransformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles and sAbiDumpFiles = append(sAbiDumpFiles, sAbiDumpFile) ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: sAbiDump, - Output: sAbiDumpFile, - Input: srcFile, - Implicit: objFile, + Rule: sAbiDump, + Description: "header-abi-dumper " + srcFile.Rel(), + Output: sAbiDumpFile, + Input: srcFile, + Implicit: objFile, Args: map[string]string{ "cFlags": moduleCflags, "exportDirs": flags.sAbiFlags, @@ -452,10 +444,11 @@ func TransformObjToStaticLib(ctx android.ModuleContext, objFiles android.Paths, } ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: ar, - Output: outputFile, - Inputs: objFiles, - Implicits: deps, + Rule: ar, + Description: "static link " + outputFile.Base(), + Output: outputFile, + Inputs: objFiles, + Implicits: deps, Args: map[string]string{ "arFlags": arFlags, "arCmd": arCmd, @@ -477,24 +470,27 @@ func transformDarwinObjToStaticLib(ctx android.ModuleContext, objFiles android.P dummyAr := android.PathForModuleOut(ctx, "dummy"+staticLibraryExtension) ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: emptyFile, - Output: dummy, - Implicits: deps, + Rule: emptyFile, + Description: "empty object file", + Output: dummy, + Implicits: deps, }) ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: darwinAr, - Output: dummyAr, - Input: dummy, + Rule: darwinAr, + Description: "empty static archive", + Output: dummyAr, + Input: dummy, Args: map[string]string{ "arFlags": arFlags, }, }) ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: darwinAppendAr, - Output: outputFile, - Input: dummy, + Rule: darwinAppendAr, + Description: "static link " + outputFile.Base(), + Output: outputFile, + Input: dummy, Args: map[string]string{ "arFlags": "d", "inAr": dummyAr.String(), @@ -519,10 +515,11 @@ func transformDarwinObjToStaticLib(ctx android.ModuleContext, objFiles android.P } build := android.ModuleBuildParams{ - Rule: darwinAr, - Output: out, - Inputs: l, - Implicits: deps, + Rule: darwinAr, + Description: "static link " + out.Base(), + Output: out, + Inputs: l, + Implicits: deps, Args: map[string]string{ "arFlags": arFlags, }, @@ -592,10 +589,11 @@ func TransformObjToDynamicBinary(ctx android.ModuleContext, } ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: ld, - Output: outputFile, - Inputs: objFiles, - Implicits: deps, + Rule: ld, + Description: "link " + outputFile.Base(), + Output: outputFile, + Inputs: objFiles, + Implicits: deps, Args: map[string]string{ "ldCmd": ldCmd, "crtBegin": crtBegin.String(), @@ -618,10 +616,11 @@ func TransformDumpToLinkedDump(ctx android.ModuleContext, sAbiDumps android.Path linkedDumpDep = symbolFile.Path() } ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: sAbiLink, - Output: outputFile, - Inputs: sAbiDumps, - Implicit: linkedDumpDep, + Rule: sAbiLink, + Description: "header-abi-linker " + outputFile.Base(), + Output: outputFile, + Inputs: sAbiDumps, + Implicit: linkedDumpDep, Args: map[string]string{ "symbolFile": symbolFileStr, "arch": ctx.Arch().ArchType.Name, @@ -636,10 +635,11 @@ func SourceAbiDiff(ctx android.ModuleContext, inputDump android.Path, referenceD baseName string) android.OptionalPath { outputFile := android.PathForModuleOut(ctx, baseName+".abidiff") ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: sAbiDiff, - Output: outputFile, - Input: inputDump, - Implicit: referenceDump, + Rule: sAbiDiff, + Description: "header-abi-diff " + outputFile.Base(), + Output: outputFile, + Input: inputDump, + Implicit: referenceDump, Args: map[string]string{ "referenceDump": referenceDump.String(), }, @@ -654,9 +654,10 @@ func TransformSharedObjectToToc(ctx android.ModuleContext, inputFile android.Wri crossCompile := gccCmd(flags.toolchain, "") ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: toc, - Output: outputFile, - Input: inputFile, + Rule: toc, + Description: "generate toc " + inputFile.Base(), + Output: outputFile, + Input: inputFile, Args: map[string]string{ "crossCompile": crossCompile, }, @@ -675,9 +676,10 @@ func TransformObjsToObj(ctx android.ModuleContext, objFiles android.Paths, } ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: partialLd, - Output: outputFile, - Inputs: objFiles, + Rule: partialLd, + Description: "link " + outputFile.Base(), + Output: outputFile, + Inputs: objFiles, Args: map[string]string{ "ldCmd": ldCmd, "ldFlags": flags.ldFlags, @@ -692,9 +694,10 @@ func TransformBinaryPrefixSymbols(ctx android.ModuleContext, prefix string, inpu objcopyCmd := gccCmd(flags.toolchain, "objcopy") ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: prefixSymbols, - Output: outputFile, - Input: inputFile, + Rule: prefixSymbols, + Description: "prefix symbols " + outputFile.Base(), + Output: outputFile, + Input: inputFile, Args: map[string]string{ "objcopyCmd": objcopyCmd, "prefix": prefix, @@ -718,9 +721,10 @@ func TransformStrip(ctx android.ModuleContext, inputFile android.Path, } ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: strip, - Output: outputFile, - Input: inputFile, + Rule: strip, + Description: "strip " + outputFile.Base(), + Output: outputFile, + Input: inputFile, Args: map[string]string{ "crossCompile": crossCompile, "args": args, @@ -732,9 +736,10 @@ func TransformDarwinStrip(ctx android.ModuleContext, inputFile android.Path, outputFile android.WritablePath) { ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: darwinStrip, - Output: outputFile, - Input: inputFile, + Rule: darwinStrip, + Description: "strip " + outputFile.Base(), + Output: outputFile, + Input: inputFile, }) } @@ -756,8 +761,9 @@ func CopyGccLib(ctx android.ModuleContext, libName string, flags builderFlags, outputFile android.WritablePath) { ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: copyGccLib, - Output: outputFile, + Rule: copyGccLib, + Description: "copy gcc library " + libName, + Output: outputFile, Args: map[string]string{ "ccCmd": gccCmd(flags.toolchain, "gcc"), "cFlags": flags.globalFlags, diff --git a/cc/gen.go b/cc/gen.go index 353c43d85..7a22abdde 100644 --- a/cc/gen.go +++ b/cc/gen.go @@ -37,7 +37,6 @@ var ( blueprint.RuleParams{ Command: "BISON_PKGDATADIR=$yaccDataDir $yaccCmd -d $yaccFlags --defines=$hFile -o $out $in", CommandDeps: []string{"$yaccCmd"}, - Description: "yacc $out", }, "yaccFlags", "hFile") @@ -45,7 +44,6 @@ var ( blueprint.RuleParams{ Command: "$lexCmd -o$out $in", CommandDeps: []string{"$lexCmd"}, - Description: "lex $out", }) aidl = pctx.AndroidStaticRule("aidl", @@ -54,7 +52,6 @@ var ( CommandDeps: []string{"$aidlCmd"}, Depfile: "${out}.d", Deps: blueprint.DepsGCC, - Description: "aidl $out", }, "aidlFlags", "outDir") ) @@ -64,6 +61,7 @@ func genYacc(ctx android.ModuleContext, yaccFile android.Path, outFile android.M ctx.ModuleBuild(pctx, android.ModuleBuildParams{ Rule: yacc, + Description: "yacc " + yaccFile.Rel(), Output: outFile, ImplicitOutput: headerFile, Input: yaccFile, @@ -79,9 +77,10 @@ func genYacc(ctx android.ModuleContext, yaccFile android.Path, outFile android.M func genAidl(ctx android.ModuleContext, aidlFile android.Path, outFile android.ModuleGenPath, aidlFlags string) android.Paths { ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: aidl, - Output: outFile, - Input: aidlFile, + Rule: aidl, + Description: "aidl " + aidlFile.Rel(), + Output: outFile, + Input: aidlFile, Args: map[string]string{ "aidlFlags": aidlFlags, "outDir": android.PathForModuleGen(ctx, "aidl").String(), @@ -94,9 +93,10 @@ func genAidl(ctx android.ModuleContext, aidlFile android.Path, outFile android.M func genLex(ctx android.ModuleContext, lexFile android.Path, outFile android.ModuleGenPath) { ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: lex, - Output: outFile, - Input: lexFile, + Rule: lex, + Description: "lex " + lexFile.Rel(), + Output: outFile, + Input: lexFile, }) } diff --git a/cc/ndk_headers.go b/cc/ndk_headers.go index deb735a92..516f6e200 100644 --- a/cc/ndk_headers.go +++ b/cc/ndk_headers.go @@ -31,7 +31,6 @@ var ( // let us have only implicit outputs. Command: "$versionerCmd -o $outDir $srcDir $depsPath && touch $out", CommandDeps: []string{"$versionerCmd"}, - Description: "versioner preprocess $in", }, "depsPath", "srcDir", "outDir") ) @@ -238,6 +237,7 @@ func processHeadersWithVersioner(ctx android.ModuleContext, srcDir, outDir andro timestampFile := android.PathForModuleOut(ctx, "versioner.timestamp") ctx.ModuleBuild(pctx, android.ModuleBuildParams{ Rule: preprocessBionicHeaders, + Description: "versioner preprocess " + srcDir.Rel(), Output: timestampFile, Implicits: append(srcFiles, depsGlob...), ImplicitOutputs: installPaths, diff --git a/cc/ndk_library.go b/cc/ndk_library.go index 1bd63a985..ba3ec7d23 100644 --- a/cc/ndk_library.go +++ b/cc/ndk_library.go @@ -32,7 +32,6 @@ var ( blueprint.RuleParams{ Command: "$toolPath --arch $arch --api $apiLevel --api-map " + "$apiMap $vndk $in $out", - Description: "genStubSrc $out", CommandDeps: []string{"$toolPath"}, }, "arch", "apiLevel", "apiMap", "vndk") @@ -251,10 +250,11 @@ func compileStubLibrary(ctx ModuleContext, flags Flags, symbolFile, apiLevel, vn symbolFilePath := android.PathForModuleSrc(ctx, symbolFile) apiLevelsJson := android.GetApiLevelsJson(ctx) ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: genStubSrc, - Outputs: []android.WritablePath{stubSrcPath, versionScriptPath}, - Input: symbolFilePath, - Implicits: []android.Path{apiLevelsJson}, + Rule: genStubSrc, + Description: "generate stubs " + symbolFilePath.Rel(), + Outputs: []android.WritablePath{stubSrcPath, versionScriptPath}, + Input: symbolFilePath, + Implicits: []android.Path{apiLevelsJson}, Args: map[string]string{ "arch": arch, "apiLevel": apiLevel, diff --git a/cc/ndk_sysroot.go b/cc/ndk_sysroot.go index 2e4e3959d..5b4cfbe81 100644 --- a/cc/ndk_sysroot.go +++ b/cc/ndk_sysroot.go @@ -113,10 +113,11 @@ func (n *ndkSingleton) GenerateBuildActions(ctx blueprint.SingletonContext) { combinedLicense := getNdkInstallBase(ctx).Join(ctx, "NOTICE") ctx.Build(pctx, blueprint.BuildParams{ - Rule: android.Cat, - Outputs: []string{combinedLicense.String()}, - Inputs: licensePaths, - Optional: true, + Rule: android.Cat, + Description: "combine licenses", + Outputs: []string{combinedLicense.String()}, + Inputs: licensePaths, + Optional: true, }) depPaths := append(installPaths, combinedLicense.String()) diff --git a/cc/proto.go b/cc/proto.go index 10d3c624f..6c1789abf 100644 --- a/cc/proto.go +++ b/cc/proto.go @@ -30,7 +30,6 @@ var ( blueprint.RuleParams{ Command: "$protocCmd --cpp_out=$outDir $protoFlags $in", CommandDeps: []string{"$protocCmd"}, - Description: "protoc $out", }, "protoFlags", "outDir") ) @@ -48,9 +47,10 @@ func genProto(ctx android.ModuleContext, protoFile android.Path, outFile := android.GenPathWithExt(ctx, "proto", protoFile, "pb.cc") headerFile := android.GenPathWithExt(ctx, "proto", protoFile, "pb.h") ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: proto, - Outputs: android.WritablePaths{outFile, headerFile}, - Input: protoFile, + Rule: proto, + Description: "protoc " + protoFile.Rel(), + Outputs: android.WritablePaths{outFile, headerFile}, + Input: protoFile, Args: map[string]string{ "outDir": protoDir(ctx).String(), "protoFlags": protoFlags, diff --git a/cc/relocation_packer.go b/cc/relocation_packer.go index c509f312c..c9f82ba88 100644 --- a/cc/relocation_packer.go +++ b/cc/relocation_packer.go @@ -30,7 +30,6 @@ var relocationPackerRule = pctx.AndroidStaticRule("packRelocations", blueprint.RuleParams{ Command: "rm -f $out && cp $in $out && $relocationPackerCmd $out", CommandDeps: []string{"$relocationPackerCmd"}, - Description: "pack relocations $out", }) type RelocationPackerProperties struct { @@ -77,8 +76,9 @@ func (p *relocationPacker) needsPacking(ctx ModuleContext) bool { func (p *relocationPacker) pack(ctx ModuleContext, in, out android.ModuleOutPath, flags builderFlags) { ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: relocationPackerRule, - Output: out, - Input: in, + Rule: relocationPackerRule, + Description: "pack relocations", + Output: out, + Input: in, }) } diff --git a/cc/rs.go b/cc/rs.go index a001f89ea..976107ea1 100644 --- a/cc/rs.go +++ b/cc/rs.go @@ -39,7 +39,6 @@ var ( CommandDeps: []string{"$rsCmd"}, Depfile: "${out}.d", Deps: blueprint.DepsGCC, - Description: "rsCpp $out", }, "depFiles", "outDir", "rsFlags", "stampFile") ) @@ -67,6 +66,7 @@ func rsGenerateCpp(ctx android.ModuleContext, rsFiles android.Paths, rsFlags str ctx.ModuleBuild(pctx, android.ModuleBuildParams{ Rule: rsCpp, + Description: "llvm-rs-cc", Output: stampFile, ImplicitOutputs: cppFiles, Inputs: rsFiles, diff --git a/genrule/genrule.go b/genrule/genrule.go index 68077616f..2ff018f5d 100644 --- a/genrule/genrule.go +++ b/genrule/genrule.go @@ -218,11 +218,17 @@ func (g *generator) GenerateAndroidBuildActions(ctx android.ModuleContext) { } func (g *generator) generateSourceFile(ctx android.ModuleContext, task generateTask) { + desc := "generate" + if len(task.out) == 1 { + desc += " " + task.out[0].Base() + } + params := android.ModuleBuildParams{ - Rule: g.rule, - Outputs: task.out, - Inputs: task.in, - Implicits: g.deps, + Rule: g.rule, + Description: "generate", + Outputs: task.out, + Inputs: task.in, + Implicits: g.deps, } if g.properties.Depfile { depfile := android.GenPathWithExt(ctx, "", task.out[0], task.out[0].Ext()+".d") diff --git a/java/app_builder.go b/java/app_builder.go index bbd3dac40..55fded57c 100644 --- a/java/app_builder.go +++ b/java/app_builder.go @@ -34,7 +34,6 @@ var ( `-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") @@ -42,7 +41,6 @@ var ( blueprint.RuleParams{ Command: `rm -f $out && $aaptCmd package $aaptFlags -F $out`, CommandDeps: []string{"$aaptCmd"}, - Description: "aapt export package $out", }, "aaptFlags", "publicResourcesFile", "proguardOptionsFile", "javaDir", "javaFileList") @@ -51,7 +49,6 @@ var ( // 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") @@ -59,7 +56,6 @@ var ( blueprint.RuleParams{ Command: `java -jar $signapkCmd $certificates $in $out`, CommandDeps: []string{"$signapkCmd"}, - Description: "signapk $out", }, "certificates") @@ -68,7 +64,7 @@ var ( Command: "java -classpath $androidManifestMergerCmd com.android.manifmerger.Main merge " + "--main $in --libs $libsManifests --out $out", CommandDeps: []string{"$androidManifestMergerCmd"}, - Description: "merge manifest files $out", + Description: "merge manifest files", }, "libsManifests") ) @@ -87,9 +83,10 @@ func CreateResourceJavaFiles(ctx android.ModuleContext, flags []string, proguardOptionsFile := android.PathForModuleOut(ctx, "proguard.options") ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: aaptCreateResourceJavaFile, - Outputs: android.WritablePaths{publicResourcesFile, proguardOptionsFile, javaFileList}, - Implicits: deps, + Rule: aaptCreateResourceJavaFile, + Description: "aapt create R.java", + Outputs: android.WritablePaths{publicResourcesFile, proguardOptionsFile, javaFileList}, + Implicits: deps, Args: map[string]string{ "aaptFlags": strings.Join(flags, " "), "publicResourcesFile": publicResourcesFile.String(), @@ -106,9 +103,10 @@ func CreateExportPackage(ctx android.ModuleContext, flags []string, deps android outputFile := android.PathForModuleOut(ctx, "package-export.apk") ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: aaptCreateAssetsPackage, - Output: outputFile, - Implicits: deps, + Rule: aaptCreateAssetsPackage, + Description: "aapt export package", + Output: outputFile, + Implicits: deps, Args: map[string]string{ "aaptFlags": strings.Join(flags, " "), }, @@ -123,9 +121,10 @@ func CreateAppPackage(ctx android.ModuleContext, flags []string, jarFile android resourceApk := android.PathForModuleOut(ctx, "resources.apk") ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: aaptAddResources, - Output: resourceApk, - Input: jarFile, + Rule: aaptAddResources, + Description: "aapt package", + Output: resourceApk, + Input: jarFile, Args: map[string]string{ "aaptFlags": strings.Join(flags, " "), }, @@ -139,9 +138,10 @@ func CreateAppPackage(ctx android.ModuleContext, flags []string, jarFile android } ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: signapk, - Output: outputFile, - Input: resourceApk, + Rule: signapk, + Description: "signapk", + Output: outputFile, + Input: resourceApk, Args: map[string]string{ "certificates": strings.Join(certificateArgs, " "), }, diff --git a/java/builder.go b/java/builder.go index a9da0fc08..895a99944 100644 --- a/java/builder.go +++ b/java/builder.go @@ -45,7 +45,6 @@ var ( `find $outDir -name "*.class" > $out`, Rspfile: "$out.rsp", RspfileContent: "$in", - Description: "javac $outDir", }, "javacCmd", "javacFlags", "bootClasspath", "classpath", "outDir") @@ -53,7 +52,6 @@ var ( blueprint.RuleParams{ Command: `$jarCmd -o $out $jarArgs`, CommandDeps: []string{"$jarCmd"}, - Description: "jar $out", }, "jarCmd", "jarArgs") @@ -63,7 +61,6 @@ var ( `$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") @@ -71,7 +68,6 @@ var ( blueprint.RuleParams{ Command: "java -jar $jarjarCmd process $rulesFile $in $out", CommandDeps: []string{"$jarjarCmd", "$rulesFile"}, - Description: "jarjar $out", }, "rulesFile") @@ -81,7 +77,6 @@ var ( `find $outDir -name "*.class" > $classFile && ` + `find $outDir -type f -a \! -name "*.class" -a \! -name "MANIFEST.MF" > $resourceFile || ` + `(rm -rf $outDir; exit 42)`, - Description: "extract java prebuilt $outDir", }, "outDir", "classFile", "resourceFile") ) @@ -122,10 +117,11 @@ func TransformJavaToClasses(ctx android.ModuleContext, srcFiles android.Paths, s deps = append(deps, srcFileLists...) ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: javac, - Output: classFileList, - Inputs: srcFiles, - Implicits: deps, + Rule: javac, + Description: "javac", + Output: classFileList, + Inputs: srcFiles, + Implicits: deps, Args: map[string]string{ "javacFlags": javacFlags, "bootClasspath": flags.bootClasspath, @@ -156,9 +152,10 @@ func TransformClassesToJar(ctx android.ModuleContext, classes []jarSpec, } ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: jar, - Output: outputFile, - Implicits: deps, + Rule: jar, + Description: "jar", + Output: outputFile, + Implicits: deps, Args: map[string]string{ "jarArgs": strings.Join(jarArgs, " "), }, @@ -174,9 +171,10 @@ func TransformClassesJarToDex(ctx android.ModuleContext, classesJar android.Path outputFile := android.PathForModuleOut(ctx, "dex.filelist") ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: dx, - Output: outputFile, - Input: classesJar, + Rule: dx, + Description: "dx", + Output: outputFile, + Input: classesJar, Args: map[string]string{ "dxFlags": flags.dxFlags, "outDir": outDir.String(), @@ -202,9 +200,10 @@ func TransformDexToJavaLib(ctx android.ModuleContext, resources []jarSpec, jarArgs = append(jarArgs, dexJarSpec.soongJarArgs()) ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: jar, - Output: outputFile, - Implicits: deps, + Rule: jar, + Description: "jar", + Output: outputFile, + Implicits: deps, Args: map[string]string{ "jarArgs": strings.Join(jarArgs, " "), }, @@ -216,10 +215,11 @@ func TransformDexToJavaLib(ctx android.ModuleContext, resources []jarSpec, func TransformJarJar(ctx android.ModuleContext, classesJar android.Path, rulesFile android.Path) android.Path { outputFile := android.PathForModuleOut(ctx, "classes-jarjar.jar") ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: jarjar, - Output: outputFile, - Input: classesJar, - Implicit: rulesFile, + Rule: jarjar, + Description: "jarjar", + Output: outputFile, + Input: classesJar, + Implicit: rulesFile, Args: map[string]string{ "rulesFile": rulesFile.String(), }, @@ -236,9 +236,10 @@ func TransformPrebuiltJarToClasses(ctx android.ModuleContext, resourceFileList := android.PathForModuleOut(ctx, "extracted/resources.list") ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: extractPrebuilt, - Outputs: android.WritablePaths{classFileList, resourceFileList}, - Input: prebuilt, + Rule: extractPrebuilt, + Description: "extract classes", + Outputs: android.WritablePaths{classFileList, resourceFileList}, + Input: prebuilt, Args: map[string]string{ "outDir": classDir.String(), "classFile": classFileList.String(), diff --git a/java/gen.go b/java/gen.go index 062470854..e3973bf8d 100644 --- a/java/gen.go +++ b/java/gen.go @@ -37,7 +37,6 @@ var ( blueprint.RuleParams{ Command: "$aidlCmd -d$depFile $aidlFlags $in $out", CommandDeps: []string{"$aidlCmd"}, - Description: "aidl $out", }, "depFile", "aidlFlags") @@ -45,14 +44,12 @@ var ( blueprint.RuleParams{ Command: "$logtagsCmd -o $out $in $allLogtagsFile", CommandDeps: []string{"$logtagsCmd"}, - Description: "logtags $out", }) mergeLogtags = pctx.AndroidStaticRule("mergeLogtags", blueprint.RuleParams{ Command: "$mergeLogtagsCmd -o $out $in", CommandDeps: []string{"$mergeLogtagsCmd"}, - Description: "merge logtags $out", }) ) @@ -61,9 +58,10 @@ func genAidl(ctx android.ModuleContext, aidlFile android.Path, aidlFlags string) depFile := javaFile.String() + ".d" ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: aidl, - Output: javaFile, - Input: aidlFile, + Rule: aidl, + Description: "aidl " + aidlFile.Rel(), + Output: javaFile, + Input: aidlFile, Args: map[string]string{ "depFile": depFile, "aidlFlags": aidlFlags, @@ -77,9 +75,10 @@ func genLogtags(ctx android.ModuleContext, logtagsFile android.Path) android.Pat javaFile := android.GenPathWithExt(ctx, "logtags", logtagsFile, "java") ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: logtags, - Output: javaFile, - Input: logtagsFile, + Rule: logtags, + Description: "logtags " + logtagsFile.Rel(), + Output: javaFile, + Input: logtagsFile, }) return javaFile @@ -122,8 +121,9 @@ func (l *logtagsSingleton) GenerateBuildActions(ctx blueprint.SingletonContext) }) ctx.Build(pctx, blueprint.BuildParams{ - Rule: mergeLogtags, - Outputs: []string{"$allLogtagsFile"}, - Inputs: allLogtags.Strings(), + Rule: mergeLogtags, + Description: "merge logtags", + Outputs: []string{"$allLogtagsFile"}, + Inputs: allLogtags.Strings(), }) } diff --git a/python/builder.go b/python/builder.go index 62234486f..541d2bf02 100644 --- a/python/builder.go +++ b/python/builder.go @@ -35,7 +35,6 @@ var ( `$parCmd -o $parFile $parArgs && echo '#!/usr/bin/env python' | cat - $parFile > $out && ` + `chmod +x $out && (rm -f $initFile; rm -f $stub; rm -f $parFile)`, CommandDeps: []string{"$parCmd", "$template"}, - Description: "build par $out", }, "initFile", "interp", "main", "template", "stub", "parCmd", "parFile", "parArgs") ) @@ -78,9 +77,10 @@ func registerBuildActionForModuleFileList(ctx android.ModuleContext, } ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: android.WriteFile, - Output: fileList, - Implicits: files, + Rule: android.WriteFile, + Description: "generate " + fileList.Rel(), + Output: fileList, + Implicits: files, Args: map[string]string{ "content": strings.Join(content, "\n"), }, @@ -126,9 +126,10 @@ func registerBuildActionForParFile(ctx android.ModuleContext, } ctx.ModuleBuild(pctx, android.ModuleBuildParams{ - Rule: par, - Output: binFile, - Implicits: implicits, + Rule: par, + Description: "python archive", + Output: binFile, + Implicits: implicits, Args: map[string]string{ "initFile": initFile, // the "\" isn't being interpreted by regex parser, it's being