diff options
author | mvicsokolova <82594708+mvicsokolova@users.noreply.github.com> | 2022-05-16 16:20:49 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-16 16:20:49 +0300 |
commit | 5527be00db846303a0dddef6a0b96c9b9823ab94 (patch) | |
tree | c7a458b0c804fa63a51b63f3084a84ea3719d7f4 | |
parent | 450b056efa4c8e4f922f2a3f8d1958404513b1f7 (diff) | |
download | kotlinx.atomicfu-5527be00db846303a0dddef6a0b96c9b9823ab94.tar.gz |
Add compiler plugin dependency only for projects with KGP >= 1.6.20 (#226)
* Add compiler plugin dependency only for projects with KGP >= 1.6.20
Fixes #225
* fixup
-rw-r--r-- | atomicfu-gradle-plugin/src/main/kotlin/kotlinx/atomicfu/plugin/gradle/AtomicFUGradlePlugin.kt | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/atomicfu-gradle-plugin/src/main/kotlin/kotlinx/atomicfu/plugin/gradle/AtomicFUGradlePlugin.kt b/atomicfu-gradle-plugin/src/main/kotlin/kotlinx/atomicfu/plugin/gradle/AtomicFUGradlePlugin.kt index b1dd098..baeffd1 100644 --- a/atomicfu-gradle-plugin/src/main/kotlin/kotlinx/atomicfu/plugin/gradle/AtomicFUGradlePlugin.kt +++ b/atomicfu-gradle-plugin/src/main/kotlin/kotlinx/atomicfu/plugin/gradle/AtomicFUGradlePlugin.kt @@ -34,7 +34,7 @@ open class AtomicFUGradlePlugin : Plugin<Project> { val pluginVersion = rootProject.buildscript.configurations.findByName("classpath") ?.allDependencies?.find { it.name == "atomicfu-gradle-plugin" }?.version extensions.add(EXTENSION_NAME, AtomicFUPluginExtension(pluginVersion)) - if (rootProject.getBooleanProperty(ENABLE_IR_TRANSFORMATION)) { + if (rootProject.getBooleanProperty(ENABLE_IR_TRANSFORMATION) && isCompilerPluginAvailable()) { plugins.apply(AtomicfuKotlinGradleSubplugin::class.java) } configureDependencies() @@ -86,6 +86,15 @@ private fun Project.configureTasks() { } } +private fun Project.isCompilerPluginAvailable(): Boolean { + // kotlinx-atomicfu compiler plugin is available for KGP >= 1.6.20 + val (majorVersion, minorVersion, patch) = getKotlinPluginVersion() + .split('.') + .take(3) + .map { it.toInt() } + return majorVersion == 1 && (minorVersion == 6 && patch >= 20 || minorVersion > 6) +} + private fun Project.getBooleanProperty(name: String) = rootProject.findProperty(name)?.toString()?.toBooleanStrict() ?: false @@ -101,15 +110,15 @@ private fun Project.needsJsIrTransformation(target: KotlinTarget): Boolean = private fun KotlinTarget.isJsIrTarget() = (this is KotlinJsTarget && this.irTarget != null) || this is KotlinJsIrTarget private fun Project.addCompilerPluginDependency() { - val kotlinVersion = rootProject.buildscript.configurations.findByName("classpath") - ?.allDependencies?.find { it.name == "kotlin-gradle-plugin" }?.version - withKotlinTargets { target -> - if (needsJsIrTransformation(target)) { - target.compilations.forEach { kotlinCompilation -> - kotlinCompilation.dependencies { - // add atomicfu compiler plugin dependency - // to provide the `kotlinx-atomicfu-runtime` library used during compiler plugin transformation - compileOnly("org.jetbrains.kotlin:atomicfu:$kotlinVersion") + if (isCompilerPluginAvailable()) { + withKotlinTargets { target -> + if (needsJsIrTransformation(target)) { + target.compilations.forEach { kotlinCompilation -> + kotlinCompilation.dependencies { + // add atomicfu compiler plugin dependency + // to provide the `kotlinx-atomicfu-runtime` library used during compiler plugin transformation + compileOnly("org.jetbrains.kotlin:atomicfu:${getKotlinPluginVersion()}") + } } } } |