diff --git a/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/KotlinAndroidPlugin.kt b/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/KotlinAndroidPlugin.kt index 14ed8346..fadc9258 100644 --- a/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/KotlinAndroidPlugin.kt +++ b/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/KotlinAndroidPlugin.kt @@ -7,12 +7,15 @@ package dev.msfjarvis.claw.gradle import dev.msfjarvis.claw.gradle.KotlinCommonPlugin.Companion.JVM_TOOLCHAIN_ACTION +import org.gradle.accessors.dm.LibrariesForLibs import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.getByType +import org.gradle.kotlin.dsl.withType import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension import org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPluginWrapper +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile @Suppress("Unused") class KotlinAndroidPlugin : Plugin { @@ -23,5 +26,25 @@ class KotlinAndroidPlugin : Plugin { apply(KotlinCommonPlugin::class) } project.extensions.getByType().jvmToolchain(JVM_TOOLCHAIN_ACTION) + val libs = project.extensions.getByName("libs") as LibrariesForLibs + val composeCompilerVersion = libs.versions.composeCompiler.get() + val kotlinVersion = libs.versions.kotlin.get() + val matches = COMPOSE_COMPILER_VERSION_REGEX.find(composeCompilerVersion) + if (matches != null) { + val (compilerKotlinVersion) = matches.destructured + if (compilerKotlinVersion != kotlinVersion) { + project.tasks.withType().configureEach { + compilerOptions.freeCompilerArgs.addAll( + "-P", + "plugin:androidx.compose.compiler.plugins.kotlin:suppressKotlinVersionCompatibilityCheck=$kotlinVersion", + ) + } + } + } + } + + private companion object { + // Matches against 1.5.0-dev-k1.9.0-6a60475e07f + val COMPOSE_COMPILER_VERSION_REGEX = "\\d.\\d.\\d-dev-k(\\d.\\d.\\d+)-[a-z0-9]+".toRegex() } }