[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:
@@ -45,7 +45,7 @@ val libclang =
|
||||
|
||||
val cflags = mutableListOf( "-I$llvmDir/include",
|
||||
"-I${project(":kotlin-native:libclangext").projectDir.absolutePath}/src/main/include",
|
||||
*platformManager.hostPlatform.clang.hostCompilerArgsForJni)
|
||||
*platformManager.hostPlatform.clangForJni.hostCompilerArgsForJni)
|
||||
|
||||
val ldflags = mutableListOf("$llvmDir/$libclang", "-L${libclangextDir.absolutePath}", "-lclangext")
|
||||
|
||||
@@ -99,17 +99,15 @@ val lib = if (HostManager.hostIsMingw) "lib" else "a"
|
||||
|
||||
native {
|
||||
val obj = if (HostManager.hostIsMingw) "obj" else "o"
|
||||
val host = rootProject.project(":kotlin-native").extra["hostName"]
|
||||
val hostLibffiDir = rootProject.project(":kotlin-native").extra["${host}LibffiDir"]
|
||||
val cxxflags = listOf("-std=c++11", *cflags.toTypedArray())
|
||||
suffixes {
|
||||
(".c" to ".$obj") {
|
||||
tool(*platformManager.hostPlatform.clang.clangC("").toTypedArray())
|
||||
tool(*platformManager.hostPlatform.clangForJni.clangC("").toTypedArray())
|
||||
flags(*cflags.toTypedArray(),
|
||||
"-c", "-o", ruleOut(), ruleInFirst())
|
||||
}
|
||||
(".cpp" to ".$obj") {
|
||||
tool(*platformManager.hostPlatform.clang.clangCXX("").toTypedArray())
|
||||
tool(*platformManager.hostPlatform.clangForJni.clangCXX("").toTypedArray())
|
||||
flags(*cxxflags.toTypedArray(), "-c", "-o", ruleOut(), ruleInFirst())
|
||||
}
|
||||
|
||||
@@ -126,7 +124,7 @@ native {
|
||||
sourceSets["main-cpp"]!!.transform(".cpp" to ".$obj"))
|
||||
|
||||
target(solib("clangstubs"), *objSet) {
|
||||
tool(*platformManager.hostPlatform.clang.clangCXX("").toTypedArray())
|
||||
tool(*platformManager.hostPlatform.clangForJni.clangCXX("").toTypedArray())
|
||||
flags(
|
||||
"-shared",
|
||||
"-o", ruleOut(), *ruleInAll(),
|
||||
|
||||
@@ -35,10 +35,10 @@ native {
|
||||
val host = rootProject.project(":kotlin-native").extra["hostName"]
|
||||
val hostLibffiDir = rootProject.project(":kotlin-native").extra["${host}LibffiDir"]
|
||||
val cflags = mutableListOf("-I$hostLibffiDir/include",
|
||||
*platformManager.hostPlatform.clang.hostCompilerArgsForJni)
|
||||
*platformManager.hostPlatform.clangForJni.hostCompilerArgsForJni)
|
||||
suffixes {
|
||||
(".c" to ".$obj") {
|
||||
tool(*platformManager.hostPlatform.clang.clangC("").toTypedArray())
|
||||
tool(*platformManager.hostPlatform.clangForJni.clangC("").toTypedArray())
|
||||
flags( *cflags.toTypedArray(), "-c", "-o", ruleOut(), ruleInFirst())
|
||||
}
|
||||
}
|
||||
@@ -50,7 +50,7 @@ native {
|
||||
val objSet = sourceSets["callbacks"]!!.transform(".c" to ".$obj")
|
||||
|
||||
target(solib("callbacks"), objSet) {
|
||||
tool(*platformManager.hostPlatform.clang.clangCXX("").toTypedArray())
|
||||
tool(*platformManager.hostPlatform.clangForJni.clangCXX("").toTypedArray())
|
||||
flags("-shared",
|
||||
"-o",ruleOut(), *ruleInAll(),
|
||||
"-L${project(":kotlin-native:libclangext").buildDir}",
|
||||
|
||||
+10
-10
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user