[native] Drop deprecated Kotlin/Native targets (2/8)
Remove plain references to removed KonanTarget or Family entries. All the changes in this commit are simple removal of some when-branches on now dropped entries ^KT-64517
This commit is contained in:
committed by
Space Team
parent
0f05ffe111
commit
85bcc8443d
+1
-5
@@ -63,10 +63,6 @@ class DarwinX86AbiInfo : ObjCAbiInfo {
|
|||||||
|
|
||||||
class DarwinArm32AbiInfo(private val target: KonanTarget) : ObjCAbiInfo {
|
class DarwinArm32AbiInfo(private val target: KonanTarget) : ObjCAbiInfo {
|
||||||
override fun shouldUseStret(returnType: Type): Boolean = when (target) {
|
override fun shouldUseStret(returnType: Type): Boolean = when (target) {
|
||||||
KonanTarget.IOS_ARM32 -> when (returnType) {
|
|
||||||
is RecordType -> !returnType.isIntegerLikeType()
|
|
||||||
else -> false
|
|
||||||
}
|
|
||||||
// 32-bit watchOS uses armv7k which is effectively Cortex-A7 and
|
// 32-bit watchOS uses armv7k which is effectively Cortex-A7 and
|
||||||
// uses AAPCS16 VPF.
|
// uses AAPCS16 VPF.
|
||||||
KonanTarget.WATCHOS_ARM32 -> when (returnType) {
|
KonanTarget.WATCHOS_ARM32 -> when (returnType) {
|
||||||
@@ -147,4 +143,4 @@ private fun Type.hasUnalignedMembers(): Boolean = when (this) {
|
|||||||
else -> false
|
else -> false
|
||||||
|
|
||||||
// TODO: should the recursive checks be made in indexer when computing `hasUnalignedFields`?
|
// TODO: should the recursive checks be made in indexer when computing `hasUnalignedFields`?
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-2
@@ -114,10 +114,9 @@ internal fun createLTOFinalPipelineConfig(
|
|||||||
context.shouldContainDebugInfo() -> LlvmOptimizationLevel.NONE
|
context.shouldContainDebugInfo() -> LlvmOptimizationLevel.NONE
|
||||||
else -> LlvmOptimizationLevel.DEFAULT
|
else -> LlvmOptimizationLevel.DEFAULT
|
||||||
}
|
}
|
||||||
|
// TODO(KT-66501): investigate, why sizeLevel is essentially === to NONE (and inline it if it's OK)
|
||||||
val sizeLevel: LlvmSizeLevel = when {
|
val sizeLevel: LlvmSizeLevel = when {
|
||||||
// We try to optimize code as much as possible on embedded targets.
|
// We try to optimize code as much as possible on embedded targets.
|
||||||
target is KonanTarget.ZEPHYR ||
|
|
||||||
target == KonanTarget.WASM32 -> LlvmSizeLevel.AGGRESSIVE
|
|
||||||
context.shouldOptimize() -> LlvmSizeLevel.NONE
|
context.shouldOptimize() -> LlvmSizeLevel.NONE
|
||||||
context.shouldContainDebugInfo() -> LlvmSizeLevel.NONE
|
context.shouldContainDebugInfo() -> LlvmSizeLevel.NONE
|
||||||
else -> LlvmSizeLevel.NONE
|
else -> LlvmSizeLevel.NONE
|
||||||
|
|||||||
-1
@@ -586,7 +586,6 @@ internal class CodegenLlvmHelpers(private val generationState: NativeGenerationS
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val personalityFunctionName = when (target) {
|
private val personalityFunctionName = when (target) {
|
||||||
KonanTarget.IOS_ARM32 -> "__gxx_personality_sj0"
|
|
||||||
KonanTarget.MINGW_X64 -> "__gxx_personality_seh0"
|
KonanTarget.MINGW_X64 -> "__gxx_personality_seh0"
|
||||||
else -> "__gxx_personality_v0"
|
else -> "__gxx_personality_v0"
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -43,7 +43,7 @@ private fun shouldEnforceFramePointer(context: Context): Boolean {
|
|||||||
|
|
||||||
return when (context.config.target.family) {
|
return when (context.config.target.family) {
|
||||||
Family.OSX, Family.IOS, Family.WATCHOS, Family.TVOS -> context.shouldContainLocationDebugInfo()
|
Family.OSX, Family.IOS, Family.WATCHOS, Family.TVOS -> context.shouldContainLocationDebugInfo()
|
||||||
Family.LINUX, Family.MINGW, Family.ANDROID, Family.WASM, Family.ZEPHYR -> false
|
Family.LINUX, Family.MINGW, Family.ANDROID -> false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-13
@@ -110,18 +110,7 @@ internal class InfoPListBuilder(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (target == KonanTarget.IOS_ARM32) {
|
if (bundleType == BundleType.XCTEST) {
|
||||||
contents.append("""
|
|
||||||
| <key>UIRequiredDeviceCapabilities</key>
|
|
||||||
| <array>
|
|
||||||
| <string>armv7</string>
|
|
||||||
| </array>
|
|
||||||
|
|
||||||
""".trimMargin()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bundleType == BundleType.XCTEST) {
|
|
||||||
val platformName = properties.platformName().lowercase()
|
val platformName = properties.platformName().lowercase()
|
||||||
val platformVersion = properties.sdkVersion
|
val platformVersion = properties.sdkVersion
|
||||||
|
|
||||||
@@ -199,4 +188,4 @@ internal class InfoPListBuilder(
|
|||||||
}
|
}
|
||||||
return bundleID
|
return bundleID
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-8
@@ -208,9 +208,6 @@ internal constructor(
|
|||||||
Architecture.X86 -> AppleArchitecture.X86
|
Architecture.X86 -> AppleArchitecture.X86
|
||||||
Architecture.ARM64 -> if (this == WATCHOS_ARM64) AppleArchitecture.ARM64_32 else AppleArchitecture.ARM64
|
Architecture.ARM64 -> if (this == WATCHOS_ARM64) AppleArchitecture.ARM64_32 else AppleArchitecture.ARM64
|
||||||
Architecture.ARM32 -> AppleArchitecture.ARM32
|
Architecture.ARM32 -> AppleArchitecture.ARM32
|
||||||
Architecture.MIPS32,
|
|
||||||
Architecture.MIPSEL32,
|
|
||||||
Architecture.WASM32 -> error("Fat frameworks are not supported for target `$name`")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// region DSL methods.
|
// region DSL methods.
|
||||||
@@ -275,10 +272,9 @@ internal constructor(
|
|||||||
// remove `is ...` after Gradle Configuration Cache deserialization for Objects of a Sealed Class is fixed
|
// remove `is ...` after Gradle Configuration Cache deserialization for Objects of a Sealed Class is fixed
|
||||||
// https://github.com/gradle/gradle/issues/22347
|
// https://github.com/gradle/gradle/issues/22347
|
||||||
is MACOS_X64, is MACOS_ARM64 -> "MacOSX"
|
is MACOS_X64, is MACOS_ARM64 -> "MacOSX"
|
||||||
is IOS_ARM32, is IOS_ARM64, is IOS_X64, is IOS_SIMULATOR_ARM64 -> "iPhoneOS"
|
is IOS_ARM64, is IOS_X64, is IOS_SIMULATOR_ARM64 -> "iPhoneOS"
|
||||||
is TVOS_ARM64, is TVOS_X64, is TVOS_SIMULATOR_ARM64 -> "AppleTVOS"
|
is TVOS_ARM64, is TVOS_X64, is TVOS_SIMULATOR_ARM64 -> "AppleTVOS"
|
||||||
is WATCHOS_ARM32, is WATCHOS_ARM64, is WATCHOS_X86,
|
is WATCHOS_ARM32, is WATCHOS_ARM64, is WATCHOS_X64, is WATCHOS_SIMULATOR_ARM64, is WATCHOS_DEVICE_ARM64 -> "WatchOS"
|
||||||
is WATCHOS_X64, is WATCHOS_SIMULATOR_ARM64, is WATCHOS_DEVICE_ARM64 -> "WatchOS"
|
|
||||||
else -> error("Fat frameworks are not supported for platform `${target.visibleName}`")
|
else -> error("Fat frameworks are not supported for platform `${target.visibleName}`")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -462,8 +458,8 @@ internal constructor(
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private val supportedTargets = listOf(
|
private val supportedTargets = listOf(
|
||||||
IOS_ARM32, IOS_ARM64, IOS_X64,
|
IOS_ARM64, IOS_X64,
|
||||||
WATCHOS_ARM32, WATCHOS_ARM64, WATCHOS_X86, WATCHOS_X64, WATCHOS_DEVICE_ARM64,
|
WATCHOS_ARM32, WATCHOS_ARM64, WATCHOS_X64, WATCHOS_DEVICE_ARM64,
|
||||||
TVOS_ARM64, TVOS_X64,
|
TVOS_ARM64, TVOS_X64,
|
||||||
MACOS_X64, MACOS_ARM64
|
MACOS_X64, MACOS_ARM64
|
||||||
)
|
)
|
||||||
|
|||||||
+1
-10
@@ -28,18 +28,9 @@ class EmulatorExecutor(
|
|||||||
this.executableAbsolutePath = configurables.absoluteEmulatorExecutable
|
this.executableAbsolutePath = configurables.absoluteEmulatorExecutable
|
||||||
this.workingDirectory = workingDirectory
|
this.workingDirectory = workingDirectory
|
||||||
this.args.add(0, request.executableAbsolutePath)
|
this.args.add(0, request.executableAbsolutePath)
|
||||||
when (configurables.target) {
|
|
||||||
KonanTarget.LINUX_MIPS32,
|
|
||||||
KonanTarget.LINUX_MIPSEL32 -> {
|
|
||||||
// This is to workaround an endianess issue.
|
|
||||||
// See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=731082 for details.
|
|
||||||
this.args.addAll(0, listOf("$absoluteTargetSysRoot/lib/ld.so.1", "--inhibit-cache"))
|
|
||||||
}
|
|
||||||
else -> Unit
|
|
||||||
}
|
|
||||||
// TODO: Move these to konan.properties when when it will be possible
|
// TODO: Move these to konan.properties when when it will be possible
|
||||||
// to represent absolute path there.
|
// to represent absolute path there.
|
||||||
this.args.addAll(0, listOf("-L", absoluteTargetSysRoot))
|
this.args.addAll(0, listOf("-L", absoluteTargetSysRoot))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-8
@@ -127,30 +127,23 @@ abstract class AbstractNativeCInteropTest : AbstractNativeCInteropBaseTest() {
|
|||||||
KonanTarget.ANDROID_ARM64 -> "ARM64"
|
KonanTarget.ANDROID_ARM64 -> "ARM64"
|
||||||
KonanTarget.ANDROID_X64 -> "X64"
|
KonanTarget.ANDROID_X64 -> "X64"
|
||||||
KonanTarget.ANDROID_X86 -> "CPointerByteVar"
|
KonanTarget.ANDROID_X86 -> "CPointerByteVar"
|
||||||
KonanTarget.IOS_ARM32 -> "COpaquePointer"
|
|
||||||
KonanTarget.IOS_ARM64 -> "CPointerByteVar"
|
KonanTarget.IOS_ARM64 -> "CPointerByteVar"
|
||||||
KonanTarget.IOS_SIMULATOR_ARM64 -> "CPointerByteVar"
|
KonanTarget.IOS_SIMULATOR_ARM64 -> "CPointerByteVar"
|
||||||
KonanTarget.IOS_X64 -> "X64"
|
KonanTarget.IOS_X64 -> "X64"
|
||||||
KonanTarget.LINUX_ARM32_HFP -> "ARM32"
|
KonanTarget.LINUX_ARM32_HFP -> "ARM32"
|
||||||
KonanTarget.LINUX_ARM64 -> "ARM64"
|
KonanTarget.LINUX_ARM64 -> "ARM64"
|
||||||
KonanTarget.LINUX_MIPS32 -> "COpaquePointer"
|
|
||||||
KonanTarget.LINUX_MIPSEL32 -> "COpaquePointer"
|
|
||||||
KonanTarget.LINUX_X64 -> "X64"
|
KonanTarget.LINUX_X64 -> "X64"
|
||||||
KonanTarget.MACOS_ARM64 -> "CPointerByteVar"
|
KonanTarget.MACOS_ARM64 -> "CPointerByteVar"
|
||||||
KonanTarget.MACOS_X64 -> "X64"
|
KonanTarget.MACOS_X64 -> "X64"
|
||||||
KonanTarget.MINGW_X64 -> "CPointerByteVar"
|
KonanTarget.MINGW_X64 -> "CPointerByteVar"
|
||||||
KonanTarget.MINGW_X86 -> "CPointerByteVar"
|
|
||||||
KonanTarget.TVOS_ARM64 -> "CPointerByteVar"
|
KonanTarget.TVOS_ARM64 -> "CPointerByteVar"
|
||||||
KonanTarget.TVOS_SIMULATOR_ARM64 -> "CPointerByteVar"
|
KonanTarget.TVOS_SIMULATOR_ARM64 -> "CPointerByteVar"
|
||||||
KonanTarget.TVOS_X64 -> "X64"
|
KonanTarget.TVOS_X64 -> "X64"
|
||||||
KonanTarget.WASM32 -> "COpaquePointer"
|
|
||||||
KonanTarget.WATCHOS_ARM32 -> "CPointerByteVar"
|
KonanTarget.WATCHOS_ARM32 -> "CPointerByteVar"
|
||||||
KonanTarget.WATCHOS_ARM64 -> "CPointerByteVar"
|
KonanTarget.WATCHOS_ARM64 -> "CPointerByteVar"
|
||||||
KonanTarget.WATCHOS_DEVICE_ARM64 -> "CPointerByteVar"
|
KonanTarget.WATCHOS_DEVICE_ARM64 -> "CPointerByteVar"
|
||||||
KonanTarget.WATCHOS_SIMULATOR_ARM64 -> "CPointerByteVar"
|
KonanTarget.WATCHOS_SIMULATOR_ARM64 -> "CPointerByteVar"
|
||||||
KonanTarget.WATCHOS_X64 -> "X64"
|
KonanTarget.WATCHOS_X64 -> "X64"
|
||||||
KonanTarget.WATCHOS_X86 -> "CPointerByteVar"
|
|
||||||
is KonanTarget.ZEPHYR -> "COpaquePointer"
|
|
||||||
}
|
}
|
||||||
return testPathFull.resolve("contents.gold.${goldenFilePart}.txt")
|
return testPathFull.resolve("contents.gold.${goldenFilePart}.txt")
|
||||||
}
|
}
|
||||||
@@ -172,4 +165,3 @@ internal fun muteCInteropTestIfNecessary(defFile: File, target: KonanTarget) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Assumptions.assumeFalse(defHasObjC && !targets.testTarget.family.isAppleFamily)
|
//Assumptions.assumeFalse(defHasObjC && !targets.testTarget.family.isAppleFamily)
|
||||||
|
|
||||||
|
|||||||
-5
@@ -30,8 +30,6 @@ internal val Family.compressedName: Char
|
|||||||
Family.LINUX -> 'l'
|
Family.LINUX -> 'l'
|
||||||
Family.MINGW -> 'm'
|
Family.MINGW -> 'm'
|
||||||
Family.ANDROID -> 'a'
|
Family.ANDROID -> 'a'
|
||||||
Family.WASM -> 'j' // because 'w', 'a' and 'm' are already occupied
|
|
||||||
Family.ZEPHYR -> 'z'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal val Architecture.compressedName: String
|
internal val Architecture.compressedName: String
|
||||||
@@ -40,9 +38,6 @@ internal val Architecture.compressedName: String
|
|||||||
Architecture.X86 -> "x86"
|
Architecture.X86 -> "x86"
|
||||||
Architecture.ARM64 -> "a64"
|
Architecture.ARM64 -> "a64"
|
||||||
Architecture.ARM32 -> "a32"
|
Architecture.ARM32 -> "a32"
|
||||||
Architecture.MIPS32 -> "m32"
|
|
||||||
Architecture.MIPSEL32 -> "e32"
|
|
||||||
Architecture.WASM32 -> "w32"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal val Class<*>.compressedSimpleName: String
|
internal val Class<*>.compressedSimpleName: String
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ sealed class ClangArgs(
|
|||||||
"-mfpu=vfp", "-mfloat-abi=hard"
|
"-mfpu=vfp", "-mfloat-abi=hard"
|
||||||
)
|
)
|
||||||
|
|
||||||
KonanTarget.IOS_ARM32, KonanTarget.WATCHOS_ARM32 -> listOf(
|
KonanTarget.WATCHOS_ARM32 -> listOf(
|
||||||
// Force generation of ARM instruction set instead of Thumb-2.
|
// Force generation of ARM instruction set instead of Thumb-2.
|
||||||
// It allows LLVM ARM backend to encode bigger offsets in BL instruction,
|
// It allows LLVM ARM backend to encode bigger offsets in BL instruction,
|
||||||
// thus allowing to generate a slightly bigger binaries.
|
// thus allowing to generate a slightly bigger binaries.
|
||||||
@@ -191,38 +191,6 @@ sealed class ClangArgs(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// By default WASM target forces `hidden` visibility which causes linkage problems.
|
|
||||||
KonanTarget.WASM32 -> listOf(
|
|
||||||
"-fno-rtti",
|
|
||||||
"-fno-exceptions",
|
|
||||||
"-fvisibility=default",
|
|
||||||
"-D_LIBCPP_ABI_VERSION=2",
|
|
||||||
"-D_LIBCPP_NO_EXCEPTIONS=1",
|
|
||||||
"-nostdinc",
|
|
||||||
"-Xclang", "-nobuiltininc",
|
|
||||||
"-Xclang", "-nostdsysteminc",
|
|
||||||
"-Xclang", "-isystem$absoluteTargetSysRoot/include/libcxx",
|
|
||||||
"-Xclang", "-isystem$absoluteTargetSysRoot/lib/libcxxabi/include",
|
|
||||||
"-Xclang", "-isystem$absoluteTargetSysRoot/include/compat",
|
|
||||||
"-Xclang", "-isystem$absoluteTargetSysRoot/include/libc"
|
|
||||||
)
|
|
||||||
|
|
||||||
is KonanTarget.ZEPHYR -> listOf(
|
|
||||||
"-fno-rtti",
|
|
||||||
"-fno-exceptions",
|
|
||||||
"-fno-asynchronous-unwind-tables",
|
|
||||||
"-fno-pie",
|
|
||||||
"-fno-pic",
|
|
||||||
"-fshort-enums",
|
|
||||||
"-nostdinc",
|
|
||||||
// TODO: make it a libGcc property?
|
|
||||||
// We need to get rid of wasm sysroot first.
|
|
||||||
"-isystem ${configurables.targetToolchain}/../lib/gcc/arm-none-eabi/7.2.1/include",
|
|
||||||
"-isystem ${configurables.targetToolchain}/../lib/gcc/arm-none-eabi/7.2.1/include-fixed",
|
|
||||||
"-isystem$absoluteTargetSysRoot/include/libcxx",
|
|
||||||
"-isystem$absoluteTargetSysRoot/include/libc"
|
|
||||||
) + (configurables as ZephyrConfigurables).constructClangArgs()
|
|
||||||
|
|
||||||
else -> emptyList()
|
else -> emptyList()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -314,4 +282,3 @@ sealed class ClangArgs(
|
|||||||
*/
|
*/
|
||||||
class Native(configurables: Configurables) : ClangArgs(configurables, forJni = false)
|
class Native(configurables: Configurables) : ClangArgs(configurables, forJni = false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,13 +28,6 @@ class GccConfigurablesImpl(target: KonanTarget, properties: Properties, dependen
|
|||||||
class AndroidConfigurablesImpl(target: KonanTarget, properties: Properties, dependenciesRoot: String?, progressCallback: ProgressCallback) : AndroidConfigurables,
|
class AndroidConfigurablesImpl(target: KonanTarget, properties: Properties, dependenciesRoot: String?, progressCallback: ProgressCallback) : AndroidConfigurables,
|
||||||
KonanPropertiesLoader(target, properties, dependenciesRoot, progressCallback = progressCallback)
|
KonanPropertiesLoader(target, properties, dependenciesRoot, progressCallback = progressCallback)
|
||||||
|
|
||||||
class WasmConfigurablesImpl(target: KonanTarget, properties: Properties, dependenciesRoot: String?, progressCallback: ProgressCallback) : WasmConfigurables,
|
|
||||||
KonanPropertiesLoader(target, properties, dependenciesRoot, progressCallback = progressCallback)
|
|
||||||
|
|
||||||
class ZephyrConfigurablesImpl(target: KonanTarget, properties: Properties, dependenciesRoot: String?, progressCallback: ProgressCallback) : ZephyrConfigurables,
|
|
||||||
KonanPropertiesLoader(target, properties, dependenciesRoot, progressCallback = progressCallback)
|
|
||||||
|
|
||||||
|
|
||||||
fun loadConfigurables(
|
fun loadConfigurables(
|
||||||
target: KonanTarget,
|
target: KonanTarget,
|
||||||
properties: Properties,
|
properties: Properties,
|
||||||
@@ -50,9 +43,4 @@ fun loadConfigurables(
|
|||||||
Family.ANDROID -> AndroidConfigurablesImpl(target, properties, dependenciesRoot, progressCallback)
|
Family.ANDROID -> AndroidConfigurablesImpl(target, properties, dependenciesRoot, progressCallback)
|
||||||
|
|
||||||
Family.MINGW -> MingwConfigurablesImpl(target, properties, dependenciesRoot, progressCallback)
|
Family.MINGW -> MingwConfigurablesImpl(target, properties, dependenciesRoot, progressCallback)
|
||||||
|
|
||||||
Family.WASM -> WasmConfigurablesImpl(target, properties, dependenciesRoot, progressCallback)
|
|
||||||
|
|
||||||
Family.ZEPHYR -> ZephyrConfigurablesImpl(target, properties, dependenciesRoot, progressCallback)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ fun KonanTarget.binaryFormat() = when (family) {
|
|||||||
Family.ANDROID -> BinaryFormat.ELF
|
Family.ANDROID -> BinaryFormat.ELF
|
||||||
Family.LINUX -> BinaryFormat.ELF
|
Family.LINUX -> BinaryFormat.ELF
|
||||||
Family.MINGW -> BinaryFormat.PE_COFF
|
Family.MINGW -> BinaryFormat.PE_COFF
|
||||||
Family.WASM, Family.ZEPHYR -> null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun KonanTarget.pointerBits() = when (architecture) {
|
fun KonanTarget.pointerBits() = when (architecture) {
|
||||||
@@ -27,15 +26,11 @@ fun KonanTarget.pointerBits() = when (architecture) {
|
|||||||
Architecture.X86 -> 32
|
Architecture.X86 -> 32
|
||||||
Architecture.ARM64 -> if (this == KonanTarget.WATCHOS_ARM64) 32 else 64
|
Architecture.ARM64 -> if (this == KonanTarget.WATCHOS_ARM64) 32 else 64
|
||||||
Architecture.ARM32 -> 32
|
Architecture.ARM32 -> 32
|
||||||
Architecture.MIPS32 -> 32
|
|
||||||
Architecture.MIPSEL32 -> 32
|
|
||||||
Architecture.WASM32 -> 32
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun KonanTarget.supportsMimallocAllocator(): Boolean =
|
fun KonanTarget.supportsMimallocAllocator(): Boolean =
|
||||||
when(this) {
|
when(this) {
|
||||||
is KonanTarget.LINUX_X64 -> true
|
is KonanTarget.LINUX_X64 -> true
|
||||||
is KonanTarget.MINGW_X86 -> true
|
|
||||||
is KonanTarget.MINGW_X64 -> true
|
is KonanTarget.MINGW_X64 -> true
|
||||||
is KonanTarget.MACOS_X64 -> true
|
is KonanTarget.MACOS_X64 -> true
|
||||||
is KonanTarget.MACOS_ARM64 -> true
|
is KonanTarget.MACOS_ARM64 -> true
|
||||||
@@ -43,26 +38,19 @@ fun KonanTarget.supportsMimallocAllocator(): Boolean =
|
|||||||
is KonanTarget.LINUX_ARM32_HFP -> true
|
is KonanTarget.LINUX_ARM32_HFP -> true
|
||||||
is KonanTarget.ANDROID_X64 -> true
|
is KonanTarget.ANDROID_X64 -> true
|
||||||
is KonanTarget.ANDROID_ARM64 -> true
|
is KonanTarget.ANDROID_ARM64 -> true
|
||||||
is KonanTarget.IOS_ARM32 -> true
|
|
||||||
is KonanTarget.IOS_ARM64 -> true
|
is KonanTarget.IOS_ARM64 -> true
|
||||||
is KonanTarget.IOS_X64 -> true
|
is KonanTarget.IOS_X64 -> true
|
||||||
is KonanTarget.IOS_SIMULATOR_ARM64 -> true
|
is KonanTarget.IOS_SIMULATOR_ARM64 -> true
|
||||||
is KonanTarget.WATCHOS_ARM32, is KonanTarget.WATCHOS_ARM64,
|
is KonanTarget.WATCHOS_ARM32, is KonanTarget.WATCHOS_ARM64,
|
||||||
is KonanTarget.WATCHOS_SIMULATOR_ARM64, is KonanTarget.WATCHOS_X64, is KonanTarget.WATCHOS_X86,
|
is KonanTarget.WATCHOS_SIMULATOR_ARM64, is KonanTarget.WATCHOS_X64,
|
||||||
is KonanTarget.TVOS_ARM64, is KonanTarget.TVOS_SIMULATOR_ARM64, is KonanTarget.TVOS_X64,
|
is KonanTarget.TVOS_ARM64, is KonanTarget.TVOS_SIMULATOR_ARM64, is KonanTarget.TVOS_X64,
|
||||||
is KonanTarget.ANDROID_X86, is KonanTarget.ANDROID_ARM32 -> false // aren't tested.
|
is KonanTarget.ANDROID_X86, is KonanTarget.ANDROID_ARM32 -> false // aren't tested.
|
||||||
is KonanTarget.LINUX_MIPS32, is KonanTarget.LINUX_MIPSEL32 -> false // need linking with libatomic.
|
|
||||||
is KonanTarget.WASM32, is KonanTarget.ZEPHYR -> false // likely not supported
|
|
||||||
// Funny thing is we can neither access WATCHOS_DEVICE_ARM64, nor omit it explicitly due to the
|
|
||||||
// build's quirks. Workaround by using else clause.
|
|
||||||
// TODO: Add explicit WATCHOS_DEVICE_ARM64 after compiler update.
|
|
||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
|
|
||||||
fun KonanTarget.supportsLibBacktrace(): Boolean =
|
fun KonanTarget.supportsLibBacktrace(): Boolean =
|
||||||
this.family.isAppleFamily ||
|
this.family.isAppleFamily ||
|
||||||
// MIPS architectures have issues, see KT-48949
|
this.family == Family.LINUX ||
|
||||||
(this.family == Family.LINUX && this.architecture !in listOf(Architecture.MIPS32, Architecture.MIPSEL32)) ||
|
|
||||||
this.family == Family.ANDROID
|
this.family == Family.ANDROID
|
||||||
|
|
||||||
// TODO: Add explicit WATCHOS_DEVICE_ARM64 after compiler update.
|
// TODO: Add explicit WATCHOS_DEVICE_ARM64 after compiler update.
|
||||||
@@ -70,10 +58,10 @@ fun KonanTarget.supportsCoreSymbolication(): Boolean =
|
|||||||
this in listOf(
|
this in listOf(
|
||||||
KonanTarget.MACOS_X64, KonanTarget.MACOS_ARM64, KonanTarget.IOS_X64,
|
KonanTarget.MACOS_X64, KonanTarget.MACOS_ARM64, KonanTarget.IOS_X64,
|
||||||
KonanTarget.IOS_SIMULATOR_ARM64, KonanTarget.TVOS_X64, KonanTarget.TVOS_SIMULATOR_ARM64,
|
KonanTarget.IOS_SIMULATOR_ARM64, KonanTarget.TVOS_X64, KonanTarget.TVOS_SIMULATOR_ARM64,
|
||||||
KonanTarget.WATCHOS_X86, KonanTarget.WATCHOS_X64, KonanTarget.WATCHOS_SIMULATOR_ARM64
|
KonanTarget.WATCHOS_X64, KonanTarget.WATCHOS_SIMULATOR_ARM64
|
||||||
)
|
)
|
||||||
|
|
||||||
fun KonanTarget.supportsGccUnwind(): Boolean = family == Family.ANDROID || family == Family.LINUX || this is KonanTarget.MINGW_X86
|
fun KonanTarget.supportsGccUnwind(): Boolean = family == Family.ANDROID || family == Family.LINUX
|
||||||
// MINGW_X64 target does not support GCC unwind, since its sysroot contains libgcc version < 12 having misfeature, see KT-49240
|
// MINGW_X64 target does not support GCC unwind, since its sysroot contains libgcc version < 12 having misfeature, see KT-49240
|
||||||
fun KonanTarget.supportsWinAPIUnwind(): Boolean = this is KonanTarget.MINGW_X64
|
fun KonanTarget.supportsWinAPIUnwind(): Boolean = this is KonanTarget.MINGW_X64
|
||||||
|
|
||||||
@@ -93,12 +81,7 @@ fun KonanTarget.supportsObjcInterop(): Boolean = family.isAppleFamily
|
|||||||
fun KonanTarget.hasFoundationFramework(): Boolean = family.isAppleFamily
|
fun KonanTarget.hasFoundationFramework(): Boolean = family.isAppleFamily
|
||||||
fun KonanTarget.hasUIKitFramework(): Boolean = family == Family.IOS || family == Family.TVOS
|
fun KonanTarget.hasUIKitFramework(): Boolean = family == Family.IOS || family == Family.TVOS
|
||||||
fun KonanTarget.supports64BitMulOverflow(): Boolean = when (this) {
|
fun KonanTarget.supports64BitMulOverflow(): Boolean = when (this) {
|
||||||
is KonanTarget.MINGW_X86 -> false
|
|
||||||
is KonanTarget.LINUX_ARM32_HFP -> false
|
is KonanTarget.LINUX_ARM32_HFP -> false
|
||||||
is KonanTarget.LINUX_MIPS32 -> false
|
|
||||||
is KonanTarget.LINUX_MIPSEL32 -> false
|
|
||||||
is KonanTarget.WASM32 -> false
|
|
||||||
is KonanTarget.ZEPHYR -> false
|
|
||||||
is KonanTarget.ANDROID_ARM32 -> false
|
is KonanTarget.ANDROID_ARM32 -> false
|
||||||
is KonanTarget.ANDROID_X86 -> false
|
is KonanTarget.ANDROID_X86 -> false
|
||||||
else -> true
|
else -> true
|
||||||
@@ -106,7 +89,6 @@ fun KonanTarget.supports64BitMulOverflow(): Boolean = when (this) {
|
|||||||
|
|
||||||
// TODO: Add explicit WATCHOS_DEVICE_ARM64 after compiler update.
|
// TODO: Add explicit WATCHOS_DEVICE_ARM64 after compiler update.
|
||||||
fun KonanTarget.supportsIosCrashLog(): Boolean = when (this) {
|
fun KonanTarget.supportsIosCrashLog(): Boolean = when (this) {
|
||||||
KonanTarget.IOS_ARM32 -> true
|
|
||||||
KonanTarget.IOS_ARM64 -> true
|
KonanTarget.IOS_ARM64 -> true
|
||||||
KonanTarget.WATCHOS_ARM32 -> true
|
KonanTarget.WATCHOS_ARM32 -> true
|
||||||
KonanTarget.WATCHOS_ARM64 -> true
|
KonanTarget.WATCHOS_ARM64 -> true
|
||||||
@@ -122,12 +104,12 @@ fun KonanTarget.supportsIosCrashLog(): Boolean = when (this) {
|
|||||||
* TODO: reconsider once target MIPS can do proper 64-bit load/store/CAS.
|
* TODO: reconsider once target MIPS can do proper 64-bit load/store/CAS.
|
||||||
*/
|
*/
|
||||||
fun KonanTarget.supports64BitAtomics(): Boolean = when (architecture) {
|
fun KonanTarget.supports64BitAtomics(): Boolean = when (architecture) {
|
||||||
Architecture.ARM32, Architecture.WASM32, Architecture.MIPS32, Architecture.MIPSEL32 -> false
|
Architecture.ARM32 -> false
|
||||||
Architecture.X86, Architecture.ARM64, Architecture.X64 -> true
|
Architecture.X86, Architecture.ARM64, Architecture.X64 -> true
|
||||||
} && this != KonanTarget.WATCHOS_ARM64 && this != KonanTarget.WATCHOS_X86
|
} && this != KonanTarget.WATCHOS_ARM64
|
||||||
|
|
||||||
fun KonanTarget.supportsUnalignedAccess(): Boolean = when (architecture) {
|
fun KonanTarget.supportsUnalignedAccess(): Boolean = when (architecture) {
|
||||||
Architecture.ARM32, Architecture.WASM32, Architecture.MIPS32, Architecture.MIPSEL32 -> false
|
Architecture.ARM32 -> false
|
||||||
Architecture.X86, Architecture.ARM64, Architecture.X64 -> true
|
Architecture.X86, Architecture.ARM64, Architecture.X64 -> true
|
||||||
} && this != KonanTarget.WATCHOS_ARM64
|
} && this != KonanTarget.WATCHOS_ARM64
|
||||||
|
|
||||||
@@ -151,11 +133,11 @@ fun KonanTarget.supportedSanitizers(): List<SanitizerKind> =
|
|||||||
fun KonanTarget.hasAddressDependencyInMemoryModel(): Boolean =
|
fun KonanTarget.hasAddressDependencyInMemoryModel(): Boolean =
|
||||||
when (this.architecture) {
|
when (this.architecture) {
|
||||||
Architecture.X86, Architecture.X64, Architecture.ARM32, Architecture.ARM64 -> true
|
Architecture.X86, Architecture.X64, Architecture.ARM32, Architecture.ARM64 -> true
|
||||||
Architecture.MIPS32, Architecture.MIPSEL32, Architecture.WASM32 -> false
|
Architecture.MIPS32, Architecture.MIPSEL32 -> false
|
||||||
}
|
}
|
||||||
|
|
||||||
val KonanTarget.supportsGrandCentralDispatch
|
val KonanTarget.supportsGrandCentralDispatch
|
||||||
get() = family.isAppleFamily
|
get() = family.isAppleFamily
|
||||||
|
|
||||||
val KonanTarget.supportsSignposts
|
val KonanTarget.supportsSignposts
|
||||||
get() = family.isAppleFamily
|
get() = family.isAppleFamily
|
||||||
|
|||||||
Reference in New Issue
Block a user