From 97765d4d9fe6952d47712019a05b92744a7bf7a2 Mon Sep 17 00:00:00 2001 From: soywiz Date: Mon, 4 Apr 2022 01:14:37 +0200 Subject: [PATCH] Disable Kotlin/Native when running in Linux Arm Fixes #560 --- .../kotlin/com/soywiz/korlibs/modules/Targets.kt | 16 +++++++++++----- .../com/soywiz/korge/gradle/KorgeExtension.kt | 6 ++++-- .../com/soywiz/korge/gradle/targets/Targets.kt | 6 ++++++ 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/buildSrc/src/main/kotlin/com/soywiz/korlibs/modules/Targets.kt b/buildSrc/src/main/kotlin/com/soywiz/korlibs/modules/Targets.kt index 69c7050d4..cd60f2703 100644 --- a/buildSrc/src/main/kotlin/com/soywiz/korlibs/modules/Targets.kt +++ b/buildSrc/src/main/kotlin/com/soywiz/korlibs/modules/Targets.kt @@ -5,12 +5,18 @@ import org.gradle.kotlin.dsl.* import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.mpp.* -val Project.doEnableKotlinNative: Boolean get() = rootProject.findProperty("enableKotlinNative") == "true" +val Project.supportKotlinNative: Boolean get() { + // Linux and Windows ARM hosts doesn't have K/N toolchains + if ((isLinux || isWindows) && isArm) return false + return false +} + +val Project.doEnableKotlinNative: Boolean get() = supportKotlinNative && rootProject.findProperty("enableKotlinNative") == "true" val Project.doEnableKotlinAndroid: Boolean get() = rootProject.findProperty("enableKotlinAndroid") == "true" -val Project.doEnableKotlinMobile: Boolean get() = rootProject.findProperty("enableKotlinMobile") == "true" -val Project.doEnableKotlinMobileTvos: Boolean get() = rootProject.findProperty("enableKotlinMobileTvos") == "true" -val Project.doEnableKotlinMobileWatchos: Boolean get() = rootProject.findProperty("enableKotlinMobileWatchos") == "true" -val Project.doEnableKotlinRaspberryPi: Boolean get() = rootProject.findProperty("enableKotlinRaspberryPi") == "true" +val Project.doEnableKotlinMobile: Boolean get() = doEnableKotlinNative && rootProject.findProperty("enableKotlinMobile") == "true" +val Project.doEnableKotlinMobileTvos: Boolean get() = doEnableKotlinMobile && rootProject.findProperty("enableKotlinMobileTvos") == "true" +val Project.doEnableKotlinMobileWatchos: Boolean get() = doEnableKotlinMobile && rootProject.findProperty("enableKotlinMobileWatchos") == "true" +val Project.doEnableKotlinRaspberryPi: Boolean get() = doEnableKotlinNative && rootProject.findProperty("enableKotlinRaspberryPi") == "true" val KotlinTarget.isX64: Boolean get() = this.name.endsWith("X64") val KotlinTarget.isX86: Boolean get() = this.name.endsWith("X86") diff --git a/korge-gradle-plugin/src/main/kotlin/com/soywiz/korge/gradle/KorgeExtension.kt b/korge-gradle-plugin/src/main/kotlin/com/soywiz/korge/gradle/KorgeExtension.kt index 153d62b9f..a66d13a44 100644 --- a/korge-gradle-plugin/src/main/kotlin/com/soywiz/korge/gradle/KorgeExtension.kt +++ b/korge-gradle-plugin/src/main/kotlin/com/soywiz/korge/gradle/KorgeExtension.kt @@ -146,7 +146,9 @@ class KorgeExtension(val project: Project) { */ fun targetDesktop() { target("desktop") { - project.configureNativeDesktop() + if (supportKotlinNative) { + project.configureNativeDesktop() + } } } @@ -185,7 +187,7 @@ class KorgeExtension(val project: Project) { */ fun targetIos() { target("ios") { - if (isMacos) { + if (isMacos && supportKotlinNative) { project.configureNativeIos() } } diff --git a/korge-gradle-plugin/src/main/kotlin/com/soywiz/korge/gradle/targets/Targets.kt b/korge-gradle-plugin/src/main/kotlin/com/soywiz/korge/gradle/targets/Targets.kt index 16c6612d6..4cf54ea67 100644 --- a/korge-gradle-plugin/src/main/kotlin/com/soywiz/korge/gradle/targets/Targets.kt +++ b/korge-gradle-plugin/src/main/kotlin/com/soywiz/korge/gradle/targets/Targets.kt @@ -4,6 +4,12 @@ import org.apache.tools.ant.taskdefs.condition.Os import org.gradle.api.* import org.jetbrains.kotlin.gradle.plugin.* +val supportKotlinNative: Boolean get() { + // Linux and Windows ARM hosts doesn't have K/N toolchains + if ((isLinux || isWindows) && isArm) return false + return false +} + val isWindows get() = Os.isFamily(Os.FAMILY_WINDOWS) val isMacos get() = Os.isFamily(Os.FAMILY_MAC) val isLinux get() = Os.isFamily(Os.FAMILY_UNIX) && !isMacos