From bba7e9e395e8b3a87bd62d81a261361c989f75af Mon Sep 17 00:00:00 2001 From: Sergey Bogolepov Date: Mon, 6 Mar 2023 15:34:32 +0200 Subject: [PATCH] [K/N] Prohibit -Xcompile-from-bitcode when producing library --- .../kotlin/backend/konan/SetupConfiguration.kt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/SetupConfiguration.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/SetupConfiguration.kt index 591bf6ed19c..d68dda205ec 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/SetupConfiguration.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/SetupConfiguration.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.getModuleNameForSource import org.jetbrains.kotlin.konan.file.File import org.jetbrains.kotlin.konan.target.CompilerOutputKind +import org.jetbrains.kotlin.konan.util.visibleName fun CompilerConfiguration.setupFromArguments(arguments: K2NativeCompilerArguments) = with(KonanConfigKeys) { val commonSources = arguments.commonSources?.toSet().orEmpty().map { it.absoluteNormalizedFile() } @@ -262,7 +263,7 @@ fun CompilerConfiguration.setupFromArguments(arguments: K2NativeCompilerArgument arguments.testDumpOutputPath?.let { put(TEST_DUMP_OUTPUT_PATH, it) } put(PARTIAL_LINKAGE, arguments.partialLinkage) put(OMIT_FRAMEWORK_BINARY, arguments.omitFrameworkBinary) - putIfNotNull(COMPILE_FROM_BITCODE, arguments.compileFromBitcode) + putIfNotNull(COMPILE_FROM_BITCODE, parseCompileFromBitcode(arguments, this@setupFromArguments, outputKind)) putIfNotNull(SERIALIZED_DEPENDENCIES, parseSerializedDependencies(arguments, this@setupFromArguments)) putIfNotNull(SAVE_DEPENDENCIES_PATH, arguments.saveDependenciesPath) putIfNotNull(SAVE_LLVM_IR_DIRECTORY, arguments.saveLlvmIrDirectory) @@ -517,4 +518,16 @@ private fun parseSerializedDependencies( "Providing serialized dependencies only works in conjunction with a bitcode file to compile.") } return arguments.serializedDependencies +} + +private fun parseCompileFromBitcode( + arguments: K2NativeCompilerArguments, + configuration: CompilerConfiguration, + outputKind: CompilerOutputKind, +): String? { + if (!arguments.compileFromBitcode.isNullOrEmpty() && !outputKind.involvesBitcodeGeneration) { + configuration.report(ERROR, + "Compilation from bitcode is not available when producing ${outputKind.visibleName}") + } + return arguments.compileFromBitcode } \ No newline at end of file