Moved KonanTargets to be mostly pairs.
Moved nice device and generic os names to be target aliases.
This commit is contained in:
committed by
alexander-gorshenev
parent
0c8ca828eb
commit
0570e281a9
+27
-19
@@ -49,19 +49,24 @@ abstract class KonanBuildingConfig<T: KonanBuildingTask>(private val name_: Stri
|
||||
get() = project.hostManager.toKonanTargets(targets).distinct()
|
||||
|
||||
init {
|
||||
for (target in konanTargets) {
|
||||
if (!project.hostManager.isEnabled(target)) {
|
||||
project.logger.warn("The target is not enabled on the current host: ${target.visibleName}")
|
||||
for (targetName in targets.distinct()) {
|
||||
val konanTarget = project.hostManager.targetByName(targetName)
|
||||
|
||||
if (!project.hostManager.isEnabled(konanTarget)) {
|
||||
project.logger.warn("The target is not enabled on the current host: $targetName")
|
||||
continue
|
||||
}
|
||||
if (!targetIsSupported(target)) {
|
||||
project.logger.warn("The target ${target.visibleName} is not supported by the artifact $name")
|
||||
if (!targetIsSupported(konanTarget)) {
|
||||
project.logger.warn("The target ${targetName} is not supported by the artifact $name")
|
||||
continue
|
||||
}
|
||||
super.add(createTask(target))
|
||||
if (this[konanTarget] == null) super.add(createTask(konanTarget))
|
||||
|
||||
if (targetName != konanTarget.visibleName) {
|
||||
createTargetAliasTaskIfDeclared(targetName)
|
||||
}
|
||||
}
|
||||
aggregateBuildTask = createAggregateTask()
|
||||
createHostTaskIfDeclared()
|
||||
}
|
||||
|
||||
protected open fun generateTaskName(target: KonanTarget) =
|
||||
@@ -70,12 +75,12 @@ abstract class KonanBuildingConfig<T: KonanBuildingTask>(private val name_: Stri
|
||||
protected open fun generateAggregateTaskName() =
|
||||
"compileKonan${name.capitalize()}"
|
||||
|
||||
protected open fun generateHostTaskName() =
|
||||
"compileKonan${name.capitalize()}Host"
|
||||
protected open fun generateTargetAliasTaskName(targetName: String) =
|
||||
"compileKonan${name.capitalize()}${targetName.capitalize()}"
|
||||
|
||||
protected abstract fun generateTaskDescription(task: T): String
|
||||
protected abstract fun generateAggregateTaskDescription(task: Task): String
|
||||
protected abstract fun generateHostTaskDescription(task: Task, hostTarget: KonanTarget): String
|
||||
protected abstract fun generateTargetAliasTaskDescription(task: Task, targetName: String): String
|
||||
|
||||
protected abstract val defaultBaseDir: File
|
||||
|
||||
@@ -102,19 +107,22 @@ abstract class KonanBuildingConfig<T: KonanBuildingTask>(private val name_: Stri
|
||||
this.filter {
|
||||
project.targetIsRequested(it.konanTarget)
|
||||
}.forEach {
|
||||
task.dependsOn(it)
|
||||
}
|
||||
task.dependsOn(it)
|
||||
}
|
||||
project.compileAllTask.dependsOn(task)
|
||||
}
|
||||
|
||||
protected fun createHostTaskIfDeclared(): Task? =
|
||||
this[HostManager.host]?.let { hostBuild ->
|
||||
project.tasks.create(generateHostTaskName()) {
|
||||
it.group = BasePlugin.BUILD_GROUP
|
||||
it.description = generateHostTaskDescription(it, hostBuild.konanTarget)
|
||||
it.dependsOn(hostBuild)
|
||||
}
|
||||
protected fun createTargetAliasTaskIfDeclared(targetName: String): Task? {
|
||||
val canonicalTarget = project.hostManager.targetByName(targetName)
|
||||
|
||||
return this[canonicalTarget]?.let { canonicalBuild ->
|
||||
project.tasks.create(generateTargetAliasTaskName(targetName)) {
|
||||
it.group = BasePlugin.BUILD_GROUP
|
||||
it.description = generateTargetAliasTaskDescription(it, targetName)
|
||||
it.dependsOn(canonicalBuild)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal operator fun get(target: KonanTarget) = targetToTask[target]
|
||||
|
||||
|
||||
+5
-5
@@ -40,8 +40,8 @@ abstract class KonanCompileConfig<T: KonanCompileTask>(name: String,
|
||||
override fun generateAggregateTaskDescription(task: Task) =
|
||||
"Build the Kotlin/Native $typeForDescription '${task.name}' for all supported and declared targets"
|
||||
|
||||
override fun generateHostTaskDescription(task: Task, hostTarget: KonanTarget) =
|
||||
"Build the Kotlin/Native $typeForDescription '${task.name}' for current host"
|
||||
override fun generateTargetAliasTaskDescription(task: Task, targetName: String) =
|
||||
"Build the Kotlin/Native $typeForDescription '${task.name}' for target '$targetName'"
|
||||
|
||||
override fun srcDir(dir: Any) = forEach { it.srcDir(dir) }
|
||||
override fun srcFiles(vararg files: Any) = forEach { it.srcFiles(*files) }
|
||||
@@ -123,7 +123,7 @@ open class KonanFramework(name: String,
|
||||
get() = project.konanBinBaseDir
|
||||
|
||||
override fun targetIsSupported(target: KonanTarget): Boolean =
|
||||
target == MACBOOK || target == IPHONE || target == IPHONE_SIM
|
||||
target == MACOS_X64 || target == IOS_ARM64 || target == IOS_X64
|
||||
}
|
||||
|
||||
open class KonanLibrary(name: String,
|
||||
@@ -162,8 +162,8 @@ open class KonanBitcode(name: String,
|
||||
override fun generateAggregateTaskDescription(task: Task) =
|
||||
"Generates bitcode for the artifact '${task.name}' for all supported and declared targets'"
|
||||
|
||||
override fun generateHostTaskDescription(task: Task, hostTarget: KonanTarget) =
|
||||
"Generates bitcode for the artifact '${task.name}' for current host"
|
||||
override fun generateTargetAliasTaskDescription(task: Task, targetName: String) =
|
||||
"Generates bitcode for the artifact '${task.name}' for '$targetName'"
|
||||
|
||||
override val defaultBaseDir: File
|
||||
get() = project.konanBitcodeBaseDir
|
||||
|
||||
+2
-2
@@ -42,8 +42,8 @@ open class KonanInteropLibrary(name: String,
|
||||
override fun generateAggregateTaskDescription(task: Task) =
|
||||
"Build the Kotlin/Native interop library '${task.name}' for all supported and declared targets'"
|
||||
|
||||
override fun generateHostTaskDescription(task: Task, hostTarget: KonanTarget) =
|
||||
"Build the Kotlin/Native interop library '${task.name}' for current host"
|
||||
override fun generateTargetAliasTaskDescription(task: Task, targetName: String) =
|
||||
"Build the Kotlin/Native interop library '${task.name}' for '$targetName'"
|
||||
|
||||
override val defaultBaseDir: File
|
||||
get() = project.konanLibsBaseDir
|
||||
|
||||
+3
-2
@@ -19,7 +19,8 @@ package org.jetbrains.kotlin.gradle.plugin
|
||||
import org.gradle.api.Named
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.jetbrains.kotlin.gradle.plugin.tasks.host
|
||||
import org.jetbrains.kotlin.konan.target.HostManager
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
import org.jetbrains.kotlin.konan.util.DependencyProcessor
|
||||
|
||||
internal interface KonanToolRunner: Named {
|
||||
@@ -81,7 +82,7 @@ internal class KonanInteropRunner(project: Project)
|
||||
: KonanCliRunner("cinterop", "Kotlin/Native cinterop tool", project)
|
||||
{
|
||||
init {
|
||||
if (project.host == "mingw") {
|
||||
if (HostManager.host == KonanTarget.MINGW_X64) {
|
||||
//TODO: Oh-ho-ho fix it in more convinient way.
|
||||
environment.put("PATH", DependencyProcessor.defaultDependenciesRoot.absolutePath +
|
||||
"\\msys2-mingw-w64-x86_64-gcc-7.2.0-clang-llvm-5.0.0-windows-x86-64" +
|
||||
|
||||
+1
-1
@@ -58,7 +58,7 @@ class TaskSpecification extends BaseKonanSpecification {
|
||||
"includeDirs" | ""
|
||||
}
|
||||
|
||||
@Requires({ HostManager.host instanceof KonanTarget.MACBOOK })
|
||||
@Requires({ HostManager.host instanceof KonanTarget.MACOS_X64 })
|
||||
def 'Plugin should create framework tasks only for Apple targets'() {
|
||||
when:
|
||||
def project = KonanProject.createEmpty(projectDirectory) { KonanProject it ->
|
||||
|
||||
Reference in New Issue
Block a user