Support setting R8 dump directory with environment variable
This will allow developers to easily create dumps of R8 compilations (input classfiles, proguard rules, flags, resources...)
Example usage:
$ mkdir /tmp/dumps
$ R8_DUMP_DIRECTORY=/tmp/dumps m -j77 Traceur
This will put the dump for Traceur into the /tmp/dumps directory
If your target has several R8 invocations then dumps for all of these will be generated into the dump directory
Bug: 369931283
Test: R8_DUMP_DIRECTORY=/tmp/dumps m -j77 Traceur
Change-Id: I69be3190c61a98402931767e42184cc01ef25804
diff --git a/java/config/config.go b/java/config/config.go
index 4c1c723..87703d8 100644
--- a/java/config/config.go
+++ b/java/config/config.go
@@ -97,11 +97,19 @@
"-JDcom.android.tools.r8.emitRecordAnnotationsInDex",
"-JDcom.android.tools.r8.emitPermittedSubclassesAnnotationsInDex",
}, dexerJavaVmFlagsList...), " "))
- pctx.StaticVariable("R8Flags", strings.Join(append([]string{
- "-JXmx4096M",
- "-JDcom.android.tools.r8.emitRecordAnnotationsInDex",
- "-JDcom.android.tools.r8.emitPermittedSubclassesAnnotationsInDex",
- }, dexerJavaVmFlagsList...), " "))
+
+ pctx.VariableFunc("R8Flags", func(ctx android.PackageVarContext) string {
+ r8flags := append([]string{
+ "-JXmx4096M",
+ "-JDcom.android.tools.r8.emitRecordAnnotationsInDex",
+ "-JDcom.android.tools.r8.emitPermittedSubclassesAnnotationsInDex",
+ }, dexerJavaVmFlagsList...)
+ if r8DumpDir := ctx.Config().Getenv("R8_DUMP_DIRECTORY"); r8DumpDir != "" {
+ r8flags = append(r8flags, "-JDcom.android.tools.r8.dumpinputtodirectory="+r8DumpDir)
+ }
+ return strings.Join(r8flags, " ")
+
+ })
pctx.StaticVariable("CommonJdkFlags", strings.Join([]string{
`-Xmaxerrs 9999999`,