From e895c0939c48e2c1c54b6e56afdcb85e112651fb Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Mon, 23 Jan 2017 19:42:59 +0300 Subject: [PATCH] More complete iphone_sim target support. --- .../jetbrains/kotlin/backend/konan/LinkStage.kt | 10 ++++++++++ backend.native/konan.properties | 14 ++++++++++++++ build.gradle | 2 +- dependencies/build.gradle | 3 +++ 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/LinkStage.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/LinkStage.kt index eff3e808dd9..0fe7e41762e 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/LinkStage.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/LinkStage.kt @@ -67,6 +67,14 @@ internal class IPhoneOSfromMacOSPlatform(distribution: Distribution) override val targetSysRoot = "${distribution.dependencies}/${properties.propertyString("targetSysRoot.osx-ios")!!}" } +internal class IPhoneSimulatorFromMacOSPlatform(distribution: Distribution) + : MacOSPlatform(distribution) { + + override val arch = properties.propertyString("arch.osx-ios-sim")!! + override val osVersionMin = properties.propertyList("osVersionMin.osx-ios-sim") + override val llvmLlcFlags = properties.propertyList("llvmLlcFlags.osx-ios-sim") + override val targetSysRoot = "${distribution.dependencies}/${properties.propertyString("targetSysRoot.osx-ios-sim")!!}" +} internal class LinuxPlatform(distribution: Distribution) : PlatformFlags(distribution) { @@ -121,6 +129,8 @@ internal class LinkStage(val context: Context) { val platform: PlatformFlags = when (TargetManager.host) { KonanTarget.LINUX -> LinuxPlatform(distribution) KonanTarget.MACBOOK -> when (targetManager.current) { + KonanTarget.IPHONE_SIM + -> IPhoneSimulatorFromMacOSPlatform(distribution) KonanTarget.IPHONE -> IPhoneOSfromMacOSPlatform(distribution) KonanTarget.MACBOOK diff --git a/backend.native/konan.properties b/backend.native/konan.properties index 729f32031dc..56e630975a5 100644 --- a/backend.native/konan.properties +++ b/backend.native/konan.properties @@ -1,6 +1,7 @@ // TODO: utilize substitution mechanism from interop. +// macbook arch.osx = x86_64 sysRoot.osx = target-sysroot-1-darwin-macos llvmHome.osx = clang+llvm-3.8.0-darwin-macos @@ -10,6 +11,7 @@ linkerKonanFlags.osx = -lc++ linkerOptimizationFlags.osx = -dead_strip osVersionMin.osx = -macosx_version_min 10.10.0 +// iphone arch.osx-ios = arm64 sysRoot.osx-ios = target-sysroot-1-darwin-macos targetSysRoot.osx-ios = target-sysroot-1-darwin-ios @@ -20,6 +22,18 @@ linkerKonanFlags.osx-ios = -lc++ linkerOptimizationFlags.osx-ios = -dead_strip osVersionMin.osx-ios = -iphoneos_version_min 5.0.0 +// iphone_sim +arch.osx-ios-sim = x86_64 +sysRoot.osx-ios-sim = target-sysroot-1-darwin-macos +targetSysRoot.osx-ios-sim = target-sysroot-1-darwin-ios-sim +llvmHome.osx-ios-sim = clang+llvm-3.8.0-darwin-macos +llvmLtoFlags.osx-ios-sim = -O3 -function-sections -exported-symbol=_main +llvmLlcFlags.osx-ios-sim = -mtriple=x86_64-apple-ios5.0.0 +linkerKonanFlags.osx-ios-sim = -lc++ +linkerOptimizationFlags.osx-ios-sim = -dead_strip +osVersionMin.osx-ios-sim = -ios_simulator_version_min 5.0.0 + +// linux sysRoot.linux = target-gcc-toolchain-3-linux-x86-64/x86_64-unknown-linux-gnu/sysroot llvmHome.linux = clang+llvm-3.8.0-linux-x86-64 libGcc.linux = target-gcc-toolchain-3-linux-x86-64/lib/gcc/x86_64-unknown-linux-gnu/4.8.5 diff --git a/build.gradle b/build.gradle index 322a36a912e..99ca05a0dc9 100644 --- a/build.gradle +++ b/build.gradle @@ -37,7 +37,7 @@ allprojects { "iphone": ["-stdlib=libc++", "-arch", "arm64", "-isysroot", "$iphoneSysrootDir"], "iphone_sim": - ["-stdlib=libc++"] + ["-stdlib=libc++", "-isysroot", "$iphoneSimSysrootDir"], ] } ext.targetList = ext.targetArgs.keySet() as List diff --git a/dependencies/build.gradle b/dependencies/build.gradle index 0faa97197e4..9a98ec732ae 100644 --- a/dependencies/build.gradle +++ b/dependencies/build.gradle @@ -89,6 +89,9 @@ if (isLinux()) { task iphoneSysroot(type: TgzNativeDep) { baseName = "target-sysroot-1-darwin-ios" } + task iphoneSimSysroot(type: TgzNativeDep) { + baseName = "target-sysroot-1-darwin-ios-sim" + } }