[K/N] Add -Xforce-compiler-driver=(static, dynamic) flag
Useful for development purposes when one wants to compare the outputs of different drivers.
This commit is contained in:
committed by
Space Team
parent
6ef4277d89
commit
d7fff3ca01
+3
@@ -393,6 +393,9 @@ class K2NativeCompilerArguments : CommonCompilerArguments() {
|
|||||||
@Argument(value = "-Xomit-framework-binary", description = "Omit binary when compiling framework")
|
@Argument(value = "-Xomit-framework-binary", description = "Omit binary when compiling framework")
|
||||||
var omitFrameworkBinary: Boolean = false
|
var omitFrameworkBinary: Boolean = false
|
||||||
|
|
||||||
|
@Argument(value = "-Xforce-compiler-driver", description = "Force compiler to use specific compiler driver: static or dynamic")
|
||||||
|
var forceCompilerDriver: String? = null
|
||||||
|
|
||||||
override fun configureAnalysisFlags(collector: MessageCollector, languageVersion: LanguageVersion): MutableMap<AnalysisFlag<*>, Any> =
|
override fun configureAnalysisFlags(collector: MessageCollector, languageVersion: LanguageVersion): MutableMap<AnalysisFlag<*>, Any> =
|
||||||
super.configureAnalysisFlags(collector, languageVersion).also {
|
super.configureAnalysisFlags(collector, languageVersion).also {
|
||||||
val optInList = it[AnalysisFlags.optIn] as List<*>
|
val optInList = it[AnalysisFlags.optIn] as List<*>
|
||||||
|
|||||||
@@ -370,6 +370,7 @@ class K2Native : CLICompiler<K2NativeCompilerArguments>() {
|
|||||||
arguments.testDumpOutputPath?.let { put(TEST_DUMP_OUTPUT_PATH, it) }
|
arguments.testDumpOutputPath?.let { put(TEST_DUMP_OUTPUT_PATH, it) }
|
||||||
put(PARTIAL_LINKAGE, arguments.partialLinkage)
|
put(PARTIAL_LINKAGE, arguments.partialLinkage)
|
||||||
put(OMIT_FRAMEWORK_BINARY, arguments.omitFrameworkBinary)
|
put(OMIT_FRAMEWORK_BINARY, arguments.omitFrameworkBinary)
|
||||||
|
putIfNotNull(FORCE_COMPILER_DRIVER, arguments.forceCompilerDriver)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -177,6 +177,7 @@ class KonanConfigKeys {
|
|||||||
val PARTIAL_LINKAGE: CompilerConfigurationKey<Boolean> = CompilerConfigurationKey.create("allows some symbols in klibs be missed")
|
val PARTIAL_LINKAGE: CompilerConfigurationKey<Boolean> = CompilerConfigurationKey.create("allows some symbols in klibs be missed")
|
||||||
val TEST_DUMP_OUTPUT_PATH: CompilerConfigurationKey<String?> = CompilerConfigurationKey.create("path to a file to dump the list of all available tests")
|
val TEST_DUMP_OUTPUT_PATH: CompilerConfigurationKey<String?> = CompilerConfigurationKey.create("path to a file to dump the list of all available tests")
|
||||||
val OMIT_FRAMEWORK_BINARY: CompilerConfigurationKey<Boolean> = CompilerConfigurationKey.create("do not generate binary in framework")
|
val OMIT_FRAMEWORK_BINARY: CompilerConfigurationKey<Boolean> = CompilerConfigurationKey.create("do not generate binary in framework")
|
||||||
|
val FORCE_COMPILER_DRIVER: CompilerConfigurationKey<String?> = CompilerConfigurationKey.create("explicitly pick compiler driver")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+9
-2
@@ -38,7 +38,7 @@ class KonanDriver(val project: Project, val environment: KotlinCoreEnvironment,
|
|||||||
|
|
||||||
val konanConfig = KonanConfig(project, configuration)
|
val konanConfig = KonanConfig(project, configuration)
|
||||||
ensureModuleName(konanConfig)
|
ensureModuleName(konanConfig)
|
||||||
pickCompilerDriver().run(konanConfig, environment)
|
pickCompilerDriver(konanConfig).run(konanConfig, environment)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ensureModuleName(config: KonanConfig) {
|
private fun ensureModuleName(config: KonanConfig) {
|
||||||
@@ -53,7 +53,14 @@ class KonanDriver(val project: Project, val environment: KotlinCoreEnvironment,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun pickCompilerDriver(): CompilerDriver {
|
private fun pickCompilerDriver(config: KonanConfig): CompilerDriver {
|
||||||
|
config.configuration[KonanConfigKeys.FORCE_COMPILER_DRIVER]?.let {
|
||||||
|
return when (it) {
|
||||||
|
"dynamic" -> DynamicCompilerDriver()
|
||||||
|
"static" -> StaticCompilerDriver()
|
||||||
|
else -> error("Unknown compiler driver. Possible values: dynamic, static")
|
||||||
|
}
|
||||||
|
}
|
||||||
// Dynamic driver is WIP, so it might not support all possible configurations.
|
// Dynamic driver is WIP, so it might not support all possible configurations.
|
||||||
return if (DynamicCompilerDriver.supportsConfig()) {
|
return if (DynamicCompilerDriver.supportsConfig()) {
|
||||||
DynamicCompilerDriver()
|
DynamicCompilerDriver()
|
||||||
|
|||||||
Reference in New Issue
Block a user