Host manager: Provide API to obtain supported targets by host
This commit is contained in:
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 enabledRegularByHost: Map<KonanTarget, Set<KonanTarget>> = mapOf(
|
||||||
|
LINUX_X64 to setOf(
|
||||||
|
LINUX_X64,
|
||||||
|
LINUX_ARM32_HFP,
|
||||||
|
LINUX_MIPS32,
|
||||||
|
LINUX_MIPSEL32,
|
||||||
|
ANDROID_ARM32,
|
||||||
|
ANDROID_ARM64,
|
||||||
|
WASM32
|
||||||
|
),
|
||||||
|
MINGW_X64 to setOf(
|
||||||
|
MINGW_X64,
|
||||||
|
MINGW_X86,
|
||||||
|
LINUX_X64,
|
||||||
|
LINUX_ARM32_HFP,
|
||||||
|
ANDROID_ARM32,
|
||||||
|
// TODO: toolchain to be fixed for that to work.
|
||||||
|
// ANDROID_ARM64,
|
||||||
|
WASM32
|
||||||
|
),
|
||||||
|
MACOS_X64 to setOf(
|
||||||
|
MACOS_X64,
|
||||||
|
IOS_ARM32,
|
||||||
|
IOS_ARM64,
|
||||||
|
IOS_X64,
|
||||||
|
LINUX_X64,
|
||||||
|
LINUX_ARM32_HFP,
|
||||||
|
ANDROID_ARM32,
|
||||||
|
ANDROID_ARM64,
|
||||||
|
WASM32
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
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 {
|
val enabledRegular: List<KonanTarget> by lazy {
|
||||||
when (host) {
|
enabledRegularByHost[host]?.toList() ?: throw TargetSupportException("Unknown host platform: $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
|
|
||||||
)
|
|
||||||
KonanTarget.MINGW_X64 -> listOf(
|
|
||||||
KonanTarget.MINGW_X64,
|
|
||||||
KonanTarget.MINGW_X86,
|
|
||||||
KonanTarget.LINUX_X64,
|
|
||||||
KonanTarget.LINUX_ARM32_HFP,
|
|
||||||
KonanTarget.ANDROID_ARM32,
|
|
||||||
// TODO: toolchain to be fixed for that to work.
|
|
||||||
// KonanTarget.ANDROID_ARM64,
|
|
||||||
KonanTarget.WASM32
|
|
||||||
)
|
|
||||||
KonanTarget.MACOS_X64 -> listOf(
|
|
||||||
KonanTarget.MACOS_X64,
|
|
||||||
KonanTarget.IOS_ARM32,
|
|
||||||
KonanTarget.IOS_ARM64,
|
|
||||||
KonanTarget.IOS_X64,
|
|
||||||
KonanTarget.LINUX_X64,
|
|
||||||
KonanTarget.LINUX_ARM32_HFP,
|
|
||||||
KonanTarget.ANDROID_ARM32,
|
|
||||||
KonanTarget.ANDROID_ARM64,
|
|
||||||
KonanTarget.WASM32
|
|
||||||
)
|
|
||||||
else ->
|
|
||||||
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>
|
||||||
|
|||||||
Reference in New Issue
Block a user