Support -nodefaultlibs flag in the interop tool
This commit is contained in:
@@ -15,6 +15,7 @@ konanInterop {
|
||||
defFile gradle.startParameter.projectProperties.defFile
|
||||
pkg gradle.startParameter.projectProperties.name
|
||||
target gradle.startParameter.projectProperties.target
|
||||
noDefaultLibs true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+7
@@ -87,6 +87,8 @@ open class KonanCompileTask: KonanTargetableTask() {
|
||||
internal set
|
||||
@Input var enableAssertions = false
|
||||
internal set
|
||||
@Input var noDefaultLibs = false
|
||||
internal set
|
||||
@Console var measureTime = false
|
||||
internal set
|
||||
|
||||
@@ -122,6 +124,7 @@ open class KonanCompileTask: KonanTargetableTask() {
|
||||
addKey("-nomain", noMain)
|
||||
addKey("-opt", enableOptimization)
|
||||
addKey("-ea", enableAssertions)
|
||||
addKey("-nodefaultlibs", noDefaultLibs)
|
||||
addKey("--time", measureTime)
|
||||
|
||||
addAll(extraOpts)
|
||||
@@ -284,6 +287,10 @@ open class KonanCompileConfig(
|
||||
enableAssertions = true
|
||||
}
|
||||
|
||||
fun noDefaultLibs(flag: Boolean) = with(compilationTask) {
|
||||
noDefaultLibs = flag
|
||||
}
|
||||
|
||||
fun measureTime(value: Boolean) = with(compilationTask) {
|
||||
measureTime = value
|
||||
}
|
||||
|
||||
+8
@@ -56,6 +56,8 @@ open class KonanInteropTask: KonanTargetableTask() {
|
||||
|
||||
@Input var dumpParameters = false
|
||||
internal set
|
||||
@Input var noDefaultLibs = false
|
||||
internal set
|
||||
|
||||
@Input val compilerOpts = mutableListOf<String>()
|
||||
@Input val linkerOpts = mutableListOf<String>()
|
||||
@@ -88,6 +90,8 @@ open class KonanInteropTask: KonanTargetableTask() {
|
||||
|
||||
addFileArgs("-h", headers)
|
||||
|
||||
addKey("-nodefaultlibs", noDefaultLibs)
|
||||
|
||||
compilerOpts.forEach {
|
||||
addArg("-copt", it)
|
||||
}
|
||||
@@ -193,6 +197,10 @@ open class KonanInteropConfig(
|
||||
dumpParameters = value
|
||||
}
|
||||
|
||||
fun noDefaultLibs(flag: Boolean) = with(interopProcessingTask) {
|
||||
noDefaultLibs = flag
|
||||
}
|
||||
|
||||
fun dependsOn(dependency: Any) = interopProcessingTask.dependsOn(dependency)
|
||||
|
||||
fun extraOpts(vararg values: Any) = extraOpts(values.asList())
|
||||
|
||||
@@ -12,10 +12,13 @@ import org.jetbrains.kotlin.native.interop.gen.jvm.interop
|
||||
import org.jetbrains.kotlin.cli.klib.main as klibMain
|
||||
|
||||
fun invokeCinterop(args: Array<String>) {
|
||||
val cinteropArgFilter = listOf("-library", "-r", "-repo", "-nodefaultlibs")
|
||||
|
||||
var outputFileName = "nativelib"
|
||||
var target = "host"
|
||||
val libraries = mutableListOf<String>()
|
||||
val repos = mutableListOf<String>()
|
||||
var noDefaultLibs = false
|
||||
for (i in args.indices) {
|
||||
val arg = args[i]
|
||||
val nextArg = args.getOrNull(i + 1)
|
||||
@@ -27,8 +30,11 @@ fun invokeCinterop(args: Array<String>) {
|
||||
libraries.addIfNotNull(nextArg)
|
||||
if (arg == "-r" || arg == "-repo")
|
||||
repos.addIfNotNull(nextArg)
|
||||
if (arg == "-nodefaultlibs")
|
||||
noDefaultLibs = true
|
||||
}
|
||||
|
||||
|
||||
val buildDir = File("$outputFileName-build")
|
||||
val generatedDir = File(buildDir, "kotlin")
|
||||
val nativesDir = File(buildDir, "natives")
|
||||
@@ -38,7 +44,7 @@ fun invokeCinterop(args: Array<String>) {
|
||||
val targetManager = TargetManager(target)
|
||||
val resolver = defaultResolver(repos, targetManager)
|
||||
val allLibraries = resolver.resolveLibrariesRecursive(
|
||||
libraries, targetManager.target, noStdLib = true, noDefaultLibs = false
|
||||
libraries, targetManager.target, noStdLib = true, noDefaultLibs = noDefaultLibs
|
||||
)
|
||||
|
||||
val importArgs = allLibraries.flatMap {
|
||||
@@ -61,7 +67,7 @@ fun invokeCinterop(args: Array<String>) {
|
||||
"-flavor", "native"
|
||||
) + importArgs
|
||||
|
||||
val cinteropArgs = (additionalArgs + args.toList()).toTypedArray()
|
||||
val cinteropArgs = (additionalArgs + args.filter { it !in cinteropArgFilter }).toTypedArray()
|
||||
val cinteropArgsToCompiler = mutableListOf<String>()
|
||||
interop(cinteropArgs, cinteropArgsToCompiler)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user