[K/N][build] Add providers to klib install and cache tasks
This commit is contained in:
committed by
Space Team
parent
b1a85d45c6
commit
e01cea6669
@@ -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
|
||||
|
||||
+10
-10
@@ -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)
|
||||
|
||||
+2
-8
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user