[K/N] Separate ClangArgs for jni and native

Since LLVM for Windows is now native instead on MinGW, we have to
compile code in a different environment in case of JNI. This commits
just separates ClangArgs into two subclasses without actual behavior
changes.
This commit is contained in:
Sergey Bogolepov
2021-07-23 12:04:07 +07:00
committed by Space
parent fbbbc1c092
commit a78fcd6b64
8 changed files with 61 additions and 41 deletions
@@ -16,16 +16,13 @@
package org.jetbrains.kotlin.native.interop.tool
import org.jetbrains.kotlin.konan.target.HostManager
import org.jetbrains.kotlin.konan.target.KonanTarget
import org.jetbrains.kotlin.konan.target.PlatformManager
import org.jetbrains.kotlin.konan.target.customerDistribution
import org.jetbrains.kotlin.konan.target.*
import org.jetbrains.kotlin.konan.util.KonanHomeProvider
import org.jetbrains.kotlin.konan.util.defaultTargetSubstitutions
import org.jetbrains.kotlin.native.interop.gen.jvm.KotlinPlatform
import org.jetbrains.kotlin.native.interop.indexer.Language
class ToolConfig(userProvidedTargetName: String?, flavor: KotlinPlatform) {
class ToolConfig(userProvidedTargetName: String?, private val flavor: KotlinPlatform) {
private val konanHome = KonanHomeProvider.determineKonanHome()
private val distribution = customerDistribution(konanHome)
@@ -36,7 +33,10 @@ class ToolConfig(userProvidedTargetName: String?, flavor: KotlinPlatform) {
private val platform = platformManager.platform(target)
val clang = platform.clang
val clang = when (flavor) {
KotlinPlatform.JVM -> platform.clangForJni
KotlinPlatform.NATIVE -> platform.clang
}
val substitutions = defaultTargetSubstitutions(target)
@@ -44,12 +44,12 @@ class ToolConfig(userProvidedTargetName: String?, flavor: KotlinPlatform) {
fun getDefaultCompilerOptsForLanguage(language: Language): List<String> = when (language) {
Language.C,
Language.OBJECTIVE_C -> platform.clang.libclangArgs.toList()
Language.CPP -> platform.clang.libclangXXArgs.toList()
Language.OBJECTIVE_C -> clang.libclangArgs.toList()
Language.CPP -> clang.libclangXXArgs.toList()
}
val platformCompilerOpts = if (flavor == KotlinPlatform.JVM)
platform.clang.hostCompilerArgsForJni.toList() else emptyList()
val platformCompilerOpts = if (clang is ClangArgs.Jni)
clang.hostCompilerArgsForJni.toList() else emptyList()
val llvmHome = platform.absoluteLlvmHome
val sysRoot = platform.absoluteTargetSysRoot