Call external script to create r8lib.
Change-Id: I2eb39404246da88abd86ae6615648e8606922d1b
diff --git a/tools/create_r8lib.py b/tools/create_r8lib.py
new file mode 100755
index 0000000..21dd48c
--- /dev/null
+++ b/tools/create_r8lib.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python3
+# Copyright (c) 2021, the R8 project authors. Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by a
+# BSD-style license that can be found in the LICENSE file.
+
+import argparse
+import subprocess
+import sys
+
+import jdk
+
+
+def parse_options():
+ parser = argparse.ArgumentParser(description='Tag R8 Versions')
+ parser.add_argument(
+ '--r8jar',
+ required=True,
+ help='The R8 jar to compile')
+ parser.add_argument(
+ '--output',
+ required=True,
+ help='The output path for the r8lib')
+ parser.add_argument(
+ '--pg-conf',
+ action='append',
+ help='Keep configuration')
+ parser.add_argument(
+ '--lib',
+ action='append',
+ help='Additional libraries (JDK 1.8 rt.jar already included)')
+ return parser.parse_args()
+
+def main():
+ args = parse_options()
+ # TODO(b/139725780): See if we can remove or lower the heap size (-Xmx8g).
+ cmd = [jdk.GetJavaExecutable(), '-Xmx8g', '-ea']
+ cmd.extend(['-cp', 'build/libs/r8_with_deps.jar', 'com.android.tools.r8.R8'])
+ cmd.append(args.r8jar)
+ cmd.append('--classfile')
+ cmd.extend(['--output', args.output])
+ cmd.extend(['--pg-map-output', args.output + '.map'])
+ cmd.extend(['--lib', 'third_party/openjdk/openjdk-rt-1.8/rt.jar'])
+ if args.pg_conf:
+ for pgconf in args.pg_conf:
+ cmd.extend(['--pg-conf', pgconf])
+ if args.lib:
+ for lib in args.lib:
+ cmd.extend(['--lib', lib])
+ print(' '.join(cmd))
+ subprocess.check_call(cmd)
+
+if __name__ == '__main__':
+ sys.exit(main())