[Gradle] Introduce compilerOptions for Kotlin external target

Kotlin external target now properly exposes compilerOptions which could
be used by target users to configure target compilations compiler
options.

^KT-57292 In Progress
This commit is contained in:
Yahor Berdnikau
2023-08-01 10:26:10 +02:00
committed by Space Team
parent c1e26bfa47
commit 7dfbf28d93
8 changed files with 178 additions and 13 deletions
@@ -6,17 +6,26 @@ plugins {
dependencies {
compileOnly(gradleKotlinDsl())
compileOnly("com.android.tools.build:gradle:7.2.1")
compileOnly(project(":kotlin-gradle-plugin"))
compileOnly(project(":kotlin-gradle-plugin")) {
capabilities {
requireCapability("org.jetbrains.kotlin:kotlin-gradle-plugin-common")
}
}
compileOnly(project(":kotlin-gradle-plugin-api")) {
capabilities {
requireCapability("org.jetbrains.kotlin:kotlin-gradle-plugin-api-common")
}
}
compileOnly(project(":kotlin-gradle-plugin-idea"))
}
configureKotlinCompileTasksGradleCompatibility()
kotlin {
sourceSets.all {
languageSettings.optIn("org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi")
compilerOptions {
optIn.add("org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi")
/* Workaround for KT-54823 */
languageSettings.optIn("org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi")
optIn.add("org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi")
}
}
@@ -5,8 +5,11 @@
package org.jetbrains.kotlin.gradle.android
import org.gradle.api.Action
import org.gradle.api.NamedDomainObjectContainer
import org.gradle.kotlin.dsl.getByType
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptions
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.plugin.mpp.external.DecoratedExternalKotlinTarget
@@ -23,4 +26,18 @@ class PrototypeAndroidTarget(
@Suppress("unchecked_cast")
override val compilations: NamedDomainObjectContainer<PrototypeAndroidCompilation>
get() = super.compilations as NamedDomainObjectContainer<PrototypeAndroidCompilation>
@ExperimentalKotlinGradlePluginApi
override val compilerOptions: KotlinJvmCompilerOptions
get() = super.compilerOptions as KotlinJvmCompilerOptions
@ExperimentalKotlinGradlePluginApi
fun compilerOptions(configure: KotlinJvmCompilerOptions.() -> Unit) {
configure(compilerOptions)
}
@ExperimentalKotlinGradlePluginApi
fun compilerOptions(configure: Action<KotlinJvmCompilerOptions>) {
configure.execute(compilerOptions)
}
}