Add OpenJDK 21 GA build

Replace all usage of OpenJdk 20 with this.

Content of README.google:

Name: Java Development Kit (JDK)
URL: https://jdk.java.net/21/
Version: 21
Revision: NA
License: the GNU General Public License, version 2, with the Classpath Exception.

Description:
This is pulled directly from the website for the JDK releases that has an open source license.
Synlinks have reen resolved using `cp -rL` before uploading.

Change-Id: I4ab925c7de826d3c3dc802c8fb40ab60873b0883
Bug: b/293630962
diff --git a/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt b/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
index 370ad69..1d566dc 100644
--- a/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
+++ b/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
@@ -48,7 +48,7 @@
   JDK_9("openjdk-9.0.4"),
   JDK_11("jdk-11"),
   JDK_17("jdk-17"),
-  JDK_20("jdk-20");
+  JDK_21("jdk-21");
 
   fun isJdk8() : Boolean {
     return this == JDK_8
diff --git a/d8_r8/test_modules/tests_java_20/build.gradle.kts b/d8_r8/test_modules/tests_java_21/build.gradle.kts
similarity index 72%
rename from d8_r8/test_modules/tests_java_20/build.gradle.kts
rename to d8_r8/test_modules/tests_java_21/build.gradle.kts
index 43037f0..9d71db8 100644
--- a/d8_r8/test_modules/tests_java_20/build.gradle.kts
+++ b/d8_r8/test_modules/tests_java_21/build.gradle.kts
@@ -15,23 +15,23 @@
 
 java {
   sourceSets.test.configure {
-    java.srcDir(root.resolveAll("src", "test", "examplesJava20"))
+    java.srcDir(root.resolveAll("src", "test", "examplesJava21"))
   }
-  sourceCompatibility = JavaVersion.VERSION_20
-  targetCompatibility = JavaVersion.VERSION_20
+  sourceCompatibility = JavaVersion.VERSION_21
+  targetCompatibility = JavaVersion.VERSION_21
 }
 
 dependencies { }
 
 // We just need to register the examples jars for it to be referenced by other modules.
-val buildExampleJars = buildExampleJars("examplesJava20")
+val buildExampleJars = buildExampleJars("examplesJava21")
 
 tasks {
   withType<JavaCompile> {
     dependsOn(gradle.includedBuild("shared").task(":downloadDeps"))
     options.setFork(true)
     options.forkOptions.memoryMaximumSize = "3g"
-    options.forkOptions.executable = getCompilerPath(Jdk.JDK_20)
+    options.forkOptions.executable = getCompilerPath(Jdk.JDK_21)
   }
 }
 
diff --git a/d8_r8/test_modules/tests_java_20/gradle.properties b/d8_r8/test_modules/tests_java_21/gradle.properties
similarity index 100%
rename from d8_r8/test_modules/tests_java_20/gradle.properties
rename to d8_r8/test_modules/tests_java_21/gradle.properties
diff --git a/d8_r8/test_modules/tests_java_20/settings.gradle.kts b/d8_r8/test_modules/tests_java_21/settings.gradle.kts
similarity index 94%
rename from d8_r8/test_modules/tests_java_20/settings.gradle.kts
rename to d8_r8/test_modules/tests_java_21/settings.gradle.kts
index 390fdb7..28d1dbb 100644
--- a/d8_r8/test_modules/tests_java_20/settings.gradle.kts
+++ b/d8_r8/test_modules/tests_java_21/settings.gradle.kts
@@ -21,6 +21,6 @@
   }
 }
 
-rootProject.name = "tests_java_20"
+rootProject.name = "tests_java_21"
 val root = rootProject.projectDir.parentFile.parentFile
 includeBuild(root.resolve("shared"))
diff --git a/d8_r8/test_modules/tests_java_8/build.gradle.kts b/d8_r8/test_modules/tests_java_8/build.gradle.kts
index 8b0bc68..54aeb8e 100644
--- a/d8_r8/test_modules/tests_java_8/build.gradle.kts
+++ b/d8_r8/test_modules/tests_java_8/build.gradle.kts
@@ -66,7 +66,7 @@
   projectTask("tests_java_10", getExampleJarsTaskName("examplesJava10")),
   projectTask("tests_java_11", getExampleJarsTaskName("examplesJava11")),
   projectTask("tests_java_17", getExampleJarsTaskName("examplesJava17")),
-  projectTask("tests_java_20", getExampleJarsTaskName("examplesJava20")),
+  projectTask("tests_java_21", getExampleJarsTaskName("examplesJava21")),
 )
 
 fun testDependencies() : FileCollection {
diff --git a/d8_r8/test_modules/tests_java_8/settings.gradle.kts b/d8_r8/test_modules/tests_java_8/settings.gradle.kts
index 6600f09..d54c456 100644
--- a/d8_r8/test_modules/tests_java_8/settings.gradle.kts
+++ b/d8_r8/test_modules/tests_java_8/settings.gradle.kts
@@ -35,4 +35,4 @@
 includeBuild(root.resolve("test_modules").resolve("tests_java_10"))
 includeBuild(root.resolve("test_modules").resolve("tests_java_11"))
 includeBuild(root.resolve("test_modules").resolve("tests_java_17"))
-includeBuild(root.resolve("test_modules").resolve("tests_java_20"))
+includeBuild(root.resolve("test_modules").resolve("tests_java_21"))
diff --git a/scripts/add-openjdk.sh b/scripts/add-openjdk.sh
index 4aac626..dd756c7 100755
--- a/scripts/add-openjdk.sh
+++ b/scripts/add-openjdk.sh
@@ -7,18 +7,18 @@
 set -e
 set -x
 
-echo "Update this script manually before using"
-exit -1
+#echo "Update this script manually before using"
+#exit -1
 
 # Download JDK from https://jdk.java.net/X/ (X = version) into ~/Downloads
 # Create directory third_party/openjdk/jdk-X
 # cd into third_party/openjdk/jdk-X
-# Prepare README.google
+# Prepare README.google by copying from ../jdk-X-1 and update
 # Update JDK_VERSION and JDK_VERSION_FULL below
 
 # Now run script with fingers crossed!
 
-JDK_VERSION="20.0.1"
+JDK_VERSION="21"
 JDK_VERSION_FULL=${JDK_VERSION}
 # For ea versions the full version name has a postfix.
 # JDK_VERSION_FULL="${JDK_VERSION}-ea+33"
@@ -58,4 +58,4 @@
 
 git add *.sha1
 
-echo "Update additional files, see https://r8-review.googlesource.com/c/r8/+/61909"
\ No newline at end of file
+echo "Update additional files, see https://r8-review.googlesource.com/c/r8/+/61909"
diff --git a/src/test/examplesJava20/jdk8272564/A.java b/src/test/examplesJava21/jdk8272564/A.java
similarity index 100%
rename from src/test/examplesJava20/jdk8272564/A.java
rename to src/test/examplesJava21/jdk8272564/A.java
diff --git a/src/test/examplesJava20/jdk8272564/B.java b/src/test/examplesJava21/jdk8272564/B.java
similarity index 100%
rename from src/test/examplesJava20/jdk8272564/B.java
rename to src/test/examplesJava21/jdk8272564/B.java
diff --git a/src/test/examplesJava20/jdk8272564/C.java b/src/test/examplesJava21/jdk8272564/C.java
similarity index 100%
rename from src/test/examplesJava20/jdk8272564/C.java
rename to src/test/examplesJava21/jdk8272564/C.java
diff --git a/src/test/examplesJava20/jdk8272564/I.java b/src/test/examplesJava21/jdk8272564/I.java
similarity index 100%
rename from src/test/examplesJava20/jdk8272564/I.java
rename to src/test/examplesJava21/jdk8272564/I.java
diff --git a/src/test/examplesJava20/jdk8272564/J.java b/src/test/examplesJava21/jdk8272564/J.java
similarity index 100%
rename from src/test/examplesJava20/jdk8272564/J.java
rename to src/test/examplesJava21/jdk8272564/J.java
diff --git a/src/test/examplesJava20/jdk8272564/K.java b/src/test/examplesJava21/jdk8272564/K.java
similarity index 100%
rename from src/test/examplesJava20/jdk8272564/K.java
rename to src/test/examplesJava21/jdk8272564/K.java
diff --git a/src/test/examplesJava20/jdk8272564/Main.java b/src/test/examplesJava21/jdk8272564/Main.java
similarity index 100%
rename from src/test/examplesJava20/jdk8272564/Main.java
rename to src/test/examplesJava21/jdk8272564/Main.java
diff --git a/third_party/openjdk/jdk-21/linux.tar.gz.sha1 b/third_party/openjdk/jdk-21/linux.tar.gz.sha1
new file mode 100644
index 0000000..19290f3
--- /dev/null
+++ b/third_party/openjdk/jdk-21/linux.tar.gz.sha1
@@ -0,0 +1 @@
+e5398039546505d79669a159e0047f84cd61ea32
\ No newline at end of file
diff --git a/third_party/openjdk/jdk-21/osx.tar.gz.sha1 b/third_party/openjdk/jdk-21/osx.tar.gz.sha1
new file mode 100644
index 0000000..1a0a1e0
--- /dev/null
+++ b/third_party/openjdk/jdk-21/osx.tar.gz.sha1
@@ -0,0 +1 @@
+bd5748aea8e4d89ea7123d1c2bfe267b8fc882bd
\ No newline at end of file
diff --git a/third_party/openjdk/jdk-21/windows.tar.gz.sha1 b/third_party/openjdk/jdk-21/windows.tar.gz.sha1
new file mode 100644
index 0000000..7415604
--- /dev/null
+++ b/third_party/openjdk/jdk-21/windows.tar.gz.sha1
@@ -0,0 +1 @@
+23e0f901dbb6e31f9877357a8282b531f13e7c2e
\ No newline at end of file
diff --git a/tools/jdk.py b/tools/jdk.py
index ba7ddfb..c697759 100755
--- a/tools/jdk.py
+++ b/tools/jdk.py
@@ -10,9 +10,8 @@
 
 JDK_DIR = os.path.join(defines.THIRD_PARTY, 'openjdk')
 
-ALL_JDKS = [
-    'openjdk-9.0.4', 'jdk-11', 'jdk-15', 'jdk-16', 'jdk-17', 'jdk-18', 'jdk-20'
-]
+ALL_JDKS = ['openjdk-9.0.4', 'jdk-11', 'jdk-15', 'jdk-16', 'jdk-17',
+            'jdk-18', 'jdk-21']
 
 
 def GetJdkHome():