Show warnings for disabled targets on current host

Issue #KT-26647 Fixed
This commit is contained in:
Sergey Igushkin
2018-09-21 20:05:31 +03:00
parent 4f650bb056
commit 81ae54c05b
2 changed files with 40 additions and 26 deletions
@@ -173,34 +173,34 @@ open class HostManager(subtargetProvider: SubTargetProvider = NoSubTargets()) {
}
val enabled: List<KonanTarget> 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 {
@@ -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
}