diff --git a/kotlin-native/backend.native/tests/build.gradle b/kotlin-native/backend.native/tests/build.gradle index 9c3efe7e8aa..3e8ab877478 100644 --- a/kotlin-native/backend.native/tests/build.gradle +++ b/kotlin-native/backend.native/tests/build.gradle @@ -4,6 +4,7 @@ */ import org.jetbrains.kotlin.* +import org.jetbrains.kotlin.gradle.plugin.konan.tasks.KonanKlibInstallTask import org.jetbrains.kotlin.gradle.plugin.tasks.KonanCompileNativeBinary import org.jetbrains.kotlin.konan.target.Architecture import org.jetbrains.kotlin.konan.target.Family diff --git a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanCacheTask.kt b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanCacheTask.kt index a618e13218a..c54896df8fc 100644 --- a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanCacheTask.kt +++ b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanCacheTask.kt @@ -6,11 +6,11 @@ package org.jetbrains.kotlin.gradle.plugin.konan.tasks import org.gradle.api.DefaultTask -import org.gradle.api.file.Directory +import org.gradle.api.file.DirectoryProperty import org.gradle.api.provider.Property +import org.gradle.api.provider.Provider import org.gradle.api.tasks.* import org.jetbrains.kotlin.gradle.plugin.konan.KonanCliCompilerRunner -import org.jetbrains.kotlin.gradle.plugin.konan.konanHome import org.jetbrains.kotlin.konan.library.defaultResolver import org.jetbrains.kotlin.konan.target.CompilerOutputKind import org.jetbrains.kotlin.konan.target.Distribution @@ -24,9 +24,9 @@ enum class KonanCacheKind(val outputKind: CompilerOutputKind) { DYNAMIC(CompilerOutputKind.DYNAMIC_CACHE) } -open class KonanCacheTask: DefaultTask() { +abstract class KonanCacheTask : DefaultTask() { @get:InputDirectory - var originalKlib: File? = null + abstract val originalKlib: DirectoryProperty @get:Input lateinit var klibUniqName: String @@ -54,11 +54,11 @@ open class KonanCacheTask: DefaultTask() { private fun readKlibUniqNameFromManifest(): String { val konanHome = compilerDistributionPath.get().absolutePath val resolver = defaultResolver( - emptyList(), - PlatformManager(konanHome).targetByName(target), - Distribution(konanHome) + emptyList(), + PlatformManager(konanHome).targetByName(target), + Distribution(konanHome) ) - return resolver.resolve(originalKlib!!.absolutePath).uniqueName + return resolver.resolve(originalKlib.asFile.get().absolutePath).uniqueName } @get:Input @@ -94,12 +94,12 @@ open class KonanCacheTask: DefaultTask() { val additionalCacheFlags = PlatformManager(konanHome).let { it.targetByName(target).let(it::loader).additionalCacheFlags } - requireNotNull(originalKlib) + require(originalKlib.isPresent) val args = mutableListOf( "-g", "-target", target, "-produce", cacheKind.outputKind.name.toLowerCase(), - "-Xadd-cache=${originalKlib?.absolutePath}", + "-Xadd-cache=${originalKlib.asFile.get().absolutePath}", "-Xcache-directory=${cacheDirectory.absolutePath}" ) if (makePerFileCache) diff --git a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanKLibInstallTask.kt b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanKLibInstallTask.kt index b5820cd4fd2..6adee5df5e8 100644 --- a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanKLibInstallTask.kt +++ b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanKLibInstallTask.kt @@ -3,16 +3,14 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin +package org.jetbrains.kotlin.gradle.plugin.konan.tasks -import groovy.lang.Closure -import org.gradle.api.Task import org.gradle.api.DefaultTask import org.gradle.api.provider.Provider import org.gradle.api.tasks.* -import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.gradle.plugin.konan.KonanKlibRunner +import org.jetbrains.kotlin.kotlinNativeDist import java.io.File open class KonanKlibInstallTask : DefaultTask() { @@ -22,10 +20,6 @@ open class KonanKlibInstallTask : DefaultTask() { @get:Internal var repo: File = project.rootDir - @get:Input - val repoPath - get() = repo.absolutePath - val installDir: Provider @OutputDirectory get() = project.provider { diff --git a/kotlin-native/platformLibs/build.gradle.kts b/kotlin-native/platformLibs/build.gradle.kts index 127ec64da27..0f3b1cc6d56 100644 --- a/kotlin-native/platformLibs/build.gradle.kts +++ b/kotlin-native/platformLibs/build.gradle.kts @@ -3,7 +3,7 @@ * that can be found in the LICENSE file. */ -import org.jetbrains.kotlin.KonanKlibInstallTask +import org.jetbrains.kotlin.gradle.plugin.konan.tasks.KonanKlibInstallTask import org.jetbrains.kotlin.gradle.plugin.konan.tasks.KonanCacheTask import org.jetbrains.kotlin.gradle.plugin.tasks.KonanInteropTask import org.jetbrains.kotlin.konan.target.* @@ -97,7 +97,7 @@ konanTargetList.forEach { target -> if (target in cacheableTargets) { val cacheTask = tasks.register("${libName}Cache", KonanCacheTask::class.java) { this.target = targetName - originalKlib = klibInstallTask.get().installDir.get() + originalKlib.fileProvider(klibInstallTask.flatMap { it.installDir }) klibUniqName = artifactName cacheRoot = file("$konanHome/klib/cache").absolutePath diff --git a/kotlin-native/runtime/build.gradle.kts b/kotlin-native/runtime/build.gradle.kts index b2cf5de5a4d..31e98a1a6f5 100644 --- a/kotlin-native/runtime/build.gradle.kts +++ b/kotlin-native/runtime/build.gradle.kts @@ -534,7 +534,7 @@ konanArtifacts { } targetList.forEach { targetName -> - tasks.register("${targetName}Stdlib", Copy::class.java) { + val stdlibTask = tasks.register("${targetName}Stdlib", Copy::class.java) { require(::stdlibBuildTask.isInitialized) dependsOn(stdlibBuildTask) dependsOn("${targetName}Runtime") @@ -569,11 +569,10 @@ targetList.forEach { targetName -> if (targetName in cacheableTargetNames) { tasks.register("${targetName}StdlibCache", KonanCacheTask::class.java) { target = targetName - originalKlib = project.buildDir.resolve("${targetName}Stdlib") + originalKlib.fileProvider(stdlibTask.map { it.destinationDir }) klibUniqName = "stdlib" cacheRoot = project.buildDir.resolve("cache/$targetName").absolutePath - dependsOn("${targetName}Stdlib") dependsOn(":kotlin-native:${targetName}CrossDistRuntime") } }