gradle-plugin: Support headerFilterAdditionalSearchPrefix
Support the headerFilterAdditionalSearchPrefix interop tool option in the Gradle plugin
This commit is contained in:
+10
@@ -58,4 +58,14 @@ open class KonanInteropLibrary(name: String, project: ProjectInternal, instantia
|
|||||||
|
|
||||||
override fun link(vararg files: Any) = forEach { it.link(*files) }
|
override fun link(vararg files: Any) = forEach { it.link(*files) }
|
||||||
override fun link(files: FileCollection) = forEach { it.link(files) }
|
override fun link(files: FileCollection) = forEach { it.link(files) }
|
||||||
|
|
||||||
|
override fun headerFilterAdditionalSearchPrefix(path: Any) =
|
||||||
|
forEach { it.headerFilterAdditionalSearchPrefix(path) }
|
||||||
|
|
||||||
|
override fun headerFilterAdditionalSearchPrefixes(vararg paths: Any) =
|
||||||
|
headerFilterAdditionalSearchPrefixes(paths.toList())
|
||||||
|
|
||||||
|
override fun headerFilterAdditionalSearchPrefixes(paths: Collection<Any>) =
|
||||||
|
forEach { it.headerFilterAdditionalSearchPrefix(paths) }
|
||||||
|
|
||||||
}
|
}
|
||||||
+4
@@ -86,4 +86,8 @@ interface KonanInteropSpec: KonanBuildingSpec {
|
|||||||
|
|
||||||
fun link(vararg files: Any)
|
fun link(vararg files: Any)
|
||||||
fun link(files: FileCollection)
|
fun link(files: FileCollection)
|
||||||
|
|
||||||
|
fun headerFilterAdditionalSearchPrefix(path: Any)
|
||||||
|
fun headerFilterAdditionalSearchPrefixes(vararg paths: Any)
|
||||||
|
fun headerFilterAdditionalSearchPrefixes(paths: Collection<Any>)
|
||||||
}
|
}
|
||||||
+24
-1
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.plugin.tasks
|
package org.jetbrains.kotlin.gradle.plugin.tasks
|
||||||
|
|
||||||
|
import org.gradle.api.InvalidUserDataException
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
import org.gradle.api.tasks.*
|
import org.gradle.api.tasks.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
import org.jetbrains.kotlin.gradle.plugin.*
|
||||||
@@ -51,6 +52,8 @@ open class KonanInteropTask: KonanBuildingTask(), KonanInteropSpec {
|
|||||||
@InputFiles val headers = mutableSetOf<FileCollection>()
|
@InputFiles val headers = mutableSetOf<FileCollection>()
|
||||||
@InputFiles val linkFiles = mutableSetOf<FileCollection>()
|
@InputFiles val linkFiles = mutableSetOf<FileCollection>()
|
||||||
|
|
||||||
|
@Input val headerFilterAdditionalSearchDirectories = mutableSetOf<File>()
|
||||||
|
|
||||||
override fun buildArgs() = mutableListOf<String>().apply {
|
override fun buildArgs() = mutableListOf<String>().apply {
|
||||||
addArg("-properties", "${project.konanHome}/konan/konan.properties")
|
addArg("-properties", "${project.konanHome}/konan/konan.properties")
|
||||||
|
|
||||||
@@ -82,6 +85,15 @@ open class KonanInteropTask: KonanBuildingTask(), KonanInteropSpec {
|
|||||||
|
|
||||||
addKey("-nodefaultlibs", noDefaultLibs)
|
addKey("-nodefaultlibs", noDefaultLibs)
|
||||||
|
|
||||||
|
addArgs("-headerFilterAdditionalSearchPrefix",
|
||||||
|
headerFilterAdditionalSearchDirectories.map {
|
||||||
|
if (!it.isDirectory) {
|
||||||
|
throw InvalidUserDataException("headerFilterAdditionalSearchPrefix must be a directory: $it")
|
||||||
|
}
|
||||||
|
it.absolutePath
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
addAll(extraOpts)
|
addAll(extraOpts)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,7 +134,18 @@ open class KonanInteropTask: KonanBuildingTask(), KonanInteropSpec {
|
|||||||
override fun link(files: FileCollection) {
|
override fun link(files: FileCollection) {
|
||||||
linkFiles.add(files)
|
linkFiles.add(files)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun headerFilterAdditionalSearchPrefix(path: Any) {
|
||||||
|
headerFilterAdditionalSearchDirectories.add(project.file(path))
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun headerFilterAdditionalSearchPrefixes(vararg paths: Any) =
|
||||||
|
headerFilterAdditionalSearchPrefixes(paths.toList())
|
||||||
|
|
||||||
|
override fun headerFilterAdditionalSearchPrefixes(paths: Collection<Any>) = paths.forEach {
|
||||||
|
headerFilterAdditionalSearchPrefix(it)
|
||||||
|
}
|
||||||
|
|
||||||
// endregion
|
// endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -97,7 +97,7 @@ class IncrementalSpecification extends BaseKonanSpecification {
|
|||||||
"noDefaultLibs" | "true"
|
"noDefaultLibs" | "true"
|
||||||
}
|
}
|
||||||
|
|
||||||
def 'Plugin should support custom entry points and recompile an artifact if it changes'() {
|
def 'Plugin should support a custom entry point and recompile an artifact if it changes'() {
|
||||||
when:
|
when:
|
||||||
def project = KonanProject.createEmpty(projectDirectory) { KonanProject it ->
|
def project = KonanProject.createEmpty(projectDirectory) { KonanProject it ->
|
||||||
it.addCompilerArtifact("main", """
|
it.addCompilerArtifact("main", """
|
||||||
|
|||||||
Reference in New Issue
Block a user