|
|
|
@ -20,11 +20,14 @@ import com.android.build.api.dsl.CommonExtension
|
|
|
|
|
import org.gradle.api.JavaVersion
|
|
|
|
|
import org.gradle.api.Project
|
|
|
|
|
import org.gradle.api.plugins.JavaPluginExtension
|
|
|
|
|
import org.gradle.kotlin.dsl.assign
|
|
|
|
|
import org.gradle.kotlin.dsl.configure
|
|
|
|
|
import org.gradle.kotlin.dsl.dependencies
|
|
|
|
|
import org.gradle.kotlin.dsl.provideDelegate
|
|
|
|
|
import org.gradle.kotlin.dsl.withType
|
|
|
|
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
|
|
|
|
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
|
|
|
|
import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension
|
|
|
|
|
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
|
|
|
|
|
import org.jetbrains.kotlin.gradle.dsl.KotlinTopLevelExtension
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Configure base Kotlin with Android options
|
|
|
|
@ -48,7 +51,7 @@ internal fun Project.configureKotlinAndroid(
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
configureKotlin()
|
|
|
|
|
configureKotlin<KotlinAndroidProjectExtension>()
|
|
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
|
add("coreLibraryDesugaring", libs.findLibrary("android.desugarJdkLibs").get())
|
|
|
|
@ -66,26 +69,26 @@ internal fun Project.configureKotlinJvm() {
|
|
|
|
|
targetCompatibility = JavaVersion.VERSION_11
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
configureKotlin()
|
|
|
|
|
configureKotlin<KotlinJvmProjectExtension>()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Configure base Kotlin options
|
|
|
|
|
*/
|
|
|
|
|
private fun Project.configureKotlin() {
|
|
|
|
|
// Use withType to workaround https://youtrack.jetbrains.com/issue/KT-55947
|
|
|
|
|
tasks.withType<KotlinCompile>().configureEach {
|
|
|
|
|
kotlinOptions {
|
|
|
|
|
// Set JVM target to 11
|
|
|
|
|
jvmTarget = JavaVersion.VERSION_11.toString()
|
|
|
|
|
// Treat all Kotlin warnings as errors (disabled by default)
|
|
|
|
|
// Override by setting warningsAsErrors=true in your ~/.gradle/gradle.properties
|
|
|
|
|
val warningsAsErrors: String? by project
|
|
|
|
|
allWarningsAsErrors = warningsAsErrors.toBoolean()
|
|
|
|
|
freeCompilerArgs = freeCompilerArgs + listOf(
|
|
|
|
|
// Enable experimental coroutines APIs, including Flow
|
|
|
|
|
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
private inline fun <reified T : KotlinTopLevelExtension> Project.configureKotlin() = configure<T> {
|
|
|
|
|
// Treat all Kotlin warnings as errors (disabled by default)
|
|
|
|
|
// Override by setting warningsAsErrors=true in your ~/.gradle/gradle.properties
|
|
|
|
|
val warningsAsErrors: String? by project
|
|
|
|
|
when (this) {
|
|
|
|
|
is KotlinAndroidProjectExtension -> compilerOptions
|
|
|
|
|
is KotlinJvmProjectExtension -> compilerOptions
|
|
|
|
|
else -> TODO("Unsupported project extension $this ${T::class}")
|
|
|
|
|
}.apply {
|
|
|
|
|
jvmTarget = JvmTarget.JVM_11
|
|
|
|
|
allWarningsAsErrors = warningsAsErrors.toBoolean()
|
|
|
|
|
freeCompilerArgs.add(
|
|
|
|
|
// Enable experimental coroutines APIs, including Flow
|
|
|
|
|
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|