[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'