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:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user