diff options
| author | Colin Cross <ccross@android.com> | 2019-04-02 10:31:13 -0700 |
|---|---|---|
| committer | android-build-merger <android-build-merger@google.com> | 2019-04-02 10:31:13 -0700 |
| commit | 57205f3cb4fda0ca2687e5f881c36f21b6c9c20a (patch) | |
| tree | 200b4dae87d0763e11e8f03a87aa4446edd0462e /java | |
| parent | 6a40626601c1acc1d835a96b7a397199eac97399 (diff) | |
| parent | c8a3eb9110b249a9910dbb3713f0efbb9bb5d7bb (diff) | |
| download | build_soong-57205f3cb4fda0ca2687e5f881c36f21b6c9c20a.tar.gz build_soong-57205f3cb4fda0ca2687e5f881c36f21b6c9c20a.tar.bz2 build_soong-57205f3cb4fda0ca2687e5f881c36f21b6c9c20a.zip | |
Move proto compilation to RuleBuilder am: 19878da6a0 am: 61918685aa
am: c8a3eb9110
Change-Id: If3922ee1900d6f3888c7291997ac49d4a939c065
Diffstat (limited to 'java')
| -rw-r--r-- | java/builder.go | 5 | ||||
| -rw-r--r-- | java/proto.go | 87 |
2 files changed, 30 insertions, 62 deletions
diff --git a/java/builder.go b/java/builder.go index d8b303e4..44767a50 100644 --- a/java/builder.go +++ b/java/builder.go @@ -153,10 +153,7 @@ type javaBuilderFlags struct { kotlincFlags string kotlincClasspath classpath - protoFlags []string - protoOutTypeFlag string // The flag itself: --java_out - protoOutParams string // Parameters to that flag: --java_out=$protoOutParams:$outDir - protoRoot bool + proto android.ProtoFlags } func TransformJavaToClasses(ctx android.ModuleContext, outputFile android.WritablePath, shardIdx int, diff --git a/java/proto.go b/java/proto.go index 80280390..8de9e26d 100644 --- a/java/proto.go +++ b/java/proto.go @@ -15,57 +15,34 @@ package java import ( - "strings" - - "github.com/google/blueprint" - "android/soong/android" ) -func init() { - pctx.HostBinToolVariable("protocCmd", "aprotoc") - pctx.HostBinToolVariable("depFixCmd", "dep_fixer") -} - -var ( - proto = pctx.AndroidStaticRule("protoc", - blueprint.RuleParams{ - Command: `rm -rf $out.tmp && mkdir -p $out.tmp && ` + - `$protocCmd $protoOut=$protoOutParams:$out.tmp --dependency_out=$out.d -I $protoBase $protoFlags $in && ` + - `$depFixCmd $out.d && ` + - `${config.SoongZipCmd} -jar -o $out -C $out.tmp -D $out.tmp && rm -rf $out.tmp`, - CommandDeps: []string{ - "$protocCmd", - "$depFixCmd", - "${config.SoongZipCmd}", - }, - Depfile: "${out}.d", - Deps: blueprint.DepsGCC, - }, "protoBase", "protoFlags", "protoOut", "protoOutParams") -) - func genProto(ctx android.ModuleContext, protoFile android.Path, flags javaBuilderFlags) android.Path { srcJarFile := android.GenPathWithExt(ctx, "proto", protoFile, "srcjar") - var protoBase string - if flags.protoRoot { - protoBase = "." - } else { - protoBase = strings.TrimSuffix(protoFile.String(), protoFile.Rel()) - } + outDir := srcJarFile.ReplaceExtension(ctx, "tmp") + depFile := srcJarFile.ReplaceExtension(ctx, "srcjar.d") + + rule := android.NewRuleBuilder() - ctx.Build(pctx, android.BuildParams{ - Rule: proto, - Description: "protoc " + protoFile.Rel(), - Output: srcJarFile, - Input: protoFile, - Args: map[string]string{ - "protoBase": protoBase, - "protoOut": flags.protoOutTypeFlag, - "protoOutParams": flags.protoOutParams, - "protoFlags": strings.Join(flags.protoFlags, " "), - }, - }) + rule.Command().Text("rm -rf").Flag(outDir.String()) + rule.Command().Text("mkdir -p").Flag(outDir.String()) + + android.ProtoRule(ctx, rule, protoFile, flags.proto, nil, outDir, depFile, nil) + + // Proto generated java files have an unknown package name in the path, so package the entire output directory + // into a srcjar. + rule.Command(). + Tool(ctx.Config().HostToolPath(ctx, "soong_zip")). + Flag("-jar"). + FlagWithOutput("-o ", srcJarFile). + FlagWithArg("-C ", outDir.String()). + FlagWithArg("-D ", outDir.String()) + + rule.Command().Text("rm -rf").Flag(outDir.String()) + + rule.Build(pctx, ctx, "protoc_"+protoFile.Rel(), "protoc "+protoFile.Rel()) return srcJarFile } @@ -93,30 +70,24 @@ func protoDeps(ctx android.BottomUpMutatorContext, p *android.ProtoProperties) { func protoFlags(ctx android.ModuleContext, j *CompilerProperties, p *android.ProtoProperties, flags javaBuilderFlags) javaBuilderFlags { + flags.proto = android.GetProtoFlags(ctx, p) + switch String(p.Proto.Type) { case "micro": - flags.protoOutTypeFlag = "--javamicro_out" + flags.proto.OutTypeFlag = "--javamicro_out" case "nano": - flags.protoOutTypeFlag = "--javanano_out" + flags.proto.OutTypeFlag = "--javanano_out" case "lite": - flags.protoOutTypeFlag = "--java_out" - flags.protoOutParams = "lite" + flags.proto.OutTypeFlag = "--java_out" + flags.proto.OutParams = append(flags.proto.OutParams, "lite") case "full", "": - flags.protoOutTypeFlag = "--java_out" + flags.proto.OutTypeFlag = "--java_out" default: ctx.PropertyErrorf("proto.type", "unknown proto type %q", String(p.Proto.Type)) } - if len(j.Proto.Output_params) > 0 { - if flags.protoOutParams != "" { - flags.protoOutParams += "," - } - flags.protoOutParams += strings.Join(j.Proto.Output_params, ",") - } - - flags.protoFlags = android.ProtoFlags(ctx, p) - flags.protoRoot = android.ProtoCanonicalPathFromRoot(ctx, p) + flags.proto.OutParams = append(flags.proto.OutParams, j.Proto.Output_params...) return flags } |
