Avoid explicit native targets enumerations

This commit is contained in:
Sergey Bogolepov
2021-04-05 17:38:59 +07:00
committed by TeamCityServer
parent 15dcb36f47
commit 790fea635d
2 changed files with 18 additions and 30 deletions
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.native.interop.gen
import org.jetbrains.kotlin.konan.target.Architecture
import org.jetbrains.kotlin.konan.target.KonanTarget
import org.jetbrains.kotlin.native.interop.indexer.*
@@ -16,20 +17,19 @@ import org.jetbrains.kotlin.native.interop.indexer.*
*/
internal fun Type.isStret(target: KonanTarget): Boolean {
val unwrappedType = this.unwrapTypedefs()
val abiInfo: ObjCAbiInfo = when (target) {
KonanTarget.IOS_ARM64,
KonanTarget.TVOS_ARM64,
KonanTarget.MACOS_ARM64 -> DarwinArm64AbiInfo()
val abiInfo: ObjCAbiInfo = when (target.architecture) {
Architecture.ARM64 -> {
// Currently, cinterop works with watchos_arm64 as with watchos_arm32.
// TODO: ABI for watchos_arm64 should be revisited after LLVM update.
require(target != KonanTarget.WATCHOS_ARM64)
DarwinArm64AbiInfo()
}
KonanTarget.IOS_X64,
KonanTarget.MACOS_X64,
KonanTarget.WATCHOS_X64,
KonanTarget.TVOS_X64 -> DarwinX64AbiInfo()
Architecture.X64 -> DarwinX64AbiInfo()
KonanTarget.WATCHOS_X86 -> DarwinX86AbiInfo()
Architecture.X86 -> DarwinX86AbiInfo()
KonanTarget.IOS_ARM32,
KonanTarget.WATCHOS_ARM32 -> DarwinArm32AbiInfo(target)
Architecture.ARM32 -> DarwinArm32AbiInfo(target)
else -> error("Cannot generate ObjC stubs for $target.")
}
@@ -37,29 +37,17 @@ class ZephyrConfigurablesImpl(target: KonanTarget, properties: Properties, baseD
: ZephyrConfigurables, KonanPropertiesLoader(target, properties, baseDir)
fun loadConfigurables(target: KonanTarget, properties: Properties, baseDir: String?): Configurables = when (target) {
KonanTarget.LINUX_X64, KonanTarget.LINUX_ARM32_HFP, KonanTarget.LINUX_ARM64,
KonanTarget.LINUX_MIPS32, KonanTarget.LINUX_MIPSEL32 ->
GccConfigurablesImpl(target, properties, baseDir)
fun loadConfigurables(target: KonanTarget, properties: Properties, baseDir: String?): Configurables = when (target.family) {
Family.LINUX -> GccConfigurablesImpl(target, properties, baseDir)
KonanTarget.MACOS_X64, KonanTarget.MACOS_ARM64,
KonanTarget.IOS_ARM32, KonanTarget.IOS_ARM64, KonanTarget.IOS_X64,
KonanTarget.TVOS_ARM64, KonanTarget.TVOS_X64,
KonanTarget.WATCHOS_ARM64, KonanTarget.WATCHOS_ARM32,
KonanTarget.WATCHOS_X64, KonanTarget.WATCHOS_X86 ->
AppleConfigurablesImpl(target, properties, baseDir)
Family.TVOS, Family.WATCHOS, Family.IOS, Family.OSX -> AppleConfigurablesImpl(target, properties, baseDir)
KonanTarget.ANDROID_ARM32, KonanTarget.ANDROID_ARM64,
KonanTarget.ANDROID_X86, KonanTarget.ANDROID_X64 ->
AndroidConfigurablesImpl(target, properties, baseDir)
Family.ANDROID -> AndroidConfigurablesImpl(target, properties, baseDir)
KonanTarget.MINGW_X64, KonanTarget.MINGW_X86 ->
MingwConfigurablesImpl(target, properties, baseDir)
Family.MINGW -> MingwConfigurablesImpl(target, properties, baseDir)
KonanTarget.WASM32 ->
WasmConfigurablesImpl(target, properties, baseDir)
Family.WASM -> WasmConfigurablesImpl(target, properties, baseDir)
is KonanTarget.ZEPHYR ->
ZephyrConfigurablesImpl(target, properties, baseDir)
Family.ZEPHYR -> ZephyrConfigurablesImpl(target, properties, baseDir)
}