Add OpenJDK 18 (ea+33)

Content of README.google:

Name: Java Development Kit (JDK)
URL: https://jdk.java.net/17/
Version: 18+ea-33
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: I9cba1173fd4edb3e387056af6c2c897c7f885f18
diff --git a/.gitignore b/.gitignore
index 17af682..b9fc551 100644
--- a/.gitignore
+++ b/.gitignore
@@ -135,32 +135,12 @@
 third_party/openjdk/desugar_jdk_libs_releases/1.1.1.tar.gz
 third_party/openjdk/desugar_jdk_libs_releases/1.1.5
 third_party/openjdk/desugar_jdk_libs_releases/1.1.5.tar.gz
-third_party/openjdk/jdk-17/linux
-third_party/openjdk/jdk-17/linux.tar.gz
-third_party/openjdk/jdk-17/osx
-third_party/openjdk/jdk-17/osx.tar.gz
-third_party/openjdk/jdk-17/windows
-third_party/openjdk/jdk-17/windows.tar.gz
-third_party/openjdk/jdk-16/linux
-third_party/openjdk/jdk-16/linux.tar.gz
-third_party/openjdk/jdk-16/osx
-third_party/openjdk/jdk-16/osx.tar.gz
-third_party/openjdk/jdk-16/windows
-third_party/openjdk/jdk-16/windows.tar.gz
-third_party/openjdk/jdk-15/linux
-third_party/openjdk/jdk-15/linux.tar.gz
-third_party/openjdk/jdk-15/osx
-third_party/openjdk/jdk-15/osx.tar.gz
-third_party/openjdk/jdk-15/windows
-third_party/openjdk/jdk-15/windows.tar.gz
-third_party/openjdk/jdk-11-test
-third_party/openjdk/jdk-11-test.tar.gz
-third_party/openjdk/jdk-11/linux
-third_party/openjdk/jdk-11/linux.tar.gz
-third_party/openjdk/jdk-11/osx
-third_party/openjdk/jdk-11/osx.tar.gz
-third_party/openjdk/jdk-11/windows
-third_party/openjdk/jdk-11/windows.tar.gz
+third_party/openjdk/jdk-[0-9][0-9]/linux
+third_party/openjdk/jdk-[0-9][0-9]/linux.tar.gz
+third_party/openjdk/jdk-[0-9][0-9]/osx
+third_party/openjdk/jdk-[0-9][0-9]/osx.tar.gz
+third_party/openjdk/jdk-[0-9][0-9]/windows
+third_party/openjdk/jdk-[0-9][0-9]/windows.tar.gz
 third_party/openjdk/jdk8/darwin-x86
 third_party/openjdk/jdk8/darwin-x86.tar.gz
 third_party/openjdk/jdk8/linux-x86
diff --git a/build.gradle b/build.gradle
index 02f53e1..4bac765 100644
--- a/build.gradle
+++ b/build.gradle
@@ -399,18 +399,21 @@
                 "third_party": ["openjdk/openjdk-9.0.4/linux",
                                 "openjdk/jdk8/linux-x86",
                                 "openjdk/jdk-11/linux",
-                                "openjdk/jdk-17/linux"],
+                                "openjdk/jdk-17/linux",
+                                "openjdk/jdk-18/linux"],
         ],
         osx: [
                 "third_party": ["openjdk/openjdk-9.0.4/osx",
                                 "openjdk/jdk8/darwin-x86",
                                 "openjdk/jdk-11/osx",
-                                "openjdk/jdk-17/osx"],
+                                "openjdk/jdk-17/osx",
+                                "openjdk/jdk-18/osx"],
         ],
         windows: [
                 "third_party": ["openjdk/openjdk-9.0.4/windows",
                                 "openjdk/jdk-11/windows",
-                                "openjdk/jdk-17/windows"],
+                                "openjdk/jdk-17/windows",
+                                "openjdk/jdk-18/windows"],
         ],
 ]
 
diff --git a/scripts/add-openjdk.sh b/scripts/add-openjdk.sh
index 6f8bada..f6b3284 100755
--- a/scripts/add-openjdk.sh
+++ b/scripts/add-openjdk.sh
@@ -14,13 +14,16 @@
 # Create directory third_party/openjdk/jdk-X
 # cd into third_party/openjdk/jdk-X
 # Prepare README.google
-# Update JDK_VERSION below
+# Update JDK_VERSION and JDK_VERSION_FULL below
 
 # Now run script with fingers crossed!
 
-JDK_VERSION=17
+JDK_VERSION="18"
+JDK_VERSION_FULL=${JDK_VERSION}
+# For ea versions the full version name has a postfix.
+# JDK_VERSION_FULL="${JDK_VERSION}-ea+33"
 
-tar xf ~/Downloads/openjdk-${JDK_VERSION}_linux-x64_bin.tar.gz
+tar xf ~/Downloads/openjdk-${JDK_VERSION_FULL}_linux-x64_bin.tar.gz
 cp -rL jdk-${JDK_VERSION} linux
 cp README.google linux
 upload_to_google_storage.py -a --bucket r8-deps linux
@@ -28,7 +31,7 @@
 rm -rf linux
 rm linux.tar.gz
 
-tar xf ~/Downloads/openjdk-${JDK_VERSION}_macos-x64_bin.tar.gz
+tar xf ~/Downloads/openjdk-${JDK_VERSION_FULL}_macos-x64_bin.tar.gz
 cp -rL jdk-${JDK_VERSION}.jdk osx
 cp README.google osx
 upload_to_google_storage.py -a --bucket r8-deps osx
@@ -36,7 +39,7 @@
 rm -rf jdk-${JDK_VERSION}.jdk
 rm osx.tar.gz
 
-unzip ~/Downloads/openjdk-${JDK_VERSION}_windows-x64_bin.zip
+unzip ~/Downloads/openjdk-${JDK_VERSION_FULL}_windows-x64_bin.zip
 cp -rL jdk-${JDK_VERSION} windows
 cp README.google windows
 upload_to_google_storage.py -a --bucket r8-deps windows
diff --git a/src/main/java/com/android/tools/r8/cf/CfVersion.java b/src/main/java/com/android/tools/r8/cf/CfVersion.java
index b23d44d..9ce8c64 100644
--- a/src/main/java/com/android/tools/r8/cf/CfVersion.java
+++ b/src/main/java/com/android/tools/r8/cf/CfVersion.java
@@ -38,6 +38,8 @@
   public static final CfVersion V16_PREVIEW = new CfVersion(Opcodes.V16 | Opcodes.V_PREVIEW);
   public static final CfVersion V17 = new CfVersion(Opcodes.V17);
   public static final CfVersion V17_PREVIEW = new CfVersion(Opcodes.V17 | Opcodes.V_PREVIEW);
+  public static final CfVersion V18 = new CfVersion(Opcodes.V18);
+  public static final CfVersion V18_PREVIEW = new CfVersion(Opcodes.V18 | Opcodes.V_PREVIEW);
 
   private final int version;
 
@@ -58,7 +60,8 @@
     CfVersion.V14,
     CfVersion.V15,
     CfVersion.V16,
-    CfVersion.V17
+    CfVersion.V17,
+    CfVersion.V18
   };
 
   // Private constructor in case we want to canonicalize versions.
diff --git a/src/test/java/com/android/tools/r8/TestRuntime.java b/src/test/java/com/android/tools/r8/TestRuntime.java
index a4b8697..dd19c1e 100644
--- a/src/test/java/com/android/tools/r8/TestRuntime.java
+++ b/src/test/java/com/android/tools/r8/TestRuntime.java
@@ -30,6 +30,7 @@
     JDK10("jdk10", 54),
     JDK11("jdk11", 55),
     JDK17("jdk17", 61),
+    JDK18("jdk18", 62),
     ;
 
     /** This should generally be the latest checked in CF runtime we fully support. */
diff --git a/third_party/openjdk/jdk-18/linux.tar.gz.sha1 b/third_party/openjdk/jdk-18/linux.tar.gz.sha1
new file mode 100644
index 0000000..3c8efd9
--- /dev/null
+++ b/third_party/openjdk/jdk-18/linux.tar.gz.sha1
@@ -0,0 +1 @@
+b545df5778c9025fe105dddcd8b3830d8731137b
\ No newline at end of file
diff --git a/third_party/openjdk/jdk-18/osx.tar.gz.sha1 b/third_party/openjdk/jdk-18/osx.tar.gz.sha1
new file mode 100644
index 0000000..9699f89
--- /dev/null
+++ b/third_party/openjdk/jdk-18/osx.tar.gz.sha1
@@ -0,0 +1 @@
+527883f93a157ae249f83f461b0368d87c8fe6a1
\ No newline at end of file
diff --git a/third_party/openjdk/jdk-18/windows.tar.gz.sha1 b/third_party/openjdk/jdk-18/windows.tar.gz.sha1
new file mode 100644
index 0000000..854167c
--- /dev/null
+++ b/third_party/openjdk/jdk-18/windows.tar.gz.sha1
@@ -0,0 +1 @@
+b1e3cb3be67dd78423a0a96c0214ac97b5edd112
\ No newline at end of file