[native] Remove code support for experimental KonanTargets

ZEPHYR was the first and the last experimental KonanTarget.
As ZEPHYR is now entirely removed from the codebase, the respective code
can be dropped

^KT-64517
This commit is contained in:
Dmitry Savvinov
2024-01-16 14:51:08 +01:00
committed by Space Team
parent 47546ece27
commit b19ad2505c
7 changed files with 22 additions and 87 deletions
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.compilerRunner.getKonanCacheKind
import org.jetbrains.kotlin.compilerRunner.konanDataDir
import org.jetbrains.kotlin.compilerRunner.konanHome
import org.jetbrains.kotlin.gradle.dsl.NativeCacheKind
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
import org.jetbrains.kotlin.gradle.targets.native.KonanPropertiesBuildService
import org.jetbrains.kotlin.gradle.tasks.CacheBuilder
import org.jetbrains.kotlin.gradle.tasks.addArg
@@ -127,7 +126,7 @@ internal class PlatformLibrariesGenerator(val project: Project, val konanTarget:
}
fun generatePlatformLibsIfNeeded(): Unit = with(project) {
if (!HostManager(distribution).isEnabled(konanTarget)) {
if (!HostManager().isEnabled(konanTarget)) {
// We cannot generate libs on a machine that doesn't support the requested target.
return
}
@@ -221,4 +220,4 @@ internal class PlatformLibrariesGenerator(val project: Project, val konanTarget:
companion object {
private const val GENERATED_LIBS_PROPERTY_NAME = "org.jetbrains.kotlin.native.platform.libs.info"
}
}
}
@@ -177,7 +177,7 @@ internal object NativeTestSupport {
val nativeHome = getOrCreateTestProcessSettings().get<KotlinNativeHome>()
val distribution = Distribution(nativeHome.dir.path)
val hostManager = HostManager(distribution, experimental = false)
val hostManager = HostManager()
val nativeTargets = computeNativeTargets(enforcedProperties, hostManager)
val cacheMode = computeCacheMode(enforcedProperties, distribution, nativeTargets, optimizationMode)
@@ -71,5 +71,5 @@ internal val Settings.configurables: Configurables
// Development variant of LLVM is used to have utilities like FileCheck
propertyOverrides = mapOf("llvmHome.${HostManager.hostName}" to "\$llvm.${HostManager.hostName}.dev")
)
return PlatformManager(distribution, true).platform(get<KotlinNativeTargets>().testTarget).configurables
return PlatformManager(distribution).platform(get<KotlinNativeTargets>().testTarget).configurables
}
@@ -31,9 +31,6 @@ class Distribution private constructor(private val serialized: Serialized) : jav
val konanSubdir = "$konanHome/konan"
val mainPropertyFileName = "$konanSubdir/konan.properties"
val experimentalEnabled by lazy {
File("$konanSubdir/experimentalTargetsEnabled").exists
}
private fun propertyFilesFromConfigDir(configDir: String, genericName: String): List<File> {
val directory = File(configDir, "platforms/$genericName")
@@ -65,12 +62,6 @@ class Distribution private constructor(private val serialized: Serialized) : jav
loadPropertiesSafely(File(mainPropertyFileName))
HostManager.knownTargetTemplates.forEach { targetTemplate ->
additionalPropertyFiles(targetTemplate).forEach {
loadPropertiesSafely(it)
}
}
if (onlyDefaultProfiles) {
result.keepOnlyDefaultProfiles()
}
@@ -109,11 +100,6 @@ class Distribution private constructor(private val serialized: Serialized) : jav
.getDependenciesRoot(konanDataDir)
.absolutePath
val subTargetProvider = object: SubTargetProvider {
override fun availableSubTarget(genericName: String) =
additionalPropertyFiles(genericName).map { it.name }
}
companion object {
/**
* Try to guess compiler version using [konanHome].
@@ -8,23 +8,10 @@ package org.jetbrains.kotlin.konan.target
import org.jetbrains.kotlin.konan.target.KonanTarget.*
import java.lang.Exception
// TODO: Consider redesigning experimental targets support (e.g. by getting rid of such separation at all).
open class HostManager(
subTargetProvider: SubTargetProvider = SubTargetProvider.NoSubTargets,
private val experimental: Boolean = false
) {
constructor(
distribution: Distribution,
experimental: Boolean = false
) : this(distribution.subTargetProvider, experimental || distribution.experimentalEnabled)
open class HostManager() {
fun targetManager(userRequest: String? = null): TargetManager = TargetManagerImpl(userRequest, this)
private val zephyrSubtargets = subTargetProvider.availableSubTarget("zephyr").map { ZEPHYR(it) }
private val configurableSubtargets = zephyrSubtargets
val targetValues: List<KonanTarget> by lazy { KonanTarget.predefinedTargets.values + configurableSubtargets }
val targetValues: List<KonanTarget> by lazy { KonanTarget.predefinedTargets.values.toList() }
val targets = targetValues.associateBy { it.visibleName }
@@ -50,27 +37,21 @@ open class HostManager(
LINUX_X64,
LINUX_ARM32_HFP,
LINUX_ARM64,
LINUX_MIPS32,
LINUX_MIPSEL32,
MINGW_X86,
MINGW_X64,
ANDROID_X86,
ANDROID_X64,
ANDROID_ARM32,
ANDROID_ARM64,
WASM32
)
private val appleTargets = setOf(
MACOS_X64,
MACOS_ARM64,
IOS_ARM32,
IOS_ARM64,
IOS_X64,
IOS_SIMULATOR_ARM64,
WATCHOS_ARM32,
WATCHOS_ARM64,
WATCHOS_X86,
WATCHOS_X64,
WATCHOS_SIMULATOR_ARM64,
WATCHOS_DEVICE_ARM64,
@@ -79,40 +60,15 @@ open class HostManager(
TVOS_SIMULATOR_ARM64,
)
private val enabledRegularByHost: Map<KonanTarget, Set<KonanTarget>> = mapOf(
val enabledByHost: Map<KonanTarget, Set<KonanTarget>> = mapOf(
LINUX_X64 to commonTargets,
MINGW_X64 to commonTargets,
MACOS_X64 to commonTargets + appleTargets,
MACOS_ARM64 to commonTargets + appleTargets
)
private val enabledExperimentalByHost: Map<KonanTarget, Set<KonanTarget>> = mapOf(
LINUX_X64 to zephyrSubtargets.toSet(),
MACOS_X64 to zephyrSubtargets.toSet(),
MINGW_X64 to zephyrSubtargets.toSet(),
MACOS_ARM64 to emptySet()
)
val enabledByHost: Map<KonanTarget, Set<KonanTarget>> by lazy {
val result = enabledRegularByHost.toMutableMap()
if (experimental) {
enabledExperimentalByHost.forEach { (k, v) ->
result.merge(k, v) { old, new -> old + new }
}
}
result.toMap()
}
private val enabledRegular: List<KonanTarget> by lazy {
enabledRegularByHost[host]?.toList() ?: throw TargetSupportException("Unknown host platform: $host")
}
private val enabledExperimental: List<KonanTarget> by lazy {
enabledExperimentalByHost[host]?.toList() ?: throw TargetSupportException("Unknown host platform: $host")
}
val enabled: List<KonanTarget>
get() = if (experimental) enabledRegular + enabledExperimental else enabledRegular
get() = enabledByHost[host]?.toList() ?: throw TargetSupportException("Unknown host platform: $host")
fun isEnabled(target: KonanTarget) = enabled.contains(target)
@@ -207,8 +163,6 @@ open class HostManager(
val hostName: String
get() = host.name
val knownTargetTemplates = listOf("zephyr")
private val targetAliasResolutions = mapOf(
"linux" to "linux_x64",
"macbook" to "macos_x64",
@@ -32,10 +32,20 @@ class Platform(val configurables: Configurables) : Configurables by configurable
}
class PlatformManager private constructor(private val serialized: Serialized) :
HostManager(serialized.distribution, serialized.experimental), java.io.Serializable {
HostManager(), java.io.Serializable {
constructor(konanHome: String, experimental: Boolean = false, konanDataDir: String? = null) : this(Distribution(konanHome, konanDataDir = konanDataDir), experimental)
constructor(distribution: Distribution, experimental: Boolean = false) : this(Serialized(distribution, experimental))
// TODO(KT-66500): remove after the bootstrap
@Suppress("UNUSED_PARAMETER")
@Deprecated("Kept temporary, should be removed after the bootstrap")
constructor(konanHome: String, experimental: Boolean = false, konanDataDir: String? = null) : this(Distribution(konanHome, konanDataDir = konanDataDir))
// TODO(KT-66500): remove after the bootstrap
@Suppress("UNUSED_PARAMETER")
@Deprecated("Kept temporary, should be removed after the bootstrap")
constructor(distribution: Distribution, experimental: Boolean = false) : this(Serialized(distribution))
constructor(konanHome: String, konanDataDir: String? = null) : this(Distribution(konanHome, konanDataDir = konanDataDir))
constructor(distribution: Distribution) : this(Serialized(distribution))
private val distribution by serialized::distribution
@@ -56,9 +66,9 @@ class PlatformManager private constructor(private val serialized: Serialized) :
private data class Serialized(
val distribution: Distribution,
val experimental: Boolean,
) : java.io.Serializable {
companion object {
// TODO(discuss on review): bump UID? Do something else? How this Serialized is used?
private const val serialVersionUID: Long = 0L
}
@@ -1,14 +0,0 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.konan.target
interface SubTargetProvider {
fun availableSubTarget(genericName: String): List<String>
object NoSubTargets : SubTargetProvider {
override fun availableSubTarget(genericName: String): List<String> = emptyList()
}
}