Add @Keep and @KeepForSubclassing annotations for public R8 API
Add simple src/main/keep.txt file specifying that public members of
types marked with @Keep and public/protected members of types marked
with @KeepForSubclassing should be kept.
Add tools/build_r8lib.py to build a minified r8lib.jar from r8.jar and
test that d8_api_usage_sample.jar works with the minified r8lib.jar.
Also move RT_JAR from minify_tool.py to utils.py since it is used in
build_r8lib.py as well.
Change-Id: Ie091895705bfd4637513876a93f35911e958c479
diff --git a/tools/minify_tool.py b/tools/minify_tool.py
index 787c1e1..8f440dd 100755
--- a/tools/minify_tool.py
+++ b/tools/minify_tool.py
@@ -27,7 +27,6 @@
MANIFEST_PATH = 'META-INF/MANIFEST.MF'
MANIFEST = 'Manifest-Version: 1.0\nMain-Class: %s\n\n'
MANIFEST_PATTERN = r'Main-Class:\s*(\S+)'
-RT = os.path.join(utils.REPO_ROOT, 'third_party/openjdk/openjdk-rt-1.8/rt.jar')
parser = argparse.ArgumentParser(description=__doc__.strip(),
formatter_class=argparse.RawTextHelpFormatter)
@@ -38,7 +37,7 @@
'-o', '--output-jar',
help='Path to output JAR (default: build/libs/<MainClass>-min.jar)')
parser.add_argument(
- '-l', '--lib', default=RT,
+ '-l', '--lib', default=utils.RT_JAR,
help='Path to rt.jar to use instead of OpenJDK 1.8')
parser.add_argument(
'-m', '--mainclass',
@@ -85,8 +84,8 @@
'No --mainclass specified and no Main-Class in input JAR manifest.')
return mo.group(1)
-def minify_tool(mainclass=None, input_jar=utils.R8_JAR, output_jar=None, lib=RT,
- debug=True, build=True, benchmark_name=None):
+def minify_tool(mainclass=None, input_jar=utils.R8_JAR, output_jar=None,
+ lib=utils.RT_JAR, debug=True, build=True, benchmark_name=None):
if output_jar is None:
output_jar = generate_output_name(input_jar, mainclass)
with utils.TempDir() as path: