[watchOS][targets] Add support for 32bit Apple Watch.
This commit is contained in:
committed by
Sergey Bogolepov
parent
be846bd1f5
commit
bcaf986e3a
+16
-4
@@ -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.")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -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.")
|
||||
}
|
||||
|
||||
+1
-1
@@ -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
|
||||
}
|
||||
|
||||
|
||||
+2
@@ -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
@@ -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,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`
|
||||
|
||||
Reference in New Issue
Block a user