Skip to content

Commit d6e361e

Browse files
committed
Add support for using Kotlin Native Compiler Embeddable artifact from Konan home.
1 parent 89e4786 commit d6e361e

File tree

5 files changed

+30
-10
lines changed

5 files changed

+30
-10
lines changed

build-setup/src/main/kotlin/co/touchlab/skie/buildsetup/plugins/DevAcceptanceTests.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package co.touchlab.skie.buildsetup.plugins
22

33
import co.touchlab.skie.gradle.KotlinCompilerVersion
4+
import co.touchlab.skie.gradle.KotlinToolingVersion
45
import co.touchlab.skie.gradle.architecture.MacOsCpuArchitecture
56
import co.touchlab.skie.gradle.util.enquoted
7+
import co.touchlab.skie.gradle.util.kotlinNativeCompilerEmbeddableDependency
8+
import co.touchlab.skie.gradle.util.kotlinNativeCompilerHome
69
import co.touchlab.skie.gradle.version.AcceptanceTestsComponent
710
import co.touchlab.skie.gradle.version.KotlinToolingVersionComponent
811
import co.touchlab.skie.gradle.version.acceptanceTest
@@ -18,16 +21,12 @@ import com.github.gmazzo.gradle.plugins.BuildConfigExtension
1821
import org.gradle.api.Plugin
1922
import org.gradle.api.Project
2023
import org.gradle.api.artifacts.Configuration
24+
import org.gradle.api.artifacts.Dependency
2125
import org.gradle.api.attributes.Attribute
2226
import org.gradle.api.attributes.Usage
2327
import org.gradle.api.file.Directory
2428
import org.gradle.api.provider.Provider
25-
import org.gradle.kotlin.dsl.apply
26-
import org.gradle.kotlin.dsl.configure
27-
import org.gradle.kotlin.dsl.dependencies
28-
import org.gradle.kotlin.dsl.exclude
29-
import org.gradle.kotlin.dsl.named
30-
import org.gradle.kotlin.dsl.project
29+
import org.gradle.kotlin.dsl.*
3130
import org.gradle.language.base.plugins.LifecycleBasePlugin
3231
import org.gradle.language.jvm.tasks.ProcessResources
3332
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
@@ -132,7 +131,8 @@ abstract class DevAcceptanceTests : Plugin<Project> {
132131

133132
dependencies {
134133
weak("org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion")
135-
weak("org.jetbrains.kotlin:kotlin-native-compiler-embeddable:$kotlinVersion")
134+
135+
weak(kotlinNativeCompilerEmbeddableDependency(kotlinVersion))
136136

137137
testOnly("org.jetbrains.kotlin:kotlin-test:$kotlinVersion")
138138
}

build-setup/src/main/kotlin/co/touchlab/skie/buildsetup/plugins/DevAcceptanceTestsFramework.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package co.touchlab.skie.buildsetup.plugins
22

33
import co.touchlab.skie.gradle.KotlinCompilerVersion
4+
import co.touchlab.skie.gradle.util.kotlinNativeCompilerEmbeddableDependency
45
import co.touchlab.skie.gradle.util.kotlinNativeCompilerHome
56
import co.touchlab.skie.gradle.util.libs
67
import co.touchlab.skie.gradle.version.ToolingVersions
@@ -96,7 +97,7 @@ abstract class DevAcceptanceTestsFramework : Plugin<Project> {
9697

9798
dependencies {
9899
weak("org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion}")
99-
weak("org.jetbrains.kotlin:kotlin-native-compiler-embeddable:${kotlinVersion}")
100+
weak(kotlinNativeCompilerEmbeddableDependency(kotlinVersion))
100101

101102
testOnly(libs.bundles.testing.jvm)
102103
}

build-setup/src/main/kotlin/co/touchlab/skie/buildsetup/plugins/SkieCompiler.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package co.touchlab.skie.buildsetup.plugins
22

33
import co.touchlab.skie.gradle.KotlinCompilerVersion
4+
import co.touchlab.skie.gradle.util.kotlinNativeCompilerEmbeddableDependency
45
import co.touchlab.skie.gradle.version.kotlinToolingVersion
56
import co.touchlab.skie.gradle.version.kotlinToolingVersionDimension
67
import co.touchlab.skie.gradle.version.target.MultiDimensionTargetExtension
@@ -32,7 +33,7 @@ abstract class SkieCompiler : Plugin<Project> {
3233

3334
dependencies {
3435
weak("org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion")
35-
weak("org.jetbrains.kotlin:kotlin-native-compiler-embeddable:$kotlinVersion")
36+
weak(kotlinNativeCompilerEmbeddableDependency(kotlinVersion))
3637
}
3738
}
3839
}

build-setup/src/main/kotlin/co/touchlab/skie/gradle/util/KotlinNativeCompilerHome.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ package co.touchlab.skie.gradle.util
22

33
import co.touchlab.skie.gradle.KotlinToolingVersion
44
import org.gradle.api.Project
5+
import org.gradle.api.artifacts.Dependency
56
import org.gradle.kotlin.dsl.extra
7+
import org.gradle.kotlin.dsl.provideDelegate
68
import org.jetbrains.kotlin.gradle.utils.NativeCompilerDownloader
79
import org.jetbrains.kotlin.konan.CompilerVersion
810
import java.io.File
@@ -30,6 +32,19 @@ fun Project.kotlinNativeCompilerHome(kotlinVersion: KotlinToolingVersion): File
3032
.compilerDirectory
3133
}
3234

35+
internal fun Project.kotlinNativeCompilerEmbeddableDependency(kotlinVersion: KotlinToolingVersion): Dependency {
36+
val kotlinNativeCompilerEmbeddableFromHome: String? by project
37+
return if (kotlinNativeCompilerEmbeddableFromHome.toBoolean()) {
38+
project.dependencies.create(
39+
files(
40+
kotlinNativeCompilerHome(kotlinVersion).resolve("konan/lib/kotlin-native-compiler-embeddable.jar")
41+
)
42+
)
43+
} else {
44+
project.dependencies.create("org.jetbrains.kotlin:kotlin-native-compiler-embeddable:$kotlinVersion")
45+
}
46+
}
47+
3348
private fun <T> Project.backupProperty(name: String): BackupProperty<T>? {
3449
return if (properties.containsKey(name)) {
3550
BackupProperty(name, properties[name] as T)

common-gradle/gradle.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ kotlin.mpp.import.enableKgpDependencyResolution=true
99
pluginId=co.touchlab.skie
1010

1111
# WIP remove RC
12-
versionSupport.kotlinTooling=1.8.0(1.8.10), 1.8.20(1.8.21, 1.8.22), 1.9.0(1.9.10), 1.9.20[1.9.20-RC2]
12+
versionSupport.kotlinTooling=1.8.0(1.8.10), 1.8.20(1.8.21, 1.8.22), 1.9.0(1.9.10), 1.9.20[1.9.20]
1313
versionSupport.gradleApi=7.3, 8.0, 8.1
1414

1515
touchlab.key=ABCDEFGHIJKLMNOPQRSTUVWXYZ
16+
17+
18+
kotlinNativeCompilerEmbeddableFromHome=true

0 commit comments

Comments
 (0)