gradle-plugin Don't use ':' in interop command line

This commit is contained in:
Ilya Matveev
2017-03-31 16:15:48 +07:00
committed by ilmat192
parent 4dfda6da16
commit 0d24a49f8c
4 changed files with 52 additions and 78 deletions
@@ -175,29 +175,3 @@ open class KonanCompilerConfig(
enableAssertions = true enableAssertions = true
} }
} }
@@ -63,37 +63,6 @@ open class KonanCompileTask: DefaultTask() {
@Optional @Input var apiVersion : String? = null @Optional @Input var apiVersion : String? = null
internal set internal set
// Useful extensions and functions ---------------------------------------
protected fun MutableList<String>.addArg(parameter: String, value: String) {
add(parameter)
add(value)
}
protected fun MutableList<String>.addArgIfNotNull(parameter: String, value: String?) {
if (value != null) {
addArg(parameter, value)
}
}
protected fun MutableList<String>.addKey(key: String, enabled: Boolean) {
if (enabled) {
add(key)
}
}
protected fun MutableList<String>.addFileArgs(parameter: String, values: FileCollection) {
values.files.forEach {
addArg(parameter, it.canonicalPath)
}
}
protected fun MutableList<String>.addFileArgs(parameter: String, values: Collection<FileCollection>) {
values.forEach {
addFileArgs(parameter, it)
}
}
// Task action ------------------------------------------------------------ // Task action ------------------------------------------------------------
protected fun buildArgs() = mutableListOf<String>().apply { protected fun buildArgs() = mutableListOf<String>().apply {
@@ -102,9 +71,7 @@ open class KonanCompileTask: DefaultTask() {
addFileArgs("-library", libraries) addFileArgs("-library", libraries)
addFileArgs("-nativelibrary", nativeLibraries) addFileArgs("-nativelibrary", nativeLibraries)
linkerOpts.forEach { addListArg("-linkerArgs", linkerOpts)
addArg("-linkerArgs", it)
}
addArgIfNotNull("-target", target) addArgIfNotNull("-target", target)
addArgIfNotNull("-language-version", languageVersion) addArgIfNotNull("-language-version", languageVersion)
@@ -68,31 +68,26 @@ open class KonanInteropTask: DefaultTask() {
} }
protected fun buildArgs() = mutableListOf<String>().apply { protected fun buildArgs() = mutableListOf<String>().apply {
add("-properties:${project.konanHome}/konan/konan.properties") addArg("-properties", "${project.konanHome}/konan/konan.properties")
add("-flavor:native") addArg("-flavor", "native")
add("-generated:$stubsDir")
add("-natives:$libsDir")
target?.let { add("-target:$target") } addArg("-generated", stubsDir.canonicalPath)
defFile?.let { add("-def:$it") } addArg("-natives", libsDir.canonicalPath)
pkg?.let { add("-pkg:$it") }
linker?.let { add("-linker:$it") }
headers.forEach { addArgIfNotNull("-target", target)
add("-h:$it") addArgIfNotNull("-def", defFile?.canonicalPath)
} addArgIfNotNull("-pkg", pkg)
addArgIfNotNull("-linker", linker)
compilerOpts.forEach { addFileArgs("-h", headers)
add("-copt:$it")
} addListArg("-copt", compilerOpts)
val linkerOpts = mutableListOf<String>().apply { addAll(linkerOpts) } val linkerOpts = mutableListOf<String>().apply { addAll(linkerOpts) }
linkFiles.forEach { linkFiles.forEach {
linkerOpts.addAll(it.files.map { it.canonicalPath }) linkerOpts.addAll(it.files.map { it.canonicalPath })
} }
linkerOpts.forEach { addListArg("-lopt", linkerOpts)
add("-lopt:$it")
}
} }
} }
@@ -4,6 +4,7 @@ import org.gradle.api.DefaultTask
import org.gradle.api.Plugin import org.gradle.api.Plugin
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.Task import org.gradle.api.Task
import org.gradle.api.file.FileCollection
import org.gradle.api.internal.AbstractNamedDomainObjectContainer import org.gradle.api.internal.AbstractNamedDomainObjectContainer
import org.gradle.api.internal.project.ProjectInternal import org.gradle.api.internal.project.ProjectInternal
import org.gradle.internal.reflect.Instantiator import org.gradle.internal.reflect.Instantiator
@@ -48,6 +49,43 @@ class KonanInteropContainer(val project: ProjectInternal): AbstractNamedDomainOb
KonanInteropConfig(name, project) KonanInteropConfig(name, project)
} }
// Useful extensions and functions ---------------------------------------
internal fun MutableList<String>.addArg(parameter: String, value: String) {
add(parameter)
add(value)
}
internal fun MutableList<String>.addArgIfNotNull(parameter: String, value: String?) {
if (value != null) {
addArg(parameter, value)
}
}
internal fun MutableList<String>.addKey(key: String, enabled: Boolean) {
if (enabled) {
add(key)
}
}
internal fun MutableList<String>.addFileArgs(parameter: String, values: FileCollection) {
values.files.forEach {
addArg(parameter, it.canonicalPath)
}
}
internal fun MutableList<String>.addFileArgs(parameter: String, values: Collection<FileCollection>) {
values.forEach {
addFileArgs(parameter, it)
}
}
internal fun MutableList<String>.addListArg(parameter: String, values: List<String>) {
if (values.isNotEmpty()) {
addArg(parameter, values.joinToString(separator = " "))
}
}
class KonanPlugin: Plugin<ProjectInternal> { class KonanPlugin: Plugin<ProjectInternal> {
companion object { companion object {