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
@@ -174,30 +174,4 @@ open class KonanCompilerConfig(
fun enableAssertions() = with(compilationTask) {
enableAssertions = true
}
}
}
@@ -63,37 +63,6 @@ open class KonanCompileTask: DefaultTask() {
@Optional @Input var apiVersion : String? = null
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 ------------------------------------------------------------
protected fun buildArgs() = mutableListOf<String>().apply {
@@ -102,9 +71,7 @@ open class KonanCompileTask: DefaultTask() {
addFileArgs("-library", libraries)
addFileArgs("-nativelibrary", nativeLibraries)
linkerOpts.forEach {
addArg("-linkerArgs", it)
}
addListArg("-linkerArgs", linkerOpts)
addArgIfNotNull("-target", target)
addArgIfNotNull("-language-version", languageVersion)
@@ -68,31 +68,26 @@ open class KonanInteropTask: DefaultTask() {
}
protected fun buildArgs() = mutableListOf<String>().apply {
add("-properties:${project.konanHome}/konan/konan.properties")
add("-flavor:native")
add("-generated:$stubsDir")
add("-natives:$libsDir")
addArg("-properties", "${project.konanHome}/konan/konan.properties")
addArg("-flavor", "native")
target?.let { add("-target:$target") }
defFile?.let { add("-def:$it") }
pkg?.let { add("-pkg:$it") }
linker?.let { add("-linker:$it") }
addArg("-generated", stubsDir.canonicalPath)
addArg("-natives", libsDir.canonicalPath)
headers.forEach {
add("-h:$it")
}
addArgIfNotNull("-target", target)
addArgIfNotNull("-def", defFile?.canonicalPath)
addArgIfNotNull("-pkg", pkg)
addArgIfNotNull("-linker", linker)
compilerOpts.forEach {
add("-copt:$it")
}
addFileArgs("-h", headers)
addListArg("-copt", compilerOpts)
val linkerOpts = mutableListOf<String>().apply { addAll(linkerOpts) }
linkFiles.forEach {
linkerOpts.addAll(it.files.map { it.canonicalPath })
}
linkerOpts.forEach {
add("-lopt:$it")
}
addListArg("-lopt", linkerOpts)
}
}
@@ -4,6 +4,7 @@ import org.gradle.api.DefaultTask
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.Task
import org.gradle.api.file.FileCollection
import org.gradle.api.internal.AbstractNamedDomainObjectContainer
import org.gradle.api.internal.project.ProjectInternal
import org.gradle.internal.reflect.Instantiator
@@ -48,6 +49,43 @@ class KonanInteropContainer(val project: ProjectInternal): AbstractNamedDomainOb
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> {
companion object {