Provide a forced compiler version compatibility -X control.
This commit is contained in:
committed by
alexander-gorshenev
parent
0786cc3e76
commit
30fd4060d3
@@ -175,6 +175,9 @@ class K2Native : CLICompiler<K2NativeCompilerArguments>() {
|
||||
put(LIST_PHASES, arguments.listPhases)
|
||||
put(TIME_PHASES, arguments.timePhases)
|
||||
|
||||
put(COMPATIBLE_COMPILER_VERSIONS,
|
||||
arguments.compatibleCompilerVersions.toNonNullList())
|
||||
|
||||
put(ENABLE_ASSERTIONS, arguments.enableAssertions)
|
||||
|
||||
put(GENERATE_TEST_RUNNER, arguments.generateTestRunner)
|
||||
|
||||
@@ -81,12 +81,15 @@ class K2NativeCompilerArguments : CommonCompilerArguments() {
|
||||
var target: String? = null
|
||||
|
||||
// The rest of the options are only interesting to the developers.
|
||||
// Make sure to prepend them with a double dash.
|
||||
// Make sure to prepend them with -X.
|
||||
// Keep the list lexically sorted.
|
||||
|
||||
@Argument(value="-Xcheck-dependencies", deprecatedName = "--check_dependencies", description = "Check dependencies and download the missing ones")
|
||||
var checkDependencies: Boolean = false
|
||||
|
||||
@Argument(value="-Xcompatible-compiler-version", valueDescription = "<version>", description = "Assume the given compiler version to be binary compatible")
|
||||
var compatibleCompilerVersions: Array<String>? = null
|
||||
|
||||
@Argument(value = "-Xdisable", deprecatedName = "--disable", valueDescription = "<Phase>", description = "Disable backend phase")
|
||||
var disablePhases: Array<String>? = null
|
||||
|
||||
|
||||
+7
-1
@@ -21,7 +21,9 @@ import org.jetbrains.kotlin.konan.library.libraryResolver
|
||||
import org.jetbrains.kotlin.konan.properties.loadProperties
|
||||
import org.jetbrains.kotlin.konan.target.*
|
||||
import org.jetbrains.kotlin.konan.KonanAbiVersion
|
||||
import org.jetbrains.kotlin.konan.KonanVersion
|
||||
import org.jetbrains.kotlin.konan.library.toUnresolvedLibraries
|
||||
import org.jetbrains.kotlin.konan.parseKonanVersion
|
||||
|
||||
class KonanConfig(val project: Project, val configuration: CompilerConfiguration) {
|
||||
|
||||
@@ -76,12 +78,16 @@ class KonanConfig(val project: Project, val configuration: CompilerConfiguration
|
||||
private val repositories = configuration.getList(KonanConfigKeys.REPOSITORIES)
|
||||
private fun resolverLogger(msg: String) = configuration.report(STRONG_WARNING, msg)
|
||||
|
||||
private val compatibleCompilerVersions: List<KonanVersion> =
|
||||
configuration.getList(KonanConfigKeys.COMPATIBLE_COMPILER_VERSIONS).map { it.parseKonanVersion() }
|
||||
|
||||
private val resolver = defaultResolver(
|
||||
repositories,
|
||||
libraryNames.filter { it.contains(File.separator) },
|
||||
target,
|
||||
distribution,
|
||||
::resolverLogger
|
||||
::resolverLogger,
|
||||
compatibleCompilerVersions = compatibleCompilerVersions
|
||||
).libraryResolver()
|
||||
|
||||
internal val resolvedLibraries by lazy {
|
||||
|
||||
+2
@@ -14,6 +14,8 @@ class KonanConfigKeys {
|
||||
// Keep the list lexically sorted.
|
||||
val CHECK_DEPENDENCIES: CompilerConfigurationKey<Boolean>
|
||||
= CompilerConfigurationKey.create("check dependencies and download the missing ones")
|
||||
val COMPATIBLE_COMPILER_VERSIONS: CompilerConfigurationKey<List<String>>
|
||||
= CompilerConfigurationKey.create("compatible compiler versions")
|
||||
val DEBUG: CompilerConfigurationKey<Boolean>
|
||||
= CompilerConfigurationKey.create("add debug information")
|
||||
val DISABLED_PHASES: CompilerConfigurationKey<List<String>>
|
||||
|
||||
@@ -39,13 +39,14 @@ fun defaultResolver(
|
||||
target: KonanTarget,
|
||||
distribution: Distribution,
|
||||
logger: Logger = ::dummyLogger,
|
||||
skipCurrentDir: Boolean = false
|
||||
skipCurrentDir: Boolean = false,
|
||||
compatibleCompilerVersions: List<KonanVersion> = emptyList()
|
||||
): SearchPathResolverWithTarget = KonanLibraryProperResolver(
|
||||
repositories,
|
||||
directLibs,
|
||||
target,
|
||||
listOf(KonanAbiVersion.CURRENT),
|
||||
listOf(KonanVersion.CURRENT),
|
||||
listOf(KonanVersion.CURRENT) + compatibleCompilerVersions,
|
||||
distribution.klib,
|
||||
distribution.localKonanDir.absolutePath,
|
||||
skipCurrentDir,
|
||||
|
||||
Reference in New Issue
Block a user