Update script to run R8/D8 on prebuild applications

Rename tools/run_r8_on_app.py to tools/run_on_app.py and add the --compiler
option to support both R8 and D8.

Cleanup of tools/gmail_data.py.

Change-Id: Ic258f563c228bdae717cd4213678f2dbf13b8c13
diff --git a/tools/gmail_data.py b/tools/gmail_data.py
index ab1e6b4..d09a3e8 100644
--- a/tools/gmail_data.py
+++ b/tools/gmail_data.py
@@ -12,8 +12,7 @@
 V170604_16_BASE = os.path.join(BASE, 'gmail_android_170604.16')
 V170604_16_PREFIX = os.path.join(V170604_16_BASE, 'Gmail_release_unstripped')
 
-# NOTE: we always use android.jar for SDK v25, later we might want to revise it
-#       to use proper android.jar version for each of youtube version separately.
+# NOTE: We always use android.jar for SDK v25 for now.
 ANDROID_JAR = os.path.join(THIRD_PARTY, 'android_jar', 'lib-v25', 'android.jar')
 
 VERSIONS = {
@@ -21,13 +20,12 @@
     'dex' : {
       'inputs': [os.path.join(V170604_16_BASE, 'Gmail_release_unsigned.apk')],
       'pgmap': '%s_proguard.map' % V170604_16_PREFIX,
-      'libraries' : [ANDROID_JAR, '/usr/local/buildtools/java/jdk-64/jre/lib/rt.jar'],
+      'libraries' : [ANDROID_JAR],
       'r8-flags': '--ignore-missing-classes',
     },
     'deploy' : {
       'inputs': ['%s_deploy.jar' % V170604_16_PREFIX],
-      'pgconf': ['%s_proguard.config' % V170604_16_PREFIX,
-                 '%s/proguardsettings/YouTubeRelease_proguard.config' % THIRD_PARTY],
+      'pgconf': ['%s_proguard.config' % V170604_16_PREFIX],
     },
     'proguarded' : {
       'inputs': ['%s_proguard.jar' % V170604_16_PREFIX],
diff --git a/tools/run-r8-on-gmscore.py b/tools/run-r8-on-gmscore.py
index c00a58d..6d09760 100755
--- a/tools/run-r8-on-gmscore.py
+++ b/tools/run-r8-on-gmscore.py
@@ -5,7 +5,8 @@
 
 import sys
 
-import run_r8_on_app
+import run_on_app
 
 if __name__ == '__main__':
-  sys.exit(run_r8_on_app.main())
+  # Default compiler is R8.
+  sys.exit(run_on_app.main())
diff --git a/tools/run_r8_on_app.py b/tools/run_on_app.py
similarity index 77%
rename from tools/run_r8_on_app.py
rename to tools/run_on_app.py
index 19696bb..966f786 100755
--- a/tools/run_r8_on_app.py
+++ b/tools/run_on_app.py
@@ -6,6 +6,7 @@
 import optparse
 import os
 import r8
+import d8
 import sys
 
 import gmscore_data
@@ -17,6 +18,10 @@
 
 def ParseOptions():
   result = optparse.OptionParser()
+  result.add_option('--compiler',
+                    help='',
+                    default='r8',
+                    choices=['d8', 'r8'])
   result.add_option('--app',
                     help='',
                     default='gmscore',
@@ -89,18 +94,21 @@
     return 1
   values = version[options.type]
   inputs = None
-  # For 'deploy' the JAR is located using the Proguard configuration -injars option.
-  if 'inputs' in values and options.type != 'deploy':
+  # For R8 'deploy' the JAR is located using the Proguard configuration -injars option.
+  if 'inputs' in values and (options.compiler != 'r8' or options.type != 'deploy'):
     inputs = values['inputs']
 
   args.extend(['--output', outdir])
-  if 'pgmap' in values:
-    args.extend(['--pg-map', values['pgmap']])
-  if 'pgconf' in values and not options.k:
-    for pgconf in values['pgconf']:
-      args.extend(['--pg-conf', pgconf])
-  if options.k:
-    args.extend(['--pg-conf', options.k])
+
+  if options.compiler == 'r8':
+    if 'pgmap' in values:
+      args.extend(['--pg-map', values['pgmap']])
+    if 'pgconf' in values and not options.k:
+      for pgconf in values['pgconf']:
+        args.extend(['--pg-conf', pgconf])
+    if options.k:
+      args.extend(['--pg-conf', options.k])
+
   if not options.no_libraries and 'libraries' in values:
     for lib in values['libraries']:
       args.extend(['--lib', lib])
@@ -108,10 +116,11 @@
   if not outdir.endswith('.zip') and not outdir.endswith('.jar') and not os.path.exists(outdir):
     os.makedirs(outdir)
 
-  if 'r8-flags' in values:
-    args.extend(values['r8-flags'].split(' '))
-  if options.r8_flags:
-    args.extend(options.r8_flags.split(' '))
+  if options.compiler == 'r8':
+    if 'r8-flags' in values:
+      args.extend(values['r8-flags'].split(' '))
+    if options.r8_flags:
+      args.extend(options.r8_flags.split(' '))
 
   if inputs:
     args.extend(inputs)
@@ -120,8 +129,12 @@
     with open(options.dump_args_file, 'w') as args_file:
       args_file.writelines([arg + os.linesep for arg in args])
   else:
-    r8.run(args, not options.no_build, not options.no_debug, options.profile,
-           options.track_memory_to_file)
+    if options.compiler == 'd8':
+      d8.run(args, not options.no_build, not options.no_debug, options.profile,
+             options.track_memory_to_file)
+    else:
+      r8.run(args, not options.no_build, not options.no_debug, options.profile,
+             options.track_memory_to_file)
 
 if __name__ == '__main__':
   sys.exit(main())