[K/N] Use platform_version instead of sdk_version and os_version_min
This commit is contained in:
committed by
Space Team
parent
9cbd55aa72
commit
9daa40d2ed
@@ -77,6 +77,18 @@ llvmVersion.mingw_x64 = 11.1.0
|
||||
llvmVersion.macos_x64 = 11.1.0
|
||||
llvmVersion.macos_arm64 = 11.1.0
|
||||
|
||||
sdkVersion.ios = 16.1
|
||||
sdkVersion.macos = 13.1
|
||||
sdkVersion.tvos = 16.1
|
||||
sdkVersion.watchos = 9.1
|
||||
|
||||
minVersion.ios = 9.0
|
||||
minVersion.macos = 11.0
|
||||
minVersion.tvos = 9.0
|
||||
# 9.0 for watchos_device_arm64
|
||||
# 7.0 for watchos_x64, watchos_simulator_arm64
|
||||
minVersion.watchos = 5.0
|
||||
|
||||
toolchainDependency.mingw_x64 = msys2-mingw-w64-x86_64-2
|
||||
toolchainDependency.mingw_x86 = msys2-mingw-w64-i686-2
|
||||
toolchainDependency.linux_x64 = x86_64-unknown-linux-gnu-gcc-8.3.0-glibc-2.19-kernel-4.9-2
|
||||
@@ -122,14 +134,13 @@ clangNooptFlags.macos_x64 = -O1
|
||||
clangOptFlags.macos_x64 = -O3
|
||||
clangDebugFlags.macos_x64 = -O0
|
||||
|
||||
linkerKonanFlags.macos_x64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 13.0.0
|
||||
linkerKonanFlags.macos_x64 = -lSystem -lc++ -lobjc -framework Foundation
|
||||
linkerOptimizationFlags.macos_x64 = -dead_strip
|
||||
linkerNoDebugFlags.macos_x64 = -S
|
||||
stripFlags.macos_x64 = -S
|
||||
linkerDynamicFlags.macos_x64 = -dylib
|
||||
|
||||
osVersionMinFlagLd.macos_x64 = -macosx_version_min
|
||||
osVersionMin.macos_x64 = 10.13
|
||||
osVersionMin.macos_x64 = $minVersion.macos
|
||||
sdkVersion.macos_x64 = $sdkVersion.macos
|
||||
|
||||
dependencies.macos_x64 = \
|
||||
lldb-4-macos
|
||||
@@ -161,14 +172,13 @@ clangOptFlags.macos_arm64 = -O3
|
||||
# TODO: Is it still necessary?
|
||||
clangDebugFlags.macos_arm64 = -O0 -mllvm -fast-isel=false -mllvm -global-isel=false
|
||||
|
||||
linkerKonanFlags.macos_arm64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 13.0.0
|
||||
linkerKonanFlags.macos_arm64 = -lSystem -lc++ -lobjc -framework Foundation
|
||||
linkerOptimizationFlags.macos_arm64 = -dead_strip
|
||||
linkerNoDebugFlags.macos_arm64 = -S
|
||||
stripFlags.macos_arm64 = -S
|
||||
linkerDynamicFlags.macos_arm64 = -dylib
|
||||
|
||||
osVersionMinFlagLd.macos_arm64 = -macosx_version_min
|
||||
osVersionMin.macos_arm64 = 11.0
|
||||
osVersionMin.macos_arm64 = $minVersion.macos
|
||||
sdkVersion.macos_arm64 = $sdkVersion.macos
|
||||
|
||||
dependencies.macos_arm64 = \
|
||||
lldb-4-macos
|
||||
@@ -202,13 +212,10 @@ llvmInlineThreshold.ios_arm32 = 50
|
||||
linkerNoDebugFlags.ios_arm32 = -S
|
||||
stripFlags.ios_arm32 = -S
|
||||
linkerDynamicFlags.ios_arm32 = -dylib
|
||||
linkerKonanFlags.ios_arm32 = -lSystem -lc++ -lobjc -framework Foundation -framework UIKit -sdk_version 15.0
|
||||
linkerKonanFlags.ios_arm32 = -lSystem -lc++ -lobjc -framework Foundation -framework UIKit
|
||||
linkerOptimizationFlags.ios_arm32 = -dead_strip
|
||||
osVersionMinFlagLd.ios_arm32 = -iphoneos_version_min
|
||||
osVersionMin.ios_arm32 = 9.0
|
||||
|
||||
|
||||
|
||||
# Apple's 64-bit iOS.
|
||||
targetToolchain.macos_x64-ios_arm64 = target-toolchain-xcode_14_1_rc2
|
||||
targetToolchain.macos_arm64-ios_arm64 = target-toolchain-xcode_14_1_rc2
|
||||
@@ -230,10 +237,10 @@ clangDebugFlags.ios_arm64 = -O0 -mllvm -fast-isel=false -mllvm -global-isel=fals
|
||||
linkerNoDebugFlags.ios_arm64 = -S
|
||||
stripFlags.ios_arm64 = -S
|
||||
linkerDynamicFlags.ios_arm64 = -dylib
|
||||
linkerKonanFlags.ios_arm64 = -lSystem -lc++ -lobjc -framework Foundation -framework UIKit -sdk_version 16.1
|
||||
linkerKonanFlags.ios_arm64 = -lSystem -lc++ -lobjc -framework Foundation -framework UIKit
|
||||
linkerOptimizationFlags.ios_arm64 = -dead_strip
|
||||
osVersionMinFlagLd.ios_arm64 = -iphoneos_version_min
|
||||
osVersionMin.ios_arm64 = 9.0
|
||||
osVersionMin.ios_arm64 = $minVersion.ios
|
||||
sdkVersion.ios_arm64 = $sdkVersion.ios
|
||||
|
||||
additionalCacheFlags.ios_arm64 = -Xembed-bitcode-marker
|
||||
|
||||
@@ -252,13 +259,13 @@ clangNooptFlags.ios_x64 = -O1
|
||||
clangOptFlags.ios_x64 = -O3
|
||||
clangDebugFlags.ios_x64 = -O0
|
||||
|
||||
linkerKonanFlags.ios_x64 = -lSystem -lc++ -lobjc -framework Foundation -framework UIKit -sdk_version 16.1
|
||||
linkerKonanFlags.ios_x64 = -lSystem -lc++ -lobjc -framework Foundation -framework UIKit
|
||||
linkerOptimizationFlags.ios_x64 = -dead_strip
|
||||
linkerNoDebugFlags.ios_x64 = -S
|
||||
stripFlags.ios_x64 = -S
|
||||
linkerDynamicFlags.ios_x64 = -dylib
|
||||
osVersionMinFlagLd.ios_x64 = -ios_simulator_version_min
|
||||
osVersionMin.ios_x64 = 9.0
|
||||
osVersionMin.ios_x64 = $minVersion.ios
|
||||
sdkVersion.ios_x64 = $sdkVersion.ios
|
||||
|
||||
|
||||
# iOS simulator on Apple Silicon
|
||||
@@ -277,13 +284,13 @@ clangNooptFlags.ios_simulator_arm64 = -O1
|
||||
clangOptFlags.ios_simulator_arm64 = -O3
|
||||
clangDebugFlags.ios_simulator_arm64 = -O0 -mllvm -fast-isel=false -mllvm -global-isel=false
|
||||
|
||||
linkerKonanFlags.ios_simulator_arm64 = -lSystem -lc++ -lobjc -framework Foundation -framework UIKit -sdk_version 16.1
|
||||
linkerKonanFlags.ios_simulator_arm64 = -lSystem -lc++ -lobjc -framework Foundation -framework UIKit
|
||||
linkerOptimizationFlags.ios_simulator_arm64 = -dead_strip
|
||||
linkerNoDebugFlags.ios_simulator_arm64 = -S
|
||||
stripFlags.ios_simulator_arm64 = -S
|
||||
linkerDynamicFlags.ios_simulator_arm64 = -dylib
|
||||
osVersionMinFlagLd.ios_simulator_arm64 = -ios_simulator_version_min
|
||||
osVersionMin.ios_simulator_arm64 = 9.0
|
||||
osVersionMin.ios_simulator_arm64 = $minVersion.ios
|
||||
sdkVersion.ios_simulator_arm64 = $sdkVersion.ios
|
||||
|
||||
|
||||
# Apple's tvOS simulator.
|
||||
@@ -301,13 +308,13 @@ clangNooptFlags.tvos_x64 = -O1
|
||||
clangOptFlags.tvos_x64 = -O3
|
||||
clangDebugFlags.tvos_x64 = -O0
|
||||
|
||||
linkerKonanFlags.tvos_x64 = -lSystem -lc++ -lobjc -framework Foundation -framework UIKit -sdk_version 16.1
|
||||
linkerKonanFlags.tvos_x64 = -lSystem -lc++ -lobjc -framework Foundation -framework UIKit
|
||||
linkerOptimizationFlags.tvos_x64 = -dead_strip
|
||||
linkerNoDebugFlags.tvos_x64 = -S
|
||||
stripFlags.tvos_x64 = -S
|
||||
linkerDynamicFlags.tvos_x64 = -dylib
|
||||
osVersionMinFlagLd.tvos_x64 = -tvos_simulator_version_min
|
||||
osVersionMin.tvos_x64 = 9.0
|
||||
osVersionMin.tvos_x64 = $minVersion.tvos
|
||||
sdkVersion.tvos_x64 = $sdkVersion.tvos
|
||||
|
||||
|
||||
# Apple's tvOS simulator.
|
||||
@@ -325,13 +332,13 @@ clangNooptFlags.tvos_simulator_arm64 = -O1
|
||||
clangOptFlags.tvos_simulator_arm64 = -O3
|
||||
clangDebugFlags.tvos_simulator_arm64 = -O0 -mllvm -fast-isel=false -mllvm -global-isel=false
|
||||
|
||||
linkerKonanFlags.tvos_simulator_arm64 = -lSystem -lc++ -lobjc -framework Foundation -framework UIKit -sdk_version 16.1
|
||||
linkerKonanFlags.tvos_simulator_arm64 = -lSystem -lc++ -lobjc -framework Foundation -framework UIKit
|
||||
linkerOptimizationFlags.tvos_simulator_arm64 = -dead_strip
|
||||
linkerNoDebugFlags.tvos_simulator_arm64 = -S
|
||||
stripFlags.tvos_simulator_arm64 = -S
|
||||
linkerDynamicFlags.tvos_simulator_arm64 = -dylib
|
||||
osVersionMinFlagLd.tvos_simulator_arm64 = -tvos_simulator_version_min
|
||||
osVersionMin.tvos_simulator_arm64 = 9.0
|
||||
osVersionMin.tvos_simulator_arm64 = $minVersion.tvos
|
||||
sdkVersion.tvos_simulator_arm64 = $sdkVersion.tvos
|
||||
|
||||
|
||||
# Apple's 64-bit tvOS.
|
||||
@@ -352,10 +359,10 @@ clangDebugFlags.tvos_arm64 = -O0 -mllvm -fast-isel=false -mllvm -global-isel=fal
|
||||
linkerNoDebugFlags.tvos_arm64 = -S
|
||||
stripFlags.tvos_arm64 = -S
|
||||
linkerDynamicFlags.tvos_arm64 = -dylib
|
||||
linkerKonanFlags.tvos_arm64 = -lSystem -lc++ -lobjc -framework Foundation -framework UIKit -sdk_version 16.1
|
||||
linkerKonanFlags.tvos_arm64 = -lSystem -lc++ -lobjc -framework Foundation -framework UIKit
|
||||
linkerOptimizationFlags.tvos_arm64 = -dead_strip
|
||||
osVersionMinFlagLd.tvos_arm64 = -tvos_version_min
|
||||
osVersionMin.tvos_arm64 = 9.0
|
||||
osVersionMin.tvos_arm64 = $minVersion.tvos
|
||||
sdkVersion.tvos_arm64 = $sdkVersion.tvos
|
||||
|
||||
|
||||
# watchOS armv7k
|
||||
@@ -374,13 +381,13 @@ clangOptFlags.watchos_arm32 = -O3
|
||||
clangDebugFlags.watchos_arm32 = -O0
|
||||
llvmInlineThreshold.watchos_arm32 = 50
|
||||
|
||||
linkerKonanFlags.watchos_arm32 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 9.1
|
||||
linkerKonanFlags.watchos_arm32 = -lSystem -lc++ -lobjc -framework Foundation
|
||||
linkerOptimizationFlags.watchos_arm32 = -dead_strip
|
||||
linkerNoDebugFlags.watchos_arm32 = -S
|
||||
stripFlags.watchos_arm32 = -S
|
||||
linkerDynamicFlags.watchos_arm32 = -dylib
|
||||
osVersionMinFlagLd.watchos_arm32 = -watchos_version_min
|
||||
osVersionMin.watchos_arm32 = 5.0
|
||||
osVersionMin.watchos_arm32 = $minVersion.watchos
|
||||
sdkVersion.watchos_arm32 = $sdkVersion.watchos
|
||||
|
||||
|
||||
# watchOS arm64_32
|
||||
@@ -396,13 +403,13 @@ clangNooptFlags.watchos_arm64 = -O1
|
||||
clangOptFlags.watchos_arm64 = -O3
|
||||
clangDebugFlags.watchos_arm64 = -O0 -mllvm -fast-isel=false -mllvm -global-isel=false
|
||||
|
||||
linkerKonanFlags.watchos_arm64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 9.1
|
||||
linkerKonanFlags.watchos_arm64 = -lSystem -lc++ -lobjc -framework Foundation
|
||||
linkerOptimizationFlags.watchos_arm64 = -dead_strip
|
||||
linkerNoDebugFlags.watchos_arm64 = -S
|
||||
stripFlags.watchos_arm64 = -S
|
||||
linkerDynamicFlags.watchos_arm64 = -dylib
|
||||
osVersionMinFlagLd.watchos_arm64 = -watchos_version_min
|
||||
osVersionMin.watchos_arm64 = 5.0
|
||||
sdkVersion.watchos_arm64 = $sdkVersion.watchos
|
||||
|
||||
# watchOS arm64
|
||||
targetToolchain.macos_x64-watchos_device_arm64 = target-toolchain-xcode_14_1_rc2
|
||||
@@ -416,13 +423,13 @@ clangNooptFlags.watchos_device_arm64 = -O1
|
||||
clangOptFlags.watchos_device_arm64 = -O3
|
||||
clangDebugFlags.watchos_device_arm64 = -O0 -mllvm -fast-isel=false -mllvm -global-isel=false
|
||||
|
||||
linkerKonanFlags.watchos_device_arm64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 9.1
|
||||
linkerKonanFlags.watchos_device_arm64 = -lSystem -lc++ -lobjc -framework Foundation
|
||||
linkerOptimizationFlags.watchos_device_arm64 = -dead_strip
|
||||
linkerNoDebugFlags.watchos_device_arm64 = -S
|
||||
stripFlags.watchos_device_arm64 = -S
|
||||
linkerDynamicFlags.watchos_device_arm64 = -dylib
|
||||
osVersionMinFlagLd.watchos_device_arm64 = -watchos_version_min
|
||||
osVersionMin.watchos_device_arm64 = 9.0
|
||||
sdkVersion.watchos_device_arm64 = $sdkVersion.watchos
|
||||
|
||||
|
||||
# Apple's watchOS i386 simulator.
|
||||
@@ -441,15 +448,13 @@ clangNooptFlags.watchos_x86 = -O1
|
||||
clangOptFlags.watchos_x86 = -O3
|
||||
clangDebugFlags.watchos_x86 = -O0
|
||||
|
||||
linkerKonanFlags.watchos_x86 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 8.0
|
||||
linkerKonanFlags.watchos_x86 = -lSystem -lc++ -lobjc -framework Foundation
|
||||
linkerOptimizationFlags.watchos_x86 = -dead_strip
|
||||
linkerNoDebugFlags.watchos_x86 = -S
|
||||
stripFlags.watchos_x86 = -S
|
||||
linkerDynamicFlags.watchos_x86 = -dylib
|
||||
osVersionMinFlagLd.watchos_x86 = -watchos_simulator_version_min
|
||||
osVersionMin.watchos_x86 = 5.0
|
||||
|
||||
|
||||
# watchOS x86_64 simulator.
|
||||
targetToolchain.macos_x64-watchos_x64 = target-toolchain-xcode_14_1_rc2
|
||||
targetToolchain.macos_arm64-watchos_x64 = target-toolchain-xcode_14_1_rc2
|
||||
@@ -465,13 +470,13 @@ clangNooptFlags.watchos_x64 = -O1
|
||||
clangOptFlags.watchos_x64 = -O3
|
||||
clangDebugFlags.watchos_x64 = -O0
|
||||
|
||||
linkerKonanFlags.watchos_x64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 9.1
|
||||
linkerKonanFlags.watchos_x64 = -lSystem -lc++ -lobjc -framework Foundation
|
||||
linkerOptimizationFlags.watchos_x64 = -dead_strip
|
||||
linkerNoDebugFlags.watchos_x64 = -S
|
||||
stripFlags.watchos_x64 = -S
|
||||
linkerDynamicFlags.watchos_x64 = -dylib
|
||||
osVersionMinFlagLd.watchos_x64 = -watchos_simulator_version_min
|
||||
osVersionMin.watchos_x64 = 7.0
|
||||
sdkVersion.watchos_x64 = $sdkVersion.watchos
|
||||
|
||||
|
||||
# watchOS Apple Silicon simulator.
|
||||
@@ -489,13 +494,13 @@ clangNooptFlags.watchos_simulator_arm64 = -O1
|
||||
clangOptFlags.watchos_simulator_arm64 = -O3
|
||||
clangDebugFlags.watchos_simulator_arm64 = -O0 -mllvm -fast-isel=false -mllvm -global-isel=false
|
||||
|
||||
linkerKonanFlags.watchos_simulator_arm64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 9.1
|
||||
linkerKonanFlags.watchos_simulator_arm64 = -lSystem -lc++ -lobjc -framework Foundation
|
||||
linkerOptimizationFlags.watchos_simulator_arm64 = -dead_strip
|
||||
linkerNoDebugFlags.watchos_simulator_arm64 = -S
|
||||
stripFlags.watchos_simulator_arm64 = -S
|
||||
linkerDynamicFlags.watchos_simulator_arm64 = -dylib
|
||||
osVersionMinFlagLd.watchos_simulator_arm64 = -watchos_simulator_version_min
|
||||
osVersionMin.watchos_simulator_arm64 = 7.0
|
||||
sdkVersion.watchos_simulator_arm64 = $sdkVersion.watchos
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ interface ConfigurablesWithEmulator : Configurables {
|
||||
interface AppleConfigurables : Configurables, ClangFlags {
|
||||
val arch get() = targetTriple.architecture
|
||||
val osVersionMin get() = targetString("osVersionMin")!!
|
||||
val osVersionMinFlagLd get() = targetString("osVersionMinFlagLd")!!
|
||||
val sdkVersion get() = targetString("sdkVersion")!!
|
||||
val stripFlags get() = targetList("stripFlags")
|
||||
val additionalToolsDir get() = hostString("additionalToolsDir")
|
||||
val absoluteAdditionalToolsDir get() = absolute(additionalToolsDir)
|
||||
|
||||
@@ -202,10 +202,6 @@ class MacOSBasedLinker(targetProperties: AppleConfigurables)
|
||||
return if (dir != null) "$dir/libclang_rt.$mangledLibraryName$prefix$suffix$extension" else null
|
||||
}
|
||||
|
||||
private val osVersionMinFlags: List<String> by lazy {
|
||||
listOf(osVersionMinFlagLd, osVersionMin + ".0")
|
||||
}
|
||||
|
||||
override fun filterStaticLibraries(binaries: List<String>) = binaries.filter { it.isUnixStaticLib }
|
||||
|
||||
// Note that may break in case of 32-bit Mach-O. See KT-37368.
|
||||
@@ -218,6 +214,28 @@ class MacOSBasedLinker(targetProperties: AppleConfigurables)
|
||||
+listOf("-o", output)
|
||||
}.let(::listOf)
|
||||
|
||||
/**
|
||||
* Construct -platform_version ld64 argument which contains info about
|
||||
* - SDK
|
||||
* - minimal OS version
|
||||
* - SDK version
|
||||
*/
|
||||
private fun platformVersionFlags(): List<String> = mutableListOf<String>().apply {
|
||||
add("-platform_version")
|
||||
|
||||
val platformName = when (target.family) {
|
||||
Family.OSX -> "macos"
|
||||
Family.IOS -> "ios"
|
||||
Family.TVOS -> "tvos"
|
||||
Family.WATCHOS -> "watchos"
|
||||
else -> error("Unexpected Apple target family: ${target.family}")
|
||||
} + if (targetTriple.isSimulator) "-simulator" else ""
|
||||
add(platformName)
|
||||
|
||||
add("$osVersionMin.0")
|
||||
add(sdkVersion)
|
||||
}.toList()
|
||||
|
||||
override fun finalLinkCommands(objectFiles: List<ObjectFile>, executable: ExecutableFile,
|
||||
libraries: List<String>, linkerArgs: List<String>,
|
||||
optimize: Boolean, debug: Boolean, kind: LinkerOutputKind,
|
||||
@@ -242,7 +260,7 @@ class MacOSBasedLinker(targetProperties: AppleConfigurables)
|
||||
result += Command(linker).apply {
|
||||
+"-demangle"
|
||||
+listOf("-dynamic", "-arch", arch)
|
||||
+osVersionMinFlags
|
||||
+platformVersionFlags()
|
||||
+listOf("-syslibroot", absoluteTargetSysRoot, "-o", executable)
|
||||
+objectFiles
|
||||
if (optimize) +linkerOptimizationFlags
|
||||
|
||||
Reference in New Issue
Block a user