aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormvicsokolova <82594708+mvicsokolova@users.noreply.github.com>2022-05-16 16:20:49 +0300
committerGitHub <noreply@github.com>2022-05-16 16:20:49 +0300
commit5527be00db846303a0dddef6a0b96c9b9823ab94 (patch)
treec7a458b0c804fa63a51b63f3084a84ea3719d7f4
parent450b056efa4c8e4f922f2a3f8d1958404513b1f7 (diff)
downloadkotlinx.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.kt29
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()}")
+ }
}
}
}