From 6c2d4f91f8f8365ab67af244436f115878f27979 Mon Sep 17 00:00:00 2001 From: Sasha Smundak Date: Thu, 9 Jan 2020 17:34:23 -0800 Subject: [PATCH] Save compilation units in protobuf format. Bug: 146224091 Test: manual Change-Id: I7a856bab13f54c78efa0061421c3fcb9341bc6e7 --- android/config.go | 8 ++++++++ build_kzip.bash | 2 ++ cc/builder.go | 6 +++++- java/builder.go | 3 +++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/android/config.go b/android/config.go index 3c49c1a6a..1cb543db9 100644 --- a/android/config.go +++ b/android/config.go @@ -835,6 +835,14 @@ func (c *config) XrefCorpusName() string { return c.Getenv("XREF_CORPUS") } +// Returns Compilation Unit encoding to use. Can be 'json' (default), 'proto' or 'all'. +func (c *config) XrefCuEncoding() string { + if enc := c.Getenv("KYTHE_KZIP_ENCODING"); enc != "" { + return enc + } + return "json" +} + func (c *config) EmitXrefRules() bool { return c.XrefCorpusName() != "" } diff --git a/build_kzip.bash b/build_kzip.bash index 02b346d39..89cd067ba 100755 --- a/build_kzip.bash +++ b/build_kzip.bash @@ -6,12 +6,14 @@ # The following environment variables affect the result: # BUILD_NUMBER build number, used to generate unique ID (will use UUID if not set) # DIST_DIR where the resulting all.kzip will be placed +# KYTHE_KZIP_ENCODING proto or json (proto is default) # OUT_DIR output directory (out if not specified}) # TARGET_BUILD_VARIANT variant, e.g., `userdebug` # TARGET_PRODUCT target device name, e.g., 'aosp_blueline' # XREF_CORPUS source code repository URI, e.g., 'android.googlesource.com/platform/superproject' : ${BUILD_NUMBER:=$(uuidgen)} +: ${KYTHE_KZIP_ENCODING:=proto} # The extraction might fail for some source files, so run with -k and then check that # sufficiently many files were generated. diff --git a/cc/builder.go b/cc/builder.go index 1ec323f19..5f0da5ff7 100644 --- a/cc/builder.go +++ b/cc/builder.go @@ -238,9 +238,13 @@ var ( _ = pctx.SourcePathVariable("kytheVnames", "build/soong/vnames.json") _ = pctx.VariableFunc("kytheCorpus", func(ctx android.PackageVarContext) string { return ctx.Config().XrefCorpusName() }) + _ = pctx.VariableFunc("kytheCuEncoding", + func(ctx android.PackageVarContext) string { return ctx.Config().XrefCuEncoding() }) kytheExtract = pctx.StaticRule("kythe", blueprint.RuleParams{ - Command: "rm -f $out && KYTHE_CORPUS=${kytheCorpus} KYTHE_OUTPUT_FILE=$out KYTHE_VNAMES=$kytheVnames $cxxExtractor $cFlags $in ", + Command: `rm -f $out && ` + + `KYTHE_CORPUS=${kytheCorpus} KYTHE_OUTPUT_FILE=$out KYTHE_VNAMES=$kytheVnames KYTHE_KZIP_ENCODING=${kytheCuEncoding} ` + + `$cxxExtractor $cFlags $in `, CommandDeps: []string{"$cxxExtractor", "$kytheVnames"}, }, "cFlags") diff --git a/java/builder.go b/java/builder.go index 417a7fa54..26a49ea53 100644 --- a/java/builder.go +++ b/java/builder.go @@ -64,6 +64,8 @@ var ( _ = pctx.VariableFunc("kytheCorpus", func(ctx android.PackageVarContext) string { return ctx.Config().XrefCorpusName() }) + _ = pctx.VariableFunc("kytheCuEncoding", + func(ctx android.PackageVarContext) string { return ctx.Config().XrefCuEncoding() }) _ = pctx.SourcePathVariable("kytheVnames", "build/soong/vnames.json") // Run it with -add-opens=java.base/java.nio=ALL-UNNAMED to avoid JDK9's warning about // "Illegal reflective access by com.google.protobuf.Utf8$UnsafeProcessor ... @@ -76,6 +78,7 @@ var ( `KYTHE_ROOT_DIRECTORY=. KYTHE_OUTPUT_FILE=$out ` + `KYTHE_CORPUS=${kytheCorpus} ` + `KYTHE_VNAMES=${kytheVnames} ` + + `KYTHE_KZIP_ENCODING=${kytheCuEncoding} ` + `${config.SoongJavacWrapper} ${config.JavaCmd} ` + `--add-opens=java.base/java.nio=ALL-UNNAMED ` + `-jar ${config.JavaKytheExtractorJar} ` +