Host manager: Provide API to obtain supported targets by host

This commit is contained in:
Ilya Matveev
2019-04-17 18:22:48 +07:00
committed by Ilya Matveev
parent 77b4beb88a
commit cca3ad3faa
@@ -173,55 +173,61 @@ open class HostManager(protected val distribution: Distribution = Distribution()
return target return target
} }
val enabledRegular: List<KonanTarget> by lazy { val enabledRegularByHost: Map<KonanTarget, Set<KonanTarget>> = mapOf(
when (host) { LINUX_X64 to setOf(
KonanTarget.LINUX_X64 -> listOf( LINUX_X64,
KonanTarget.LINUX_X64, LINUX_ARM32_HFP,
KonanTarget.LINUX_ARM32_HFP, LINUX_MIPS32,
KonanTarget.LINUX_MIPS32, LINUX_MIPSEL32,
KonanTarget.LINUX_MIPSEL32, ANDROID_ARM32,
KonanTarget.ANDROID_ARM32, ANDROID_ARM64,
KonanTarget.ANDROID_ARM64, WASM32
KonanTarget.WASM32 ),
) MINGW_X64 to setOf(
KonanTarget.MINGW_X64 -> listOf( MINGW_X64,
KonanTarget.MINGW_X64, MINGW_X86,
KonanTarget.MINGW_X86, LINUX_X64,
KonanTarget.LINUX_X64, LINUX_ARM32_HFP,
KonanTarget.LINUX_ARM32_HFP, ANDROID_ARM32,
KonanTarget.ANDROID_ARM32, // TODO: toolchain to be fixed for that to work.
// TODO: toolchain to be fixed for that to work. // ANDROID_ARM64,
// KonanTarget.ANDROID_ARM64, WASM32
KonanTarget.WASM32 ),
) MACOS_X64 to setOf(
KonanTarget.MACOS_X64 -> listOf( MACOS_X64,
KonanTarget.MACOS_X64, IOS_ARM32,
KonanTarget.IOS_ARM32, IOS_ARM64,
KonanTarget.IOS_ARM64, IOS_X64,
KonanTarget.IOS_X64, LINUX_X64,
KonanTarget.LINUX_X64, LINUX_ARM32_HFP,
KonanTarget.LINUX_ARM32_HFP, ANDROID_ARM32,
KonanTarget.ANDROID_ARM32, ANDROID_ARM64,
KonanTarget.ANDROID_ARM64, WASM32
KonanTarget.WASM32 )
) )
else ->
throw TargetSupportException("Unknown host platform: $host") val enabledExperimentalByHost: Map<KonanTarget, Set<KonanTarget>> = mapOf(
LINUX_X64 to setOf(MINGW_X86, MINGW_X64) + zephyrSubtargets,
MACOS_X64 to setOf(MINGW_X86, MINGW_X64) + zephyrSubtargets,
MINGW_X64 to setOf<KonanTarget>() + zephyrSubtargets
)
val enabledByHost: Map<KonanTarget, Set<KonanTarget>> by lazy {
val result = enabledRegularByHost.toMutableMap()
if (experimentalEnabled) {
enabledExperimentalByHost.forEach { (k, v) ->
result.merge(k, v) { old, new -> old + new }
} }
}
result.toMap()
}
val enabledRegular: List<KonanTarget> by lazy {
enabledRegularByHost[host]?.toList() ?: throw TargetSupportException("Unknown host platform: $host")
} }
val enabledExperimental: List<KonanTarget> by lazy { val enabledExperimental: List<KonanTarget> by lazy {
when (host) { enabledExperimentalByHost[host]?.toList() ?: throw TargetSupportException("Unknown host platform: $host")
KonanTarget.LINUX_X64 -> listOf(
KonanTarget.MINGW_X86, KonanTarget.MINGW_X64
) + zephyrSubtargets
KonanTarget.MACOS_X64 -> listOf(
KonanTarget.MINGW_X86, KonanTarget.MINGW_X64
) + zephyrSubtargets
KonanTarget.MINGW_X64 -> listOf<KonanTarget>(
) + zephyrSubtargets
else -> throw TargetSupportException("Unknown host platform: $host")
}
} }
val enabled : List<KonanTarget> val enabled : List<KonanTarget>