When compiling with the lite protobuf option, pass the option to aprotoc to force the lite runtime.

Test: make
Merged-In: I450f89d144d496a6ddfccc6a6a5a679a05809595
Change-Id: I450f89d144d496a6ddfccc6a6a5a679a05809595
This commit is contained in:
Joe Onorato
2017-11-18 18:23:14 -08:00
parent bf606c198b
commit 09e94ab074
8 changed files with 76 additions and 62 deletions

View File

@@ -242,6 +242,7 @@ type builderFlags struct {
libFlags string
yaccFlags string
protoFlags string
protoOutParams string
tidyFlags string
sAbiFlags string
yasmFlags string

View File

@@ -116,6 +116,7 @@ type Flags struct {
ToolingCppFlags []string // Flags that apply to C++ source files parsed by clang LibTooling tools
YaccFlags []string // Flags that apply to Yacc source files
protoFlags []string // Flags that apply to proto source files
protoOutParams []string // Flags that modify the output of proto generated files
aidlFlags []string // Flags that apply to aidl source files
rsFlags []string // Flags that apply to renderscript source files
LdFlags []string // Flags that apply to linker command lines

View File

@@ -153,7 +153,8 @@ func genSources(ctx android.ModuleContext, srcFiles android.Paths,
srcFiles[i] = cppFile
genLex(ctx, srcFile, cppFile)
case ".proto":
ccFile, headerFile := genProto(ctx, srcFile, buildFlags.protoFlags)
ccFile, headerFile := genProto(ctx, srcFile, buildFlags.protoFlags,
buildFlags.protoOutParams)
srcFiles[i] = ccFile
deps = append(deps, headerFile)
case ".aidl":

View File

@@ -16,6 +16,7 @@ package cc
import (
"github.com/google/blueprint"
"github.com/google/blueprint/proptools"
"android/soong/android"
)
@@ -27,15 +28,15 @@ func init() {
var (
proto = pctx.AndroidStaticRule("protoc",
blueprint.RuleParams{
Command: "$protocCmd --cpp_out=$outDir $protoFlags $in",
Command: "$protocCmd --cpp_out=$protoOutParams:$outDir $protoFlags $in",
CommandDeps: []string{"$protocCmd"},
}, "protoFlags", "outDir")
}, "protoFlags", "protoOutParams", "outDir")
)
// genProto creates a rule to convert a .proto file to generated .pb.cc and .pb.h files and returns
// the paths to the generated files.
func genProto(ctx android.ModuleContext, protoFile android.Path,
protoFlags string) (ccFile, headerFile android.WritablePath) {
protoFlags string, protoOutParams string) (ccFile, headerFile android.WritablePath) {
ccFile = android.GenPathWithExt(ctx, "proto", protoFile, "pb.cc")
headerFile = android.GenPathWithExt(ctx, "proto", protoFile, "pb.h")
@@ -48,6 +49,7 @@ func genProto(ctx android.ModuleContext, protoFile android.Path,
Args: map[string]string{
"outDir": android.ProtoDir(ctx).String(),
"protoFlags": protoFlags,
"protoOutParams": protoOutParams,
},
})
@@ -97,5 +99,9 @@ func protoFlags(ctx ModuleContext, flags Flags, p *android.ProtoProperties) Flag
flags.protoFlags = android.ProtoFlags(ctx, p)
if proptools.String(p.Proto.Type) == "lite" {
flags.protoOutParams = []string{"lite"}
}
return flags
}

View File

@@ -106,6 +106,7 @@ func flagsToBuilderFlags(in Flags) builderFlags {
cppFlags: strings.Join(in.CppFlags, " "),
yaccFlags: strings.Join(in.YaccFlags, " "),
protoFlags: strings.Join(in.protoFlags, " "),
protoOutParams: strings.Join(in.protoOutParams, ":"),
aidlFlags: strings.Join(in.aidlFlags, " "),
rsFlags: strings.Join(in.rsFlags, " "),
ldFlags: strings.Join(in.LdFlags, " "),

View File

@@ -201,7 +201,8 @@ type javaBuilderFlags struct {
kotlincClasspath classpath
protoFlags []string
protoOutFlag string
protoOutTypeFlag string // The flag itself: --java_out
protoOutParams string // Parameters to that flag: --java_out=$protoOutParams:$outDir
}
func TransformKotlinToClasses(ctx android.ModuleContext, outputFile android.WritablePath,

View File

@@ -107,7 +107,7 @@ func (j *Module) genSources(ctx android.ModuleContext, srcFiles android.Paths,
if len(protoFiles) > 0 {
protoSrcJar := android.PathForModuleGen(ctx, "proto.srcjar")
genProto(ctx, protoSrcJar, protoFiles,
flags.protoFlags, flags.protoOutFlag, "")
flags.protoFlags, flags.protoOutTypeFlag, flags.protoOutParams)
outSrcFiles = append(outSrcFiles, protoSrcJar)
}

View File

@@ -31,17 +31,17 @@ var (
proto = pctx.AndroidStaticRule("protoc",
blueprint.RuleParams{
Command: `rm -rf $outDir && mkdir -p $outDir && ` +
`$protocCmd $protoOut=$protoOutFlags:$outDir $protoFlags $in && ` +
`$protocCmd $protoOut=$protoOutParams:$outDir $protoFlags $in && ` +
`${config.SoongZipCmd} -jar -o $out -C $outDir -D $outDir`,
CommandDeps: []string{
"$protocCmd",
"${config.SoongZipCmd}",
},
}, "protoFlags", "protoOut", "protoOutFlags", "outDir")
}, "protoFlags", "protoOut", "protoOutParams", "outDir")
)
func genProto(ctx android.ModuleContext, outputSrcJar android.WritablePath,
protoFiles android.Paths, protoFlags []string, protoOut, protoOutFlags string) {
protoFiles android.Paths, protoFlags []string, protoOut, protoOutParams string) {
ctx.Build(pctx, android.BuildParams{
Rule: proto,
@@ -51,7 +51,7 @@ func genProto(ctx android.ModuleContext, outputSrcJar android.WritablePath,
Args: map[string]string{
"outDir": android.ProtoDir(ctx).String(),
"protoOut": protoOut,
"protoOutFlags": protoOutFlags,
"protoOutParams": protoOutParams,
"protoFlags": strings.Join(protoFlags, " "),
},
})
@@ -80,11 +80,14 @@ func protoDeps(ctx android.BottomUpMutatorContext, p *android.ProtoProperties) {
func protoFlags(ctx android.ModuleContext, p *android.ProtoProperties, flags javaBuilderFlags) javaBuilderFlags {
switch proptools.String(p.Proto.Type) {
case "micro":
flags.protoOutFlag = "--javamicro_out"
flags.protoOutTypeFlag = "--javamicro_out"
case "nano":
flags.protoOutFlag = "--javanano_out"
case "lite", "full", "":
flags.protoOutFlag = "--java_out"
flags.protoOutTypeFlag = "--javanano_out"
case "lite":
flags.protoOutTypeFlag = "--java_out"
flags.protoOutParams = "lite"
case "full", "":
flags.protoOutTypeFlag = "--java_out"
default:
ctx.PropertyErrorf("proto.type", "unknown proto type %q",
proptools.String(p.Proto.Type))