[K/N][build] Add providers to klib install and cache tasks

This commit is contained in:
Pavel Punegov
2023-08-31 18:35:08 +02:00
committed by Space Team
parent b1a85d45c6
commit e01cea6669
5 changed files with 17 additions and 23 deletions
@@ -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
@@ -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)
@@ -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<File>
@OutputDirectory
get() = project.provider {
+2 -2
View File
@@ -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
+2 -3
View File
@@ -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")
}
}