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];