Make native tasks CC compatible
This allows running with CC&native: ./gradlew assemble ./gradlew :kotlin-native:bundle ./gradlew :native:native.tests:test Required for KTI-1553
This commit is contained in:
committed by
Space Team
parent
584d98cd72
commit
57edc413a3
+1
@@ -203,6 +203,7 @@ class NamedNativeInteropConfig implements Named {
|
|||||||
}
|
}
|
||||||
|
|
||||||
genTask.configure {
|
genTask.configure {
|
||||||
|
notCompatibleWithConfigurationCache("This task uses Task.project at execution time")
|
||||||
dependsOn project.extensions.nativeDependencies.hostPlatformDependency
|
dependsOn project.extensions.nativeDependencies.hostPlatformDependency
|
||||||
dependsOn project.extensions.nativeDependencies.llvmDependency
|
dependsOn project.extensions.nativeDependencies.llvmDependency
|
||||||
dependsOn ":kotlin-native:Interop:Indexer:nativelibs"
|
dependsOn ":kotlin-native:Interop:Indexer:nativelibs"
|
||||||
|
|||||||
-2
@@ -224,7 +224,6 @@ internal fun dumpProperties(task: Task) {
|
|||||||
println("languageVersion : $languageVersion")
|
println("languageVersion : $languageVersion")
|
||||||
println("apiVersion : $apiVersion")
|
println("apiVersion : $apiVersion")
|
||||||
println("konanVersion : ${KotlinVersion.CURRENT}")
|
println("konanVersion : ${KotlinVersion.CURRENT}")
|
||||||
println("konanHome : $konanHome")
|
|
||||||
println()
|
println()
|
||||||
}
|
}
|
||||||
is KonanInteropTask -> with(task) {
|
is KonanInteropTask -> with(task) {
|
||||||
@@ -244,7 +243,6 @@ internal fun dumpProperties(task: Task) {
|
|||||||
println("headers : ${headers.dump()}")
|
println("headers : ${headers.dump()}")
|
||||||
println("linkFiles : ${linkFiles.dump()}")
|
println("linkFiles : ${linkFiles.dump()}")
|
||||||
println("konanVersion : ${KotlinVersion.CURRENT}")
|
println("konanVersion : ${KotlinVersion.CURRENT}")
|
||||||
println("konanHome : $konanHome")
|
|
||||||
println()
|
println()
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
|
|||||||
+8
-2
@@ -12,6 +12,7 @@ import org.gradle.api.Project
|
|||||||
import org.gradle.api.artifacts.*
|
import org.gradle.api.artifacts.*
|
||||||
import org.gradle.api.attributes.Attribute
|
import org.gradle.api.attributes.Attribute
|
||||||
import org.gradle.api.attributes.Usage
|
import org.gradle.api.attributes.Usage
|
||||||
|
import org.gradle.api.file.ConfigurableFileCollection
|
||||||
import org.gradle.api.internal.component.DefaultSoftwareComponentVariant
|
import org.gradle.api.internal.component.DefaultSoftwareComponentVariant
|
||||||
import org.gradle.api.internal.tasks.DefaultTaskDependency
|
import org.gradle.api.internal.tasks.DefaultTaskDependency
|
||||||
import org.gradle.api.tasks.*
|
import org.gradle.api.tasks.*
|
||||||
@@ -60,8 +61,10 @@ abstract class KonanArtifactTask: KonanTargetableTask(), KonanArtifactSpec {
|
|||||||
|
|
||||||
@Internal lateinit var destinationDir: File
|
@Internal lateinit var destinationDir: File
|
||||||
@Internal lateinit var artifactName: String
|
@Internal lateinit var artifactName: String
|
||||||
@Internal lateinit var platformConfiguration: Configuration
|
|
||||||
@Internal lateinit var configuration: Configuration
|
@get:InputFiles
|
||||||
|
@get:PathSensitive(PathSensitivity.RELATIVE)
|
||||||
|
abstract val platformConfigurationFiles: ConfigurableFileCollection
|
||||||
|
|
||||||
protected val artifactFullName: String
|
protected val artifactFullName: String
|
||||||
@Internal get() = "$artifactPrefix$artifactName$artifactSuffix"
|
@Internal get() = "$artifactPrefix$artifactName$artifactSuffix"
|
||||||
@@ -79,7 +82,9 @@ abstract class KonanArtifactTask: KonanTargetableTask(), KonanArtifactSpec {
|
|||||||
super.init(target)
|
super.init(target)
|
||||||
this.destinationDir = destinationDir
|
this.destinationDir = destinationDir
|
||||||
this.artifactName = artifactName
|
this.artifactName = artifactName
|
||||||
|
val configuration: Configuration
|
||||||
configuration = project.configurations.maybeCreate("artifact$artifactName")
|
configuration = project.configurations.maybeCreate("artifact$artifactName")
|
||||||
|
val platformConfiguration: Configuration
|
||||||
platformConfiguration = project.configurations.create("artifact${artifactName}_${target.name}")
|
platformConfiguration = project.configurations.create("artifact${artifactName}_${target.name}")
|
||||||
platformConfiguration.extendsFrom(configuration)
|
platformConfiguration.extendsFrom(configuration)
|
||||||
platformConfiguration.attributes{
|
platformConfiguration.attributes{
|
||||||
@@ -89,6 +94,7 @@ abstract class KonanArtifactTask: KonanTargetableTask(), KonanArtifactSpec {
|
|||||||
attribute(CppBinary.DEBUGGABLE_ATTRIBUTE, false)
|
attribute(CppBinary.DEBUGGABLE_ATTRIBUTE, false)
|
||||||
attribute(Attribute.of("org.gradle.native.kotlin.platform", String::class.java), target.name)
|
attribute(Attribute.of("org.gradle.native.kotlin.platform", String::class.java), target.name)
|
||||||
}
|
}
|
||||||
|
platformConfigurationFiles.setFrom(platformConfiguration)
|
||||||
|
|
||||||
val artifactNameWithoutSuffix = artifact.name.removeSuffix(artifactSuffix)
|
val artifactNameWithoutSuffix = artifact.name.removeSuffix(artifactSuffix)
|
||||||
project.pluginManager.withPlugin("maven-publish") {
|
project.pluginManager.withPlugin("maven-publish") {
|
||||||
|
|||||||
+1
-7
@@ -9,14 +9,11 @@ import org.gradle.api.tasks.Console
|
|||||||
import org.gradle.api.tasks.Input
|
import org.gradle.api.tasks.Input
|
||||||
import org.gradle.api.tasks.Internal
|
import org.gradle.api.tasks.Internal
|
||||||
import org.gradle.api.tasks.TaskAction
|
import org.gradle.api.tasks.TaskAction
|
||||||
import org.jetbrains.kotlin.gradle.plugin.konan.*
|
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import org.jetbrains.kotlin.dependsOnDist
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.konan.KonanBuildingConfig
|
import org.jetbrains.kotlin.gradle.plugin.konan.KonanBuildingConfig
|
||||||
import org.jetbrains.kotlin.gradle.plugin.konan.KonanBuildingSpec
|
import org.jetbrains.kotlin.gradle.plugin.konan.KonanBuildingSpec
|
||||||
import org.jetbrains.kotlin.gradle.plugin.konan.KonanToolRunner
|
import org.jetbrains.kotlin.gradle.plugin.konan.KonanToolRunner
|
||||||
import org.jetbrains.kotlin.gradle.plugin.konan.konanHome
|
|
||||||
|
|
||||||
/** Base class for both interop and compiler tasks. */
|
/** Base class for both interop and compiler tasks. */
|
||||||
abstract class KonanBuildingTask: KonanArtifactWithLibrariesTask(), KonanBuildingSpec {
|
abstract class KonanBuildingTask: KonanArtifactWithLibrariesTask(), KonanBuildingSpec {
|
||||||
@@ -31,12 +28,9 @@ abstract class KonanBuildingTask: KonanArtifactWithLibrariesTask(), KonanBuildin
|
|||||||
@Console
|
@Console
|
||||||
var dumpParameters: Boolean = false
|
var dumpParameters: Boolean = false
|
||||||
|
|
||||||
@Input
|
@get:Input
|
||||||
val extraOpts = mutableListOf<String>()
|
val extraOpts = mutableListOf<String>()
|
||||||
|
|
||||||
val konanHome
|
|
||||||
@Input get() = project.konanHome
|
|
||||||
|
|
||||||
@TaskAction
|
@TaskAction
|
||||||
abstract fun run()
|
abstract fun run()
|
||||||
|
|
||||||
|
|||||||
+1
-3
@@ -77,9 +77,7 @@ abstract class KonanCacheTask : DefaultTask() {
|
|||||||
|
|
||||||
@get:Input
|
@get:Input
|
||||||
/** Path to a compiler distribution that is used to build this cache. */
|
/** Path to a compiler distribution that is used to build this cache. */
|
||||||
val compilerDistributionPath: Property<File> = project.objects.property(File::class.java).apply {
|
val compilerDistributionPath: Property<File> = project.objects.property(File::class.java).convention(project.kotlinNativeDist)
|
||||||
set(project.provider { project.kotlinNativeDist })
|
|
||||||
}
|
|
||||||
|
|
||||||
@get:Input
|
@get:Input
|
||||||
var cachedLibraries: Map<File, File> = emptyMap()
|
var cachedLibraries: Map<File, File> = emptyMap()
|
||||||
|
|||||||
+28
-14
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.gradle.plugin.tasks
|
package org.jetbrains.kotlin.gradle.plugin.tasks
|
||||||
|
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
|
import org.gradle.api.file.ProjectLayout
|
||||||
import org.gradle.api.tasks.*
|
import org.gradle.api.tasks.*
|
||||||
import org.gradle.api.tasks.Optional
|
import org.gradle.api.tasks.Optional
|
||||||
import org.gradle.process.CommandLineArgumentProvider
|
import org.gradle.process.CommandLineArgumentProvider
|
||||||
@@ -13,11 +14,12 @@ import org.jetbrains.kotlin.gradle.plugin.konan.*
|
|||||||
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A task compiling the target executable/library using Kotlin/Native compiler
|
* A task compiling the target executable/library using Kotlin/Native compiler
|
||||||
*/
|
*/
|
||||||
abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
|
abstract class KonanCompileTask @Inject constructor(private val layout: ProjectLayout): KonanBuildingTask(), KonanCompileSpec {
|
||||||
|
|
||||||
@get:Internal
|
@get:Internal
|
||||||
override val toolRunner = KonanCliCompilerRunner(project, project.konanExtension.jvmArgs)
|
override val toolRunner = KonanCliCompilerRunner(project, project.konanExtension.jvmArgs)
|
||||||
@@ -46,8 +48,11 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
|
|||||||
// Other compilation parameters -------------------------------------------
|
// Other compilation parameters -------------------------------------------
|
||||||
|
|
||||||
private val srcFiles_ = mutableSetOf<FileCollection>()
|
private val srcFiles_ = mutableSetOf<FileCollection>()
|
||||||
|
private val defaultFiles = project.konanDefaultSrcFiles
|
||||||
val srcFiles: Collection<FileCollection>
|
val srcFiles: Collection<FileCollection>
|
||||||
@Internal get() = srcFiles_.takeIf { !it.isEmpty() } ?: listOf(project.konanDefaultSrcFiles)
|
@Internal get() {
|
||||||
|
return srcFiles_.takeIf { !it.isEmpty() } ?: listOf(defaultFiles)
|
||||||
|
}
|
||||||
|
|
||||||
val allSources: Collection<FileCollection>
|
val allSources: Collection<FileCollection>
|
||||||
@InputFiles @PathSensitive(PathSensitivity.RELATIVE) get() = listOf(srcFiles, commonSrcFiles).flatten()
|
@InputFiles @PathSensitive(PathSensitivity.RELATIVE) get() = listOf(srcFiles, commonSrcFiles).flatten()
|
||||||
@@ -76,10 +81,15 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
|
|||||||
|
|
||||||
@Console var measureTime = false
|
@Console var measureTime = false
|
||||||
|
|
||||||
|
private val konanBuildRoot = project.konanBuildRoot
|
||||||
|
|
||||||
|
@Internal
|
||||||
|
val konanExtension = project.konanExtension
|
||||||
|
|
||||||
val languageVersion : String?
|
val languageVersion : String?
|
||||||
@Optional @Input get() = project.konanExtension.languageVersion
|
@Optional @Input get() = konanExtension.languageVersion
|
||||||
val apiVersion : String?
|
val apiVersion : String?
|
||||||
@Optional @Input get() = project.konanExtension.apiVersion
|
@Optional @Input get() = konanExtension.apiVersion
|
||||||
|
|
||||||
@Input var buildNumber = project.properties.get("kotlinVersion") ?: error("kotlinVersion property is not specified in the project")
|
@Input var buildNumber = project.properties.get("kotlinVersion") ?: error("kotlinVersion property is not specified in the project")
|
||||||
|
|
||||||
@@ -94,7 +104,7 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
|
|||||||
|
|
||||||
protected fun directoryToKt(dir: Any) = project.fileTree(dir).apply {
|
protected fun directoryToKt(dir: Any) = project.fileTree(dir).apply {
|
||||||
include("**/*.kt")
|
include("**/*.kt")
|
||||||
exclude { it.file.startsWith(project.layout.buildDirectory.get().asFile) }
|
exclude { it.file.startsWith(layout.buildDirectory.get().asFile) }
|
||||||
}
|
}
|
||||||
|
|
||||||
// Command line ------------------------------------------------------------
|
// Command line ------------------------------------------------------------
|
||||||
@@ -175,8 +185,8 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
|
|||||||
|
|
||||||
/** Args passed to the compiler at both stages of the two-stage compilation and during the singe-stage compilation. */
|
/** Args passed to the compiler at both stages of the two-stage compilation and during the singe-stage compilation. */
|
||||||
protected open fun buildCommonArgs() = mutableListOf<String>().apply {
|
protected open fun buildCommonArgs() = mutableListOf<String>().apply {
|
||||||
if (platformConfiguration.files.isNotEmpty()) {
|
if (platformConfigurationFiles.files.isNotEmpty()) {
|
||||||
platformConfiguration.files.filter { it.name.endsWith(".klib") }.forEach {
|
platformConfigurationFiles.files.filter { it.name.endsWith(".klib") }.forEach {
|
||||||
// The library's directory is added in libraries.repos.
|
// The library's directory is added in libraries.repos.
|
||||||
addArg("-library", it.absolutePath)
|
addArg("-library", it.absolutePath)
|
||||||
}
|
}
|
||||||
@@ -328,7 +338,7 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
|
|||||||
}
|
}
|
||||||
if (enableTwoStageCompilation) {
|
if (enableTwoStageCompilation) {
|
||||||
logger.info("Start two-stage compilation")
|
logger.info("Start two-stage compilation")
|
||||||
val intermediateDir = project.konanBuildRoot
|
val intermediateDir = konanBuildRoot
|
||||||
.resolve("intermediate")
|
.resolve("intermediate")
|
||||||
.targetSubdir(konanTarget)
|
.targetSubdir(konanTarget)
|
||||||
.apply { mkdirs() }
|
.apply { mkdirs() }
|
||||||
@@ -345,12 +355,12 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class KonanCompileNativeBinary: KonanCompileTask() {
|
abstract class KonanCompileNativeBinary @Inject constructor(layout: ProjectLayout) : KonanCompileTask(layout) {
|
||||||
@Input
|
@Input
|
||||||
override var enableTwoStageCompilation: Boolean = false
|
override var enableTwoStageCompilation: Boolean = false
|
||||||
}
|
}
|
||||||
|
|
||||||
open class KonanCompileProgramTask: KonanCompileNativeBinary() {
|
abstract class KonanCompileProgramTask @Inject constructor(layout: ProjectLayout): KonanCompileNativeBinary(layout) {
|
||||||
override val produce: CompilerOutputKind get() = CompilerOutputKind.PROGRAM
|
override val produce: CompilerOutputKind get() = CompilerOutputKind.PROGRAM
|
||||||
|
|
||||||
@Internal
|
@Internal
|
||||||
@@ -363,14 +373,14 @@ open class KonanCompileProgramTask: KonanCompileNativeBinary() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
open class KonanCompileDynamicTask: KonanCompileNativeBinary() {
|
abstract class KonanCompileDynamicTask @Inject constructor(layout: ProjectLayout): KonanCompileNativeBinary(layout) {
|
||||||
override val produce: CompilerOutputKind get() = CompilerOutputKind.DYNAMIC
|
override val produce: CompilerOutputKind get() = CompilerOutputKind.DYNAMIC
|
||||||
|
|
||||||
val headerFile: File
|
val headerFile: File
|
||||||
@OutputFile get() = destinationDir.resolve("$artifactPrefix${artifactName}_api.h")
|
@OutputFile get() = destinationDir.resolve("$artifactPrefix${artifactName}_api.h")
|
||||||
}
|
}
|
||||||
|
|
||||||
open class KonanCompileFrameworkTask: KonanCompileNativeBinary() {
|
abstract class KonanCompileFrameworkTask @Inject constructor(layout: ProjectLayout): KonanCompileNativeBinary(layout) {
|
||||||
override val produce: CompilerOutputKind get() = CompilerOutputKind.FRAMEWORK
|
override val produce: CompilerOutputKind get() = CompilerOutputKind.FRAMEWORK
|
||||||
|
|
||||||
override val artifact
|
override val artifact
|
||||||
@@ -378,7 +388,11 @@ open class KonanCompileFrameworkTask: KonanCompileNativeBinary() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@CacheableTask
|
@CacheableTask
|
||||||
open class KonanCompileLibraryTask: KonanCompileTask() {
|
abstract class KonanCompileLibraryTask @Inject constructor(layout: ProjectLayout) : KonanCompileTask(layout) {
|
||||||
|
init {
|
||||||
|
this.notCompatibleWithConfigurationCache("project references stored")
|
||||||
|
}
|
||||||
|
|
||||||
override val artifact: File
|
override val artifact: File
|
||||||
@Internal get() = destinationDir.resolve(artifactFullName)
|
@Internal get() = destinationDir.resolve(artifactFullName)
|
||||||
|
|
||||||
@@ -399,6 +413,6 @@ open class KonanCompileLibraryTask: KonanCompileTask() {
|
|||||||
override val enableTwoStageCompilation: Boolean = false
|
override val enableTwoStageCompilation: Boolean = false
|
||||||
}
|
}
|
||||||
|
|
||||||
open class KonanCompileBitcodeTask: KonanCompileNativeBinary() {
|
abstract class KonanCompileBitcodeTask @Inject constructor(layout: ProjectLayout): KonanCompileNativeBinary(layout) {
|
||||||
override val produce: CompilerOutputKind get() = CompilerOutputKind.BITCODE
|
override val produce: CompilerOutputKind get() = CompilerOutputKind.BITCODE
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -21,13 +21,12 @@ import org.jetbrains.kotlin.gradle.plugin.konan.konanExtension
|
|||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.concurrent.ConcurrentHashMap
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import kotlin.run
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A task executing cinterop tool with the given args and compiling the stubs produced by this tool.
|
* A task executing cinterop tool with the given args and compiling the stubs produced by this tool.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
open class KonanInteropTask @Inject constructor(@Internal val workerExecutor: WorkerExecutor) : KonanBuildingTask(), KonanInteropSpec {
|
abstract class KonanInteropTask @Inject constructor(private val workerExecutor: WorkerExecutor) : KonanBuildingTask(), KonanInteropSpec {
|
||||||
|
|
||||||
private val interopRunner = KonanCliInteropRunner(project, project.konanExtension.jvmArgs)
|
private val interopRunner = KonanCliInteropRunner(project, project.konanExtension.jvmArgs)
|
||||||
|
|
||||||
@@ -36,6 +35,7 @@ open class KonanInteropTask @Inject constructor(@Internal val workerExecutor: Wo
|
|||||||
|
|
||||||
override fun init(config: KonanBuildingConfig<*>, destinationDir: File, artifactName: String, target: KonanTarget) {
|
override fun init(config: KonanBuildingConfig<*>, destinationDir: File, artifactName: String, target: KonanTarget) {
|
||||||
super.init(config, destinationDir, artifactName, target)
|
super.init(config, destinationDir, artifactName, target)
|
||||||
|
this.notCompatibleWithConfigurationCache("Unsupported inputs")
|
||||||
this.defFile = project.konanDefaultDefFile(artifactName)
|
this.defFile = project.konanDefaultDefFile(artifactName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-2
@@ -13,11 +13,13 @@ import org.gradle.api.plugins.BasePlugin
|
|||||||
import org.gradle.api.tasks.*
|
import org.gradle.api.tasks.*
|
||||||
import org.gradle.kotlin.dsl.*
|
import org.gradle.kotlin.dsl.*
|
||||||
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
||||||
|
import org.gradle.process.ExecOperations
|
||||||
import org.jetbrains.kotlin.dependencies.NativeDependenciesExtension
|
import org.jetbrains.kotlin.dependencies.NativeDependenciesExtension
|
||||||
import org.jetbrains.kotlin.dependencies.NativeDependenciesPlugin
|
import org.jetbrains.kotlin.dependencies.NativeDependenciesPlugin
|
||||||
import org.jetbrains.kotlin.konan.target.HostManager.Companion.hostIsMac
|
import org.jetbrains.kotlin.konan.target.HostManager.Companion.hostIsMac
|
||||||
import org.jetbrains.kotlin.konan.target.HostManager.Companion.hostIsMingw
|
import org.jetbrains.kotlin.konan.target.HostManager.Companion.hostIsMingw
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import javax.inject.Inject
|
||||||
import kotlin.collections.List
|
import kotlin.collections.List
|
||||||
import kotlin.collections.MutableMap
|
import kotlin.collections.MutableMap
|
||||||
import kotlin.collections.addAll
|
import kotlin.collections.addAll
|
||||||
@@ -41,7 +43,7 @@ open class NativePlugin : Plugin<Project> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class ToolExecutionTask : DefaultTask() {
|
abstract class ToolExecutionTask @Inject constructor(private val execOperations: ExecOperations): DefaultTask() {
|
||||||
@get:OutputFile
|
@get:OutputFile
|
||||||
abstract var output: File
|
abstract var output: File
|
||||||
|
|
||||||
@@ -57,7 +59,7 @@ abstract class ToolExecutionTask : DefaultTask() {
|
|||||||
@TaskAction
|
@TaskAction
|
||||||
fun action() {
|
fun action() {
|
||||||
if (output.exists()) output.delete()
|
if (output.exists()) output.delete()
|
||||||
project.exec {
|
execOperations.exec {
|
||||||
executable(cmd)
|
executable(cmd)
|
||||||
args(*this@ToolExecutionTask.args.toTypedArray())
|
args(*this@ToolExecutionTask.args.toTypedArray())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,6 +91,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) {
|
||||||
|
notCompatibleWithConfigurationCache("project used in execution time")
|
||||||
this.target = targetName
|
this.target = targetName
|
||||||
originalKlib.fileProvider(libTask.map {
|
originalKlib.fileProvider(libTask.map {
|
||||||
it.artifactDirectory ?: error("Artifact wasn't set for ${it.name}")
|
it.artifactDirectory ?: error("Artifact wasn't set for ${it.name}")
|
||||||
|
|||||||
@@ -635,6 +635,8 @@ val stdlibTask = tasks.register<Copy>("nativeStdlib") {
|
|||||||
from(stdlibBuildTask.map { it.outputs.files })
|
from(stdlibBuildTask.map { it.outputs.files })
|
||||||
into(project.layout.buildDirectory.dir("nativeStdlib"))
|
into(project.layout.buildDirectory.dir("nativeStdlib"))
|
||||||
|
|
||||||
|
val targetList = targetList
|
||||||
|
val kotlinVersion = kotlinVersion
|
||||||
eachFile {
|
eachFile {
|
||||||
if (name == "manifest") {
|
if (name == "manifest") {
|
||||||
// Stdlib is a common library that doesn't depend on anything target-specific.
|
// Stdlib is a common library that doesn't depend on anything target-specific.
|
||||||
@@ -660,6 +662,7 @@ val cacheableTargetNames: List<String> by project
|
|||||||
|
|
||||||
cacheableTargetNames.forEach { targetName ->
|
cacheableTargetNames.forEach { targetName ->
|
||||||
tasks.register("${targetName}StdlibCache", KonanCacheTask::class.java) {
|
tasks.register("${targetName}StdlibCache", KonanCacheTask::class.java) {
|
||||||
|
notCompatibleWithConfigurationCache("project used in execution time")
|
||||||
target = targetName
|
target = targetName
|
||||||
originalKlib.fileProvider(stdlibTask.map { it.destinationDir })
|
originalKlib.fileProvider(stdlibTask.map { it.destinationDir })
|
||||||
klibUniqName = "stdlib"
|
klibUniqName = "stdlib"
|
||||||
|
|||||||
Reference in New Issue
Block a user