gradle-plugin: Make the 'target' property of tasks internal
* Rename target -> konanTarget * Make konanTarget internal * Add public property 'target: String' * Add methods for task access by its target
This commit is contained in:
+13
-7
@@ -20,7 +20,7 @@ abstract class KonanBuildingConfig<T: KonanBuildingTask>(private val name_: Stri
|
|||||||
type: Class<T>,
|
type: Class<T>,
|
||||||
val project: ProjectInternal,
|
val project: ProjectInternal,
|
||||||
instantiator: Instantiator)
|
instantiator: Instantiator)
|
||||||
: KonanBuildingSpec, Named, DefaultNamedDomainObjectSet<T>(type, instantiator, { it.target.userName }) {
|
: KonanBuildingSpec, Named, DefaultNamedDomainObjectSet<T>(type, instantiator, { it.konanTarget.userName }) {
|
||||||
|
|
||||||
override fun getName() = name_
|
override fun getName() = name_
|
||||||
|
|
||||||
@@ -60,8 +60,8 @@ abstract class KonanBuildingConfig<T: KonanBuildingTask>(private val name_: Stri
|
|||||||
override fun didAdd(toAdd: T) {
|
override fun didAdd(toAdd: T) {
|
||||||
super.didAdd(toAdd)
|
super.didAdd(toAdd)
|
||||||
|
|
||||||
assert(toAdd.target !in targetToTask)
|
assert(toAdd.konanTarget !in targetToTask)
|
||||||
targetToTask[toAdd.target] = toAdd
|
targetToTask[toAdd.konanTarget] = toAdd
|
||||||
}
|
}
|
||||||
|
|
||||||
protected fun createTask(target: KonanTarget): T =
|
protected fun createTask(target: KonanTarget): T =
|
||||||
@@ -76,7 +76,7 @@ abstract class KonanBuildingConfig<T: KonanBuildingTask>(private val name_: Stri
|
|||||||
task.group = BasePlugin.BUILD_GROUP
|
task.group = BasePlugin.BUILD_GROUP
|
||||||
task.description = generateAggregateTaskDescription(task)
|
task.description = generateAggregateTaskDescription(task)
|
||||||
this.filter {
|
this.filter {
|
||||||
project.targetIsRequested(it.target)
|
project.targetIsRequested(it.konanTarget)
|
||||||
}.forEach {
|
}.forEach {
|
||||||
task.dependsOn(it)
|
task.dependsOn(it)
|
||||||
}
|
}
|
||||||
@@ -87,18 +87,24 @@ abstract class KonanBuildingConfig<T: KonanBuildingTask>(private val name_: Stri
|
|||||||
this[TargetManager.host]?.let { hostBuild ->
|
this[TargetManager.host]?.let { hostBuild ->
|
||||||
project.tasks.create(generateHostTaskName()) {
|
project.tasks.create(generateHostTaskName()) {
|
||||||
it.group = BasePlugin.BUILD_GROUP
|
it.group = BasePlugin.BUILD_GROUP
|
||||||
it.description = generateHostTaskDescription(it, hostBuild.target)
|
it.description = generateHostTaskDescription(it, hostBuild.konanTarget)
|
||||||
it.dependsOn(hostBuild)
|
it.dependsOn(hostBuild)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
operator fun get(target: KonanTarget) = targetToTask[target]
|
internal operator fun get(target: KonanTarget) = targetToTask[target]
|
||||||
|
|
||||||
|
fun getByTarget(target: String) = findByTarget(target) ?: throw NoSuchElementException("No such target for artifact $name: ${target}")
|
||||||
|
fun findByTarget(target: String) = this[TargetManager(target).target]
|
||||||
|
|
||||||
|
fun getArtifactByTarget(target: String) = getByTarget(target).artifact
|
||||||
|
fun findArtifactByTarget(target: String) = findByTarget(target)?.artifact
|
||||||
|
|
||||||
// Common building DSL.
|
// Common building DSL.
|
||||||
|
|
||||||
override fun artifactName(name: String) = forEach { it.artifactName(name) }
|
override fun artifactName(name: String) = forEach { it.artifactName(name) }
|
||||||
|
|
||||||
fun baseDir(dir: Any) = forEach { it.destinationDir(project.file(dir).targetSubdir(it.target)) }
|
fun baseDir(dir: Any) = forEach { it.destinationDir(project.file(dir).targetSubdir(it.konanTarget)) }
|
||||||
|
|
||||||
override fun libraries(closure: Closure<Unit>) = forEach { it.libraries(closure) }
|
override fun libraries(closure: Closure<Unit>) = forEach { it.libraries(closure) }
|
||||||
override fun libraries(action: Action<KonanLibrariesSpec>) = forEach { it.libraries(action) }
|
override fun libraries(action: Action<KonanLibrariesSpec>) = forEach { it.libraries(action) }
|
||||||
|
|||||||
+2
-2
@@ -20,7 +20,7 @@ abstract class KonanCompileConfig<T: KonanCompileTask>(name: String,
|
|||||||
protected abstract val typeForDescription: String
|
protected abstract val typeForDescription: String
|
||||||
|
|
||||||
override fun generateTaskDescription(task: T) =
|
override fun generateTaskDescription(task: T) =
|
||||||
"Build the Kotlin/Native $typeForDescription '${task.name}' for target '${task.target}'"
|
"Build the Kotlin/Native $typeForDescription '${task.name}' for target '${task.konanTarget}'"
|
||||||
|
|
||||||
override fun generateAggregateTaskDescription(task: Task) =
|
override fun generateAggregateTaskDescription(task: Task) =
|
||||||
"Build the Kotlin/Native $typeForDescription '${task.name}' for all supported and declared targets"
|
"Build the Kotlin/Native $typeForDescription '${task.name}' for all supported and declared targets"
|
||||||
@@ -74,7 +74,7 @@ open class KonanBitcode(name: String, project: ProjectInternal, instantiator: In
|
|||||||
get() = "bitcode"
|
get() = "bitcode"
|
||||||
|
|
||||||
override fun generateTaskDescription(task: KonanCompileBitcodeTask) =
|
override fun generateTaskDescription(task: KonanCompileBitcodeTask) =
|
||||||
"Generates bitcode for the artifact '${task.name}' and target '${task.target}'"
|
"Generates bitcode for the artifact '${task.name}' and target '${task.konanTarget}'"
|
||||||
|
|
||||||
override fun generateAggregateTaskDescription(task: Task) =
|
override fun generateAggregateTaskDescription(task: Task) =
|
||||||
"Generates bitcode for the artifact '${task.name}' for all supported and declared targets'"
|
"Generates bitcode for the artifact '${task.name}' for all supported and declared targets'"
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ open class KonanInteropLibrary(name: String, project: ProjectInternal, instantia
|
|||||||
: KonanBuildingConfig<KonanInteropTask>(name, KonanInteropTask::class.java, project, instantiator), KonanInteropSpec {
|
: KonanBuildingConfig<KonanInteropTask>(name, KonanInteropTask::class.java, project, instantiator), KonanInteropSpec {
|
||||||
|
|
||||||
override fun generateTaskDescription(task: KonanInteropTask) =
|
override fun generateTaskDescription(task: KonanInteropTask) =
|
||||||
"Build the Kotlin/Native interop library '${task.name}' for target '${task.target}'"
|
"Build the Kotlin/Native interop library '${task.name}' for target '${task.konanTarget}'"
|
||||||
|
|
||||||
override fun generateAggregateTaskDescription(task: Task) =
|
override fun generateAggregateTaskDescription(task: Task) =
|
||||||
"Build the Kotlin/Native interop library '${task.name}' for all supported and declared targets'"
|
"Build the Kotlin/Native interop library '${task.name}' for all supported and declared targets'"
|
||||||
|
|||||||
+1
-1
@@ -33,7 +33,7 @@ open class KonanLibrariesSpec(val task: KonanArtifactWithLibrariesTask, val proj
|
|||||||
}
|
}
|
||||||
|
|
||||||
val target: KonanTarget
|
val target: KonanTarget
|
||||||
@Internal get() = task.target
|
@Internal get() = task.konanTarget
|
||||||
|
|
||||||
// DSL Methods
|
// DSL Methods
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -27,7 +27,7 @@ object KonanToolingModelBuilder : ToolingModelBuilder {
|
|||||||
override fun buildAll(modelName: String, project: Project): KonanModel {
|
override fun buildAll(modelName: String, project: Project): KonanModel {
|
||||||
val artifacts = project.konanArtifactsContainer.flatten()
|
val artifacts = project.konanArtifactsContainer.flatten()
|
||||||
.toList()
|
.toList()
|
||||||
.map { KonanArtifactImpl("${it.artifact.name}-${it.target.userName}", it.artifact.canonicalPath) }
|
.map { KonanArtifactImpl("${it.artifact.name}-${it.konanTarget.userName}", it.artifact.canonicalPath) }
|
||||||
return KonanModelImpl(project.konanVersion, artifacts)
|
return KonanModelImpl(project.konanVersion, artifacts)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-5
@@ -41,18 +41,20 @@ internal val Project.simpleOsName
|
|||||||
/** A task with a KonanTarget specified. */
|
/** A task with a KonanTarget specified. */
|
||||||
abstract class KonanTargetableTask: DefaultTask() {
|
abstract class KonanTargetableTask: DefaultTask() {
|
||||||
|
|
||||||
@Input lateinit var target: KonanTarget
|
@Input internal lateinit var konanTarget: KonanTarget
|
||||||
internal set
|
|
||||||
|
|
||||||
internal open fun init(target: KonanTarget) {
|
internal open fun init(target: KonanTarget) {
|
||||||
this.target = target
|
this.konanTarget = target
|
||||||
}
|
}
|
||||||
|
|
||||||
val targetIsSupported: Boolean
|
val targetIsSupported: Boolean
|
||||||
@Internal get() = target.enabled
|
@Internal get() = konanTarget.enabled
|
||||||
|
|
||||||
val isCrossCompile: Boolean
|
val isCrossCompile: Boolean
|
||||||
@Internal get() = (target != TargetManager.host)
|
@Internal get() = (konanTarget != TargetManager.host)
|
||||||
|
|
||||||
|
val target: String
|
||||||
|
@Internal get() = konanTarget.userName
|
||||||
}
|
}
|
||||||
|
|
||||||
/** A task building an artifact. */
|
/** A task building an artifact. */
|
||||||
|
|||||||
+2
-2
@@ -41,7 +41,7 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
|
|||||||
// Output artifact --------------------------------------------------------
|
// Output artifact --------------------------------------------------------
|
||||||
|
|
||||||
override val artifactSuffix: String
|
override val artifactSuffix: String
|
||||||
@Internal get() = produce.kind.suffix(target)
|
@Internal get() = produce.kind.suffix(konanTarget)
|
||||||
|
|
||||||
// Other compilation parameters -------------------------------------------
|
// Other compilation parameters -------------------------------------------
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
|
|||||||
|
|
||||||
addListArg("-linkerOpts", linkerOpts)
|
addListArg("-linkerOpts", linkerOpts)
|
||||||
|
|
||||||
addArgIfNotNull("-target", target.userName)
|
addArgIfNotNull("-target", konanTarget.userName)
|
||||||
addArgIfNotNull("-language-version", languageVersion)
|
addArgIfNotNull("-language-version", languageVersion)
|
||||||
addArgIfNotNull("-api-version", apiVersion)
|
addArgIfNotNull("-api-version", apiVersion)
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -56,7 +56,7 @@ open class KonanInteropTask: KonanBuildingTask(), KonanInteropSpec {
|
|||||||
|
|
||||||
addArg("-o", artifact.canonicalPath)
|
addArg("-o", artifact.canonicalPath)
|
||||||
|
|
||||||
addArgIfNotNull("-target", target.userName)
|
addArgIfNotNull("-target", konanTarget.userName)
|
||||||
addArgIfNotNull("-def", defFile.canonicalPath)
|
addArgIfNotNull("-def", defFile.canonicalPath)
|
||||||
addArgIfNotNull("-pkg", packageName)
|
addArgIfNotNull("-pkg", packageName)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user