Add compiler_rt to linking flags on Apple platforms. (#2557)

* Add compiler_rt to linking flags on Apple platforms.

* Review feedback.
This commit is contained in:
Nikolay Igotti
2019-01-20 11:44:06 +03:00
committed by GitHub
parent 6ca196399a
commit 50376a0975
2 changed files with 17 additions and 11 deletions
+4 -4
View File
@@ -44,7 +44,7 @@ llvmLtoFlags.macos_x64 =
llvmLtoOptFlags.macos_x64 = -O3 -function-sections
llvmLtoNooptFlags.macos_x64 = -O1
llvmLtoDynamicFlags.macos_x64 = -relocation-model=pic
linkerKonanFlags.macos_x64 = -lc++ -lobjc -framework Foundation
linkerKonanFlags.macos_x64 = -lSystem -lc++ -lobjc -framework Foundation
linkerOptimizationFlags.macos_x64 = -dead_strip
linkerNoDebugFlags.macos_x64 = -S
linkerDynamicFlags.macos_x64 = -dylib
@@ -81,7 +81,7 @@ linkerNoDebugFlags.ios_arm32 = -S
linkerDynamicFlags.ios_arm32 = -dylib
llvmLtoNooptFlags.ios_arm32 = -O1
llvmLtoDynamicFlags.ios_arm32 = -relocation-model=pic
linkerKonanFlags.ios_arm32 = -lc++ -lobjc -framework Foundation -sdk_version 11.2
linkerKonanFlags.ios_arm32 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 11.2
linkerOptimizationFlags.ios_arm32 = -dead_strip
osVersionMinFlagLd.ios_arm32 = -iphoneos_version_min
osVersionMinFlagClang.ios_arm32 = -miphoneos-version-min
@@ -105,7 +105,7 @@ linkerNoDebugFlags.ios_arm64 = -S
linkerDynamicFlags.ios_arm64 = -dylib
llvmLtoNooptFlags.ios_arm64 = -O1
llvmLtoDynamicFlags.ios_arm64 = -relocation-model=pic
linkerKonanFlags.ios_arm64 = -lc++ -lobjc -framework Foundation -sdk_version 11.2
linkerKonanFlags.ios_arm64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 11.2
linkerOptimizationFlags.ios_arm64 = -dead_strip
osVersionMinFlagLd.ios_arm64 = -iphoneos_version_min
osVersionMinFlagClang.ios_arm64 = -miphoneos-version-min
@@ -127,7 +127,7 @@ llvmLtoFlags.ios_x64 =
llvmLtoOptFlags.ios_x64 = -O3 -function-sections
llvmLtoNooptFlags.ios_x64 = -O1
llvmLtoDynamicFlags.ios_x64 = -relocation-model=pic
linkerKonanFlags.ios_x64 = -lc++ -lobjc -framework Foundation -sdk_version 11.2
linkerKonanFlags.ios_x64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 11.2
linkerOptimizationFlags.ios_x64 = -dead_strip
linkerNoDebugFlags.ios_x64 = -S
linkerDynamicFlags.ios_x64 = -dylib
@@ -117,12 +117,18 @@ open class MacOSBasedLinker(targetProperties: AppleConfigurables)
private val libtool = "$absoluteTargetToolchain/usr/bin/libtool"
private val linker = "$absoluteTargetToolchain/usr/bin/ld"
internal val dsymutil = "$absoluteLlvmHome/bin/llvm-dsymutil"
open val osVersionMinFlags: List<String> by lazy {
listOf(
osVersionMinFlagLd,
osVersionMin + ".0")
private val dsymutil = "$absoluteLlvmHome/bin/llvm-dsymutil"
private val compilerRtLibrary: String? by lazy {
val suffix = when (configurables.target.family) {
Family.OSX -> "osx"
Family.IOS -> "ios"
else -> TODO()
}
val dir = File("$absoluteTargetToolchain/usr/lib/clang/").listFiles.firstOrNull()?.absolutePath
if (dir != null) "$dir/lib/darwin/libclang_rt.$suffix.a" else null
}
private val osVersionMinFlags: List<String> by lazy {
listOf(osVersionMinFlagLd, osVersionMin + ".0")
}
override fun filterStaticLibraries(binaries: List<String>) = binaries.filter { it.isUnixStaticLib }
@@ -149,7 +155,7 @@ open class MacOSBasedLinker(targetProperties: AppleConfigurables)
if (!debug) +linkerNoDebugFlags
if (dynamic) +linkerDynamicFlags
+linkerKonanFlags
+"-lSystem"
if (compilerRtLibrary != null) +compilerRtLibrary!!
+libraries
+linkerArgs
}) + if (debug) listOf(dsymUtilCommand(executable, outputDsymBundle)) else emptyList()