Add platform entry to the compiler marker.

Bug: b/232073181
Change-Id: I7931d941101057295580a9a97256bad1ea8c9d4e
diff --git a/src/main/java/com/android/tools/r8/dex/Marker.java b/src/main/java/com/android/tools/r8/dex/Marker.java
index 8d57a1c..f2b1e15 100644
--- a/src/main/java/com/android/tools/r8/dex/Marker.java
+++ b/src/main/java/com/android/tools/r8/dex/Marker.java
@@ -32,6 +32,7 @@
   public static final String PG_MAP_ID = "pg-map-id";
   public static final String R8_MODE = "r8-mode";
   private static final String NO_LIBRARY_DESUGARING = "<no-library-desugaring>";
+  private static final String ANDROID_PLATFORM_BUILD = "platform";
 
   public enum Tool {
     D8,
@@ -268,6 +269,17 @@
     return this;
   }
 
+  public boolean isAndroidPlatformBuild() {
+    return jsonObject.has(ANDROID_PLATFORM_BUILD)
+        && jsonObject.get(ANDROID_PLATFORM_BUILD).getAsBoolean();
+  }
+
+  public Marker setAndroidPlatformBuild() {
+    assert !jsonObject.has(ANDROID_PLATFORM_BUILD);
+    jsonObject.addProperty(ANDROID_PLATFORM_BUILD, true);
+    return this;
+  }
+
   @Override
   public String toString() {
     // In order to make printing of markers deterministic we sort the entries by key.
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index 840ee5a..07322dc 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -268,9 +268,11 @@
   }
 
   public void configureAndroidPlatformBuild(boolean isAndroidPlatformBuild) {
+    assert !androidPlatformBuild;
     if (!isAndroidPlatformBuild) {
       return;
     }
+    androidPlatformBuild = isAndroidPlatformBuild;
     // Configure options according to platform build assumptions.
     // See go/r8platformflag and b/232073181.
     apiModelingOptions().disableMissingApiModeling();
@@ -464,6 +466,9 @@
     if (tool == Tool.R8) {
       marker.setR8Mode(forceProguardCompatibility ? "compatibility" : "full");
     }
+    if (androidPlatformBuild) {
+      marker.setAndroidPlatformBuild();
+    }
     return marker;
   }
 
@@ -591,6 +596,7 @@
   // Skipping min_api check and compiling an intermediate result intended for later merging.
   // Intermediate builds also emits or update synthesized classes mapping.
   public boolean intermediate = false;
+  private boolean androidPlatformBuild = false;
   public boolean retainCompileTimeAnnotations = true;
   public boolean ignoreBootClasspathEnumsForMaindexTracing =
       System.getProperty("com.android.tools.r8.ignoreBootClasspathEnumsForMaindexTracing") != null;
diff --git a/src/test/java/com/android/tools/r8/MarkerMatcher.java b/src/test/java/com/android/tools/r8/MarkerMatcher.java
index 22610d3..bbd1952 100644
--- a/src/test/java/com/android/tools/r8/MarkerMatcher.java
+++ b/src/test/java/com/android/tools/r8/MarkerMatcher.java
@@ -95,6 +95,20 @@
     };
   }
 
+  public static Matcher<Marker> markerAndroidPlatformBuild() {
+    return new MarkerMatcher() {
+      @Override
+      protected boolean eval(Marker marker) {
+        return marker.isAndroidPlatformBuild();
+      }
+
+      @Override
+      protected void explain(Description description) {
+        description.appendText("platform");
+      }
+    };
+  }
+
   public static Matcher<Marker> markerCompilationMode(CompilationMode compilationMode) {
     return new MarkerMatcher() {
       @Override
diff --git a/src/test/java/com/android/tools/r8/compilerapi/androidplatformbuild/AndroidPlatformBuildApiTest.java b/src/test/java/com/android/tools/r8/compilerapi/androidplatformbuild/AndroidPlatformBuildApiTest.java
index f83ebc8..e43d0b2 100644
--- a/src/test/java/com/android/tools/r8/compilerapi/androidplatformbuild/AndroidPlatformBuildApiTest.java
+++ b/src/test/java/com/android/tools/r8/compilerapi/androidplatformbuild/AndroidPlatformBuildApiTest.java
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.compilerapi.androidplatformbuild;
 
+import static com.android.tools.r8.MarkerMatcher.markerAndroidPlatformBuild;
 import static com.android.tools.r8.MarkerMatcher.markerMinApi;
 import static org.hamcrest.MatcherAssert.assertThat;
 
@@ -25,6 +26,8 @@
 
 public class AndroidPlatformBuildApiTest extends CompilerApiTestRunner {
 
+  public static final int MIN_API_LEVEL = 31;
+
   public AndroidPlatformBuildApiTest(TestParameters parameters) {
     super(parameters);
   }
@@ -51,7 +54,10 @@
     test.accept(new DexIndexedConsumer.ArchiveConsumer(output));
     assertThat(
         new CodeInspector(output).getMarkers(),
-        CoreMatchers.everyItem(markerMinApi(AndroidApiLevel.ANDROID_PLATFORM)));
+        CoreMatchers.everyItem(
+            CoreMatchers.allOf(
+                markerMinApi(AndroidApiLevel.getAndroidApiLevel(MIN_API_LEVEL)),
+                CoreMatchers.not(markerAndroidPlatformBuild()))));
   }
 
   public static class ApiTest extends CompilerApiTest {
@@ -67,7 +73,7 @@
               .addLibraryFiles(getJava8RuntimeJar())
               .setProgramConsumer(programConsumer)
               .setAndroidPlatformBuild(true)
-              .setMinApiLevel(10000)
+              .setMinApiLevel(MIN_API_LEVEL)
               .build());
     }
 
@@ -79,7 +85,7 @@
               .addLibraryFiles(getJava8RuntimeJar())
               .setProgramConsumer(programConsumer)
               .setAndroidPlatformBuild(true)
-              .setMinApiLevel(10000)
+              .setMinApiLevel(MIN_API_LEVEL)
               .build());
     }
 
diff --git a/third_party/binary_compatibility_tests/compiler_api_tests.tar.gz.sha1 b/third_party/binary_compatibility_tests/compiler_api_tests.tar.gz.sha1
index 4101eab..3bb800b 100644
--- a/third_party/binary_compatibility_tests/compiler_api_tests.tar.gz.sha1
+++ b/third_party/binary_compatibility_tests/compiler_api_tests.tar.gz.sha1
@@ -1 +1 @@
-b25c35c727db61b1c09b46ce80bc4feaffc3a48c
\ No newline at end of file
+719dcfccfdf9b244f99be9bbdc5126aacc350e09
\ No newline at end of file