From a04f9e423b951ec694759ec6bf570deade4452a7 Mon Sep 17 00:00:00 2001 From: Ilya Matveev Date: Thu, 19 Oct 2017 18:27:11 +0300 Subject: [PATCH] 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 --- .../gradle/plugin/KonanBuildingConfig.kt | 20 ++++++++++++------- .../gradle/plugin/KonanCompileConfig.kt | 4 ++-- .../gradle/plugin/KonanInteropLibrary.kt | 2 +- .../gradle/plugin/KonanLibrariesSpec.kt | 2 +- .../gradle/plugin/KonanToolingModelBuilder.kt | 2 +- .../gradle/plugin/tasks/KonanBaseTasks.kt | 12 ++++++----- .../gradle/plugin/tasks/KonanCompileTask.kt | 4 ++-- .../gradle/plugin/tasks/KonanInteropTask.kt | 2 +- 8 files changed, 28 insertions(+), 20 deletions(-) diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanBuildingConfig.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanBuildingConfig.kt index e743307496e..9c3f0ee1750 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanBuildingConfig.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanBuildingConfig.kt @@ -20,7 +20,7 @@ abstract class KonanBuildingConfig(private val name_: Stri type: Class, val project: ProjectInternal, instantiator: Instantiator) - : KonanBuildingSpec, Named, DefaultNamedDomainObjectSet(type, instantiator, { it.target.userName }) { + : KonanBuildingSpec, Named, DefaultNamedDomainObjectSet(type, instantiator, { it.konanTarget.userName }) { override fun getName() = name_ @@ -60,8 +60,8 @@ abstract class KonanBuildingConfig(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(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(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) = forEach { it.libraries(closure) } override fun libraries(action: Action) = forEach { it.libraries(action) } diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanCompileConfig.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanCompileConfig.kt index f66b5800e54..522c324b26c 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanCompileConfig.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanCompileConfig.kt @@ -20,7 +20,7 @@ abstract class KonanCompileConfig(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'" diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanInteropLibrary.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanInteropLibrary.kt index d660d2b19d8..6893568f33a 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanInteropLibrary.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanInteropLibrary.kt @@ -12,7 +12,7 @@ open class KonanInteropLibrary(name: String, project: ProjectInternal, instantia : KonanBuildingConfig(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'" diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanLibrariesSpec.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanLibrariesSpec.kt index 9600d4ecb79..4ec53819262 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanLibrariesSpec.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanLibrariesSpec.kt @@ -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 diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanToolingModelBuilder.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanToolingModelBuilder.kt index 6884b2675ea..c6a1128d3ab 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanToolingModelBuilder.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanToolingModelBuilder.kt @@ -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) } } diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanBaseTasks.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanBaseTasks.kt index ab7244ba82a..2b219142349 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanBaseTasks.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanBaseTasks.kt @@ -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. */ diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanCompileTask.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanCompileTask.kt index 3d1d2469e54..1f1e7538617 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanCompileTask.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanCompileTask.kt @@ -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) diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanInteropTask.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanInteropTask.kt index 32d7382b799..c1134ff291d 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanInteropTask.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanInteropTask.kt @@ -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)