diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/BitcodeCompiler.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/BitcodeCompiler.kt index 3e9e1b7f134..6ab6d80648b 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/BitcodeCompiler.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/BitcodeCompiler.kt @@ -50,25 +50,15 @@ internal class BitcodeCompiler(val context: Context) { private fun clang(configurables: ClangFlags, file: BitcodeFile): ObjectFile { val objectFile = temporary("result", ".o") - // TODO: fix with LLVM update. - val targetTriple = when (context.config.target) { - // LLVM we use does not have support for arm64_32. - KonanTarget.WATCHOS_ARM64 -> { - require(configurables is AppleConfigurables) - "arm64_32-apple-watchos${configurables.osVersionMin}" - } - // Runtime generates bitcode for mythical macos 10.16 because of old Clang. - // Let's fix it. - KonanTarget.MACOS_ARM64 -> { - require(configurables is AppleConfigurables) - "arm64-apple-macos${configurables.osVersionMin}" - } - else -> context.llvm.targetTriple + val targetTriple = if (configurables is AppleConfigurables) { + platform.targetTriple.withOSVersion(configurables.osVersionMin) + } else { + platform.targetTriple } val flags = overrideClangOptions.takeIf(List::isNotEmpty) ?: mutableListOf().apply { addNonEmpty(configurables.clangFlags) - addNonEmpty(listOf("-triple", targetTriple)) + addNonEmpty(listOf("-triple", targetTriple.toString())) if (configurables is ZephyrConfigurables) { addNonEmpty(configurables.constructClangCC1Args()) } diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExport.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExport.kt index 41825ebe35a..68e228e80ad 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExport.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExport.kt @@ -145,6 +145,8 @@ internal class ObjCExport(val context: Context, symbolTable: SymbolTable) { } private fun emitInfoPlist(frameworkContents: File, name: String) { + val properties = context.config.platform.configurables as AppleConfigurables + val directory = when (target.family) { Family.IOS, Family.WATCHOS, @@ -157,17 +159,7 @@ internal class ObjCExport(val context: Context, symbolTable: SymbolTable) { val pkg = guessMainPackage() // TODO: consider showing warning if it is root. val bundleId = pkg.child(Name.identifier(name)).asString() - val platform = when (target) { - KonanTarget.IOS_ARM32, KonanTarget.IOS_ARM64 -> "iPhoneOS" - KonanTarget.IOS_X64 -> "iPhoneSimulator" - KonanTarget.TVOS_ARM64 -> "AppleTVOS" - KonanTarget.TVOS_X64 -> "AppleTVSimulator" - KonanTarget.MACOS_X64, KonanTarget.MACOS_ARM64 -> "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 + val platform = properties.platformName() val minimumOsVersion = properties.osVersionMin val contents = StringBuilder() diff --git a/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/Linker.kt b/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/Linker.kt index 0eb6fdee8b6..b6ebf81cad9 100644 --- a/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/Linker.kt +++ b/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/Linker.kt @@ -171,10 +171,6 @@ class MacOSBasedLinker(targetProperties: AppleConfigurables) private val strip = "$absoluteTargetToolchain/usr/bin/strip" private val dsymutil = "$absoluteTargetToolchain/usr/bin/dsymutil" - private val KonanTarget.isSimulator: Boolean - get() = this == KonanTarget.TVOS_X64 || this == KonanTarget.IOS_X64 || - this == KonanTarget.WATCHOS_X86 || this == KonanTarget.WATCHOS_X64 - private val compilerRtDir: String? by lazy { val dir = File("$absoluteTargetToolchain/usr/lib/clang/").listFiles.firstOrNull()?.absolutePath if (dir != null) "$dir/lib/darwin/" else null @@ -188,7 +184,7 @@ class MacOSBasedLinker(targetProperties: AppleConfigurables) Family.OSX -> "osx" else -> error("Target $target is unsupported") } - val suffix = if (libraryName.isNotEmpty() && target.isSimulator) { + val suffix = if (libraryName.isNotEmpty() && targetTriple.isSimulator) { "sim" } else { ""