aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2019-04-02 10:31:13 -0700
committerandroid-build-merger <android-build-merger@google.com>2019-04-02 10:31:13 -0700
commit57205f3cb4fda0ca2687e5f881c36f21b6c9c20a (patch)
tree200b4dae87d0763e11e8f03a87aa4446edd0462e /java
parent6a40626601c1acc1d835a96b7a397199eac97399 (diff)
parentc8a3eb9110b249a9910dbb3713f0efbb9bb5d7bb (diff)
downloadbuild_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.go5
-rw-r--r--java/proto.go87
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
}