Use protoc-gen-javalite for java lite protos

Protobuf 3.5.2 does not natively support lite protos, instead they
are generated by the protoc-gen-javalite plugin compiled from
external/protobuf-javalite.

Bug: 117607748
Test: m checkbuild
Change-Id: I95c2d873f19d4c00e9dc312d7fdbe98cae250a8b
This commit is contained in:
Colin Cross 2018-10-26 13:24:01 -07:00
parent 22d7486605
commit 5a5aca0568
3 changed files with 17 additions and 9 deletions

View File

@ -351,6 +351,10 @@ func (c *config) BlueprintToolLocation() string {
var _ bootstrap.ConfigBlueprintToolLocation = (*config)(nil)
func (c *config) HostToolPath(ctx PathContext, tool string) Path {
return PathForOutput(ctx, "host", c.PrebuiltOS(), "bin", tool)
}
// HostSystemTool looks for non-hermetic tools from the system we're running on.
// Generally shouldn't be used, but useful to find the XCode SDK, etc.
func (c *config) HostSystemTool(name string) string {

View File

@ -161,6 +161,7 @@ type javaBuilderFlags struct {
kotlincClasspath classpath
protoFlags []string
protoDeps android.Paths
protoOutTypeFlag string // The flag itself: --java_out
protoOutParams string // Parameters to that flag: --java_out=$protoOutParams:$outDir
protoRoot bool

View File

@ -59,6 +59,7 @@ func genProto(ctx android.ModuleContext, protoFile android.Path, flags javaBuild
Description: "protoc " + protoFile.Rel(),
Output: srcJarFile,
Input: protoFile,
Implicits: flags.protoDeps,
Args: map[string]string{
"protoBase": protoBase,
"protoOut": flags.protoOutTypeFlag,
@ -93,14 +94,16 @@ func protoDeps(ctx android.BottomUpMutatorContext, p *android.ProtoProperties) {
func protoFlags(ctx android.ModuleContext, j *CompilerProperties, p *android.ProtoProperties,
flags javaBuilderFlags) javaBuilderFlags {
var plugin string
switch String(p.Proto.Type) {
case "micro":
flags.protoOutTypeFlag = "--javamicro_out"
case "nano":
flags.protoOutTypeFlag = "--javanano_out"
case "lite":
flags.protoOutTypeFlag = "--java_out"
flags.protoOutParams = "lite"
plugin = "protoc-gen-javalite"
flags.protoOutTypeFlag = "--javalite_out"
case "full", "":
flags.protoOutTypeFlag = "--java_out"
default:
@ -108,15 +111,15 @@ func protoFlags(ctx android.ModuleContext, j *CompilerProperties, p *android.Pro
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.protoOutParams = strings.Join(j.Proto.Output_params, ",")
flags.protoFlags = android.ProtoFlags(ctx, p)
flags.protoRoot = android.ProtoCanonicalPathFromRoot(ctx, p)
if plugin != "" {
path := ctx.Config().HostToolPath(ctx, plugin)
flags.protoDeps = append(flags.protoDeps, path)
flags.protoFlags = append(flags.protoFlags, "--plugin="+path.String())
}
return flags
}