diff options
author | Colin Cross <ccross@android.com> | 2015-04-10 17:45:20 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2015-04-13 12:25:40 -0700 |
commit | f05fe97df6bd0fb37c0f7338365fa8782fa9c725 (patch) | |
tree | 50ba18c6e58380acc6f307c2989ed4648f604acd | |
parent | 6d1e72d7c69d1787b6d7edf990925a65f43b48ea (diff) | |
download | build_soong-f05fe97df6bd0fb37c0f7338365fa8782fa9c725.tar.gz build_soong-f05fe97df6bd0fb37c0f7338365fa8782fa9c725.tar.bz2 build_soong-f05fe97df6bd0fb37c0f7338365fa8782fa9c725.zip |
Add logtags source file support
Add support for converting logtags files to source files. Each
.logtags file is converted to a .java file, but only after all
.logtags files have been combined into a merged text file by
the logtagsSingleton.
Change-Id: I375d82874029bd26a7c528e46add2a638ba123f9
-rw-r--r-- | cmd/soong_build/main.go | 1 | ||||
-rw-r--r-- | java/gen.go | 64 | ||||
-rw-r--r-- | java/java.go | 10 |
3 files changed, 73 insertions, 2 deletions
diff --git a/cmd/soong_build/main.go b/cmd/soong_build/main.go index a1a4ce05..83205ba4 100644 --- a/cmd/soong_build/main.go +++ b/cmd/soong_build/main.go @@ -76,6 +76,7 @@ func main() { // Singletons ctx.RegisterSingletonType("checkbuild", common.CheckbuildSingleton) ctx.RegisterSingletonType("env", common.EnvSingleton) + ctx.RegisterSingletonType("logtags", java.LogtagsSingleton) configuration, err := common.NewConfig(srcDir) if err != nil { diff --git a/java/gen.go b/java/gen.go index 0b84d44b..dd86f66f 100644 --- a/java/gen.go +++ b/java/gen.go @@ -32,7 +32,13 @@ func init() { pctx.VariableFunc("aidlCmd", func(c interface{}) (string, error) { return c.(common.Config).HostBinTool("aidl") }) + pctx.StaticVariable("logtagsCmd", "${srcDir}/build/tools/java-event-log-tags.py") + pctx.StaticVariable("mergeLogtagsCmd", "${srcDir}/build/tools/merge-event-log-tags.py") pctx.VariableConfigMethod("srcDir", common.Config.SrcDir) + + pctx.VariableFunc("allLogtagsFile", func(c interface{}) (string, error) { + return filepath.Join(c.(common.Config).IntermediatesDir(), "all-event-log-tags.txt"), nil + }) } var ( @@ -42,6 +48,18 @@ var ( Description: "aidl $out", }, "depFile", "aidlFlags") + + logtags = pctx.StaticRule("logtags", + blueprint.RuleParams{ + Command: "$logtagsCmd -o $out $in $allLogtagsFile", + Description: "logtags $out", + }) + + mergeLogtags = pctx.StaticRule("mergeLogtags", + blueprint.RuleParams{ + Command: "$mergeLogtagsCmd -o $out $in", + Description: "merge logtags $out", + }) ) func genAidl(ctx common.AndroidModuleContext, aidlFile, aidlFlags string) string { @@ -64,7 +82,22 @@ func genAidl(ctx common.AndroidModuleContext, aidlFile, aidlFlags string) string return javaFile } -func genSources(ctx common.AndroidModuleContext, srcFiles []string, +func genLogtags(ctx common.AndroidModuleContext, logtagsFile string) string { + javaFile := strings.TrimPrefix(logtagsFile, common.ModuleSrcDir(ctx)) + javaFile = filepath.Join(common.ModuleGenDir(ctx), javaFile) + javaFile = pathtools.ReplaceExtension(javaFile, "java") + + ctx.Build(pctx, blueprint.BuildParams{ + Rule: logtags, + Outputs: []string{javaFile}, + Inputs: []string{logtagsFile}, + Implicits: []string{"$logtagsCmd"}, + }) + + return javaFile +} + +func (j *javaBase) genSources(ctx common.AndroidModuleContext, srcFiles []string, flags javaBuilderFlags) []string { for i, srcFile := range srcFiles { @@ -72,8 +105,37 @@ func genSources(ctx common.AndroidModuleContext, srcFiles []string, case ".aidl": javaFile := genAidl(ctx, srcFile, flags.aidlFlags) srcFiles[i] = javaFile + case ".logtags": + j.logtagsSrcs = append(j.logtagsSrcs, srcFile) + javaFile := genLogtags(ctx, srcFile) + srcFiles[i] = javaFile } } return srcFiles } + +func LogtagsSingleton() blueprint.Singleton { + return &logtagsSingleton{} +} + +type logtagsProducer interface { + logtags() []string +} + +type logtagsSingleton struct{} + +func (l *logtagsSingleton) GenerateBuildActions(ctx blueprint.SingletonContext) { + var allLogtags []string + ctx.VisitAllModules(func(module blueprint.Module) { + if logtags, ok := module.(logtagsProducer); ok { + allLogtags = append(allLogtags, logtags.logtags()...) + } + }) + + ctx.Build(pctx, blueprint.BuildParams{ + Rule: mergeLogtags, + Outputs: []string{"$allLogtagsFile"}, + Inputs: allLogtags, + }) +} diff --git a/java/java.go b/java/java.go index 7f6b1346..a23ca9a6 100644 --- a/java/java.go +++ b/java/java.go @@ -106,6 +106,8 @@ type javaBase struct { exportAidlIncludeDirs []string + logtagsSrcs []string + // installed file for binary dependency installFile string } @@ -255,7 +257,7 @@ func (j *javaBase) GenerateJavaBuildActions(ctx common.AndroidModuleContext) { srcFiles := common.ExpandSources(ctx, j.properties.Srcs) - srcFiles = genSources(ctx, srcFiles, flags) + srcFiles = j.genSources(ctx, srcFiles, flags) if len(srcFiles) > 0 { // Compile java sources into .class files @@ -360,6 +362,12 @@ func (j *javaBase) AidlPreprocessed() string { return "" } +var _ logtagsProducer = (*javaBase)(nil) + +func (j *javaBase) logtags() []string { + return j.logtagsSrcs +} + // // Java libraries (.jar file) // |