Merge "Start targetting Java 11 for host projects" into androidx-main
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
index 0a1bfd2..223e991 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
@@ -56,6 +56,7 @@
 import com.android.build.gradle.internal.tasks.ListingFileRedirectTask
 import org.gradle.api.GradleException
 import org.gradle.api.JavaVersion.VERSION_1_8
+import org.gradle.api.JavaVersion.VERSION_11
 import org.gradle.api.Plugin
 import org.gradle.api.Project
 import org.gradle.api.Task
@@ -261,13 +262,18 @@
         extension: AndroidXExtension,
         plugin: KotlinBasePluginWrapper
     ) {
-        project.tasks.withType(KotlinCompile::class.java).configureEach { task ->
-            task.kotlinOptions.jvmTarget = "1.8"
-            task.kotlinOptions.freeCompilerArgs += listOf(
-                "-Xskip-metadata-version-check"
-            )
-        }
         project.afterEvaluate {
+            project.tasks.withType(KotlinCompile::class.java).configureEach { task ->
+                if (extension.type.compilationTarget == CompilationTarget.HOST) {
+                    task.kotlinOptions.jvmTarget = "11"
+                } else {
+                    task.kotlinOptions.jvmTarget = "1.8"
+                }
+                task.kotlinOptions.freeCompilerArgs += listOf(
+                    "-Xskip-metadata-version-check"
+                )
+            }
+
             val isAndroidProject = project.plugins.hasPlugin(LibraryPlugin::class.java) ||
                 project.plugins.hasPlugin(AppPlugin::class.java)
             // Explicit API mode is broken for Android projects
@@ -434,9 +440,18 @@
 
         // Force Java 1.8 source- and target-compatibility for all Java libraries.
         val javaExtension = project.extensions.getByType<JavaPluginExtension>()
-        javaExtension.apply {
-            sourceCompatibility = VERSION_1_8
-            targetCompatibility = VERSION_1_8
+        project.afterEvaluate {
+            if (extension.type.compilationTarget == CompilationTarget.HOST) {
+                javaExtension.apply {
+                    sourceCompatibility = VERSION_11
+                    targetCompatibility = VERSION_11
+                }
+            } else {
+                javaExtension.apply {
+                    sourceCompatibility = VERSION_1_8
+                    targetCompatibility = VERSION_1_8
+                }
+            }
         }
 
         project.configureJavaCompilationWarnings(extension)
diff --git a/buildSrc/public/src/main/kotlin/androidx/build/LibraryType.kt b/buildSrc/public/src/main/kotlin/androidx/build/LibraryType.kt
index ac1dbf34..f34089e 100644
--- a/buildSrc/public/src/main/kotlin/androidx/build/LibraryType.kt
+++ b/buildSrc/public/src/main/kotlin/androidx/build/LibraryType.kt
@@ -81,6 +81,7 @@
         val SAMPLES = Samples()
         val LINT = Lint()
         val COMPILER_DAEMON = CompilerDaemon()
+        val COMPILER_DAEMON_TEST = CompilerDaemonTest()
         val COMPILER_PLUGIN = CompilerPlugin()
         val GRADLE_PLUGIN = GradlePlugin()
         val ANNOTATION_PROCESSOR = AnnotationProcessor()
@@ -127,6 +128,12 @@
         RunApiTasks.No("Compiler Daemon (Host-only)"),
         CompilationTarget.HOST
     )
+    class CompilerDaemonTest : LibraryType(
+        Publish.NONE,
+        sourceJars = false,
+        RunApiTasks.No("Compiler Daemon (Host-only) Test"),
+        CompilationTarget.HOST
+    )
 
     class CompilerPlugin : LibraryType(
         Publish.SNAPSHOT_AND_RELEASE,
diff --git a/compose/compiler/compiler-daemon/integration-tests/build.gradle b/compose/compiler/compiler-daemon/integration-tests/build.gradle
index 09ac009..afda48a 100644
--- a/compose/compiler/compiler-daemon/integration-tests/build.gradle
+++ b/compose/compiler/compiler-daemon/integration-tests/build.gradle
@@ -13,7 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import androidx.build.Publish
+
+import androidx.build.LibraryType
 
 plugins {
     id("AndroidXPlugin")
@@ -30,7 +31,7 @@
 
 androidx {
     name = "AndroidX Compiler Daemon CLI Tests"
-    publish = Publish.NONE
+    type = LibraryType.COMPILER_DAEMON_TEST
     inceptionYear = "2021"
     description = "Contains test for the compose compiler daemon"
 }