[K/N][gradle][interop] Refactored ToolConfig
Added possibility to create different strategies for loading libclang
This commit is contained in:
+1
-1
@@ -250,7 +250,7 @@ private fun generateLibrary(
|
||||
*def.depends.flatMap { listOf("-l", "$outputDirectory/${it.libraryName}") }.toTypedArray()
|
||||
)
|
||||
logger.verbose("Run cinterop with args: ${cinteropArgs.joinToString(separator = " ")}")
|
||||
invokeInterop("native", cinteropArgs)?.let { K2Native.mainNoExit(it) }
|
||||
invokeInterop("native", cinteropArgs, runFromDaemon = false)?.let { K2Native.mainNoExit(it) }
|
||||
|
||||
if (rebuild) {
|
||||
outKlib.deleteAtomicallyIfPossible(tmpDirectory)
|
||||
|
||||
+3
-2
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.native.interop.tool.*
|
||||
* @return null if there is no need in compiler invocation.
|
||||
* Otherwise returns array of compiler args.
|
||||
*/
|
||||
fun invokeInterop(flavor: String, args: Array<String>): Array<String>? {
|
||||
fun invokeInterop(flavor: String, args: Array<String>, runFromDaemon: Boolean): Array<String>? {
|
||||
val arguments = if (flavor == "native") CInteropArguments() else JSInteropArguments()
|
||||
arguments.argParser.parse(args)
|
||||
val outputFileName = arguments.output
|
||||
@@ -46,7 +46,8 @@ fun invokeInterop(flavor: String, args: Array<String>): Array<String>? {
|
||||
InternalInteropOptions(generatedDir.absolutePath,
|
||||
nativesDir.absolutePath,manifest.path,
|
||||
cstubsName.takeIf { flavor == "native" }
|
||||
)
|
||||
),
|
||||
runFromDaemon
|
||||
) ?: return null // There is no need in compiler invocation if we're generating only metadata.
|
||||
|
||||
val nativeStubs =
|
||||
|
||||
+6
-6
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.cli.bc.mainNoExitWithGradleRenderer as konancMainFor
|
||||
import org.jetbrains.kotlin.backend.konan.env.setEnv
|
||||
import org.jetbrains.kotlin.konan.util.usingNativeMemoryAllocator
|
||||
|
||||
private fun mainImpl(args: Array<String>, konancMain: (Array<String>) -> Unit) {
|
||||
private fun mainImpl(args: Array<String>, runFromDaemon: Boolean, konancMain: (Array<String>) -> Unit) {
|
||||
val utilityName = args[0]
|
||||
val utilityArgs = args.drop(1).toTypedArray()
|
||||
when (utilityName) {
|
||||
@@ -37,17 +37,17 @@ private fun mainImpl(args: Array<String>, konancMain: (Array<String>) -> Unit) {
|
||||
konancMain(utilityArgs)
|
||||
}
|
||||
"cinterop" -> {
|
||||
val konancArgs = invokeInterop("native", utilityArgs)
|
||||
val konancArgs = invokeInterop("native", utilityArgs, runFromDaemon)
|
||||
konancArgs?.let { konancMain(it) }
|
||||
}
|
||||
"jsinterop" -> {
|
||||
val konancArgs = invokeInterop("wasm", utilityArgs)
|
||||
val konancArgs = invokeInterop("wasm", utilityArgs, runFromDaemon)
|
||||
konancArgs?.let { konancMain(it) }
|
||||
}
|
||||
"klib" ->
|
||||
klibMain(utilityArgs)
|
||||
"defFileDependencies" ->
|
||||
defFileDependencies(utilityArgs)
|
||||
defFileDependencies(utilityArgs, runFromDaemon)
|
||||
"generatePlatformLibraries" ->
|
||||
generatePlatformLibraries(utilityArgs)
|
||||
|
||||
@@ -59,7 +59,7 @@ private fun mainImpl(args: Array<String>, konancMain: (Array<String>) -> Unit) {
|
||||
}
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) = mainImpl(args, ::konancMain)
|
||||
fun main(args: Array<String>) = mainImpl(args, false, ::konancMain)
|
||||
|
||||
private fun setupClangEnv() {
|
||||
setEnv("LIBCLANG_DISABLE_CRASH_RECOVERY", "1")
|
||||
@@ -67,5 +67,5 @@ private fun setupClangEnv() {
|
||||
|
||||
fun daemonMain(args: Array<String>) = usingNativeMemoryAllocator {
|
||||
setupClangEnv() // For in-process invocation have to setup proper environment manually.
|
||||
mainImpl(args, ::konancMainForGradle)
|
||||
mainImpl(args, true, ::konancMainForGradle)
|
||||
}
|
||||
Reference in New Issue
Block a user