aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2019-04-02 10:31:28 -0700
committerandroid-build-merger <android-build-merger@google.com>2019-04-02 10:31:28 -0700
commit32762a08eb75ce6c666e84a6462388d73bba99fa (patch)
tree10f84259616d130b096bcd6f3fc3539ed17a1b76 /java
parent57205f3cb4fda0ca2687e5f881c36f21b6c9c20a (diff)
parent7299e418df78f1919b2c9d5344ddc0be20aee691 (diff)
downloadbuild_soong-32762a08eb75ce6c666e84a6462388d73bba99fa.tar.gz
build_soong-32762a08eb75ce6c666e84a6462388d73bba99fa.tar.bz2
build_soong-32762a08eb75ce6c666e84a6462388d73bba99fa.zip
Add support for protoc plugins am: fe17f6f0e8 am: 91c063cfdc
am: 7299e418df Change-Id: I30e57f6678343f57233831775b62afa1f043a450
Diffstat (limited to 'java')
-rw-r--r--java/gen.go2
-rw-r--r--java/java.go7
-rw-r--r--java/proto.go64
3 files changed, 36 insertions, 37 deletions
diff --git a/java/gen.go b/java/gen.go
index 83625561..500d887e 100644
--- a/java/gen.go
+++ b/java/gen.go
@@ -118,7 +118,7 @@ func (j *Module) genSources(ctx android.ModuleContext, srcFiles android.Paths,
javaFile := genLogtags(ctx, srcFile)
outSrcFiles = append(outSrcFiles, javaFile)
case ".proto":
- srcJarFile := genProto(ctx, srcFile, flags)
+ srcJarFile := genProto(ctx, srcFile, flags.proto)
outSrcFiles = append(outSrcFiles, srcJarFile)
case ".sysprop":
srcJarFile := genSysprop(ctx, srcFile)
diff --git a/java/java.go b/java/java.go
index beee1a5b..0417dee8 100644
--- a/java/java.go
+++ b/java/java.go
@@ -481,6 +481,7 @@ func (j *Module) deps(ctx android.BottomUpMutatorContext) {
{Mutator: "arch", Variation: ctx.Config().BuildOsCommonVariant},
}, pluginTag, j.properties.Plugins...)
+ android.ProtoDeps(ctx, &j.protoProperties)
if j.hasSrcExt(".proto") {
protoDeps(ctx, &j.protoProperties)
}
@@ -768,12 +769,6 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps {
deps.classpath = append(deps.classpath, dep.Srcs()...)
deps.staticJars = append(deps.staticJars, dep.Srcs()...)
deps.staticHeaderJars = append(deps.staticHeaderJars, dep.Srcs()...)
- case android.DefaultsDepTag, android.SourceDepTag:
- // Nothing to do
- case publicApiFileTag, systemApiFileTag, testApiFileTag:
- // Nothing to do
- default:
- ctx.ModuleErrorf("dependency on genrule %q may only be in srcs, libs, or static_libs", otherName)
}
default:
switch tag {
diff --git a/java/proto.go b/java/proto.go
index 8de9e26d..37de1d28 100644
--- a/java/proto.go
+++ b/java/proto.go
@@ -18,7 +18,7 @@ import (
"android/soong/android"
)
-func genProto(ctx android.ModuleContext, protoFile android.Path, flags javaBuilderFlags) android.Path {
+func genProto(ctx android.ModuleContext, protoFile android.Path, flags android.ProtoFlags) android.Path {
srcJarFile := android.GenPathWithExt(ctx, "proto", protoFile, "srcjar")
outDir := srcJarFile.ReplaceExtension(ctx, "tmp")
@@ -29,7 +29,7 @@ func genProto(ctx android.ModuleContext, protoFile android.Path, flags javaBuild
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)
+ android.ProtoRule(ctx, rule, protoFile, flags, flags.Deps, outDir, depFile, nil)
// Proto generated java files have an unknown package name in the path, so package the entire output directory
// into a srcjar.
@@ -48,22 +48,24 @@ func genProto(ctx android.ModuleContext, protoFile android.Path, flags javaBuild
}
func protoDeps(ctx android.BottomUpMutatorContext, p *android.ProtoProperties) {
- switch String(p.Proto.Type) {
- case "micro":
- ctx.AddVariationDependencies(nil, staticLibTag, "libprotobuf-java-micro")
- case "nano":
- ctx.AddVariationDependencies(nil, staticLibTag, "libprotobuf-java-nano")
- case "lite", "":
- ctx.AddVariationDependencies(nil, staticLibTag, "libprotobuf-java-lite")
- case "full":
- if ctx.Host() {
- ctx.AddVariationDependencies(nil, staticLibTag, "libprotobuf-java-full")
- } else {
- ctx.PropertyErrorf("proto.type", "full java protos only supported on the host")
+ if String(p.Proto.Plugin) == "" {
+ switch String(p.Proto.Type) {
+ case "micro":
+ ctx.AddVariationDependencies(nil, staticLibTag, "libprotobuf-java-micro")
+ case "nano":
+ ctx.AddVariationDependencies(nil, staticLibTag, "libprotobuf-java-nano")
+ case "lite", "":
+ ctx.AddVariationDependencies(nil, staticLibTag, "libprotobuf-java-lite")
+ case "full":
+ if ctx.Host() {
+ ctx.AddVariationDependencies(nil, staticLibTag, "libprotobuf-java-full")
+ } else {
+ ctx.PropertyErrorf("proto.type", "full java protos only supported on the host")
+ }
+ default:
+ ctx.PropertyErrorf("proto.type", "unknown proto type %q",
+ String(p.Proto.Type))
}
- default:
- ctx.PropertyErrorf("proto.type", "unknown proto type %q",
- String(p.Proto.Type))
}
}
@@ -72,19 +74,21 @@ func protoFlags(ctx android.ModuleContext, j *CompilerProperties, p *android.Pro
flags.proto = android.GetProtoFlags(ctx, p)
- switch String(p.Proto.Type) {
- case "micro":
- flags.proto.OutTypeFlag = "--javamicro_out"
- case "nano":
- flags.proto.OutTypeFlag = "--javanano_out"
- case "lite":
- flags.proto.OutTypeFlag = "--java_out"
- flags.proto.OutParams = append(flags.proto.OutParams, "lite")
- case "full", "":
- flags.proto.OutTypeFlag = "--java_out"
- default:
- ctx.PropertyErrorf("proto.type", "unknown proto type %q",
- String(p.Proto.Type))
+ if String(p.Proto.Plugin) == "" {
+ switch String(p.Proto.Type) {
+ case "micro":
+ flags.proto.OutTypeFlag = "--javamicro_out"
+ case "nano":
+ flags.proto.OutTypeFlag = "--javanano_out"
+ case "lite":
+ flags.proto.OutTypeFlag = "--java_out"
+ flags.proto.OutParams = append(flags.proto.OutParams, "lite")
+ case "full", "":
+ flags.proto.OutTypeFlag = "--java_out"
+ default:
+ ctx.PropertyErrorf("proto.type", "unknown proto type %q",
+ String(p.Proto.Type))
+ }
}
flags.proto.OutParams = append(flags.proto.OutParams, j.Proto.Output_params...)