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
|
llvmLtoOptFlags.macos_x64 = -O3 -function-sections
|
||||||
llvmLtoNooptFlags.macos_x64 = -O1
|
llvmLtoNooptFlags.macos_x64 = -O1
|
||||||
llvmLtoDynamicFlags.macos_x64 = -relocation-model=pic
|
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
|
linkerOptimizationFlags.macos_x64 = -dead_strip
|
||||||
linkerNoDebugFlags.macos_x64 = -S
|
linkerNoDebugFlags.macos_x64 = -S
|
||||||
linkerDynamicFlags.macos_x64 = -dylib
|
linkerDynamicFlags.macos_x64 = -dylib
|
||||||
@@ -81,7 +81,7 @@ linkerNoDebugFlags.ios_arm32 = -S
|
|||||||
linkerDynamicFlags.ios_arm32 = -dylib
|
linkerDynamicFlags.ios_arm32 = -dylib
|
||||||
llvmLtoNooptFlags.ios_arm32 = -O1
|
llvmLtoNooptFlags.ios_arm32 = -O1
|
||||||
llvmLtoDynamicFlags.ios_arm32 = -relocation-model=pic
|
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
|
linkerOptimizationFlags.ios_arm32 = -dead_strip
|
||||||
osVersionMinFlagLd.ios_arm32 = -iphoneos_version_min
|
osVersionMinFlagLd.ios_arm32 = -iphoneos_version_min
|
||||||
osVersionMinFlagClang.ios_arm32 = -miphoneos-version-min
|
osVersionMinFlagClang.ios_arm32 = -miphoneos-version-min
|
||||||
@@ -105,7 +105,7 @@ linkerNoDebugFlags.ios_arm64 = -S
|
|||||||
linkerDynamicFlags.ios_arm64 = -dylib
|
linkerDynamicFlags.ios_arm64 = -dylib
|
||||||
llvmLtoNooptFlags.ios_arm64 = -O1
|
llvmLtoNooptFlags.ios_arm64 = -O1
|
||||||
llvmLtoDynamicFlags.ios_arm64 = -relocation-model=pic
|
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
|
linkerOptimizationFlags.ios_arm64 = -dead_strip
|
||||||
osVersionMinFlagLd.ios_arm64 = -iphoneos_version_min
|
osVersionMinFlagLd.ios_arm64 = -iphoneos_version_min
|
||||||
osVersionMinFlagClang.ios_arm64 = -miphoneos-version-min
|
osVersionMinFlagClang.ios_arm64 = -miphoneos-version-min
|
||||||
@@ -127,7 +127,7 @@ llvmLtoFlags.ios_x64 =
|
|||||||
llvmLtoOptFlags.ios_x64 = -O3 -function-sections
|
llvmLtoOptFlags.ios_x64 = -O3 -function-sections
|
||||||
llvmLtoNooptFlags.ios_x64 = -O1
|
llvmLtoNooptFlags.ios_x64 = -O1
|
||||||
llvmLtoDynamicFlags.ios_x64 = -relocation-model=pic
|
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
|
linkerOptimizationFlags.ios_x64 = -dead_strip
|
||||||
linkerNoDebugFlags.ios_x64 = -S
|
linkerNoDebugFlags.ios_x64 = -S
|
||||||
linkerDynamicFlags.ios_x64 = -dylib
|
linkerDynamicFlags.ios_x64 = -dylib
|
||||||
|
|||||||
@@ -117,12 +117,18 @@ open class MacOSBasedLinker(targetProperties: AppleConfigurables)
|
|||||||
|
|
||||||
private val libtool = "$absoluteTargetToolchain/usr/bin/libtool"
|
private val libtool = "$absoluteTargetToolchain/usr/bin/libtool"
|
||||||
private val linker = "$absoluteTargetToolchain/usr/bin/ld"
|
private val linker = "$absoluteTargetToolchain/usr/bin/ld"
|
||||||
internal val dsymutil = "$absoluteLlvmHome/bin/llvm-dsymutil"
|
private val dsymutil = "$absoluteLlvmHome/bin/llvm-dsymutil"
|
||||||
|
private val compilerRtLibrary: String? by lazy {
|
||||||
open val osVersionMinFlags: List<String> by lazy {
|
val suffix = when (configurables.target.family) {
|
||||||
listOf(
|
Family.OSX -> "osx"
|
||||||
osVersionMinFlagLd,
|
Family.IOS -> "ios"
|
||||||
osVersionMin + ".0")
|
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 }
|
override fun filterStaticLibraries(binaries: List<String>) = binaries.filter { it.isUnixStaticLib }
|
||||||
@@ -149,7 +155,7 @@ open class MacOSBasedLinker(targetProperties: AppleConfigurables)
|
|||||||
if (!debug) +linkerNoDebugFlags
|
if (!debug) +linkerNoDebugFlags
|
||||||
if (dynamic) +linkerDynamicFlags
|
if (dynamic) +linkerDynamicFlags
|
||||||
+linkerKonanFlags
|
+linkerKonanFlags
|
||||||
+"-lSystem"
|
if (compilerRtLibrary != null) +compilerRtLibrary!!
|
||||||
+libraries
|
+libraries
|
||||||
+linkerArgs
|
+linkerArgs
|
||||||
}) + if (debug) listOf(dsymUtilCommand(executable, outputDsymBundle)) else emptyList()
|
}) + if (debug) listOf(dsymUtilCommand(executable, outputDsymBundle)) else emptyList()
|
||||||
|
|||||||
Reference in New Issue
Block a user