[K/N] AArch64 watchOS target

This commit is contained in:
Sergey Bogolepov
2022-09-06 18:57:29 +03:00
committed by Space
parent 75e1effbc5
commit 0b4a4ca42b
6 changed files with 31 additions and 1 deletions
+20
View File
@@ -405,6 +405,26 @@ linkerDynamicFlags.watchos_arm64 = -dylib
osVersionMinFlagLd.watchos_arm64 = -watchos_version_min
osVersionMin.watchos_arm64 = 5.0
# watchOS arm64
targetToolchain.macos_x64-watchos_device_arm64 = target-toolchain-xcode_14_rc
targetToolchain.macos_arm64-watchos_device_arm64 = target-toolchain-xcode_14_rc
targetTriple.watchos_device_arm64 = arm64-apple-watchos
targetSysRoot.watchos_device_arm64 = target-sysroot-xcode_14_rc-watchos
targetCpu.watchos_device_arm64 = apple-a7
clangFlags.watchos_device_arm64 = -cc1 -emit-obj -disable-llvm-passes -x ir
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.0
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
# Apple's watchOS i386 simulator.
targetToolchain.macos_x64-watchos_x86 = target-toolchain-xcode_14_rc
@@ -21,6 +21,7 @@ excludedFunctions = acl_valid_link_np pfctlinput profil unwhiteout zopen getdire
getcontext makecontext setcontext swapcontext
excludedFunctions.watchos_arm32 = longjmperror
excludedFunctions.watchos_arm64 = longjmperror
excludedFunctions.watchos_device_arm64 = longjmperror
excludedFunctions.watchos_simulator_arm64 = longjmperror \
openat_dprotected_np mkfifoat mknodat openat_authenticated_np
excludedFunctions.watchos_x64 = openat_dprotected_np mkfifoat mknodat openat_authenticated_np
@@ -5,5 +5,6 @@
-target watchos_arm64 \
-target watchos_x64 \
-target watchos_simulator_arm64 \
-target watchos_device_arm64 \
*.def
@@ -63,6 +63,10 @@ fun KonanTarget.supportsMimallocAllocator(): Boolean =
is KonanTarget.ANDROID_X86, is KonanTarget.ANDROID_ARM32 -> false // aren't tested.
is KonanTarget.LINUX_MIPS32, is KonanTarget.LINUX_MIPSEL32 -> false // need linking with libatomic.
is KonanTarget.WASM32, is KonanTarget.ZEPHYR -> false // likely not supported
// Funny thing is we can neither access WATCHOS_DEVICE_ARM64, nor omit it explicitly due to the
// build's quirks. Workaround by using else clause.
// TODO: Add explicit WATCHOS_DEVICE_ARM64 after compiler update.
else -> false
}
fun KonanTarget.supportsLibBacktrace(): Boolean =
@@ -71,6 +75,7 @@ fun KonanTarget.supportsLibBacktrace(): Boolean =
(this.family == Family.LINUX && this.architecture !in listOf(Architecture.MIPS32, Architecture.MIPSEL32)) ||
this.family == Family.ANDROID
// TODO: Add explicit WATCHOS_DEVICE_ARM64 after compiler update.
fun KonanTarget.supportsCoreSymbolication(): Boolean =
this in listOf(
KonanTarget.MACOS_X64, KonanTarget.MACOS_ARM64, KonanTarget.IOS_X64,
@@ -117,6 +122,7 @@ fun KonanTarget.supports64BitMulOverflow(): Boolean = when (this) {
else -> true
}
// TODO: Add explicit WATCHOS_DEVICE_ARM64 after compiler update.
fun KonanTarget.supportsIosCrashLog(): Boolean = when (this) {
KonanTarget.IOS_ARM32 -> true
KonanTarget.IOS_ARM64 -> true
@@ -73,6 +73,7 @@ open class HostManager(
WATCHOS_X86,
WATCHOS_X64,
WATCHOS_SIMULATOR_ARM64,
WATCHOS_DEVICE_ARM64,
TVOS_ARM64,
TVOS_X64,
TVOS_SIMULATOR_ARM64,
@@ -22,6 +22,7 @@ sealed class KonanTarget(override val name: String, val family: Family, val arch
object WATCHOS_X86 : KonanTarget("watchos_x86", Family.WATCHOS, Architecture.X86)
object WATCHOS_X64 : KonanTarget("watchos_x64", Family.WATCHOS, Architecture.X64)
object WATCHOS_SIMULATOR_ARM64 : KonanTarget("watchos_simulator_arm64", Family.WATCHOS, Architecture.ARM64)
object WATCHOS_DEVICE_ARM64 : KonanTarget("watchos_device_arm64", Family.WATCHOS, Architecture.ARM64)
object TVOS_ARM64 : KonanTarget("tvos_arm64", Family.TVOS, Architecture.ARM64)
object TVOS_X64 : KonanTarget("tvos_x64", Family.TVOS, Architecture.X64)
object TVOS_SIMULATOR_ARM64 : KonanTarget("tvos_simulator_arm64", Family.TVOS, Architecture.ARM64)
@@ -49,7 +50,7 @@ sealed class KonanTarget(override val name: String, val family: Family, val arch
ANDROID_X64, ANDROID_X86, ANDROID_ARM32, ANDROID_ARM64,
IOS_ARM32, IOS_ARM64, IOS_X64, IOS_SIMULATOR_ARM64,
WATCHOS_ARM32, WATCHOS_ARM64, WATCHOS_X86, WATCHOS_X64,
WATCHOS_SIMULATOR_ARM64,
WATCHOS_SIMULATOR_ARM64, WATCHOS_DEVICE_ARM64,
TVOS_ARM64, TVOS_X64, TVOS_SIMULATOR_ARM64,
LINUX_X64,
MINGW_X86, MINGW_X64,