Add command line flag --android-platform-build
Bug: b/232073181
Change-Id: Ia1845fe4cfa3ca51d00892f25a05bf8211465979
diff --git a/src/main/java/com/android/tools/r8/D8CommandParser.java b/src/main/java/com/android/tools/r8/D8CommandParser.java
index 4f5b985..c85fe0d 100644
--- a/src/main/java/com/android/tools/r8/D8CommandParser.java
+++ b/src/main/java/com/android/tools/r8/D8CommandParser.java
@@ -78,6 +78,7 @@
.addAll(ParseFlagInfoImpl.getAssertionsFlags())
.add(ParseFlagInfoImpl.getThreadCount())
.add(ParseFlagInfoImpl.getMapDiagnostics())
+ .add(ParseFlagInfoImpl.getAndroidPlatformBuild())
.add(ParseFlagInfoImpl.getVersion("d8"))
.add(ParseFlagInfoImpl.getHelp())
.build();
@@ -302,6 +303,8 @@
} else if (arg.equals("--desugared-lib-pg-conf-output")) {
StringConsumer consumer = new StringConsumer.FileConsumer(Paths.get(nextArg));
builder.setDesugaredLibraryKeepRuleConsumer(consumer);
+ } else if (arg.equals("--android-platform-build")) {
+ builder.setAndroidPlatformBuild(true);
} else if (arg.startsWith("--")) {
if (tryParseAssertionArgument(builder, arg, origin)) {
continue;
diff --git a/src/main/java/com/android/tools/r8/ParseFlagInfoImpl.java b/src/main/java/com/android/tools/r8/ParseFlagInfoImpl.java
index ad88315..af8d407 100644
--- a/src/main/java/com/android/tools/r8/ParseFlagInfoImpl.java
+++ b/src/main/java/com/android/tools/r8/ParseFlagInfoImpl.java
@@ -156,6 +156,13 @@
"Note that fatal compiler errors cannot be mapped.");
}
+ public static ParseFlagInfoImpl getAndroidPlatformBuild() {
+ return flag0(
+ "--android-platform-build",
+ "Compile as a platform build where the runtime/bootclasspath",
+ "is assumed to be the version specified by --min-api.");
+ }
+
public static ParseFlagInfoImpl flag0(String flag, String... help) {
return flag(flag, Collections.emptyList(), Arrays.asList(help));
}
diff --git a/src/main/java/com/android/tools/r8/R8CommandParser.java b/src/main/java/com/android/tools/r8/R8CommandParser.java
index 3b80233..9ffcdd2 100644
--- a/src/main/java/com/android/tools/r8/R8CommandParser.java
+++ b/src/main/java/com/android/tools/r8/R8CommandParser.java
@@ -103,6 +103,7 @@
"The <template> can reference the variables:",
" %MAP_ID: map id (e.g., value of --map-id-template).",
" %MAP_HASH: compiler generated mapping hash."))
+ .add(ParseFlagInfoImpl.getAndroidPlatformBuild())
.add(ParseFlagInfoImpl.getVersion("r8"))
.add(ParseFlagInfoImpl.getHelp())
.build();
@@ -298,6 +299,8 @@
} else if (arg.equals("--source-file-template")) {
builder.setSourceFileProvider(
SourceFileTemplateProvider.create(nextArg, builder.getReporter()));
+ } else if (arg.equals("--android-platform-build")) {
+ builder.setAndroidPlatformBuild(true);
} else if (arg.startsWith("--")) {
if (tryParseAssertionArgument(builder, arg, argsOrigin)) {
continue;
diff --git a/src/test/java/com/android/tools/r8/D8CommandTest.java b/src/test/java/com/android/tools/r8/D8CommandTest.java
index aebb5a6..e33cb93 100644
--- a/src/test/java/com/android/tools/r8/D8CommandTest.java
+++ b/src/test/java/com/android/tools/r8/D8CommandTest.java
@@ -767,6 +767,12 @@
numThreadsOptionInvalid("two");
}
+ @Test
+ public void androidPlatformBuildFlag() throws Exception {
+ assertFalse(parse().getAndroidPlatformBuild());
+ assertTrue(parse("--android-platform-build").getAndroidPlatformBuild());
+ }
+
@Override
String[] requiredArgsForTest() {
return new String[0];
diff --git a/src/test/java/com/android/tools/r8/R8CommandTest.java b/src/test/java/com/android/tools/r8/R8CommandTest.java
index 8b951c9..1c7a5ea 100644
--- a/src/test/java/com/android/tools/r8/R8CommandTest.java
+++ b/src/test/java/com/android/tools/r8/R8CommandTest.java
@@ -910,6 +910,12 @@
assertTrue(options.enableStubbingOfClasses);
}
+ @Test
+ public void androidPlatformBuildFlag() throws Exception {
+ assertFalse(parse().getAndroidPlatformBuild());
+ assertTrue(parse("--android-platform-build").getAndroidPlatformBuild());
+ }
+
@Override
String[] requiredArgsForTest() {
return new String[0];