diff --git a/build-logic/src/main/kotlin/io/github/reactivecircus/kstreamlined/buildlogic/KMPBuildLogic.kt b/build-logic/src/main/kotlin/io/github/reactivecircus/kstreamlined/buildlogic/KMPBuildLogic.kt index 981991ea..ef0eec36 100644 --- a/build-logic/src/main/kotlin/io/github/reactivecircus/kstreamlined/buildlogic/KMPBuildLogic.kt +++ b/build-logic/src/main/kotlin/io/github/reactivecircus/kstreamlined/buildlogic/KMPBuildLogic.kt @@ -2,8 +2,8 @@ package io.github.reactivecircus.kstreamlined.buildlogic import org.gradle.api.Project import org.gradle.kotlin.dsl.withType -import org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompile import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile /** * Apply common configs to KMP project. @@ -50,23 +50,16 @@ internal fun KotlinMultiplatformExtension.configureKMPTest() { } /** - * Configure Kotlin common compile options. + * Configure Kotlin compile options. */ -internal fun Project.configureKotlinCommonCompileOptions() { - tasks.withType().configureEach { - kotlinOptions { - freeCompilerArgs = freeCompilerArgs + commonCompilerArgs - } - } -} - -/** - * Enable explicit API mode for non-test Kotlin compilations - */ -internal fun Project.enableExplicitApi() { - tasks.withType().configureEach { - if (!name.contains("TestKotlin")) { - kotlinOptions.freeCompilerArgs += "-Xexplicit-api=strict" +internal fun Project.configureKotlinCompileOptions() { + tasks.withType().configureEach { + with(compilerOptions.freeCompilerArgs) { + addAll(commonCompilerArgs) + // enable explicit API mode for non-test Kotlin compilations + if (!name.contains("TestKotlin")) { + add("-Xexplicit-api=strict") + } } } } diff --git a/build-logic/src/main/kotlin/io/github/reactivecircus/kstreamlined/buildlogic/convention/KMPCommonConventionPlugin.kt b/build-logic/src/main/kotlin/io/github/reactivecircus/kstreamlined/buildlogic/convention/KMPCommonConventionPlugin.kt index c6234b58..8c725a52 100644 --- a/build-logic/src/main/kotlin/io/github/reactivecircus/kstreamlined/buildlogic/convention/KMPCommonConventionPlugin.kt +++ b/build-logic/src/main/kotlin/io/github/reactivecircus/kstreamlined/buildlogic/convention/KMPCommonConventionPlugin.kt @@ -2,9 +2,8 @@ package io.github.reactivecircus.kstreamlined.buildlogic.convention import io.github.reactivecircus.kstreamlined.buildlogic.configureDetekt import io.github.reactivecircus.kstreamlined.buildlogic.configureKMPCommon -import io.github.reactivecircus.kstreamlined.buildlogic.configureKotlinCommonCompileOptions +import io.github.reactivecircus.kstreamlined.buildlogic.configureKotlinCompileOptions import io.github.reactivecircus.kstreamlined.buildlogic.configureTest -import io.github.reactivecircus.kstreamlined.buildlogic.enableExplicitApi import io.github.reactivecircus.kstreamlined.buildlogic.markNonCompatibleConfigurationCacheTasks import org.gradle.api.Plugin import org.gradle.api.Project @@ -17,10 +16,9 @@ internal class KMPCommonConventionPlugin : Plugin { extensions.configure { configureKMPCommon(target) - enableExplicitApi() } - configureKotlinCommonCompileOptions() + configureKotlinCompileOptions() configureTest() configureDetekt() markNonCompatibleConfigurationCacheTasks() diff --git a/build-logic/src/main/kotlin/io/github/reactivecircus/kstreamlined/buildlogic/convention/KMPIosOnlyConventionPlugin.kt b/build-logic/src/main/kotlin/io/github/reactivecircus/kstreamlined/buildlogic/convention/KMPIosOnlyConventionPlugin.kt index 3b0df214..7bd0d6ef 100644 --- a/build-logic/src/main/kotlin/io/github/reactivecircus/kstreamlined/buildlogic/convention/KMPIosOnlyConventionPlugin.kt +++ b/build-logic/src/main/kotlin/io/github/reactivecircus/kstreamlined/buildlogic/convention/KMPIosOnlyConventionPlugin.kt @@ -2,9 +2,8 @@ package io.github.reactivecircus.kstreamlined.buildlogic.convention import io.github.reactivecircus.kstreamlined.buildlogic.configureDetekt import io.github.reactivecircus.kstreamlined.buildlogic.configureKMPCommon -import io.github.reactivecircus.kstreamlined.buildlogic.configureKotlinCommonCompileOptions +import io.github.reactivecircus.kstreamlined.buildlogic.configureKotlinCompileOptions import io.github.reactivecircus.kstreamlined.buildlogic.configureTest -import io.github.reactivecircus.kstreamlined.buildlogic.enableExplicitApi import io.github.reactivecircus.kstreamlined.buildlogic.markNonCompatibleConfigurationCacheTasks import org.gradle.api.Plugin import org.gradle.api.Project @@ -17,10 +16,9 @@ internal class KMPIosOnlyConventionPlugin : Plugin { extensions.configure { configureKMPCommon(target, enableJvmTarget = false) - enableExplicitApi() } - configureKotlinCommonCompileOptions() + configureKotlinCompileOptions() configureTest() configureDetekt() markNonCompatibleConfigurationCacheTasks()