diff --git a/kotlin-native/konan/konan.properties b/kotlin-native/konan/konan.properties index cd3845373f1..92198731744 100644 --- a/kotlin-native/konan/konan.properties +++ b/kotlin-native/konan/konan.properties @@ -249,6 +249,32 @@ osVersionMin.ios_x64 = 9.0 runtimeDefinitions.ios_x64 = KONAN_OBJC_INTEROP=1 KONAN_IOS=1 KONAN_X64=1 \ KONAN_CORE_SYMBOLICATION=1 +# iOS simulator on Apple Silicon + +targetToolchain.macos_x64-ios_simulator_arm64 = target-toolchain-xcode_12_2-macos_x64 +targetToolchain.macos_arm64-ios_simulator_arm64 = target-toolchain-xcode_12_2-macos_x64 + +target-sysroot-xcode_12_2-ios_simulator_arm64.default = \ + remote:internal + +targetTriple.ios_simulator_arm64 = arm64-apple-ios-simulator +targetSysRoot.ios_simulator_arm64 = target-sysroot-xcode_12_2-ios_x64 +targetCpu.ios_simulator_arm64 = cyclone +clangFlags.ios_simulator_arm64 = -cc1 -emit-obj -disable-llvm-passes -x ir +clangNooptFlags.ios_simulator_arm64 = -O1 +clangOptFlags.ios_simulator_arm64 = -O3 +clangDebugFlags.ios_simulator_arm64 = -O0 + +linkerKonanFlags.ios_simulator_arm64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 14.0 +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 +runtimeDefinitions.ios_simulator_arm64 = KONAN_OBJC_INTEROP=1 KONAN_IOS=1 KONAN_ARM64=1 \ + KONAN_CORE_SYMBOLICATION=1 + # Apple's tvOS simulator. targetToolchain.macos_x64-tvos_x64 = target-toolchain-xcode_12_2-macos_x64 targetToolchain.macos_arm64-tvos_x64 = target-toolchain-xcode_12_2-macos_x64 @@ -274,6 +300,31 @@ osVersionMin.tvos_x64 = 9.0 runtimeDefinitions.tvos_x64 = KONAN_OBJC_INTEROP=1 KONAN_TVOS=1 KONAN_X64=1 \ KONAN_CORE_SYMBOLICATION=1 +# Apple's tvOS simulator. +targetToolchain.macos_x64-tvos_simulator_arm64 = target-toolchain-xcode_12_2-macos_x64 +targetToolchain.macos_arm64-tvos_simulator_arm64 = target-toolchain-xcode_12_2-macos_x64 + +target-sysroot-xcode_12_2-tvos_simulator_arm64.default = \ + remote:internal + +targetTriple.tvos_simulator_arm64 = arm64-apple-tvos-simulator +targetSysRoot.tvos_simulator_arm64 = target-sysroot-xcode_12_2-tvos_x64 +targetCpu.tvos_simulator_arm64 = cyclone +clangFlags.tvos_simulator_arm64 = -cc1 -emit-obj -disable-llvm-passes -x ir +clangNooptFlags.tvos_simulator_arm64 = -O1 +clangOptFlags.tvos_simulator_arm64 = -O3 +clangDebugFlags.tvos_simulator_arm64 = -O0 + +linkerKonanFlags.tvos_simulator_arm64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 14.0 +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 +runtimeDefinitions.tvos_simulator_arm64 = KONAN_OBJC_INTEROP=1 KONAN_TVOS=1 KONAN_ARM64=1 \ + KONAN_CORE_SYMBOLICATION=1 + # Apple's 64-bit tvOS. targetToolchain.macos_x64-tvos_arm64 = target-toolchain-xcode_12_2-macos_x64 targetToolchain.macos_arm64-tvos_arm64 = target-toolchain-xcode_12_2-macos_x64 @@ -408,6 +459,32 @@ osVersionMin.watchos_x64 = 7.0 runtimeDefinitions.watchos_x64 = KONAN_OBJC_INTEROP=1 KONAN_WATCHOS=1 \ KONAN_X64=1 KONAN_CORE_SYMBOLICATION=1 +# watchOS Apple Silicon simulator. +targetToolchain.macos_x64-watchos_simulator_arm64 = target-toolchain-xcode_12_2-macos_x64 +targetToolchain.macos_arm64-watchos_simulator_arm64 = target-toolchain-xcode_12_2-macos_x64 + +target-sysroot-xcode_12_2-watchos_simulator_arm64.default = \ + remote:internal + +targetTriple.watchos_simulator_arm64 = arm64-apple-watchos-simulator +targetSysRoot.watchos_simulator_arm64 = target-sysroot-xcode_12_2-watchos_x86 +targetCpu.watchos_simulator_arm64 = cyclone +clangFlags.watchos_simulator_arm64 = -cc1 -emit-obj -disable-llvm-passes -x ir +clangNooptFlags.watchos_simulator_arm64 = -O1 +clangOptFlags.watchos_simulator_arm64 = -O3 +clangDebugFlags.watchos_simulator_arm64 = -O0 + +linkerKonanFlags.watchos_simulator_arm64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 7.0 +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 +runtimeDefinitions.watchos_simulator_arm64 = KONAN_OBJC_INTEROP=1 KONAN_WATCHOS=1 \ + KONAN_ARM64=1 KONAN_CORE_SYMBOLICATION=1 + + # Linux x86-64. llvmHome.linux_x64 = $llvm.linux_x64.dev libffiDir.linux_x64 = libffi-3.2.1-2-linux-x86-64 diff --git a/native/utils/src/org/jetbrains/kotlin/konan/target/HostManager.kt b/native/utils/src/org/jetbrains/kotlin/konan/target/HostManager.kt index 93b4c3051f9..fbaa207a277 100644 --- a/native/utils/src/org/jetbrains/kotlin/konan/target/HostManager.kt +++ b/native/utils/src/org/jetbrains/kotlin/konan/target/HostManager.kt @@ -77,12 +77,15 @@ open class HostManager( IOS_ARM32, IOS_ARM64, IOS_X64, + IOS_SIMULATOR_ARM64, WATCHOS_ARM32, WATCHOS_ARM64, WATCHOS_X86, WATCHOS_X64, + WATCHOS_SIMULATOR_ARM64, TVOS_ARM64, TVOS_X64, + TVOS_SIMULATOR_ARM64, LINUX_X64, LINUX_ARM32_HFP, LINUX_ARM64, @@ -98,12 +101,15 @@ open class HostManager( IOS_ARM32, IOS_ARM64, IOS_X64, + IOS_SIMULATOR_ARM64, WATCHOS_ARM32, WATCHOS_ARM64, WATCHOS_X86, WATCHOS_X64, + WATCHOS_SIMULATOR_ARM64, TVOS_ARM64, TVOS_X64, + TVOS_SIMULATOR_ARM64, LINUX_X64, LINUX_ARM32_HFP, LINUX_ARM64, diff --git a/native/utils/src/org/jetbrains/kotlin/konan/target/KonanTarget.kt b/native/utils/src/org/jetbrains/kotlin/konan/target/KonanTarget.kt index db3d41be7e3..9a20be528f7 100644 --- a/native/utils/src/org/jetbrains/kotlin/konan/target/KonanTarget.kt +++ b/native/utils/src/org/jetbrains/kotlin/konan/target/KonanTarget.kt @@ -16,12 +16,15 @@ sealed class KonanTarget(override val name: String, val family: Family, val arch object IOS_ARM32 : KonanTarget("ios_arm32", Family.IOS, Architecture.ARM32) object IOS_ARM64 : KonanTarget("ios_arm64", Family.IOS, Architecture.ARM64) object IOS_X64 : KonanTarget("ios_x64", Family.IOS, Architecture.X64) + object IOS_SIMULATOR_ARM64 : KonanTarget("ios_simulator_arm64", Family.IOS, Architecture.ARM64) object WATCHOS_ARM32 : KonanTarget("watchos_arm32", Family.WATCHOS, Architecture.ARM32) object WATCHOS_ARM64 : KonanTarget("watchos_arm64", Family.WATCHOS, Architecture.ARM64) 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 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) object LINUX_X64 : KonanTarget("linux_x64", Family.LINUX, Architecture.X64) object MINGW_X86 : KonanTarget("mingw_x86", Family.MINGW, Architecture.X86) object MINGW_X64 : KonanTarget("mingw_x64", Family.MINGW, Architecture.X64) @@ -44,9 +47,10 @@ sealed class KonanTarget(override val name: String, val family: Family, val arch val predefinedTargets: Map by lazy { listOf( ANDROID_X64, ANDROID_X86, ANDROID_ARM32, ANDROID_ARM64, - IOS_ARM32, IOS_ARM64, IOS_X64, + IOS_ARM32, IOS_ARM64, IOS_X64, IOS_SIMULATOR_ARM64, WATCHOS_ARM32, WATCHOS_ARM64, WATCHOS_X86, WATCHOS_X64, - TVOS_ARM64, TVOS_X64, + WATCHOS_SIMULATOR_ARM64, + TVOS_ARM64, TVOS_X64, TVOS_SIMULATOR_ARM64, LINUX_X64, MINGW_X86, MINGW_X64, MACOS_X64, MACOS_ARM64,