aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2018-02-23 21:00:53 +0000
committerandroid-build-merger <android-build-merger@google.com>2018-02-23 21:00:53 +0000
commit6c3ba6c46c59d96b9050f309b6e6581b59b7e1e3 (patch)
tree72c459f74452f37107f29385c37d464e09af37d7 /java
parent77b3dc4172693c9e8b7ce17c7cbda61f3575c263 (diff)
parentfb408c8e6d2c9bc08df266672c817bfb64d654d0 (diff)
downloadbuild_soong-6c3ba6c46c59d96b9050f309b6e6581b59b7e1e3.tar.gz
build_soong-6c3ba6c46c59d96b9050f309b6e6581b59b7e1e3.tar.bz2
build_soong-6c3ba6c46c59d96b9050f309b6e6581b59b7e1e3.zip
Merge "Add proto.canonical_path_from_root" am: 7c695eb797 am: c530837d4c
am: fb408c8e6d Change-Id: I6bfe260cc2c8d67f73bdbb1eb70ee1df6bf33de4
Diffstat (limited to 'java')
-rw-r--r--java/builder.go1
-rw-r--r--java/gen.go12
-rw-r--r--java/proto.go36
3 files changed, 26 insertions, 23 deletions
diff --git a/java/builder.go b/java/builder.go
index 5aea1cb1..b8f8351f 100644
--- a/java/builder.go
+++ b/java/builder.go
@@ -169,6 +169,7 @@ type javaBuilderFlags struct {
protoFlags []string
protoOutTypeFlag string // The flag itself: --java_out
protoOutParams string // Parameters to that flag: --java_out=$protoOutParams:$outDir
+ protoRoot bool
}
func TransformKotlinToClasses(ctx android.ModuleContext, outputFile android.WritablePath,
diff --git a/java/gen.go b/java/gen.go
index 4893e889..a9938297 100644
--- a/java/gen.go
+++ b/java/gen.go
@@ -85,7 +85,6 @@ func genLogtags(ctx android.ModuleContext, logtagsFile android.Path) android.Pat
func (j *Module) genSources(ctx android.ModuleContext, srcFiles android.Paths,
flags javaBuilderFlags) android.Paths {
- var protoFiles android.Paths
outSrcFiles := make(android.Paths, 0, len(srcFiles))
for _, srcFile := range srcFiles {
@@ -98,20 +97,13 @@ func (j *Module) genSources(ctx android.ModuleContext, srcFiles android.Paths,
javaFile := genLogtags(ctx, srcFile)
outSrcFiles = append(outSrcFiles, javaFile)
case ".proto":
- protoFiles = append(protoFiles, srcFile)
+ srcJarFile := genProto(ctx, srcFile, flags)
+ outSrcFiles = append(outSrcFiles, srcJarFile)
default:
outSrcFiles = append(outSrcFiles, srcFile)
}
}
- if len(protoFiles) > 0 {
- protoSrcJar := android.PathForModuleGen(ctx, "proto.srcjar")
- genProto(ctx, protoSrcJar, protoFiles,
- flags.protoFlags, flags.protoOutTypeFlag, flags.protoOutParams)
-
- outSrcFiles = append(outSrcFiles, protoSrcJar)
- }
-
return outSrcFiles
}
diff --git a/java/proto.go b/java/proto.go
index 226fac08..2991ad98 100644
--- a/java/proto.go
+++ b/java/proto.go
@@ -30,31 +30,40 @@ func init() {
var (
proto = pctx.AndroidStaticRule("protoc",
blueprint.RuleParams{
- Command: `rm -rf $outDir && mkdir -p $outDir && ` +
- `$protocCmd $protoOut=$protoOutParams:$outDir $protoFlags $in && ` +
- `${config.SoongZipCmd} -jar -o $out -C $outDir -D $outDir`,
+ Command: `rm -rf $out.tmp && mkdir -p $out.tmp && ` +
+ `$protocCmd $protoOut=$protoOutParams:$out.tmp -I $protoBase $protoFlags $in && ` +
+ `${config.SoongZipCmd} -jar -o $out -C $out.tmp -D $out.tmp && rm -rf $out.tmp`,
CommandDeps: []string{
"$protocCmd",
"${config.SoongZipCmd}",
},
- }, "protoFlags", "protoOut", "protoOutParams", "outDir")
+ }, "protoBase", "protoFlags", "protoOut", "protoOutParams")
)
-func genProto(ctx android.ModuleContext, outputSrcJar android.WritablePath,
- protoFiles android.Paths, protoFlags []string, protoOut, protoOutParams string) {
+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())
+ }
ctx.Build(pctx, android.BuildParams{
Rule: proto,
- Description: "protoc " + protoFiles[0].Rel(),
- Output: outputSrcJar,
- Inputs: protoFiles,
+ Description: "protoc " + protoFile.Rel(),
+ Output: srcJarFile,
+ Input: protoFile,
Args: map[string]string{
- "outDir": android.ProtoDir(ctx).String(),
- "protoOut": protoOut,
- "protoOutParams": protoOutParams,
- "protoFlags": strings.Join(protoFlags, " "),
+ "protoBase": protoBase,
+ "protoOut": flags.protoOutTypeFlag,
+ "protoOutParams": flags.protoOutParams,
+ "protoFlags": strings.Join(flags.protoFlags, " "),
},
})
+
+ return srcJarFile
}
func protoDeps(ctx android.BottomUpMutatorContext, p *android.ProtoProperties) {
@@ -103,6 +112,7 @@ func protoFlags(ctx android.ModuleContext, j *CompilerProperties, p *android.Pro
}
flags.protoFlags = android.ProtoFlags(ctx, p)
+ flags.protoRoot = android.ProtoCanonicalPathFromRoot(ctx, p)
return flags
}