From cbb1b9fae5ceff8b6d6de321092f18f2ff88bc91 Mon Sep 17 00:00:00 2001 From: Ilya Matveev Date: Thu, 6 Sep 2018 21:44:02 +0700 Subject: [PATCH] Provide a basic DSL for liking task accessing --- .../gradle/plugin/KotlinTargetConfigurator.kt | 2 ++ .../gradle/plugin/mpp/kotlinCompilations.kt | 28 ++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt index 023993ce3a6..10740ea0461 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt @@ -519,6 +519,8 @@ open class KotlinNativeTargetConfigurator( linkAll.dependsOn(this) } + compilation.binaryTasks[kind to buildType] = linkTask + if (compilation.isTestCompilation && buildType == NativeBuildType.DEBUG && konanTarget in hostTargets diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt index fcf9b91a0d0..11e1a8203d2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt @@ -18,8 +18,11 @@ import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.sources.defaultSourceSetLanguageSettingsChecker import org.jetbrains.kotlin.gradle.plugin.sources.getSourceSetHierarchy import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile +import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName +import java.io.File +import java.lang.IllegalArgumentException import java.util.* internal fun KotlinCompilation.composeName(prefix: String? = null, suffix: String? = null): String { @@ -288,6 +291,8 @@ class KotlinNativeCompilation( target.compilations.getByName(it) } + internal val binaryTasks = mutableMapOf, KotlinNativeCompile>() + // Native-specific DSL. val extraOpts = mutableListOf() @@ -322,8 +327,29 @@ class KotlinNativeCompilation( var entryPoint: String? = null fun entryPoint(value: String) { entryPoint = value } - // Naming + fun findLinkTask(kind: NativeOutputKind, buildType: NativeBuildType): KotlinNativeCompile? = binaryTasks[kind to buildType] + fun getLinkTask(kind: NativeOutputKind, buildType: NativeBuildType): KotlinNativeCompile = + findLinkTask(kind, buildType) ?: + throw IllegalArgumentException("Cannot find a link task for the binary kind '$kind' and the build type '$buildType'") + + fun findLinkTask(kind: String, buildType: String) = + findLinkTask(NativeOutputKind.valueOf(kind.toUpperCase()), NativeBuildType.valueOf(buildType.toUpperCase())) + + fun getLinkTask(kind: String, buildType: String) = + getLinkTask(NativeOutputKind.valueOf(kind.toUpperCase()), NativeBuildType.valueOf(buildType.toUpperCase())) + + fun findBinary(kind: NativeOutputKind, buildType: NativeBuildType): File? = findLinkTask(kind, buildType)?.outputFile?.get() + + fun getBinary(kind: NativeOutputKind, buildType: NativeBuildType): File = getLinkTask(kind, buildType).outputFile.get() + + fun findBinary(kind: String, buildType: String) = + findBinary(NativeOutputKind.valueOf(kind.toUpperCase()), NativeBuildType.valueOf(buildType.toUpperCase())) + + fun getBinary(kind: String, buildType: String) = + getBinary(NativeOutputKind.valueOf(kind.toUpperCase()), NativeBuildType.valueOf(buildType.toUpperCase())) + + // Naming override val compileDependencyConfigurationName: String get() = lowerCamelCaseName( target.disambiguationClassifier,