[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
|
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()
|
is RecordType -> !this.isIntegerLikeType()
|
||||||
else -> false
|
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.IOS_X64 -> "core2"
|
||||||
KonanTarget.TVOS_ARM64 -> "cyclone"
|
KonanTarget.TVOS_ARM64 -> "cyclone"
|
||||||
KonanTarget.TVOS_X64 -> "core2"
|
KonanTarget.TVOS_X64 -> "core2"
|
||||||
|
KonanTarget.WATCHOS_X86 -> "i386"
|
||||||
|
KonanTarget.WATCHOS_X64 -> "core2"
|
||||||
|
KonanTarget.WATCHOS_ARM32 -> "cortex-a7"
|
||||||
KonanTarget.LINUX_X64 -> "x86-64"
|
KonanTarget.LINUX_X64 -> "x86-64"
|
||||||
KonanTarget.MINGW_X86 -> "pentium4"
|
KonanTarget.MINGW_X86 -> "pentium4"
|
||||||
KonanTarget.MINGW_X64 -> "x86-64"
|
KonanTarget.MINGW_X64 -> "x86-64"
|
||||||
@@ -65,10 +68,7 @@ private class LlvmPipelineConfiguration(context: Context) {
|
|||||||
KonanTarget.ANDROID_X86 -> "i686"
|
KonanTarget.ANDROID_X86 -> "i686"
|
||||||
KonanTarget.LINUX_MIPS32 -> "mips32r2"
|
KonanTarget.LINUX_MIPS32 -> "mips32r2"
|
||||||
KonanTarget.LINUX_MIPSEL32 -> "mips32r2"
|
KonanTarget.LINUX_MIPSEL32 -> "mips32r2"
|
||||||
KonanTarget.WATCHOS_ARM64 -> TODO("implement me")
|
KonanTarget.WATCHOS_ARM64,
|
||||||
KonanTarget.WATCHOS_ARM32 -> TODO("implement me")
|
|
||||||
KonanTarget.WATCHOS_X64 -> TODO("implement me")
|
|
||||||
KonanTarget.WATCHOS_X86 -> TODO("implement me")
|
|
||||||
KonanTarget.WASM32,
|
KonanTarget.WASM32,
|
||||||
is KonanTarget.ZEPHYR -> error("There is no support for ${target.name} target yet.")
|
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: rework Boolean support.
|
||||||
// TODO: What should be used on watchOS?
|
// TODO: What should be used on watchOS?
|
||||||
private fun cBoolType(target: KonanTarget): CType? = when (target.family) {
|
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
|
else -> CTypes.signedChar
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
@@ -154,6 +154,8 @@ internal class ObjCExport(val context: Context, symbolTable: SymbolTable) {
|
|||||||
KonanTarget.TVOS_ARM64 -> "AppleTVOS"
|
KonanTarget.TVOS_ARM64 -> "AppleTVOS"
|
||||||
KonanTarget.TVOS_X64 -> "AppleTVSimulator"
|
KonanTarget.TVOS_X64 -> "AppleTVSimulator"
|
||||||
KonanTarget.MACOS_X64 -> "MacOSX"
|
KonanTarget.MACOS_X64 -> "MacOSX"
|
||||||
|
KonanTarget.WATCHOS_ARM32, KonanTarget.WATCHOS_ARM64 -> "WatchOS"
|
||||||
|
KonanTarget.WATCHOS_X86, KonanTarget.WATCHOS_X64 -> "WatchSimulator"
|
||||||
else -> error(target)
|
else -> error(target)
|
||||||
}
|
}
|
||||||
val properties = context.config.platform.configurables as AppleConfigurables
|
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.ExecResult
|
||||||
import org.gradle.process.ExecSpec
|
import org.gradle.process.ExecSpec
|
||||||
import org.gradle.util.ConfigureUtil
|
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.KonanTarget
|
||||||
import org.jetbrains.kotlin.konan.target.Xcode
|
import org.jetbrains.kotlin.konan.target.Xcode
|
||||||
@@ -84,8 +85,10 @@ fun create(project: Project): ExecutorService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
KonanTarget.IOS_X64 -> simulator(project)
|
KonanTarget.IOS_X64,
|
||||||
KonanTarget.TVOS_X64 -> simulator(project)
|
KonanTarget.TVOS_X64,
|
||||||
|
KonanTarget.WATCHOS_X86,
|
||||||
|
KonanTarget.WATCHOS_X64 -> simulator(project)
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
if (project.hasProperty("remote")) sshExecutor(project)
|
if (project.hasProperty("remote")) sshExecutor(project)
|
||||||
@@ -220,6 +223,8 @@ private fun simulator(project: Project) : ExecutorService = object : ExecutorSer
|
|||||||
val sdk = when (target) {
|
val sdk = when (target) {
|
||||||
KonanTarget.TVOS_X64 -> Xcode.current.appletvsimulatorSdk
|
KonanTarget.TVOS_X64 -> Xcode.current.appletvsimulatorSdk
|
||||||
KonanTarget.IOS_X64 -> Xcode.current.iphonesimulatorSdk
|
KonanTarget.IOS_X64 -> Xcode.current.iphonesimulatorSdk
|
||||||
|
KonanTarget.WATCHOS_X64,
|
||||||
|
KonanTarget.WATCHOS_X86 -> Xcode.current.watchsimulatorSdk
|
||||||
else -> error("Unexpected simulation target: $target")
|
else -> error("Unexpected simulation target: $target")
|
||||||
}
|
}
|
||||||
val out = ByteArrayOutputStream()
|
val out = ByteArrayOutputStream()
|
||||||
@@ -234,13 +239,21 @@ private fun simulator(project: Project) : ExecutorService = object : ExecutorSer
|
|||||||
private val device = project.findProperty("iosDevice")?.toString() ?: when (target) {
|
private val device = project.findProperty("iosDevice")?.toString() ?: when (target) {
|
||||||
KonanTarget.TVOS_X64 -> "Apple TV 4K"
|
KonanTarget.TVOS_X64 -> "Apple TV 4K"
|
||||||
KonanTarget.IOS_X64 -> "iPhone 6"
|
KonanTarget.IOS_X64 -> "iPhone 6"
|
||||||
|
KonanTarget.WATCHOS_X64,
|
||||||
|
KonanTarget.WATCHOS_X86 -> "Apple Watch Series 4 - 40mm"
|
||||||
else -> error("Unexpected simulation target: $target")
|
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 ->
|
override fun execute(action: Action<in ExecSpec>): ExecResult? = project.exec { execSpec ->
|
||||||
action.execute(execSpec)
|
action.execute(execSpec)
|
||||||
// Starting Xcode 11 `simctl spawn` requires explicit `--standalone` flag.
|
// 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_X64 -> "appletvsimulator"
|
||||||
KonanTarget.TVOS_ARM64 -> "appletvos"
|
KonanTarget.TVOS_ARM64 -> "appletvos"
|
||||||
KonanTarget.MACOS_X64 -> "macosx"
|
KonanTarget.MACOS_X64 -> "macosx"
|
||||||
|
KonanTarget.WATCHOS_ARM64 -> "watchos"
|
||||||
|
KonanTarget.WATCHOS_X64, KonanTarget.WATCHOS_X86 -> "watchsimulator"
|
||||||
else -> throw IllegalStateException("Test target $target is not supported")
|
else -> throw IllegalStateException("Test target $target is not supported")
|
||||||
}
|
}
|
||||||
val simulatorPath = when (target) {
|
val simulatorPath = when (target) {
|
||||||
KonanTarget.TVOS_X64,
|
KonanTarget.TVOS_X64,
|
||||||
KonanTarget.IOS_X64,
|
KonanTarget.IOS_X64,
|
||||||
|
KonanTarget.WATCHOS_X86,
|
||||||
KonanTarget.WATCHOS_X64 -> Xcode.current.getLatestSimulatorRuntimeFor(target, configs.osVersionMin)?.bundlePath?.let {
|
KonanTarget.WATCHOS_X64 -> Xcode.current.getLatestSimulatorRuntimeFor(target, configs.osVersionMin)?.bundlePath?.let {
|
||||||
"$it/Contents/Resources/RuntimeRoot/usr/lib/swift"
|
"$it/Contents/Resources/RuntimeRoot/usr/lib/swift"
|
||||||
}
|
}
|
||||||
@@ -120,7 +123,10 @@ open class FrameworkTest : DefaultTask() {
|
|||||||
// Hopefully, lexicographical comparison will work.
|
// Hopefully, lexicographical comparison will work.
|
||||||
val newMacos = System.getProperty("os.version").compareTo("10.14.4") >= 0
|
val newMacos = System.getProperty("os.version").compareTo("10.14.4") >= 0
|
||||||
val dyldLibraryPathKey = when (target) {
|
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"
|
else -> "DYLD_LIBRARY_PATH"
|
||||||
}
|
}
|
||||||
return if (newMacos && target == KonanTarget.MACOS_X64) emptyMap() else mapOf(
|
return if (newMacos && target == KonanTarget.MACOS_X64) emptyMap() else mapOf(
|
||||||
@@ -139,7 +145,7 @@ open class FrameworkTest : DefaultTask() {
|
|||||||
|stdout: $stdOut
|
|stdout: $stdOut
|
||||||
|stderr: $stdErr
|
|stderr: $stdErr
|
||||||
""".trimMargin())
|
""".trimMargin())
|
||||||
check(exitCode == 0) { "Execution failed with exit code: $exitCode "}
|
check(exitCode == 0) { "Execution failed with exit code: $exitCode " }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun validateBitcodeEmbedding(frameworkBinary: String) {
|
private fun validateBitcodeEmbedding(frameworkBinary: String) {
|
||||||
@@ -153,10 +159,16 @@ open class FrameworkTest : DefaultTask() {
|
|||||||
val bitcodeBuildTool = "${configurables.absoluteAdditionalToolsDir}/bin/bitcode-build-tool"
|
val bitcodeBuildTool = "${configurables.absoluteAdditionalToolsDir}/bin/bitcode-build-tool"
|
||||||
val ldPath = "${configurables.absoluteTargetToolchain}/usr/bin/ld"
|
val ldPath = "${configurables.absoluteTargetToolchain}/usr/bin/ld"
|
||||||
val sdk = when (testTarget) {
|
val sdk = when (testTarget) {
|
||||||
KonanTarget.IOS_X64, KonanTarget.TVOS_X64 -> return // bitcode-build-tool doesn't support simulators.
|
KonanTarget.IOS_X64,
|
||||||
KonanTarget.IOS_ARM64, KonanTarget.IOS_ARM32 -> Xcode.current.iphoneosSdk
|
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.MACOS_X64 -> Xcode.current.macosxSdk
|
||||||
KonanTarget.TVOS_ARM64 -> Xcode.current.appletvosSdk
|
KonanTarget.TVOS_ARM64 -> Xcode.current.appletvosSdk
|
||||||
|
KonanTarget.WATCHOS_ARM32,
|
||||||
|
KonanTarget.WATCHOS_ARM64 -> Xcode.current.watchosSdk
|
||||||
else -> error("Cannot validate bitcode for test target $testTarget")
|
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_X64 -> "x86_64-apple-tvos" + configs.osVersionMin
|
||||||
KonanTarget.TVOS_ARM64 -> "arm64_64-apple-tvos" + configs.osVersionMin
|
KonanTarget.TVOS_ARM64 -> "arm64_64-apple-tvos" + configs.osVersionMin
|
||||||
KonanTarget.MACOS_X64 -> "x86_64-apple-macosx" + 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")
|
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? {
|
fun Xcode.getLatestSimulatorRuntimeFor(target: KonanTarget, osMinVersion: String): SimulatorRuntimeDescriptor? {
|
||||||
val osName = when (target) {
|
val osName = when (target) {
|
||||||
KonanTarget.IOS_X64 -> "iOS"
|
KonanTarget.IOS_X64 -> "iOS"
|
||||||
KonanTarget.WATCHOS_X64 -> "watchOS"
|
KonanTarget.WATCHOS_X64, KonanTarget.WATCHOS_X86 -> "watchOS"
|
||||||
KonanTarget.TVOS_X64 -> "tvOS"
|
KonanTarget.TVOS_X64 -> "tvOS"
|
||||||
else -> error("Unexpected simulator target: $target")
|
else -> error("Unexpected simulator target: $target")
|
||||||
}
|
}
|
||||||
|
|||||||
+52
-2
@@ -161,7 +161,6 @@ target-sysroot-9-tvos_x64.default = \
|
|||||||
remote:internal
|
remote:internal
|
||||||
|
|
||||||
arch.tvos_x64 = x86_64
|
arch.tvos_x64 = x86_64
|
||||||
entrySelector.tvos_x64 = -alias _Konan_main _main
|
|
||||||
targetSysRoot.tvos_x64 = target-sysroot-9-tvos_x64
|
targetSysRoot.tvos_x64 = target-sysroot-9-tvos_x64
|
||||||
|
|
||||||
clangFlags.tvos_x64 = -cc1 -emit-obj -disable-llvm-passes -x ir
|
clangFlags.tvos_x64 = -cc1 -emit-obj -disable-llvm-passes -x ir
|
||||||
@@ -188,7 +187,6 @@ target-sysroot-9-tvos_arm64.default = \
|
|||||||
remote:internal
|
remote:internal
|
||||||
|
|
||||||
arch.tvos_arm64 = arm64
|
arch.tvos_arm64 = arm64
|
||||||
entrySelector.tvos_arm64 = -alias _Konan_main _main
|
|
||||||
targetSysRoot.tvos_arm64 = target-sysroot-9-tvos_arm64
|
targetSysRoot.tvos_arm64 = target-sysroot-9-tvos_arm64
|
||||||
|
|
||||||
clangFlags.tvos_arm64 = -cc1 -emit-obj -disable-llvm-passes -x ir
|
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
|
osVersionMinFlagClang.tvos_arm64 = -mtvos-version-min
|
||||||
osVersionMin.tvos_arm64 = 9.0
|
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.
|
# Linux x86-64.
|
||||||
llvmHome.linux_x64 = clang-llvm-6.0.1-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
|
libffiDir.linux_x64 = libffi-3.2.1-2-linux-x86-64
|
||||||
|
|||||||
@@ -37,6 +37,8 @@ class AppleConfigurablesImpl(
|
|||||||
KonanTarget.IOS_X64 -> xcodePartsProvider.xcode.iphonesimulatorSdk
|
KonanTarget.IOS_X64 -> xcodePartsProvider.xcode.iphonesimulatorSdk
|
||||||
KonanTarget.TVOS_ARM64 -> xcodePartsProvider.xcode.appletvosSdk
|
KonanTarget.TVOS_ARM64 -> xcodePartsProvider.xcode.appletvosSdk
|
||||||
KonanTarget.TVOS_X64 -> xcodePartsProvider.xcode.appletvsimulatorSdk
|
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)
|
else -> error(target)
|
||||||
}
|
}
|
||||||
XcodePartsProvider.InternalServer -> absolute(sdkDependency)
|
XcodePartsProvider.InternalServer -> absolute(sdkDependency)
|
||||||
|
|||||||
@@ -88,14 +88,23 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
|
|||||||
KonanTarget.IOS_ARM64 ->
|
KonanTarget.IOS_ARM64 ->
|
||||||
listOf("-stdlib=libc++", "-arch", "arm64", "-isysroot", absoluteTargetSysRoot, "-miphoneos-version-min=$osVersionMin")
|
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 ->
|
KonanTarget.TVOS_ARM64 ->
|
||||||
listOf("-stdlib=libc++", "-arch", "arm64", "-isysroot", absoluteTargetSysRoot, "-mtvos-version-min=$osVersionMin")
|
listOf("-stdlib=libc++", "-arch", "arm64", "-isysroot", absoluteTargetSysRoot, "-mtvos-version-min=$osVersionMin")
|
||||||
|
|
||||||
KonanTarget.TVOS_X64 ->
|
KonanTarget.TVOS_X64 ->
|
||||||
listOf("-stdlib=libc++", "-isysroot", absoluteTargetSysRoot, "-mtvos-simulator-version-min=$osVersionMin")
|
listOf("-stdlib=libc++", "-isysroot", absoluteTargetSysRoot, "-mtvos-simulator-version-min=$osVersionMin")
|
||||||
|
|
||||||
KonanTarget.IOS_X64 ->
|
KonanTarget.WATCHOS_ARM32 ->
|
||||||
listOf("-stdlib=libc++", "-isysroot", absoluteTargetSysRoot, "-miphoneos-version-min=$osVersionMin")
|
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_ARM32, KonanTarget.ANDROID_ARM64,
|
||||||
KonanTarget.ANDROID_X86, KonanTarget.ANDROID_X64 -> {
|
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/compat",
|
||||||
"-Xclang", "-isystem$absoluteTargetSysRoot/include/libc")
|
"-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 ->
|
is KonanTarget.ZEPHYR ->
|
||||||
listOf("-target", targetArg!!,
|
listOf("-target", targetArg!!,
|
||||||
"-fno-rtti",
|
"-fno-rtti",
|
||||||
@@ -148,7 +152,6 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
|
|||||||
"-isystem$absoluteTargetSysRoot/include/libc"
|
"-isystem$absoluteTargetSysRoot/include/libc"
|
||||||
) +
|
) +
|
||||||
(configurables as ZephyrConfigurables).boardSpecificClangFlags
|
(configurables as ZephyrConfigurables).boardSpecificClangFlags
|
||||||
|
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
@@ -258,6 +261,27 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
|
|||||||
"-DKONAN_CORE_SYMBOLICATION=1",
|
"-DKONAN_CORE_SYMBOLICATION=1",
|
||||||
"-DKONAN_HAS_CXX11_EXCEPTION_FUNCTIONS=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 ->
|
KonanTarget.ANDROID_ARM32 ->
|
||||||
listOf("-D__ANDROID__",
|
listOf("-D__ANDROID__",
|
||||||
"-DUSE_GCC_UNWIND=1",
|
"-DUSE_GCC_UNWIND=1",
|
||||||
@@ -305,11 +329,6 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
|
|||||||
"-DKONAN_NO_MEMMEM",
|
"-DKONAN_NO_MEMMEM",
|
||||||
"-DKONAN_NO_CTORS_SECTION=1")
|
"-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 ->
|
is KonanTarget.ZEPHYR ->
|
||||||
listOf( "-DKONAN_ZEPHYR=1",
|
listOf( "-DKONAN_ZEPHYR=1",
|
||||||
"-DKONAN_NO_FFI=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) {
|
fun loadConfigurables(target: KonanTarget, properties: Properties, baseDir: String?) = when (target) {
|
||||||
KonanTarget.LINUX_X64, KonanTarget.LINUX_ARM32_HFP, KonanTarget.LINUX_ARM64 ->
|
KonanTarget.LINUX_X64, KonanTarget.LINUX_ARM32_HFP, KonanTarget.LINUX_ARM64 ->
|
||||||
LinuxConfigurablesImpl(target, properties, baseDir)
|
LinuxConfigurablesImpl(target, properties, baseDir)
|
||||||
|
|
||||||
KonanTarget.LINUX_MIPS32, KonanTarget.LINUX_MIPSEL32 ->
|
KonanTarget.LINUX_MIPS32, KonanTarget.LINUX_MIPSEL32 ->
|
||||||
LinuxMIPSConfigurablesImpl(target, properties, baseDir)
|
LinuxMIPSConfigurablesImpl(target, properties, baseDir)
|
||||||
|
|
||||||
KonanTarget.MACOS_X64,
|
KonanTarget.MACOS_X64,
|
||||||
KonanTarget.IOS_ARM32, KonanTarget.IOS_ARM64, KonanTarget.IOS_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)
|
AppleConfigurablesImpl(target, properties, baseDir)
|
||||||
|
|
||||||
KonanTarget.ANDROID_ARM32, KonanTarget.ANDROID_ARM64,
|
KonanTarget.ANDROID_ARM32, KonanTarget.ANDROID_ARM64,
|
||||||
KonanTarget.ANDROID_X86, KonanTarget.ANDROID_X64 ->
|
KonanTarget.ANDROID_X86, KonanTarget.ANDROID_X64 ->
|
||||||
AndroidConfigurablesImpl(target, properties, baseDir)
|
AndroidConfigurablesImpl(target, properties, baseDir)
|
||||||
|
|
||||||
KonanTarget.MINGW_X64, KonanTarget.MINGW_X86 ->
|
KonanTarget.MINGW_X64, KonanTarget.MINGW_X86 ->
|
||||||
MingwConfigurablesImpl(target, properties, baseDir)
|
MingwConfigurablesImpl(target, properties, baseDir)
|
||||||
|
|
||||||
KonanTarget.WASM32 ->
|
KonanTarget.WASM32 ->
|
||||||
WasmConfigurablesImpl(target, properties, baseDir)
|
WasmConfigurablesImpl(target, properties, baseDir)
|
||||||
KonanTarget.WATCHOS_ARM64, KonanTarget.WATCHOS_ARM32, KonanTarget.WATCHOS_X64, KonanTarget.WATCHOS_X86-> TODO("unimplemented: $target")
|
|
||||||
is KonanTarget.ZEPHYR ->
|
is KonanTarget.ZEPHYR ->
|
||||||
ZephyrConfigurablesImpl(target, properties, baseDir)
|
ZephyrConfigurablesImpl(target, properties, baseDir)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -445,23 +445,27 @@ fun linker(configurables: Configurables): LinkerFlags =
|
|||||||
when (configurables.target) {
|
when (configurables.target) {
|
||||||
KonanTarget.LINUX_X64, KonanTarget.LINUX_ARM32_HFP, KonanTarget.LINUX_ARM64 ->
|
KonanTarget.LINUX_X64, KonanTarget.LINUX_ARM32_HFP, KonanTarget.LINUX_ARM64 ->
|
||||||
LinuxBasedLinker(configurables as LinuxConfigurables)
|
LinuxBasedLinker(configurables as LinuxConfigurables)
|
||||||
|
|
||||||
KonanTarget.LINUX_MIPS32, KonanTarget.LINUX_MIPSEL32 ->
|
KonanTarget.LINUX_MIPS32, KonanTarget.LINUX_MIPSEL32 ->
|
||||||
LinuxBasedLinker(configurables as LinuxMIPSConfigurables)
|
LinuxBasedLinker(configurables as LinuxMIPSConfigurables)
|
||||||
|
|
||||||
KonanTarget.MACOS_X64,
|
KonanTarget.MACOS_X64,
|
||||||
KonanTarget.TVOS_X64, KonanTarget.TVOS_ARM64,
|
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)
|
MacOSBasedLinker(configurables as AppleConfigurables)
|
||||||
|
|
||||||
KonanTarget.ANDROID_ARM32, KonanTarget.ANDROID_ARM64,
|
KonanTarget.ANDROID_ARM32, KonanTarget.ANDROID_ARM64,
|
||||||
KonanTarget.ANDROID_X86, KonanTarget.ANDROID_X64 ->
|
KonanTarget.ANDROID_X86, KonanTarget.ANDROID_X64 ->
|
||||||
AndroidLinker(configurables as AndroidConfigurables)
|
AndroidLinker(configurables as AndroidConfigurables)
|
||||||
|
|
||||||
KonanTarget.MINGW_X64, KonanTarget.MINGW_X86 ->
|
KonanTarget.MINGW_X64, KonanTarget.MINGW_X86 ->
|
||||||
MingwLinker(configurables as MingwConfigurables)
|
MingwLinker(configurables as MingwConfigurables)
|
||||||
|
|
||||||
KonanTarget.WASM32 ->
|
KonanTarget.WASM32 ->
|
||||||
WasmLinker(configurables as WasmConfigurables)
|
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 ->
|
is KonanTarget.ZEPHYR ->
|
||||||
ZephyrLinker(configurables as ZephyrConfigurables)
|
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`.
|
* TODO: Don't forget to delete this field and replace all its usages to `enabled`.
|
||||||
*/
|
*/
|
||||||
val filteredOutEnabledButNotSupported
|
val filteredOutEnabledButNotSupported
|
||||||
get() = enabled.filterNot { it == KonanTarget.WATCHOS_X64 ||
|
get() = enabled.filterNot { it == KonanTarget.WATCHOS_X64 || it == KonanTarget.WATCHOS_ARM64 }
|
||||||
it == KonanTarget.WATCHOS_X86|| it == KonanTarget.WATCHOS_ARM64 || it == KonanTarget.WATCHOS_ARM32
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ interface Xcode {
|
|||||||
val version: String
|
val version: String
|
||||||
val appletvosSdk: String
|
val appletvosSdk: String
|
||||||
val appletvsimulatorSdk: String
|
val appletvsimulatorSdk: String
|
||||||
|
val watchosSdk: String
|
||||||
|
val watchsimulatorSdk: String
|
||||||
// Xcode.app/Contents/Developer/usr
|
// Xcode.app/Contents/Developer/usr
|
||||||
val additionalTools: String
|
val additionalTools: String
|
||||||
val simulatorRuntimes: String
|
val simulatorRuntimes: String
|
||||||
@@ -58,6 +60,9 @@ private object CurrentXcode : Xcode {
|
|||||||
override val iphonesimulatorSdk by lazy { getSdkPath("iphonesimulator") }
|
override val iphonesimulatorSdk by lazy { getSdkPath("iphonesimulator") }
|
||||||
override val appletvosSdk by lazy { getSdkPath("appletvos") }
|
override val appletvosSdk by lazy { getSdkPath("appletvos") }
|
||||||
override val appletvsimulatorSdk by lazy { getSdkPath("appletvsimulator") }
|
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 {
|
override val version by lazy {
|
||||||
xcrun("xcodebuild", "-version")
|
xcrun("xcodebuild", "-version")
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
# "brew install coreutils" for grealpath.
|
# "brew install coreutils" for grealpath.
|
||||||
KONAN_TOOLCHAIN_VERSION=9
|
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_macosx=target-sysroot-$KONAN_TOOLCHAIN_VERSION-macos_x64
|
||||||
TARBALL_iphoneos=target-sysroot-$KONAN_TOOLCHAIN_VERSION-ios_arm64
|
TARBALL_iphoneos=target-sysroot-$KONAN_TOOLCHAIN_VERSION-ios_arm64
|
||||||
TARBALL_iphonesimulator=target-sysroot-$KONAN_TOOLCHAIN_VERSION-ios_x64
|
TARBALL_iphonesimulator=target-sysroot-$KONAN_TOOLCHAIN_VERSION-ios_x64
|
||||||
TARBALL_appletvos=target-sysroot-$KONAN_TOOLCHAIN_VERSION-tvos_arm64
|
TARBALL_appletvos=target-sysroot-$KONAN_TOOLCHAIN_VERSION-tvos_arm64
|
||||||
TARBALL_appletvsimulator=target-sysroot-$KONAN_TOOLCHAIN_VERSION-tvos_x64
|
TARBALL_appletvsimulator=target-sysroot-$KONAN_TOOLCHAIN_VERSION-tvos_x64
|
||||||
TARBALL_watchos=target-sysroot-$KONAN_TOOLCHAIN_VERSION-watchos_arm32
|
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=target-toolchain-$KONAN_TOOLCHAIN_VERSION-macos_x64
|
||||||
TARBALL_xcode_addon=xcode-addon-$KONAN_TOOLCHAIN_VERSION-macos_x64
|
TARBALL_xcode_addon=xcode-addon-$KONAN_TOOLCHAIN_VERSION-macos_x64
|
||||||
OUT=`pwd`
|
OUT=`pwd`
|
||||||
|
|||||||
Reference in New Issue
Block a user