Rewrite kotlin-native-shared gradle build to kts

This commit is contained in:
Nikolay Krasko
2020-04-22 18:31:50 +03:00
committed by Vasily Levchenko
parent 01fc70a767
commit 9f9609ac0f
3 changed files with 92 additions and 75 deletions
+35 -28
View File
@@ -13,56 +13,63 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
@file:Suppress("UnstableApiUsage")
import org.jetbrains.kotlin.VersionGenerator import org.jetbrains.kotlin.VersionGenerator
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
buildscript { plugins {
ext.rootBuildDirectory = file('..') id("kotlin")
apply from: "$rootBuildDirectory/gradle/loadRootProperties.gradle"
apply from: "$rootBuildDirectory/gradle/kotlinGradlePlugin.gradle"
} }
apply plugin: 'kotlin' val rootBuildDirectory by extra(file(".."))
apply(from="../gradle/loadRootProperties.gradle")
group = 'org.jetbrains.kotlin' val kotlinVersion: String by extra
val konanVersion: String by extra
val kotlinCompilerRepo: String by extra
val buildKotlinCompilerRepo: String by extra
group = "org.jetbrains.kotlin"
version = konanVersion version = konanVersion
repositories { repositories {
mavenCentral() maven("https://cache-redirector.jetbrains.com/maven-central")
maven { url buildKotlinCompilerRepo } maven(kotlinCompilerRepo)
maven { url kotlinCompilerRepo } maven(buildKotlinCompilerRepo)
} }
// FIXME(ddol): KLIB-REFACTORING-CLEANUP: drop generation of KonanVersion! // FIXME(ddol): KLIB-REFACTORING-CLEANUP: drop generation of KonanVersion!
task generateCompilerVersion(type: VersionGenerator){} val generateCompilerVersion by tasks.registering(VersionGenerator::class) {}
sourceSets { sourceSets["main"].withConvention(KotlinSourceSet::class) {
main.kotlin { kotlin.srcDir("src/main/kotlin")
srcDir 'src/main/kotlin' kotlin.srcDir("src/library/kotlin")
srcDir 'src/library/kotlin' kotlin.srcDir(generateCompilerVersion.get().versionSourceDirectory)
srcDir generateCompilerVersion.versionSourceDirectory
}
} }
compileKotlin { tasks.withType<KotlinCompile> {
dependsOn('generateCompilerVersion') dependsOn(generateCompilerVersion)
kotlinOptions.jvmTarget = "1.8" kotlinOptions.jvmTarget = "1.8"
} }
clean { tasks.clean {
doFirst { doFirst {
if (generateCompilerVersion.versionSourceDirectory.exists()) val versionSourceDirectory = generateCompilerVersion.get().versionSourceDirectory
generateCompilerVersion.versionSourceDirectory.delete() if (versionSourceDirectory.exists()) {
versionSourceDirectory.delete()
}
} }
} }
jar { tasks.jar {
archiveName = "shared.jar" archiveFileName.set("shared.jar")
} }
dependencies { dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion" implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion")
compile "org.jetbrains.kotlin:kotlin-native-utils:$kotlinVersion" implementation("org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion")
compile "org.jetbrains.kotlin:kotlin-util-io:$kotlinVersion" api("org.jetbrains.kotlin:kotlin-native-utils:$kotlinVersion")
compile "org.jetbrains.kotlin:kotlin-util-klib:$kotlinVersion" api("org.jetbrains.kotlin:kotlin-util-klib:$kotlinVersion")
} }
@@ -3,10 +3,7 @@ package org.jetbrains.kotlin;
import groovy.lang.Closure; import groovy.lang.Closure;
import org.gradle.api.DefaultTask; import org.gradle.api.DefaultTask;
import org.gradle.api.Task; import org.gradle.api.Task;
import org.gradle.api.tasks.Input; import org.gradle.api.tasks.*;
import org.gradle.api.tasks.Optional;
import org.gradle.api.tasks.OutputDirectory;
import org.gradle.api.tasks.OutputFile;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
@@ -56,12 +53,8 @@ public class VersionGenerator extends DefaultTask {
"^(\\d+)\\.(\\d+)(?:\\.(\\d+))?(?:-M(\\p{Digit}))?(?:-(\\p{Alpha}\\p{Alnum}*))?(?:-(\\d+))?$" "^(\\d+)\\.(\\d+)(?:\\.(\\d+))?(?:-M(\\p{Digit}))?(?:-(\\p{Alpha}\\p{Alnum}*))?(?:-(\\d+))?$"
); );
@SuppressWarnings("NullableProblems") @TaskAction
@Override public void generateVersion() {
public Task configure(@SuppressWarnings("NullableProblems") Closure closure) {
Task result = super.configure(closure);
doFirst(task -> {
Matcher matcher = versionPattern.matcher(getKonanVersion()); Matcher matcher = versionPattern.matcher(getKonanVersion());
if (!matcher.matches()) { if (!matcher.matches()) {
throw new IllegalArgumentException("Cannot parse Kotlin/Native version: $konanVersion"); throw new IllegalArgumentException("Cannot parse Kotlin/Native version: $konanVersion");
@@ -84,7 +77,6 @@ public class VersionGenerator extends DefaultTask {
build = Integer.parseInt(buildNumberSplit[buildNumberSplit.length - 1]); // //7-dev-buildcount build = Integer.parseInt(buildNumberSplit[buildNumberSplit.length - 1]); // //7-dev-buildcount
} }
try (PrintWriter printWriter = new PrintWriter(getVersionFile())) { try (PrintWriter printWriter = new PrintWriter(getVersionFile())) {
printWriter.println( printWriter.println(
"package org.jetbrains.kotlin.konan\n" + "package org.jetbrains.kotlin.konan\n" +
@@ -100,8 +92,5 @@ public class VersionGenerator extends DefaultTask {
} catch (FileNotFoundException e) { } catch (FileNotFoundException e) {
throw new IllegalStateException(e); throw new IllegalStateException(e);
} }
});
return result;
} }
} }
+22 -1
View File
@@ -1,2 +1,23 @@
rootProject.name = "kotlin-native-shared" pluginManagement {
val rootProperties = java.util.Properties().apply {
rootDir.resolve("../gradle.properties").reader().use(::load)
}
val kotlinCompilerRepo: String by rootProperties
val kotlinVersion: String by rootProperties
repositories {
maven(kotlinCompilerRepo)
maven("https://cache-redirector.jetbrains.com/maven-central")
}
resolutionStrategy {
eachPlugin {
if (requested.id.id == "kotlin") {
useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")
}
}
}
}
rootProject.name = "kotlin-native-shared"