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