[K/N][build] Move kotlin-native.jar preparation into kotlin-native/prepare
* mimic kotlin-native-compiler-embeddable.jar preparation
* make build logic be Kotlin instead of Groovy
diff --git a/kotlin-native/build.gradle b/kotlin-native/build.gradle
index 64ba428..0d0e572 100644
--- a/kotlin-native/build.gradle
+++ b/kotlin-native/build.gradle
@@ -24,7 +24,6 @@
import org.jetbrains.kotlin.CompareDistributionSignatures
import org.jetbrains.kotlin.nativeDistribution.NativeDistributionKt
import org.jetbrains.kotlin.xcode.XcodeOverridePlugin
-import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import org.apache.tools.ant.filters.ReplaceTokens
import org.jetbrains.kotlin.UtilsKt
import plugins.KotlinBuildPublishingPluginKt
@@ -73,7 +72,6 @@
def nativeDistribution = NativeDistributionKt.getNativeDistribution(project)
configurations {
- distPack
commonSources
runtimeBitcode {
@@ -92,6 +90,11 @@
}
}
+ compilerJar {
+ canBeConsumed = false
+ canBeResolved = true
+ }
+
embeddableJar {
canBeConsumed = false
canBeResolved = true
@@ -114,13 +117,12 @@
apply plugin: CompilationDatabasePlugin
dependencies {
- distPack project(':kotlin-native:Interop:Skia')
- distPack project(path: ':kotlin-native:utilities:cli-runner', configuration: 'runtimeElements')
commonSources project(path: ':kotlin-stdlib', configuration: 'metadataSourcesElements')
commonSources project(path: ':kotlin-test', configuration: 'metadataSourcesElements')
compilationDatabase project(":kotlin-native:runtime")
runtimeBitcode project(":kotlin-native:runtime")
objcExportApi project(":kotlin-native:runtime")
+ compilerJar project(path: ':kotlin-native:prepare:kotlin-native-compiler', configuration: 'shadowJar')
embeddableJar project(path: ':kotlin-native:prepare:kotlin-native-compiler-embeddable', configuration: 'runtimeElements')
nativeLibs project(':kotlin-native:common:env')
nativeLibs project(':kotlin-native:common:files')
@@ -190,18 +192,6 @@
dependsOn(distNativeSources)
}
-def shadowJar = tasks.register("shadowJar", ShadowJar) {
- mergeServiceFiles()
- destinationDirectory.set(layout.buildDirectory)
- archiveBaseName.set("kotlin-native")
- archiveVersion.set("")
- archiveClassifier.set("")
- // Exclude trove4j because of license agreement.
- exclude "*trove4j*"
- exclude("META-INF/versions/9/module-info.class")
- configurations = [project.configurations.distPack]
-}
-
tasks.register("distCompiler") {
// Workaround: make distCompiler no-op if we are using custom dist:
// the dist is already in place and has the compiler, so we don't have to
@@ -262,7 +252,6 @@
}
tasks.register("distCompilerJars", Sync) {
- from(shadowJar.map { it.archiveFile })
from(configurations.trove4j_jar) {
include "trove4j*.jar"
rename "trove4j(.*).jar", "trove4j.jar"
@@ -270,6 +259,14 @@
unix("0644")
}
}
+ from(configurations.compilerJar) {
+ rename {
+ "kotlin-native.jar"
+ }
+ filePermissions {
+ unix("0644")
+ }
+ }
from(configurations.embeddableJar) {
rename {
"kotlin-native-compiler-embeddable.jar"
diff --git a/kotlin-native/prepare/kotlin-native-compiler/build.gradle.kts b/kotlin-native/prepare/kotlin-native-compiler/build.gradle.kts
new file mode 100644
index 0000000..731759e
--- /dev/null
+++ b/kotlin-native/prepare/kotlin-native-compiler/build.gradle.kts
@@ -0,0 +1,42 @@
+import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
+
+plugins {
+ kotlin("jvm")
+}
+
+description = "Kotlin/Native compiler"
+
+val kotlinNative by configurations.creating {
+ isCanBeConsumed = false
+ isCanBeResolved = true
+ attributes {
+ attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME))
+ attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements.JAR))
+ }
+}
+
+val shadowJar by configurations.creating {
+ isCanBeConsumed = true
+ isCanBeResolved = false
+ attributes {
+ attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME))
+ attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements.JAR))
+ }
+}
+
+dependencies {
+ kotlinNative(project(":kotlin-native:Interop:Skia"))
+ kotlinNative(project(":kotlin-native:utilities:cli-runner"))
+}
+
+val compilerJar by tasks.registering(ShadowJar::class) {
+ from(kotlinNative)
+ mergeServiceFiles()
+ // Exclude trove4j because of license agreement.
+ exclude("*trove4j*")
+ exclude("META-INF/versions/9/module-info.class")
+}
+
+artifacts {
+ add(shadowJar.name, compilerJar)
+}
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
index 395a8ce..85bdec6 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -989,6 +989,7 @@
include ':kotlin-native:libclangInterop'
include ':kotlin-native:backend.native:tests'
project(':kotlin-native:backend.native:tests').projectDir = "$rootDir/kotlin-native/backend.native/tests" as File
+ include ':kotlin-native:prepare:kotlin-native-compiler'
include ':kotlin-native:prepare:kotlin-native-compiler-embeddable'
include ':native:kotlin-test-native-xctest'
include ':native:cli-native'