Use -target instead of -arch in ClangArgs

Explicit target selection helps Clang to
 correctly set things up in case of Apple Silicon
 simulator target.
This commit is contained in:
Sergey Bogolepov
2021-04-05 17:40:30 +07:00
committed by TeamCityServer
parent 79bf2a1f14
commit 3718907c6a
3 changed files with 12 additions and 23 deletions
-11
View File
@@ -110,7 +110,6 @@ stripFlags.macos_x64 = -S
linkerDynamicFlags.macos_x64 = -dylib
osVersionMinFlagLd.macos_x64 = -macosx_version_min
osVersionMinFlagClang.macos_x64 = -mmacosx-version-min
osVersionMin.macos_x64 = 10.11
runtimeDefinitions.macos_x64 = KONAN_OSX=1 KONAN_MACOSX=1 KONAN_X64=1 KONAN_OBJC_INTEROP=1 \
KONAN_CORE_SYMBOLICATION=1
@@ -151,7 +150,6 @@ stripFlags.macos_arm64 = -S
linkerDynamicFlags.macos_arm64 = -dylib
osVersionMinFlagLd.macos_arm64 = -macosx_version_min
osVersionMinFlagClang.macos_arm64 = -mmacosx-version-min
osVersionMin.macos_arm64 = 11.0
runtimeDefinitions.macos_arm64 = KONAN_OSX=1 KONAN_MACOSX=1 KONAN_ARM64=1 KONAN_OBJC_INTEROP=1 \
KONAN_CORE_SYMBOLICATION=1
@@ -187,7 +185,6 @@ linkerDynamicFlags.ios_arm32 = -dylib
linkerKonanFlags.ios_arm32 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 14.0
linkerOptimizationFlags.ios_arm32 = -dead_strip
osVersionMinFlagLd.ios_arm32 = -iphoneos_version_min
osVersionMinFlagClang.ios_arm32 = -miphoneos-version-min
osVersionMin.ios_arm32 = 9.0
# Regarding KONAN_NO_64BIT_ATOMIC:
# While not 100% correct here, using atomic ops on iOS armv7 requires 8 byte alignment,
@@ -222,7 +219,6 @@ linkerDynamicFlags.ios_arm64 = -dylib
linkerKonanFlags.ios_arm64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 14.0
linkerOptimizationFlags.ios_arm64 = -dead_strip
osVersionMinFlagLd.ios_arm64 = -iphoneos_version_min
osVersionMinFlagClang.ios_arm64 = -miphoneos-version-min
osVersionMin.ios_arm64 = 9.0
runtimeDefinitions.ios_arm64 = KONAN_OBJC_INTEROP=1 KONAN_IOS=1 KONAN_ARM64=1 \
KONAN_REPORT_BACKTRACE_TO_IOS_CRASH_LOG=1 MACHSIZE=64
@@ -249,7 +245,6 @@ linkerNoDebugFlags.ios_x64 = -S
stripFlags.ios_x64 = -S
linkerDynamicFlags.ios_x64 = -dylib
osVersionMinFlagLd.ios_x64 = -ios_simulator_version_min
osVersionMinFlagClang.ios_x64 = -mios-simulator-version-min
osVersionMin.ios_x64 = 9.0
runtimeDefinitions.ios_x64 = KONAN_OBJC_INTEROP=1 KONAN_IOS=1 KONAN_X64=1 \
KONAN_CORE_SYMBOLICATION=1
@@ -275,7 +270,6 @@ linkerNoDebugFlags.tvos_x64 = -S
stripFlags.tvos_x64 = -S
linkerDynamicFlags.tvos_x64 = -dylib
osVersionMinFlagLd.tvos_x64 = -tvos_simulator_version_min
osVersionMinFlagClang.tvos_x64 = -mtvos-simulator-version-min
osVersionMin.tvos_x64 = 9.0
runtimeDefinitions.tvos_x64 = KONAN_OBJC_INTEROP=1 KONAN_TVOS=1 KONAN_X64=1 \
KONAN_CORE_SYMBOLICATION=1
@@ -301,7 +295,6 @@ linkerDynamicFlags.tvos_arm64 = -dylib
linkerKonanFlags.tvos_arm64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 14.0
linkerOptimizationFlags.tvos_arm64 = -dead_strip
osVersionMinFlagLd.tvos_arm64 = -tvos_version_min
osVersionMinFlagClang.tvos_arm64 = -mtvos-version-min
osVersionMin.tvos_arm64 = 9.0
runtimeDefinitions.tvos_arm64 = KONAN_OBJC_INTEROP=1 KONAN_TVOS=1 KONAN_ARM64=1 \
KONAN_REPORT_BACKTRACE_TO_IOS_CRASH_LOG=1 MACHSIZE=64
@@ -327,7 +320,6 @@ linkerNoDebugFlags.watchos_arm32 = -S
stripFlags.watchos_arm32 = -S
linkerDynamicFlags.watchos_arm32 = -dylib
osVersionMinFlagLd.watchos_arm32 = -watchos_version_min
osVersionMinFlagClang.watchos_arm32 = -mwatchos-version-min
osVersionMin.watchos_arm32 = 5.0
# Regarding KONAN_NO_64BIT_ATOMIC=1: see explanation for ios_arm32 above.
runtimeDefinitions.watchos_arm32 = KONAN_OBJC_INTEROP=1 KONAN_WATCHOS KONAN_ARM32=1 \
@@ -356,7 +348,6 @@ linkerNoDebugFlags.watchos_arm64 = -S
stripFlags.watchos_arm64 = -S
linkerDynamicFlags.watchos_arm64 = -dylib
osVersionMinFlagLd.watchos_arm64 = -watchos_version_min
osVersionMinFlagClang.watchos_arm64 = -mwatchos-version-min
osVersionMin.watchos_arm64 = 5.0
# Regarding KONAN_NO_64BIT_ATOMIC=1: see explanation for ios_arm32 above.
runtimeDefinitions.watchos_arm64 = KONAN_OBJC_INTEROP=1 KONAN_WATCHOS KONAN_ARM32=1 \
@@ -388,7 +379,6 @@ linkerNoDebugFlags.watchos_x86 = -S
stripFlags.watchos_x86 = -S
linkerDynamicFlags.watchos_x86 = -dylib
osVersionMinFlagLd.watchos_x86 = -watchos_simulator_version_min
osVersionMinFlagClang.watchos_x86 = -mwatchos-simulator-version-min
osVersionMin.watchos_x86 = 5.0
runtimeDefinitions.watchos_x86 = KONAN_OBJC_INTEROP=1 KONAN_WATCHOS=1 KONAN_NO_64BIT_ATOMIC=1 \
KONAN_X86=1 KONAN_CORE_SYMBOLICATION=1
@@ -414,7 +404,6 @@ linkerNoDebugFlags.watchos_x64 = -S
stripFlags.watchos_x64 = -S
linkerDynamicFlags.watchos_x64 = -dylib
osVersionMinFlagLd.watchos_x64 = -watchos_simulator_version_min
osVersionMinFlagClang.watchos_x64 = -mwatchos-simulator-version-min
osVersionMin.watchos_x64 = 7.0
runtimeDefinitions.watchos_x64 = KONAN_OBJC_INTEROP=1 KONAN_WATCHOS=1 \
KONAN_X64=1 KONAN_CORE_SYMBOLICATION=1
@@ -49,17 +49,7 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
if (configurables is GccConfigurables) {
add(listOf("--gcc-toolchain=${configurables.absoluteGccToolchain}"))
}
if (configurables !is AppleConfigurables) {
add(listOf("-target", configurables.targetTriple.toString()))
}
if (configurables is AppleConfigurables) {
val arch = when (target) {
// TODO: LLVM 8 doesn't support arm64_32.
// We can use armv7k because they are compatible at bitcode level.
KonanTarget.WATCHOS_ARM64 -> "armv7k"
else -> configurables.arch
}
add(listOf("-arch", arch))
add(listOf("-stdlib=libc++"))
val osVersionMin = when (target) {
// Here we workaround Clang 8 limitation: macOS major version should be 10.
@@ -68,7 +58,18 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
KonanTarget.MACOS_ARM64 -> "10.16"
else -> configurables.osVersionMin
}
add(listOf("${configurables.osVersionMinFlagClang}=$osVersionMin"))
val targetArg = targetTriple.copy(
architecture = when (targetTriple.architecture) {
// TODO: LLVM 8 doesn't support arm64_32.
// We can use armv7k because they are compatible at bitcode level.
"arm64_32" -> "armv7k"
else -> targetTriple.architecture
},
os = "${targetTriple.os}$osVersionMin"
)
add(listOf("-target", targetArg.toString()))
} else {
add(listOf("-target", configurables.targetTriple.toString()))
}
val hasCustomSysroot = configurables is ZephyrConfigurables
|| configurables is WasmConfigurables
@@ -99,7 +99,6 @@ interface AppleConfigurables : Configurables, ClangFlags {
val arch get() = targetTriple.architecture
val osVersionMin get() = targetString("osVersionMin")!!
val osVersionMinFlagLd get() = targetString("osVersionMinFlagLd")!!
val osVersionMinFlagClang get() = targetString("osVersionMinFlagClang")!!
val stripFlags get() = targetList("stripFlags")
val additionalToolsDir get() = hostString("additionalToolsDir")
val absoluteAdditionalToolsDir get() = absolute(additionalToolsDir)