Use TargetTriple in backend to simplify code.

This commit is contained in:
Sergey Bogolepov
2021-04-05 17:29:09 +07:00
committed by TeamCityServer
parent f94e8f95d1
commit 15dcb36f47
3 changed files with 9 additions and 31 deletions
@@ -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<String>::isNotEmpty)
?: mutableListOf<String>().apply {
addNonEmpty(configurables.clangFlags)
addNonEmpty(listOf("-triple", targetTriple))
addNonEmpty(listOf("-triple", targetTriple.toString()))
if (configurables is ZephyrConfigurables) {
addNonEmpty(configurables.constructClangCC1Args())
}
@@ -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()