[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:
committed by
Space Team
parent
47546ece27
commit
b19ad2505c
+2
-3
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -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)
|
||||
|
||||
+1
-1
@@ -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()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user