diff --git a/common-conventions/src/main/kotlin/io/technoirlab/conventions/common/configuration/Kotlin.kt b/common-conventions/src/main/kotlin/io/technoirlab/conventions/common/configuration/Kotlin.kt index 5f403b5..1277ee8 100644 --- a/common-conventions/src/main/kotlin/io/technoirlab/conventions/common/configuration/Kotlin.kt +++ b/common-conventions/src/main/kotlin/io/technoirlab/conventions/common/configuration/Kotlin.kt @@ -10,7 +10,6 @@ import org.gradle.language.base.plugins.LifecycleBasePlugin import org.jetbrains.kotlin.gradle.dsl.JvmDefaultMode import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension -import org.jetbrains.kotlin.gradle.dsl.abi.AbiValidationExtension import org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation import org.jetbrains.kotlin.samWithReceiver.gradle.SamWithReceiverExtension @@ -24,15 +23,9 @@ fun Project.configureKotlin( languageVersion.set(kotlinConfig.map { it.languageVersion }) jvmDefault.set(JvmDefaultMode.NO_COMPATIBILITY) freeCompilerArgs.addAll( - "-Xcontext-parameters", "-Xconsistent-data-class-copy-visibility" ) } - - @OptIn(ExperimentalAbiValidation::class) - extensions.configure(AbiValidationExtension::class) { - enabled.set(enableAbiValidation) - } } pluginManager.withPlugin("org.jetbrains.kotlin.plugin.sam.with.receiver") { @@ -44,12 +37,15 @@ fun Project.configureKotlin( afterEvaluate { extensions.configure(KotlinProjectExtension::class) { coreLibrariesVersion = kotlinConfig.get().coreLibrariesVersion - } - } - tasks.named(LifecycleBasePlugin.CHECK_TASK_NAME).configure { - if (enableAbiValidation.get()) { - dependsOn(tasks.named("checkKotlinAbi")) + if (enableAbiValidation.get()) { + @OptIn(ExperimentalAbiValidation::class) + abiValidation { + tasks.named(LifecycleBasePlugin.CHECK_TASK_NAME).configure { + dependsOn(checkTaskProvider) + } + } + } } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3a8b10a..d7aef70 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -6,7 +6,7 @@ develocity-gradle-plugin = "4.4.2" dokka = "2.1.0" foojay-resolver-gradle-plugin = "1.0.0" junit5 = "5.14.4" -kotlin = "2.3.21" +kotlin = "2.4.0" kotlinx-benchmark = "0.4.17" kotlinx-coroutines = "1.11.0" kotlinx-serialization = "1.11.0" diff --git a/kotlin-multiplatform-conventions/src/main/kotlin/io/technoirlab/conventions/kotlin/multiplatform/configuration/KotlinMultiplatform.kt b/kotlin-multiplatform-conventions/src/main/kotlin/io/technoirlab/conventions/kotlin/multiplatform/configuration/KotlinMultiplatform.kt index 5aae3c6..5bf6960 100644 --- a/kotlin-multiplatform-conventions/src/main/kotlin/io/technoirlab/conventions/kotlin/multiplatform/configuration/KotlinMultiplatform.kt +++ b/kotlin-multiplatform-conventions/src/main/kotlin/io/technoirlab/conventions/kotlin/multiplatform/configuration/KotlinMultiplatform.kt @@ -14,7 +14,6 @@ import org.gradle.language.base.plugins.LifecycleBasePlugin import org.jetbrains.kotlin.gradle.dsl.HasConfigurableKotlinCompilerOptions import org.jetbrains.kotlin.gradle.dsl.JvmDefaultMode import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptions -import org.jetbrains.kotlin.gradle.dsl.abi.AbiValidationMultiplatformExtension import org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.KotlinNativeTargetConfigurator.Companion.RUN_GROUP @@ -37,16 +36,10 @@ internal fun Project.configureKotlinMultiplatform( extensions.configure(KmpExtension::class) { applyDefaultHierarchyTemplate() - @OptIn(ExperimentalAbiValidation::class) - extensions.configure(AbiValidationMultiplatformExtension::class) { - enabled.set(config.buildFeatures.abiValidation) - } - compilerOptions { apiVersion.set(kotlinConfig.map { it.apiVersion }) languageVersion.set(kotlinConfig.map { it.languageVersion }) freeCompilerArgs.addAll( - "-Xcontext-parameters", "-Xconsistent-data-class-copy-visibility", "-Xexpect-actual-classes" ) @@ -69,13 +62,20 @@ internal fun Project.configureKotlinMultiplatform( implementation(kotlinLibraries.map { dependencies.platform(it.kotlinSerializationBom) }) } } - - coreLibrariesVersion = kotlinConfig.get().coreLibrariesVersion } - tasks.named(LifecycleBasePlugin.CHECK_TASK_NAME).configure { - if (config.buildFeatures.abiValidation.get()) { - dependsOn(tasks.named("checkKotlinAbi")) + afterEvaluate { + extensions.configure(KmpExtension::class) { + coreLibrariesVersion = kotlinConfig.get().coreLibrariesVersion + + if (config.buildFeatures.abiValidation.get()) { + @OptIn(ExperimentalAbiValidation::class) + abiValidation { + tasks.named(LifecycleBasePlugin.CHECK_TASK_NAME).configure { + dependsOn(checkTaskProvider) + } + } + } } } }