diff --git a/konan/utils/src/org/jetbrains/kotlin/konan/target/KonanTarget.kt b/konan/utils/src/org/jetbrains/kotlin/konan/target/KonanTarget.kt index 536726c0eb4..e7564ca144b 100644 --- a/konan/utils/src/org/jetbrains/kotlin/konan/target/KonanTarget.kt +++ b/konan/utils/src/org/jetbrains/kotlin/konan/target/KonanTarget.kt @@ -173,34 +173,34 @@ open class HostManager(subtargetProvider: SubTargetProvider = NoSubTargets()) { } val enabled: List by lazy { - when (host) { - KonanTarget.LINUX_X64 -> listOf( - KonanTarget.LINUX_X64, - KonanTarget.LINUX_ARM32_HFP, - KonanTarget.LINUX_MIPS32, - KonanTarget.LINUX_MIPSEL32, - KonanTarget.ANDROID_ARM32, - KonanTarget.ANDROID_ARM64, - KonanTarget.WASM32 - ) + zephyrSubtargets - KonanTarget.MINGW_X64 -> listOf( - KonanTarget.MINGW_X64, - KonanTarget.WASM32 - ) + zephyrSubtargets - KonanTarget.MACOS_X64 -> listOf( - KonanTarget.MACOS_X64, - KonanTarget.IOS_ARM32, - KonanTarget.IOS_ARM64, - KonanTarget.IOS_X64, - KonanTarget.ANDROID_ARM32, - KonanTarget.ANDROID_ARM64, - KonanTarget.WASM32 - ) + zephyrSubtargets - else -> - throw TargetSupportException("Unknown host platform: $host") - } + enabledTargetsByHost[host]?.toList() ?: throw TargetSupportException("Unknown host platform: $host") } + val enabledTargetsByHost = mapOf( + KonanTarget.LINUX_X64 to setOf( + KonanTarget.LINUX_X64, + KonanTarget.LINUX_ARM32_HFP, + KonanTarget.LINUX_MIPS32, + KonanTarget.LINUX_MIPSEL32, + KonanTarget.ANDROID_ARM32, + KonanTarget.ANDROID_ARM64, + KonanTarget.WASM32 + ) + zephyrSubtargets, + KonanTarget.MINGW_X64 to setOf( + KonanTarget.MINGW_X64, + KonanTarget.WASM32 + ) + zephyrSubtargets, + KonanTarget.MACOS_X64 to setOf( + KonanTarget.MACOS_X64, + KonanTarget.IOS_ARM32, + KonanTarget.IOS_ARM64, + KonanTarget.IOS_X64, + KonanTarget.ANDROID_ARM32, + KonanTarget.ANDROID_ARM64, + KonanTarget.WASM32 + ) + zephyrSubtargets + ) + fun isEnabled(target: KonanTarget) = enabled.contains(target) companion object { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargetPresets.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargetPresets.kt index c3905223263..e6dcfef3803 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargetPresets.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargetPresets.kt @@ -324,6 +324,20 @@ class KotlinNativeTargetPreset( } } + if (!konanTarget.enabledOnCurrentHost) { + with(HostManager()) { + val supportedHosts = enabledTargetsByHost.filterValues { konanTarget in it }.keys + val supportedHostsString = + if (supportedHosts.size == 1) + "a ${supportedHosts.single()} host" else + "one of the host platforms: ${supportedHosts.joinToString(", ")}" + project.logger.warn( + "Target '$name' for platform ${konanTarget} is ignored during build on this ${HostManager.host} machine. " + + "You can build it with $supportedHostsString." + ) + } + } + return result }