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:
committed by
TeamCityServer
parent
79bf2a1f14
commit
3718907c6a
@@ -110,7 +110,6 @@ stripFlags.macos_x64 = -S
|
|||||||
linkerDynamicFlags.macos_x64 = -dylib
|
linkerDynamicFlags.macos_x64 = -dylib
|
||||||
|
|
||||||
osVersionMinFlagLd.macos_x64 = -macosx_version_min
|
osVersionMinFlagLd.macos_x64 = -macosx_version_min
|
||||||
osVersionMinFlagClang.macos_x64 = -mmacosx-version-min
|
|
||||||
osVersionMin.macos_x64 = 10.11
|
osVersionMin.macos_x64 = 10.11
|
||||||
runtimeDefinitions.macos_x64 = KONAN_OSX=1 KONAN_MACOSX=1 KONAN_X64=1 KONAN_OBJC_INTEROP=1 \
|
runtimeDefinitions.macos_x64 = KONAN_OSX=1 KONAN_MACOSX=1 KONAN_X64=1 KONAN_OBJC_INTEROP=1 \
|
||||||
KONAN_CORE_SYMBOLICATION=1
|
KONAN_CORE_SYMBOLICATION=1
|
||||||
@@ -151,7 +150,6 @@ stripFlags.macos_arm64 = -S
|
|||||||
linkerDynamicFlags.macos_arm64 = -dylib
|
linkerDynamicFlags.macos_arm64 = -dylib
|
||||||
|
|
||||||
osVersionMinFlagLd.macos_arm64 = -macosx_version_min
|
osVersionMinFlagLd.macos_arm64 = -macosx_version_min
|
||||||
osVersionMinFlagClang.macos_arm64 = -mmacosx-version-min
|
|
||||||
osVersionMin.macos_arm64 = 11.0
|
osVersionMin.macos_arm64 = 11.0
|
||||||
runtimeDefinitions.macos_arm64 = KONAN_OSX=1 KONAN_MACOSX=1 KONAN_ARM64=1 KONAN_OBJC_INTEROP=1 \
|
runtimeDefinitions.macos_arm64 = KONAN_OSX=1 KONAN_MACOSX=1 KONAN_ARM64=1 KONAN_OBJC_INTEROP=1 \
|
||||||
KONAN_CORE_SYMBOLICATION=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
|
linkerKonanFlags.ios_arm32 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 14.0
|
||||||
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
|
|
||||||
osVersionMin.ios_arm32 = 9.0
|
osVersionMin.ios_arm32 = 9.0
|
||||||
# Regarding KONAN_NO_64BIT_ATOMIC:
|
# Regarding KONAN_NO_64BIT_ATOMIC:
|
||||||
# While not 100% correct here, using atomic ops on iOS armv7 requires 8 byte alignment,
|
# 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
|
linkerKonanFlags.ios_arm64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 14.0
|
||||||
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
|
|
||||||
osVersionMin.ios_arm64 = 9.0
|
osVersionMin.ios_arm64 = 9.0
|
||||||
runtimeDefinitions.ios_arm64 = KONAN_OBJC_INTEROP=1 KONAN_IOS=1 KONAN_ARM64=1 \
|
runtimeDefinitions.ios_arm64 = KONAN_OBJC_INTEROP=1 KONAN_IOS=1 KONAN_ARM64=1 \
|
||||||
KONAN_REPORT_BACKTRACE_TO_IOS_CRASH_LOG=1 MACHSIZE=64
|
KONAN_REPORT_BACKTRACE_TO_IOS_CRASH_LOG=1 MACHSIZE=64
|
||||||
@@ -249,7 +245,6 @@ linkerNoDebugFlags.ios_x64 = -S
|
|||||||
stripFlags.ios_x64 = -S
|
stripFlags.ios_x64 = -S
|
||||||
linkerDynamicFlags.ios_x64 = -dylib
|
linkerDynamicFlags.ios_x64 = -dylib
|
||||||
osVersionMinFlagLd.ios_x64 = -ios_simulator_version_min
|
osVersionMinFlagLd.ios_x64 = -ios_simulator_version_min
|
||||||
osVersionMinFlagClang.ios_x64 = -mios-simulator-version-min
|
|
||||||
osVersionMin.ios_x64 = 9.0
|
osVersionMin.ios_x64 = 9.0
|
||||||
runtimeDefinitions.ios_x64 = KONAN_OBJC_INTEROP=1 KONAN_IOS=1 KONAN_X64=1 \
|
runtimeDefinitions.ios_x64 = KONAN_OBJC_INTEROP=1 KONAN_IOS=1 KONAN_X64=1 \
|
||||||
KONAN_CORE_SYMBOLICATION=1
|
KONAN_CORE_SYMBOLICATION=1
|
||||||
@@ -275,7 +270,6 @@ linkerNoDebugFlags.tvos_x64 = -S
|
|||||||
stripFlags.tvos_x64 = -S
|
stripFlags.tvos_x64 = -S
|
||||||
linkerDynamicFlags.tvos_x64 = -dylib
|
linkerDynamicFlags.tvos_x64 = -dylib
|
||||||
osVersionMinFlagLd.tvos_x64 = -tvos_simulator_version_min
|
osVersionMinFlagLd.tvos_x64 = -tvos_simulator_version_min
|
||||||
osVersionMinFlagClang.tvos_x64 = -mtvos-simulator-version-min
|
|
||||||
osVersionMin.tvos_x64 = 9.0
|
osVersionMin.tvos_x64 = 9.0
|
||||||
runtimeDefinitions.tvos_x64 = KONAN_OBJC_INTEROP=1 KONAN_TVOS=1 KONAN_X64=1 \
|
runtimeDefinitions.tvos_x64 = KONAN_OBJC_INTEROP=1 KONAN_TVOS=1 KONAN_X64=1 \
|
||||||
KONAN_CORE_SYMBOLICATION=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
|
linkerKonanFlags.tvos_arm64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 14.0
|
||||||
linkerOptimizationFlags.tvos_arm64 = -dead_strip
|
linkerOptimizationFlags.tvos_arm64 = -dead_strip
|
||||||
osVersionMinFlagLd.tvos_arm64 = -tvos_version_min
|
osVersionMinFlagLd.tvos_arm64 = -tvos_version_min
|
||||||
osVersionMinFlagClang.tvos_arm64 = -mtvos-version-min
|
|
||||||
osVersionMin.tvos_arm64 = 9.0
|
osVersionMin.tvos_arm64 = 9.0
|
||||||
runtimeDefinitions.tvos_arm64 = KONAN_OBJC_INTEROP=1 KONAN_TVOS=1 KONAN_ARM64=1 \
|
runtimeDefinitions.tvos_arm64 = KONAN_OBJC_INTEROP=1 KONAN_TVOS=1 KONAN_ARM64=1 \
|
||||||
KONAN_REPORT_BACKTRACE_TO_IOS_CRASH_LOG=1 MACHSIZE=64
|
KONAN_REPORT_BACKTRACE_TO_IOS_CRASH_LOG=1 MACHSIZE=64
|
||||||
@@ -327,7 +320,6 @@ linkerNoDebugFlags.watchos_arm32 = -S
|
|||||||
stripFlags.watchos_arm32 = -S
|
stripFlags.watchos_arm32 = -S
|
||||||
linkerDynamicFlags.watchos_arm32 = -dylib
|
linkerDynamicFlags.watchos_arm32 = -dylib
|
||||||
osVersionMinFlagLd.watchos_arm32 = -watchos_version_min
|
osVersionMinFlagLd.watchos_arm32 = -watchos_version_min
|
||||||
osVersionMinFlagClang.watchos_arm32 = -mwatchos-version-min
|
|
||||||
osVersionMin.watchos_arm32 = 5.0
|
osVersionMin.watchos_arm32 = 5.0
|
||||||
# Regarding KONAN_NO_64BIT_ATOMIC=1: see explanation for ios_arm32 above.
|
# Regarding KONAN_NO_64BIT_ATOMIC=1: see explanation for ios_arm32 above.
|
||||||
runtimeDefinitions.watchos_arm32 = KONAN_OBJC_INTEROP=1 KONAN_WATCHOS KONAN_ARM32=1 \
|
runtimeDefinitions.watchos_arm32 = KONAN_OBJC_INTEROP=1 KONAN_WATCHOS KONAN_ARM32=1 \
|
||||||
@@ -356,7 +348,6 @@ linkerNoDebugFlags.watchos_arm64 = -S
|
|||||||
stripFlags.watchos_arm64 = -S
|
stripFlags.watchos_arm64 = -S
|
||||||
linkerDynamicFlags.watchos_arm64 = -dylib
|
linkerDynamicFlags.watchos_arm64 = -dylib
|
||||||
osVersionMinFlagLd.watchos_arm64 = -watchos_version_min
|
osVersionMinFlagLd.watchos_arm64 = -watchos_version_min
|
||||||
osVersionMinFlagClang.watchos_arm64 = -mwatchos-version-min
|
|
||||||
osVersionMin.watchos_arm64 = 5.0
|
osVersionMin.watchos_arm64 = 5.0
|
||||||
# Regarding KONAN_NO_64BIT_ATOMIC=1: see explanation for ios_arm32 above.
|
# Regarding KONAN_NO_64BIT_ATOMIC=1: see explanation for ios_arm32 above.
|
||||||
runtimeDefinitions.watchos_arm64 = KONAN_OBJC_INTEROP=1 KONAN_WATCHOS KONAN_ARM32=1 \
|
runtimeDefinitions.watchos_arm64 = KONAN_OBJC_INTEROP=1 KONAN_WATCHOS KONAN_ARM32=1 \
|
||||||
@@ -388,7 +379,6 @@ linkerNoDebugFlags.watchos_x86 = -S
|
|||||||
stripFlags.watchos_x86 = -S
|
stripFlags.watchos_x86 = -S
|
||||||
linkerDynamicFlags.watchos_x86 = -dylib
|
linkerDynamicFlags.watchos_x86 = -dylib
|
||||||
osVersionMinFlagLd.watchos_x86 = -watchos_simulator_version_min
|
osVersionMinFlagLd.watchos_x86 = -watchos_simulator_version_min
|
||||||
osVersionMinFlagClang.watchos_x86 = -mwatchos-simulator-version-min
|
|
||||||
osVersionMin.watchos_x86 = 5.0
|
osVersionMin.watchos_x86 = 5.0
|
||||||
runtimeDefinitions.watchos_x86 = KONAN_OBJC_INTEROP=1 KONAN_WATCHOS=1 KONAN_NO_64BIT_ATOMIC=1 \
|
runtimeDefinitions.watchos_x86 = KONAN_OBJC_INTEROP=1 KONAN_WATCHOS=1 KONAN_NO_64BIT_ATOMIC=1 \
|
||||||
KONAN_X86=1 KONAN_CORE_SYMBOLICATION=1
|
KONAN_X86=1 KONAN_CORE_SYMBOLICATION=1
|
||||||
@@ -414,7 +404,6 @@ linkerNoDebugFlags.watchos_x64 = -S
|
|||||||
stripFlags.watchos_x64 = -S
|
stripFlags.watchos_x64 = -S
|
||||||
linkerDynamicFlags.watchos_x64 = -dylib
|
linkerDynamicFlags.watchos_x64 = -dylib
|
||||||
osVersionMinFlagLd.watchos_x64 = -watchos_simulator_version_min
|
osVersionMinFlagLd.watchos_x64 = -watchos_simulator_version_min
|
||||||
osVersionMinFlagClang.watchos_x64 = -mwatchos-simulator-version-min
|
|
||||||
osVersionMin.watchos_x64 = 7.0
|
osVersionMin.watchos_x64 = 7.0
|
||||||
runtimeDefinitions.watchos_x64 = KONAN_OBJC_INTEROP=1 KONAN_WATCHOS=1 \
|
runtimeDefinitions.watchos_x64 = KONAN_OBJC_INTEROP=1 KONAN_WATCHOS=1 \
|
||||||
KONAN_X64=1 KONAN_CORE_SYMBOLICATION=1
|
KONAN_X64=1 KONAN_CORE_SYMBOLICATION=1
|
||||||
|
|||||||
+12
-11
@@ -49,17 +49,7 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
|
|||||||
if (configurables is GccConfigurables) {
|
if (configurables is GccConfigurables) {
|
||||||
add(listOf("--gcc-toolchain=${configurables.absoluteGccToolchain}"))
|
add(listOf("--gcc-toolchain=${configurables.absoluteGccToolchain}"))
|
||||||
}
|
}
|
||||||
if (configurables !is AppleConfigurables) {
|
|
||||||
add(listOf("-target", configurables.targetTriple.toString()))
|
|
||||||
}
|
|
||||||
if (configurables is AppleConfigurables) {
|
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++"))
|
add(listOf("-stdlib=libc++"))
|
||||||
val osVersionMin = when (target) {
|
val osVersionMin = when (target) {
|
||||||
// Here we workaround Clang 8 limitation: macOS major version should be 10.
|
// 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"
|
KonanTarget.MACOS_ARM64 -> "10.16"
|
||||||
else -> configurables.osVersionMin
|
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
|
val hasCustomSysroot = configurables is ZephyrConfigurables
|
||||||
|| configurables is WasmConfigurables
|
|| configurables is WasmConfigurables
|
||||||
|
|||||||
-1
@@ -99,7 +99,6 @@ interface AppleConfigurables : Configurables, ClangFlags {
|
|||||||
val arch get() = targetTriple.architecture
|
val arch get() = targetTriple.architecture
|
||||||
val osVersionMin get() = targetString("osVersionMin")!!
|
val osVersionMin get() = targetString("osVersionMin")!!
|
||||||
val osVersionMinFlagLd get() = targetString("osVersionMinFlagLd")!!
|
val osVersionMinFlagLd get() = targetString("osVersionMinFlagLd")!!
|
||||||
val osVersionMinFlagClang get() = targetString("osVersionMinFlagClang")!!
|
|
||||||
val stripFlags get() = targetList("stripFlags")
|
val stripFlags get() = targetList("stripFlags")
|
||||||
val additionalToolsDir get() = hostString("additionalToolsDir")
|
val additionalToolsDir get() = hostString("additionalToolsDir")
|
||||||
val absoluteAdditionalToolsDir get() = absolute(additionalToolsDir)
|
val absoluteAdditionalToolsDir get() = absolute(additionalToolsDir)
|
||||||
|
|||||||
Reference in New Issue
Block a user