[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.konanDataDir
|
||||||
import org.jetbrains.kotlin.compilerRunner.konanHome
|
import org.jetbrains.kotlin.compilerRunner.konanHome
|
||||||
import org.jetbrains.kotlin.gradle.dsl.NativeCacheKind
|
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.targets.native.KonanPropertiesBuildService
|
||||||
import org.jetbrains.kotlin.gradle.tasks.CacheBuilder
|
import org.jetbrains.kotlin.gradle.tasks.CacheBuilder
|
||||||
import org.jetbrains.kotlin.gradle.tasks.addArg
|
import org.jetbrains.kotlin.gradle.tasks.addArg
|
||||||
@@ -127,7 +126,7 @@ internal class PlatformLibrariesGenerator(val project: Project, val konanTarget:
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun generatePlatformLibsIfNeeded(): Unit = with(project) {
|
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.
|
// We cannot generate libs on a machine that doesn't support the requested target.
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -221,4 +220,4 @@ internal class PlatformLibrariesGenerator(val project: Project, val konanTarget:
|
|||||||
companion object {
|
companion object {
|
||||||
private const val GENERATED_LIBS_PROPERTY_NAME = "org.jetbrains.kotlin.native.platform.libs.info"
|
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 nativeHome = getOrCreateTestProcessSettings().get<KotlinNativeHome>()
|
||||||
|
|
||||||
val distribution = Distribution(nativeHome.dir.path)
|
val distribution = Distribution(nativeHome.dir.path)
|
||||||
val hostManager = HostManager(distribution, experimental = false)
|
val hostManager = HostManager()
|
||||||
val nativeTargets = computeNativeTargets(enforcedProperties, hostManager)
|
val nativeTargets = computeNativeTargets(enforcedProperties, hostManager)
|
||||||
|
|
||||||
val cacheMode = computeCacheMode(enforcedProperties, distribution, nativeTargets, optimizationMode)
|
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
|
// Development variant of LLVM is used to have utilities like FileCheck
|
||||||
propertyOverrides = mapOf("llvmHome.${HostManager.hostName}" to "\$llvm.${HostManager.hostName}.dev")
|
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 konanSubdir = "$konanHome/konan"
|
||||||
val mainPropertyFileName = "$konanSubdir/konan.properties"
|
val mainPropertyFileName = "$konanSubdir/konan.properties"
|
||||||
val experimentalEnabled by lazy {
|
|
||||||
File("$konanSubdir/experimentalTargetsEnabled").exists
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun propertyFilesFromConfigDir(configDir: String, genericName: String): List<File> {
|
private fun propertyFilesFromConfigDir(configDir: String, genericName: String): List<File> {
|
||||||
val directory = File(configDir, "platforms/$genericName")
|
val directory = File(configDir, "platforms/$genericName")
|
||||||
@@ -65,12 +62,6 @@ class Distribution private constructor(private val serialized: Serialized) : jav
|
|||||||
|
|
||||||
loadPropertiesSafely(File(mainPropertyFileName))
|
loadPropertiesSafely(File(mainPropertyFileName))
|
||||||
|
|
||||||
HostManager.knownTargetTemplates.forEach { targetTemplate ->
|
|
||||||
additionalPropertyFiles(targetTemplate).forEach {
|
|
||||||
loadPropertiesSafely(it)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (onlyDefaultProfiles) {
|
if (onlyDefaultProfiles) {
|
||||||
result.keepOnlyDefaultProfiles()
|
result.keepOnlyDefaultProfiles()
|
||||||
}
|
}
|
||||||
@@ -109,11 +100,6 @@ class Distribution private constructor(private val serialized: Serialized) : jav
|
|||||||
.getDependenciesRoot(konanDataDir)
|
.getDependenciesRoot(konanDataDir)
|
||||||
.absolutePath
|
.absolutePath
|
||||||
|
|
||||||
val subTargetProvider = object: SubTargetProvider {
|
|
||||||
override fun availableSubTarget(genericName: String) =
|
|
||||||
additionalPropertyFiles(genericName).map { it.name }
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
/**
|
/**
|
||||||
* Try to guess compiler version using [konanHome].
|
* 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 org.jetbrains.kotlin.konan.target.KonanTarget.*
|
||||||
import java.lang.Exception
|
import java.lang.Exception
|
||||||
|
|
||||||
// TODO: Consider redesigning experimental targets support (e.g. by getting rid of such separation at all).
|
open class HostManager() {
|
||||||
open class HostManager(
|
|
||||||
subTargetProvider: SubTargetProvider = SubTargetProvider.NoSubTargets,
|
|
||||||
private val experimental: Boolean = false
|
|
||||||
) {
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
distribution: Distribution,
|
|
||||||
experimental: Boolean = false
|
|
||||||
) : this(distribution.subTargetProvider, experimental || distribution.experimentalEnabled)
|
|
||||||
|
|
||||||
fun targetManager(userRequest: String? = null): TargetManager = TargetManagerImpl(userRequest, this)
|
fun targetManager(userRequest: String? = null): TargetManager = TargetManagerImpl(userRequest, this)
|
||||||
|
|
||||||
private val zephyrSubtargets = subTargetProvider.availableSubTarget("zephyr").map { ZEPHYR(it) }
|
val targetValues: List<KonanTarget> by lazy { KonanTarget.predefinedTargets.values.toList() }
|
||||||
private val configurableSubtargets = zephyrSubtargets
|
|
||||||
|
|
||||||
val targetValues: List<KonanTarget> by lazy { KonanTarget.predefinedTargets.values + configurableSubtargets }
|
|
||||||
|
|
||||||
val targets = targetValues.associateBy { it.visibleName }
|
val targets = targetValues.associateBy { it.visibleName }
|
||||||
|
|
||||||
@@ -50,27 +37,21 @@ open class HostManager(
|
|||||||
LINUX_X64,
|
LINUX_X64,
|
||||||
LINUX_ARM32_HFP,
|
LINUX_ARM32_HFP,
|
||||||
LINUX_ARM64,
|
LINUX_ARM64,
|
||||||
LINUX_MIPS32,
|
|
||||||
LINUX_MIPSEL32,
|
|
||||||
MINGW_X86,
|
|
||||||
MINGW_X64,
|
MINGW_X64,
|
||||||
ANDROID_X86,
|
ANDROID_X86,
|
||||||
ANDROID_X64,
|
ANDROID_X64,
|
||||||
ANDROID_ARM32,
|
ANDROID_ARM32,
|
||||||
ANDROID_ARM64,
|
ANDROID_ARM64,
|
||||||
WASM32
|
|
||||||
)
|
)
|
||||||
|
|
||||||
private val appleTargets = setOf(
|
private val appleTargets = setOf(
|
||||||
MACOS_X64,
|
MACOS_X64,
|
||||||
MACOS_ARM64,
|
MACOS_ARM64,
|
||||||
IOS_ARM32,
|
|
||||||
IOS_ARM64,
|
IOS_ARM64,
|
||||||
IOS_X64,
|
IOS_X64,
|
||||||
IOS_SIMULATOR_ARM64,
|
IOS_SIMULATOR_ARM64,
|
||||||
WATCHOS_ARM32,
|
WATCHOS_ARM32,
|
||||||
WATCHOS_ARM64,
|
WATCHOS_ARM64,
|
||||||
WATCHOS_X86,
|
|
||||||
WATCHOS_X64,
|
WATCHOS_X64,
|
||||||
WATCHOS_SIMULATOR_ARM64,
|
WATCHOS_SIMULATOR_ARM64,
|
||||||
WATCHOS_DEVICE_ARM64,
|
WATCHOS_DEVICE_ARM64,
|
||||||
@@ -79,40 +60,15 @@ open class HostManager(
|
|||||||
TVOS_SIMULATOR_ARM64,
|
TVOS_SIMULATOR_ARM64,
|
||||||
)
|
)
|
||||||
|
|
||||||
private val enabledRegularByHost: Map<KonanTarget, Set<KonanTarget>> = mapOf(
|
val enabledByHost: Map<KonanTarget, Set<KonanTarget>> = mapOf(
|
||||||
LINUX_X64 to commonTargets,
|
LINUX_X64 to commonTargets,
|
||||||
MINGW_X64 to commonTargets,
|
MINGW_X64 to commonTargets,
|
||||||
MACOS_X64 to commonTargets + appleTargets,
|
MACOS_X64 to commonTargets + appleTargets,
|
||||||
MACOS_ARM64 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>
|
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)
|
fun isEnabled(target: KonanTarget) = enabled.contains(target)
|
||||||
|
|
||||||
@@ -207,8 +163,6 @@ open class HostManager(
|
|||||||
val hostName: String
|
val hostName: String
|
||||||
get() = host.name
|
get() = host.name
|
||||||
|
|
||||||
val knownTargetTemplates = listOf("zephyr")
|
|
||||||
|
|
||||||
private val targetAliasResolutions = mapOf(
|
private val targetAliasResolutions = mapOf(
|
||||||
"linux" to "linux_x64",
|
"linux" to "linux_x64",
|
||||||
"macbook" to "macos_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) :
|
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)
|
// TODO(KT-66500): remove after the bootstrap
|
||||||
constructor(distribution: Distribution, experimental: Boolean = false) : this(Serialized(distribution, experimental))
|
@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
|
private val distribution by serialized::distribution
|
||||||
|
|
||||||
@@ -56,9 +66,9 @@ class PlatformManager private constructor(private val serialized: Serialized) :
|
|||||||
|
|
||||||
private data class Serialized(
|
private data class Serialized(
|
||||||
val distribution: Distribution,
|
val distribution: Distribution,
|
||||||
val experimental: Boolean,
|
|
||||||
) : java.io.Serializable {
|
) : java.io.Serializable {
|
||||||
companion object {
|
companion object {
|
||||||
|
// TODO(discuss on review): bump UID? Do something else? How this Serialized is used?
|
||||||
private const val serialVersionUID: Long = 0L
|
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