From 0d24a49f8cba4e46d86b920aeb04190ec1fc4c59 Mon Sep 17 00:00:00 2001 From: Ilya Matveev Date: Fri, 31 Mar 2017 16:15:48 +0700 Subject: [PATCH] gradle-plugin Don't use ':' in interop command line --- .../src/main/kotlin/KonanCompilerConfig.kt | 28 +------------- .../src/main/kotlin/KonanCompilerTask.kt | 35 +---------------- .../src/main/kotlin/KonanInteropTask.kt | 29 ++++++-------- .../src/main/kotlin/KonanPlugin.kt | 38 +++++++++++++++++++ 4 files changed, 52 insertions(+), 78 deletions(-) diff --git a/tools/gradle-plugin/src/main/kotlin/KonanCompilerConfig.kt b/tools/gradle-plugin/src/main/kotlin/KonanCompilerConfig.kt index 2b6192c1e1e..95c7cd5dd3c 100644 --- a/tools/gradle-plugin/src/main/kotlin/KonanCompilerConfig.kt +++ b/tools/gradle-plugin/src/main/kotlin/KonanCompilerConfig.kt @@ -174,30 +174,4 @@ open class KonanCompilerConfig( fun enableAssertions() = with(compilationTask) { enableAssertions = true } -} - - - - - - - - - - - - - - - - - - - - - - - - - - +} \ No newline at end of file diff --git a/tools/gradle-plugin/src/main/kotlin/KonanCompilerTask.kt b/tools/gradle-plugin/src/main/kotlin/KonanCompilerTask.kt index 56a67783a92..a4be7207658 100644 --- a/tools/gradle-plugin/src/main/kotlin/KonanCompilerTask.kt +++ b/tools/gradle-plugin/src/main/kotlin/KonanCompilerTask.kt @@ -63,37 +63,6 @@ open class KonanCompileTask: DefaultTask() { @Optional @Input var apiVersion : String? = null internal set - // Useful extensions and functions --------------------------------------- - - protected fun MutableList.addArg(parameter: String, value: String) { - add(parameter) - add(value) - } - - protected fun MutableList.addArgIfNotNull(parameter: String, value: String?) { - if (value != null) { - addArg(parameter, value) - } - } - - protected fun MutableList.addKey(key: String, enabled: Boolean) { - if (enabled) { - add(key) - } - } - - protected fun MutableList.addFileArgs(parameter: String, values: FileCollection) { - values.files.forEach { - addArg(parameter, it.canonicalPath) - } - } - - protected fun MutableList.addFileArgs(parameter: String, values: Collection) { - values.forEach { - addFileArgs(parameter, it) - } - } - // Task action ------------------------------------------------------------ protected fun buildArgs() = mutableListOf().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) diff --git a/tools/gradle-plugin/src/main/kotlin/KonanInteropTask.kt b/tools/gradle-plugin/src/main/kotlin/KonanInteropTask.kt index c4c015a4c9d..e2a4097de0f 100644 --- a/tools/gradle-plugin/src/main/kotlin/KonanInteropTask.kt +++ b/tools/gradle-plugin/src/main/kotlin/KonanInteropTask.kt @@ -68,31 +68,26 @@ open class KonanInteropTask: DefaultTask() { } protected fun buildArgs() = mutableListOf().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().apply { addAll(linkerOpts) } linkFiles.forEach { linkerOpts.addAll(it.files.map { it.canonicalPath }) } - linkerOpts.forEach { - add("-lopt:$it") - } + addListArg("-lopt", linkerOpts) } } diff --git a/tools/gradle-plugin/src/main/kotlin/KonanPlugin.kt b/tools/gradle-plugin/src/main/kotlin/KonanPlugin.kt index e1fee3c25fe..44a6cf9d808 100644 --- a/tools/gradle-plugin/src/main/kotlin/KonanPlugin.kt +++ b/tools/gradle-plugin/src/main/kotlin/KonanPlugin.kt @@ -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.addArg(parameter: String, value: String) { + add(parameter) + add(value) +} + +internal fun MutableList.addArgIfNotNull(parameter: String, value: String?) { + if (value != null) { + addArg(parameter, value) + } +} + +internal fun MutableList.addKey(key: String, enabled: Boolean) { + if (enabled) { + add(key) + } +} + +internal fun MutableList.addFileArgs(parameter: String, values: FileCollection) { + values.files.forEach { + addArg(parameter, it.canonicalPath) + } +} + +internal fun MutableList.addFileArgs(parameter: String, values: Collection) { + values.forEach { + addFileArgs(parameter, it) + } +} + +internal fun MutableList.addListArg(parameter: String, values: List) { + if (values.isNotEmpty()) { + addArg(parameter, values.joinToString(separator = " ")) + } +} + class KonanPlugin: Plugin { companion object {