[watchOS][targets] Add support for 32bit Apple Watch.

This commit is contained in:
Sergey Bogolepov
2019-05-15 19:08:19 +07:00
committed by Sergey Bogolepov
parent be846bd1f5
commit bcaf986e3a
16 changed files with 171 additions and 45 deletions
@@ -260,14 +260,26 @@ internal fun Type.isStret(target: KonanTarget): Boolean {
else -> false
}
KonanTarget.IOS_ARM32 -> when (unwrappedType) {
// See: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/LowLevelABI/130-IA-32_Function_Calling_Conventions/IA32.html#//apple_ref/doc/uid/TP40002492-SW5
// Structures 1 or 2 bytes in size are placed in EAX.
// Structures 4 or 8 bytes in size are placed in: EAX and EDX.
// Structures of other sizes are placed at the address supplied by the caller.
KonanTarget.WATCHOS_X86 -> when (unwrappedType) {
is RecordType -> {
val size = unwrappedType.decl.def!!.size
val canBePassedInRegisters = (size == 1L || size == 2L || size == 4L || size == 8L)
return !canBePassedInRegisters
}
else -> false
}
KonanTarget.IOS_ARM32,
KonanTarget.WATCHOS_ARM32 -> when (unwrappedType) {
is RecordType -> !this.isIntegerLikeType()
else -> false
}
KonanTarget.WATCHOS_ARM64 -> TODO("")
else -> error(target)
else -> error("Cannot generate ObjC stubs for $target.")
}
}
@@ -53,6 +53,9 @@ private class LlvmPipelineConfiguration(context: Context) {
KonanTarget.IOS_X64 -> "core2"
KonanTarget.TVOS_ARM64 -> "cyclone"
KonanTarget.TVOS_X64 -> "core2"
KonanTarget.WATCHOS_X86 -> "i386"
KonanTarget.WATCHOS_X64 -> "core2"
KonanTarget.WATCHOS_ARM32 -> "cortex-a7"
KonanTarget.LINUX_X64 -> "x86-64"
KonanTarget.MINGW_X86 -> "pentium4"
KonanTarget.MINGW_X64 -> "x86-64"
@@ -65,10 +68,7 @@ private class LlvmPipelineConfiguration(context: Context) {
KonanTarget.ANDROID_X86 -> "i686"
KonanTarget.LINUX_MIPS32 -> "mips32r2"
KonanTarget.LINUX_MIPSEL32 -> "mips32r2"
KonanTarget.WATCHOS_ARM64 -> TODO("implement me")
KonanTarget.WATCHOS_ARM32 -> TODO("implement me")
KonanTarget.WATCHOS_X64 -> TODO("implement me")
KonanTarget.WATCHOS_X86 -> TODO("implement me")
KonanTarget.WATCHOS_ARM64,
KonanTarget.WASM32,
is KonanTarget.ZEPHYR -> error("There is no support for ${target.name} target yet.")
}
@@ -637,7 +637,7 @@ private fun KotlinStubs.getNamedCStructType(kotlinClass: IrClass): CType? {
// TODO: rework Boolean support.
// TODO: What should be used on watchOS?
private fun cBoolType(target: KonanTarget): CType? = when (target.family) {
Family.IOS, Family.TVOS -> CTypes.C99Bool
Family.IOS, Family.TVOS, Family.WATCHOS -> CTypes.C99Bool
else -> CTypes.signedChar
}
@@ -154,6 +154,8 @@ internal class ObjCExport(val context: Context, symbolTable: SymbolTable) {
KonanTarget.TVOS_ARM64 -> "AppleTVOS"
KonanTarget.TVOS_X64 -> "AppleTVSimulator"
KonanTarget.MACOS_X64 -> "MacOSX"
KonanTarget.WATCHOS_ARM32, KonanTarget.WATCHOS_ARM64 -> "WatchOS"
KonanTarget.WATCHOS_X86, KonanTarget.WATCHOS_X64 -> "WatchSimulator"
else -> error(target)
}
val properties = context.config.platform.configurables as AppleConfigurables
@@ -22,6 +22,7 @@ import org.gradle.api.Project
import org.gradle.process.ExecResult
import org.gradle.process.ExecSpec
import org.gradle.util.ConfigureUtil
import org.jetbrains.kotlin.konan.target.Architecture
import org.jetbrains.kotlin.konan.target.KonanTarget
import org.jetbrains.kotlin.konan.target.Xcode
@@ -84,8 +85,10 @@ fun create(project: Project): ExecutorService {
}
}
KonanTarget.IOS_X64 -> simulator(project)
KonanTarget.TVOS_X64 -> simulator(project)
KonanTarget.IOS_X64,
KonanTarget.TVOS_X64,
KonanTarget.WATCHOS_X86,
KonanTarget.WATCHOS_X64 -> simulator(project)
else -> {
if (project.hasProperty("remote")) sshExecutor(project)
@@ -220,6 +223,8 @@ private fun simulator(project: Project) : ExecutorService = object : ExecutorSer
val sdk = when (target) {
KonanTarget.TVOS_X64 -> Xcode.current.appletvsimulatorSdk
KonanTarget.IOS_X64 -> Xcode.current.iphonesimulatorSdk
KonanTarget.WATCHOS_X64,
KonanTarget.WATCHOS_X86 -> Xcode.current.watchsimulatorSdk
else -> error("Unexpected simulation target: $target")
}
val out = ByteArrayOutputStream()
@@ -234,13 +239,21 @@ private fun simulator(project: Project) : ExecutorService = object : ExecutorSer
private val device = project.findProperty("iosDevice")?.toString() ?: when (target) {
KonanTarget.TVOS_X64 -> "Apple TV 4K"
KonanTarget.IOS_X64 -> "iPhone 6"
KonanTarget.WATCHOS_X64,
KonanTarget.WATCHOS_X86 -> "Apple Watch Series 4 - 40mm"
else -> error("Unexpected simulation target: $target")
}
private val archSpecification = when (target.architecture) {
Architecture.X86 -> listOf("-a", "i386")
Architecture.X64 -> listOf() // x86-64 is used by default.
else -> error("${target.architecture} can't be used in simulator.")
}.toTypedArray()
override fun execute(action: Action<in ExecSpec>): ExecResult? = project.exec { execSpec ->
action.execute(execSpec)
// Starting Xcode 11 `simctl spawn` requires explicit `--standalone` flag.
with(execSpec) { commandLine = listOf(simctl, "spawn", "--standalone", device, executable) + args }
with(execSpec) { commandLine = listOf(simctl, "spawn", "--standalone", *archSpecification, device, executable) + args }
}
}
@@ -100,11 +100,14 @@ open class FrameworkTest : DefaultTask() {
KonanTarget.TVOS_X64 -> "appletvsimulator"
KonanTarget.TVOS_ARM64 -> "appletvos"
KonanTarget.MACOS_X64 -> "macosx"
KonanTarget.WATCHOS_ARM64 -> "watchos"
KonanTarget.WATCHOS_X64, KonanTarget.WATCHOS_X86 -> "watchsimulator"
else -> throw IllegalStateException("Test target $target is not supported")
}
val simulatorPath = when (target) {
KonanTarget.TVOS_X64,
KonanTarget.IOS_X64,
KonanTarget.WATCHOS_X86,
KonanTarget.WATCHOS_X64 -> Xcode.current.getLatestSimulatorRuntimeFor(target, configs.osVersionMin)?.bundlePath?.let {
"$it/Contents/Resources/RuntimeRoot/usr/lib/swift"
}
@@ -120,7 +123,10 @@ open class FrameworkTest : DefaultTask() {
// Hopefully, lexicographical comparison will work.
val newMacos = System.getProperty("os.version").compareTo("10.14.4") >= 0
val dyldLibraryPathKey = when (target) {
KonanTarget.IOS_X64, KonanTarget.TVOS_X64 -> "SIMCTL_CHILD_DYLD_LIBRARY_PATH"
KonanTarget.IOS_X64,
KonanTarget.WATCHOS_X86,
KonanTarget.WATCHOS_X64,
KonanTarget.TVOS_X64 -> "SIMCTL_CHILD_DYLD_LIBRARY_PATH"
else -> "DYLD_LIBRARY_PATH"
}
return if (newMacos && target == KonanTarget.MACOS_X64) emptyMap() else mapOf(
@@ -139,7 +145,7 @@ open class FrameworkTest : DefaultTask() {
|stdout: $stdOut
|stderr: $stdErr
""".trimMargin())
check(exitCode == 0) { "Execution failed with exit code: $exitCode "}
check(exitCode == 0) { "Execution failed with exit code: $exitCode " }
}
private fun validateBitcodeEmbedding(frameworkBinary: String) {
@@ -153,10 +159,16 @@ open class FrameworkTest : DefaultTask() {
val bitcodeBuildTool = "${configurables.absoluteAdditionalToolsDir}/bin/bitcode-build-tool"
val ldPath = "${configurables.absoluteTargetToolchain}/usr/bin/ld"
val sdk = when (testTarget) {
KonanTarget.IOS_X64, KonanTarget.TVOS_X64 -> return // bitcode-build-tool doesn't support simulators.
KonanTarget.IOS_ARM64, KonanTarget.IOS_ARM32 -> Xcode.current.iphoneosSdk
KonanTarget.IOS_X64,
KonanTarget.TVOS_X64,
KonanTarget.WATCHOS_X86,
KonanTarget.WATCHOS_X64 -> return // bitcode-build-tool doesn't support simulators.
KonanTarget.IOS_ARM64,
KonanTarget.IOS_ARM32 -> Xcode.current.iphoneosSdk
KonanTarget.MACOS_X64 -> Xcode.current.macosxSdk
KonanTarget.TVOS_ARM64 -> Xcode.current.appletvosSdk
KonanTarget.WATCHOS_ARM32,
KonanTarget.WATCHOS_ARM64 -> Xcode.current.watchosSdk
else -> error("Cannot validate bitcode for test target $testTarget")
}
@@ -218,6 +218,8 @@ fun compileSwift(project: Project, target: KonanTarget, sources: List<String>, o
KonanTarget.TVOS_X64 -> "x86_64-apple-tvos" + configs.osVersionMin
KonanTarget.TVOS_ARM64 -> "arm64_64-apple-tvos" + configs.osVersionMin
KonanTarget.MACOS_X64 -> "x86_64-apple-macosx" + configs.osVersionMin
KonanTarget.WATCHOS_X86 -> "i386-apple-watchos" + configs.osVersionMin
KonanTarget.WATCHOS_X64 -> "x86_64-apple-watchos" + configs.osVersionMin
else -> throw IllegalStateException("Test target $target is not supported")
}
@@ -33,7 +33,7 @@ private fun Xcode.getSimulatorRuntimeDescriptors(): List<SimulatorRuntimeDescrip
fun Xcode.getLatestSimulatorRuntimeFor(target: KonanTarget, osMinVersion: String): SimulatorRuntimeDescriptor? {
val osName = when (target) {
KonanTarget.IOS_X64 -> "iOS"
KonanTarget.WATCHOS_X64 -> "watchOS"
KonanTarget.WATCHOS_X64, KonanTarget.WATCHOS_X86 -> "watchOS"
KonanTarget.TVOS_X64 -> "tvOS"
else -> error("Unexpected simulator target: $target")
}
+52 -2
View File
@@ -161,7 +161,6 @@ target-sysroot-9-tvos_x64.default = \
remote:internal
arch.tvos_x64 = x86_64
entrySelector.tvos_x64 = -alias _Konan_main _main
targetSysRoot.tvos_x64 = target-sysroot-9-tvos_x64
clangFlags.tvos_x64 = -cc1 -emit-obj -disable-llvm-passes -x ir
@@ -188,7 +187,6 @@ target-sysroot-9-tvos_arm64.default = \
remote:internal
arch.tvos_arm64 = arm64
entrySelector.tvos_arm64 = -alias _Konan_main _main
targetSysRoot.tvos_arm64 = target-sysroot-9-tvos_arm64
clangFlags.tvos_arm64 = -cc1 -emit-obj -disable-llvm-passes -x ir
@@ -205,6 +203,58 @@ osVersionMinFlagLd.tvos_arm64 = -tvos_version_min
osVersionMinFlagClang.tvos_arm64 = -mtvos-version-min
osVersionMin.tvos_arm64 = 9.0
# watchOS armv7k
targetToolchain.macos_x64-watchos_arm32 = target-toolchain-9-macos_x64
dependencies.macos_x64-watchos_arm32 = \
libffi-3.2.1-3-darwin-macos \
clang-llvm-6.0.1-darwin-macos
target-sysroot-9-watchos_arm32.default = \
remote:internal
arch.watchos_arm32 = armv7k
targetSysRoot.watchos_arm32 = target-sysroot-9-watchos_arm32
clangFlags.watchos_arm32 = -cc1 -emit-obj -disable-llvm-passes -x ir
clangNooptFlags.watchos_arm32 = -O1
clangOptFlags.watchos_arm32 = -O3
clangDebugFlags.watchos_arm32 = -O0
clangDynamicFlags.watchos_arm32 =
linkerKonanFlags.watchos_arm32 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 5.0
linkerOptimizationFlags.watchos_arm32 = -dead_strip
linkerNoDebugFlags.watchos_arm32 = -S
linkerDynamicFlags.watchos_arm32 = -dylib
osVersionMinFlagLd.watchos_arm32 = -watchos_version_min
osVersionMinFlagClang.watchos_arm32 = -mwatchos-version-min
osVersionMin.watchos_arm32 = 5.0
# Apple's watchOS i386 simulator.
targetToolchain.macos_x64-watchos_x86 = target-toolchain-9-macos_x64
dependencies.macos_x64-watchos_x86 = \
libffi-3.2.1-3-darwin-macos \
clang-llvm-6.0.1-darwin-macos
target-sysroot-9-watchos_x86.default = \
remote:internal
arch.watchos_x86 = i386
targetSysRoot.watchos_x86 = target-sysroot-9-watchos_x86
clangFlags.watchos_x86 = -cc1 -emit-obj -disable-llvm-passes -x ir
clangNooptFlags.watchos_x86 = -O1
clangOptFlags.watchos_x86 = -O3
clangDebugFlags.watchos_x86 = -O0
clangDynamicFlags.watchos_x86 =
linkerKonanFlags.watchos_x86 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 5.0
linkerOptimizationFlags.watchos_x86 = -dead_strip
linkerNoDebugFlags.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
# Linux x86-64.
llvmHome.linux_x64 = clang-llvm-6.0.1-linux-x86-64
libffiDir.linux_x64 = libffi-3.2.1-2-linux-x86-64
@@ -37,6 +37,8 @@ class AppleConfigurablesImpl(
KonanTarget.IOS_X64 -> xcodePartsProvider.xcode.iphonesimulatorSdk
KonanTarget.TVOS_ARM64 -> xcodePartsProvider.xcode.appletvosSdk
KonanTarget.TVOS_X64 -> xcodePartsProvider.xcode.appletvsimulatorSdk
KonanTarget.WATCHOS_ARM64, KonanTarget.WATCHOS_ARM32 -> xcodePartsProvider.xcode.watchosSdk
KonanTarget.WATCHOS_X64, KonanTarget.WATCHOS_X86 -> xcodePartsProvider.xcode.watchsimulatorSdk
else -> error(target)
}
XcodePartsProvider.InternalServer -> absolute(sdkDependency)
@@ -88,14 +88,23 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
KonanTarget.IOS_ARM64 ->
listOf("-stdlib=libc++", "-arch", "arm64", "-isysroot", absoluteTargetSysRoot, "-miphoneos-version-min=$osVersionMin")
KonanTarget.IOS_X64 ->
listOf("-stdlib=libc++", "-isysroot", absoluteTargetSysRoot, "-miphoneos-version-min=$osVersionMin")
KonanTarget.TVOS_ARM64 ->
listOf("-stdlib=libc++", "-arch", "arm64", "-isysroot", absoluteTargetSysRoot, "-mtvos-version-min=$osVersionMin")
KonanTarget.TVOS_X64 ->
listOf("-stdlib=libc++", "-isysroot", absoluteTargetSysRoot, "-mtvos-simulator-version-min=$osVersionMin")
KonanTarget.IOS_X64 ->
listOf("-stdlib=libc++", "-isysroot", absoluteTargetSysRoot, "-miphoneos-version-min=$osVersionMin")
KonanTarget.WATCHOS_ARM32 ->
listOf("-stdlib=libc++", "-arch", "armv7k", "-isysroot", absoluteTargetSysRoot, "-mwatchos-version-min=$osVersionMin")
KonanTarget.WATCHOS_X86 ->
listOf("-stdlib=libc++", "-arch", "i386", "-isysroot", absoluteTargetSysRoot, "-mwatchos-simulator-version-min=$osVersionMin")
KonanTarget.WATCHOS_ARM64 -> TODO("implement me")
KonanTarget.WATCHOS_X64 -> TODO("implement me")
KonanTarget.ANDROID_ARM32, KonanTarget.ANDROID_ARM64,
KonanTarget.ANDROID_X86, KonanTarget.ANDROID_X64 -> {
@@ -126,11 +135,6 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
"-Xclang", "-isystem$absoluteTargetSysRoot/include/compat",
"-Xclang", "-isystem$absoluteTargetSysRoot/include/libc")
KonanTarget.WATCHOS_ARM64 -> TODO("implement me")
KonanTarget.WATCHOS_ARM32 -> TODO("implement me")
KonanTarget.WATCHOS_X64 -> TODO("implement me")
KonanTarget.WATCHOS_X86 -> TODO("implement me")
is KonanTarget.ZEPHYR ->
listOf("-target", targetArg!!,
"-fno-rtti",
@@ -148,7 +152,6 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
"-isystem$absoluteTargetSysRoot/include/libc"
) +
(configurables as ZephyrConfigurables).boardSpecificClangFlags
}
return result
}
@@ -258,6 +261,27 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
"-DKONAN_CORE_SYMBOLICATION=1",
"-DKONAN_HAS_CXX11_EXCEPTION_FUNCTIONS=1")
KonanTarget.WATCHOS_ARM32 ->
listOf("-DKONAN_OBJC_INTEROP=1",
"-DKONAN_IOS",
"-DKONAN_ARM32=1",
"-DKONAN_HAS_CXX11_EXCEPTION_FUNCTIONS=1",
"-DKONAN_REPORT_BACKTRACE_TO_IOS_CRASH_LOG=1",
"-DMACHSIZE=32",
// See explanation for ios_arm32 above.
"-DKONAN_NO_64BIT_ATOMIC=1",
"-DKONAN_NO_UNALIGNED_ACCESS=1")
KonanTarget.WATCHOS_X86 ->
listOf("-DKONAN_OBJC_INTEROP=1",
"-DKONAN_IOS=1",
"-DKONAN_X86=1",
"-DKONAN_CORE_SYMBOLICATION=1",
"-DKONAN_HAS_CXX11_EXCEPTION_FUNCTIONS=1")
KonanTarget.WATCHOS_ARM64 -> TODO("implement me")
KonanTarget.WATCHOS_X64 -> TODO("implement me")
KonanTarget.ANDROID_ARM32 ->
listOf("-D__ANDROID__",
"-DUSE_GCC_UNWIND=1",
@@ -305,11 +329,6 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
"-DKONAN_NO_MEMMEM",
"-DKONAN_NO_CTORS_SECTION=1")
KonanTarget.WATCHOS_ARM64 -> TODO("implement me")
KonanTarget.WATCHOS_ARM32 -> TODO("implement me")
KonanTarget.WATCHOS_X64 -> TODO("implement me")
KonanTarget.WATCHOS_X86 -> TODO("implement me")
is KonanTarget.ZEPHYR ->
listOf( "-DKONAN_ZEPHYR=1",
"-DKONAN_NO_FFI=1",
@@ -40,21 +40,28 @@ class ZephyrConfigurablesImpl(target: KonanTarget, properties: Properties, baseD
fun loadConfigurables(target: KonanTarget, properties: Properties, baseDir: String?) = when (target) {
KonanTarget.LINUX_X64, KonanTarget.LINUX_ARM32_HFP, KonanTarget.LINUX_ARM64 ->
LinuxConfigurablesImpl(target, properties, baseDir)
KonanTarget.LINUX_MIPS32, KonanTarget.LINUX_MIPSEL32 ->
LinuxMIPSConfigurablesImpl(target, properties, baseDir)
KonanTarget.MACOS_X64,
KonanTarget.IOS_ARM32, KonanTarget.IOS_ARM64, KonanTarget.IOS_X64,
KonanTarget.TVOS_ARM64, KonanTarget.TVOS_X64 ->
KonanTarget.TVOS_ARM64, KonanTarget.TVOS_X64,
KonanTarget.WATCHOS_ARM64, KonanTarget.WATCHOS_ARM32,
KonanTarget.WATCHOS_X64, KonanTarget.WATCHOS_X86 ->
AppleConfigurablesImpl(target, properties, baseDir)
KonanTarget.ANDROID_ARM32, KonanTarget.ANDROID_ARM64,
KonanTarget.ANDROID_X86, KonanTarget.ANDROID_X64 ->
AndroidConfigurablesImpl(target, properties, baseDir)
KonanTarget.MINGW_X64, KonanTarget.MINGW_X86 ->
MingwConfigurablesImpl(target, properties, baseDir)
KonanTarget.WASM32 ->
WasmConfigurablesImpl(target, properties, baseDir)
KonanTarget.WATCHOS_ARM64, KonanTarget.WATCHOS_ARM32, KonanTarget.WATCHOS_X64, KonanTarget.WATCHOS_X86-> TODO("unimplemented: $target")
is KonanTarget.ZEPHYR ->
ZephyrConfigurablesImpl(target, properties, baseDir)
}
}
@@ -445,23 +445,27 @@ fun linker(configurables: Configurables): LinkerFlags =
when (configurables.target) {
KonanTarget.LINUX_X64, KonanTarget.LINUX_ARM32_HFP, KonanTarget.LINUX_ARM64 ->
LinuxBasedLinker(configurables as LinuxConfigurables)
KonanTarget.LINUX_MIPS32, KonanTarget.LINUX_MIPSEL32 ->
LinuxBasedLinker(configurables as LinuxMIPSConfigurables)
KonanTarget.MACOS_X64,
KonanTarget.TVOS_X64, KonanTarget.TVOS_ARM64,
KonanTarget.IOS_ARM32, KonanTarget.IOS_ARM64, KonanTarget.IOS_X64 ->
KonanTarget.IOS_ARM32, KonanTarget.IOS_ARM64, KonanTarget.IOS_X64,
KonanTarget.WATCHOS_ARM64, KonanTarget.WATCHOS_ARM32,
KonanTarget.WATCHOS_X64, KonanTarget.WATCHOS_X86 ->
MacOSBasedLinker(configurables as AppleConfigurables)
KonanTarget.ANDROID_ARM32, KonanTarget.ANDROID_ARM64,
KonanTarget.ANDROID_X86, KonanTarget.ANDROID_X64 ->
AndroidLinker(configurables as AndroidConfigurables)
KonanTarget.MINGW_X64, KonanTarget.MINGW_X86 ->
MingwLinker(configurables as MingwConfigurables)
KonanTarget.WASM32 ->
WasmLinker(configurables as WasmConfigurables)
KonanTarget.WATCHOS_ARM64 -> TODO("implement me")
KonanTarget.WATCHOS_ARM32 -> TODO("implement me")
KonanTarget.WATCHOS_X64 -> TODO("implement me")
KonanTarget.WATCHOS_X86 -> TODO("implement me")
is KonanTarget.ZEPHYR ->
ZephyrLinker(configurables as ZephyrConfigurables)
}
@@ -49,8 +49,6 @@ class PlatformManager(distribution: Distribution = Distribution(), experimental:
* TODO: Don't forget to delete this field and replace all its usages to `enabled`.
*/
val filteredOutEnabledButNotSupported
get() = enabled.filterNot { it == KonanTarget.WATCHOS_X64 ||
it == KonanTarget.WATCHOS_X86|| it == KonanTarget.WATCHOS_ARM64 || it == KonanTarget.WATCHOS_ARM32
}
get() = enabled.filterNot { it == KonanTarget.WATCHOS_X64 || it == KonanTarget.WATCHOS_ARM64 }
}
@@ -27,6 +27,8 @@ interface Xcode {
val version: String
val appletvosSdk: String
val appletvsimulatorSdk: String
val watchosSdk: String
val watchsimulatorSdk: String
// Xcode.app/Contents/Developer/usr
val additionalTools: String
val simulatorRuntimes: String
@@ -58,6 +60,9 @@ private object CurrentXcode : Xcode {
override val iphonesimulatorSdk by lazy { getSdkPath("iphonesimulator") }
override val appletvosSdk by lazy { getSdkPath("appletvos") }
override val appletvsimulatorSdk by lazy { getSdkPath("appletvsimulator") }
override val watchosSdk: String by lazy { getSdkPath("watchos") }
override val watchsimulatorSdk: String by lazy { getSdkPath("watchsimulator") }
override val version by lazy {
xcrun("xcodebuild", "-version")
+2 -2
View File
@@ -2,14 +2,14 @@
# "brew install coreutils" for grealpath.
KONAN_TOOLCHAIN_VERSION=9
SDKS="macosx iphoneos iphonesimulator appletvos appletvsimulator"
SDKS="macosx iphoneos iphonesimulator appletvos appletvsimulator watchos watchsimulator"
TARBALL_macosx=target-sysroot-$KONAN_TOOLCHAIN_VERSION-macos_x64
TARBALL_iphoneos=target-sysroot-$KONAN_TOOLCHAIN_VERSION-ios_arm64
TARBALL_iphonesimulator=target-sysroot-$KONAN_TOOLCHAIN_VERSION-ios_x64
TARBALL_appletvos=target-sysroot-$KONAN_TOOLCHAIN_VERSION-tvos_arm64
TARBALL_appletvsimulator=target-sysroot-$KONAN_TOOLCHAIN_VERSION-tvos_x64
TARBALL_watchos=target-sysroot-$KONAN_TOOLCHAIN_VERSION-watchos_arm32
TARBALL_watchsimulator=target-sysroot-$KONAN_TOOLCHAIN_VERSION-watchos_x64
TARBALL_watchsimulator=target-sysroot-$KONAN_TOOLCHAIN_VERSION-watchos_x86
TARBALL_xcode=target-toolchain-$KONAN_TOOLCHAIN_VERSION-macos_x64
TARBALL_xcode_addon=xcode-addon-$KONAN_TOOLCHAIN_VERSION-macos_x64
OUT=`pwd`