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:
Ilya Matveev
2017-10-19 18:27:11 +03:00
committed by ilmat192
parent 6809c6482c
commit a04f9e423b
8 changed files with 28 additions and 20 deletions
@@ -20,7 +20,7 @@ abstract class KonanBuildingConfig<T: KonanBuildingTask>(private val name_: Stri
type: Class<T>,
val project: ProjectInternal,
instantiator: Instantiator)
: KonanBuildingSpec, Named, DefaultNamedDomainObjectSet<T>(type, instantiator, { it.target.userName }) {
: KonanBuildingSpec, Named, DefaultNamedDomainObjectSet<T>(type, instantiator, { it.konanTarget.userName }) {
override fun getName() = name_
@@ -60,8 +60,8 @@ abstract class KonanBuildingConfig<T: KonanBuildingTask>(private val name_: Stri
override fun didAdd(toAdd: T) {
super.didAdd(toAdd)
assert(toAdd.target !in targetToTask)
targetToTask[toAdd.target] = toAdd
assert(toAdd.konanTarget !in targetToTask)
targetToTask[toAdd.konanTarget] = toAdd
}
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.description = generateAggregateTaskDescription(task)
this.filter {
project.targetIsRequested(it.target)
project.targetIsRequested(it.konanTarget)
}.forEach {
task.dependsOn(it)
}
@@ -87,18 +87,24 @@ abstract class KonanBuildingConfig<T: KonanBuildingTask>(private val name_: Stri
this[TargetManager.host]?.let { hostBuild ->
project.tasks.create(generateHostTaskName()) {
it.group = BasePlugin.BUILD_GROUP
it.description = generateHostTaskDescription(it, hostBuild.target)
it.description = generateHostTaskDescription(it, hostBuild.konanTarget)
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.
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(action: Action<KonanLibrariesSpec>) = forEach { it.libraries(action) }
@@ -20,7 +20,7 @@ abstract class KonanCompileConfig<T: KonanCompileTask>(name: String,
protected abstract val typeForDescription: String
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) =
"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"
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) =
"Generates bitcode for the artifact '${task.name}' for all supported and declared targets'"
@@ -12,7 +12,7 @@ open class KonanInteropLibrary(name: String, project: ProjectInternal, instantia
: KonanBuildingConfig<KonanInteropTask>(name, KonanInteropTask::class.java, project, instantiator), KonanInteropSpec {
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) =
"Build the Kotlin/Native interop library '${task.name}' for all supported and declared targets'"
@@ -33,7 +33,7 @@ open class KonanLibrariesSpec(val task: KonanArtifactWithLibrariesTask, val proj
}
val target: KonanTarget
@Internal get() = task.target
@Internal get() = task.konanTarget
// DSL Methods
@@ -27,7 +27,7 @@ object KonanToolingModelBuilder : ToolingModelBuilder {
override fun buildAll(modelName: String, project: Project): KonanModel {
val artifacts = project.konanArtifactsContainer.flatten()
.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)
}
}
@@ -41,18 +41,20 @@ internal val Project.simpleOsName
/** A task with a KonanTarget specified. */
abstract class KonanTargetableTask: DefaultTask() {
@Input lateinit var target: KonanTarget
internal set
@Input internal lateinit var konanTarget: KonanTarget
internal open fun init(target: KonanTarget) {
this.target = target
this.konanTarget = target
}
val targetIsSupported: Boolean
@Internal get() = target.enabled
@Internal get() = konanTarget.enabled
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. */
@@ -41,7 +41,7 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
// Output artifact --------------------------------------------------------
override val artifactSuffix: String
@Internal get() = produce.kind.suffix(target)
@Internal get() = produce.kind.suffix(konanTarget)
// Other compilation parameters -------------------------------------------
@@ -84,7 +84,7 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
addListArg("-linkerOpts", linkerOpts)
addArgIfNotNull("-target", target.userName)
addArgIfNotNull("-target", konanTarget.userName)
addArgIfNotNull("-language-version", languageVersion)
addArgIfNotNull("-api-version", apiVersion)
@@ -56,7 +56,7 @@ open class KonanInteropTask: KonanBuildingTask(), KonanInteropSpec {
addArg("-o", artifact.canonicalPath)
addArgIfNotNull("-target", target.userName)
addArgIfNotNull("-target", konanTarget.userName)
addArgIfNotNull("-def", defFile.canonicalPath)
addArgIfNotNull("-pkg", packageName)