From d2a213ffca7ec1e45d195c967763b4015e5afb53 Mon Sep 17 00:00:00 2001 From: Sergey Bogolepov Date: Mon, 16 Sep 2019 13:41:17 +0700 Subject: [PATCH] [watchOS][tvOS] Add Platform.TVOS and Platform.WATCHOS --- backend.native/tests/interop/objc/smoke.kt | 9 ++++++++- runtime/src/main/cpp/Runtime.cpp | 4 ++++ runtime/src/main/kotlin/kotlin/native/Platform.kt | 4 +++- .../org/jetbrains/kotlin/konan/target/ClangArgs.kt | 8 ++++---- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/backend.native/tests/interop/objc/smoke.kt b/backend.native/tests/interop/objc/smoke.kt index 6d4e62c4383..2e376ee6e46 100644 --- a/backend.native/tests/interop/objc/smoke.kt +++ b/backend.native/tests/interop/objc/smoke.kt @@ -71,7 +71,14 @@ fun run() { } // hashCode (directly): - if (foo.hashCode() == foo.hash().let { it.toInt() xor (it shr 32).toInt() }) { + // hash() returns value of NSUInteger type. + val hash = when (Platform.osFamily) { + // `typedef unsigned int NSInteger` on watchOS. + OsFamily.WATCHOS -> foo.hash().toInt() + // `typedef unsigned long NSUInteger` on iOS, macOS, tvOS. + else -> foo.hash().let { it.toInt() xor (it shr 32).toInt() } + } + if (foo.hashCode() == hash) { // toString (virtually): if (Platform.memoryModel == MemoryModel.STRICT) println(map.keys.map { it.toString() }.min() == foo.description()) diff --git a/runtime/src/main/cpp/Runtime.cpp b/runtime/src/main/cpp/Runtime.cpp index a492ce3af5d..6242d984dd4 100644 --- a/runtime/src/main/cpp/Runtime.cpp +++ b/runtime/src/main/cpp/Runtime.cpp @@ -220,6 +220,10 @@ KInt Konan_Platform_getOsFamily() { return 5; #elif KONAN_WASM return 6; +#elif KONAN_TVOS + return 7; +#elif KONAN_WATCHOS + return 8; #else #warning "Unknown platform" return 0; diff --git a/runtime/src/main/kotlin/kotlin/native/Platform.kt b/runtime/src/main/kotlin/kotlin/native/Platform.kt index 1121ee6a6dd..9f972db8436 100644 --- a/runtime/src/main/kotlin/kotlin/native/Platform.kt +++ b/runtime/src/main/kotlin/kotlin/native/Platform.kt @@ -14,7 +14,9 @@ public enum class OsFamily { LINUX, WINDOWS, ANDROID, - WASM + WASM, + TVOS, + WATCHOS } /** diff --git a/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/ClangArgs.kt b/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/ClangArgs.kt index e69fad3067a..ae76110edfb 100644 --- a/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/ClangArgs.kt +++ b/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/ClangArgs.kt @@ -248,7 +248,7 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con KonanTarget.TVOS_ARM64 -> listOf("-DKONAN_OBJC_INTEROP=1", - "-DKONAN_IOS=1", + "-DKONAN_TVOS=1", "-DKONAN_ARM64=1", "-DKONAN_HAS_CXX11_EXCEPTION_FUNCTIONS=1", "-DKONAN_REPORT_BACKTRACE_TO_IOS_CRASH_LOG=1", @@ -256,14 +256,14 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con KonanTarget.TVOS_X64 -> listOf("-DKONAN_OBJC_INTEROP=1", - "-DKONAN_IOS=1", + "-DKONAN_TVOS=1", "-DKONAN_X64=1", "-DKONAN_CORE_SYMBOLICATION=1", "-DKONAN_HAS_CXX11_EXCEPTION_FUNCTIONS=1") KonanTarget.WATCHOS_ARM32 -> listOf("-DKONAN_OBJC_INTEROP=1", - "-DKONAN_IOS", + "-DKONAN_WATCHOS", "-DKONAN_ARM32=1", "-DKONAN_HAS_CXX11_EXCEPTION_FUNCTIONS=1", "-DKONAN_REPORT_BACKTRACE_TO_IOS_CRASH_LOG=1", @@ -274,7 +274,7 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con KonanTarget.WATCHOS_X86 -> listOf("-DKONAN_OBJC_INTEROP=1", - "-DKONAN_IOS=1", + "-DKONAN_WATCHOS=1", "-DKONAN_X86=1", "-DKONAN_CORE_SYMBOLICATION=1", "-DKONAN_HAS_CXX11_EXCEPTION_FUNCTIONS=1")