[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.*
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.konan.tasks.KonanKlibInstallTask
|
||||||
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanCompileNativeBinary
|
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanCompileNativeBinary
|
||||||
import org.jetbrains.kotlin.konan.target.Architecture
|
import org.jetbrains.kotlin.konan.target.Architecture
|
||||||
import org.jetbrains.kotlin.konan.target.Family
|
import org.jetbrains.kotlin.konan.target.Family
|
||||||
|
|||||||
+10
-10
@@ -6,11 +6,11 @@
|
|||||||
package org.jetbrains.kotlin.gradle.plugin.konan.tasks
|
package org.jetbrains.kotlin.gradle.plugin.konan.tasks
|
||||||
|
|
||||||
import org.gradle.api.DefaultTask
|
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.Property
|
||||||
|
import org.gradle.api.provider.Provider
|
||||||
import org.gradle.api.tasks.*
|
import org.gradle.api.tasks.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.konan.KonanCliCompilerRunner
|
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.library.defaultResolver
|
||||||
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
||||||
import org.jetbrains.kotlin.konan.target.Distribution
|
import org.jetbrains.kotlin.konan.target.Distribution
|
||||||
@@ -24,9 +24,9 @@ enum class KonanCacheKind(val outputKind: CompilerOutputKind) {
|
|||||||
DYNAMIC(CompilerOutputKind.DYNAMIC_CACHE)
|
DYNAMIC(CompilerOutputKind.DYNAMIC_CACHE)
|
||||||
}
|
}
|
||||||
|
|
||||||
open class KonanCacheTask: DefaultTask() {
|
abstract class KonanCacheTask : DefaultTask() {
|
||||||
@get:InputDirectory
|
@get:InputDirectory
|
||||||
var originalKlib: File? = null
|
abstract val originalKlib: DirectoryProperty
|
||||||
|
|
||||||
@get:Input
|
@get:Input
|
||||||
lateinit var klibUniqName: String
|
lateinit var klibUniqName: String
|
||||||
@@ -54,11 +54,11 @@ open class KonanCacheTask: DefaultTask() {
|
|||||||
private fun readKlibUniqNameFromManifest(): String {
|
private fun readKlibUniqNameFromManifest(): String {
|
||||||
val konanHome = compilerDistributionPath.get().absolutePath
|
val konanHome = compilerDistributionPath.get().absolutePath
|
||||||
val resolver = defaultResolver(
|
val resolver = defaultResolver(
|
||||||
emptyList(),
|
emptyList(),
|
||||||
PlatformManager(konanHome).targetByName(target),
|
PlatformManager(konanHome).targetByName(target),
|
||||||
Distribution(konanHome)
|
Distribution(konanHome)
|
||||||
)
|
)
|
||||||
return resolver.resolve(originalKlib!!.absolutePath).uniqueName
|
return resolver.resolve(originalKlib.asFile.get().absolutePath).uniqueName
|
||||||
}
|
}
|
||||||
|
|
||||||
@get:Input
|
@get:Input
|
||||||
@@ -94,12 +94,12 @@ open class KonanCacheTask: DefaultTask() {
|
|||||||
val additionalCacheFlags = PlatformManager(konanHome).let {
|
val additionalCacheFlags = PlatformManager(konanHome).let {
|
||||||
it.targetByName(target).let(it::loader).additionalCacheFlags
|
it.targetByName(target).let(it::loader).additionalCacheFlags
|
||||||
}
|
}
|
||||||
requireNotNull(originalKlib)
|
require(originalKlib.isPresent)
|
||||||
val args = mutableListOf(
|
val args = mutableListOf(
|
||||||
"-g",
|
"-g",
|
||||||
"-target", target,
|
"-target", target,
|
||||||
"-produce", cacheKind.outputKind.name.toLowerCase(),
|
"-produce", cacheKind.outputKind.name.toLowerCase(),
|
||||||
"-Xadd-cache=${originalKlib?.absolutePath}",
|
"-Xadd-cache=${originalKlib.asFile.get().absolutePath}",
|
||||||
"-Xcache-directory=${cacheDirectory.absolutePath}"
|
"-Xcache-directory=${cacheDirectory.absolutePath}"
|
||||||
)
|
)
|
||||||
if (makePerFileCache)
|
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.
|
* 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.DefaultTask
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
import org.gradle.api.tasks.*
|
import org.gradle.api.tasks.*
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
|
||||||
import org.jetbrains.kotlin.konan.target.HostManager
|
import org.jetbrains.kotlin.konan.target.HostManager
|
||||||
import org.jetbrains.kotlin.gradle.plugin.konan.KonanKlibRunner
|
import org.jetbrains.kotlin.gradle.plugin.konan.KonanKlibRunner
|
||||||
|
import org.jetbrains.kotlin.kotlinNativeDist
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
open class KonanKlibInstallTask : DefaultTask() {
|
open class KonanKlibInstallTask : DefaultTask() {
|
||||||
@@ -22,10 +20,6 @@ open class KonanKlibInstallTask : DefaultTask() {
|
|||||||
@get:Internal
|
@get:Internal
|
||||||
var repo: File = project.rootDir
|
var repo: File = project.rootDir
|
||||||
|
|
||||||
@get:Input
|
|
||||||
val repoPath
|
|
||||||
get() = repo.absolutePath
|
|
||||||
|
|
||||||
val installDir: Provider<File>
|
val installDir: Provider<File>
|
||||||
@OutputDirectory
|
@OutputDirectory
|
||||||
get() = project.provider {
|
get() = project.provider {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
* that can be found in the LICENSE file.
|
* 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.konan.tasks.KonanCacheTask
|
||||||
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanInteropTask
|
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanInteropTask
|
||||||
import org.jetbrains.kotlin.konan.target.*
|
import org.jetbrains.kotlin.konan.target.*
|
||||||
@@ -97,7 +97,7 @@ konanTargetList.forEach { target ->
|
|||||||
if (target in cacheableTargets) {
|
if (target in cacheableTargets) {
|
||||||
val cacheTask = tasks.register("${libName}Cache", KonanCacheTask::class.java) {
|
val cacheTask = tasks.register("${libName}Cache", KonanCacheTask::class.java) {
|
||||||
this.target = targetName
|
this.target = targetName
|
||||||
originalKlib = klibInstallTask.get().installDir.get()
|
originalKlib.fileProvider(klibInstallTask.flatMap { it.installDir })
|
||||||
klibUniqName = artifactName
|
klibUniqName = artifactName
|
||||||
cacheRoot = file("$konanHome/klib/cache").absolutePath
|
cacheRoot = file("$konanHome/klib/cache").absolutePath
|
||||||
|
|
||||||
|
|||||||
@@ -534,7 +534,7 @@ konanArtifacts {
|
|||||||
}
|
}
|
||||||
|
|
||||||
targetList.forEach { targetName ->
|
targetList.forEach { targetName ->
|
||||||
tasks.register("${targetName}Stdlib", Copy::class.java) {
|
val stdlibTask = tasks.register("${targetName}Stdlib", Copy::class.java) {
|
||||||
require(::stdlibBuildTask.isInitialized)
|
require(::stdlibBuildTask.isInitialized)
|
||||||
dependsOn(stdlibBuildTask)
|
dependsOn(stdlibBuildTask)
|
||||||
dependsOn("${targetName}Runtime")
|
dependsOn("${targetName}Runtime")
|
||||||
@@ -569,11 +569,10 @@ targetList.forEach { targetName ->
|
|||||||
if (targetName in cacheableTargetNames) {
|
if (targetName in cacheableTargetNames) {
|
||||||
tasks.register("${targetName}StdlibCache", KonanCacheTask::class.java) {
|
tasks.register("${targetName}StdlibCache", KonanCacheTask::class.java) {
|
||||||
target = targetName
|
target = targetName
|
||||||
originalKlib = project.buildDir.resolve("${targetName}Stdlib")
|
originalKlib.fileProvider(stdlibTask.map { it.destinationDir })
|
||||||
klibUniqName = "stdlib"
|
klibUniqName = "stdlib"
|
||||||
cacheRoot = project.buildDir.resolve("cache/$targetName").absolutePath
|
cacheRoot = project.buildDir.resolve("cache/$targetName").absolutePath
|
||||||
|
|
||||||
dependsOn("${targetName}Stdlib")
|
|
||||||
dependsOn(":kotlin-native:${targetName}CrossDistRuntime")
|
dependsOn(":kotlin-native:${targetName}CrossDistRuntime")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user