From ba75ee4c033055ab86256cd89b714d59db43c27d Mon Sep 17 00:00:00 2001 From: Pavel Kunyavskiy Date: Mon, 24 Jul 2023 10:36:24 +0200 Subject: [PATCH] [K/N] Copy more flags to the first stage of one-shot compilation mode This fixes obj-export lazy header generation in non-default modes, and makes nightly tests green. --- .../kotlin/backend/konan/KonanDriver.kt | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanDriver.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanDriver.kt index 76c1177908f..430fc0dc9f3 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanDriver.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanDriver.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.cli.common.config.kotlinSourceRoots import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.CompilerConfiguration +import org.jetbrains.kotlin.config.CompilerConfigurationKey import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.konan.file.File import org.jetbrains.kotlin.konan.library.impl.createKonanLibrary @@ -153,18 +154,24 @@ class KonanDriver( it.deleteOnExit() } compilationSpawner.spawn(emptyList()) { + fun copy(key: CompilerConfigurationKey) = putIfNotNull(key, configuration.get(key)) + fun copyNotNull(key: CompilerConfigurationKey) = put(key, configuration.getNotNull(key)) // For the first stage, use "-p library" produce mode. put(KonanConfigKeys.PRODUCE, CompilerOutputKind.LIBRARY) - configuration.get(KonanConfigKeys.TARGET)?.let { put(KonanConfigKeys.TARGET, it) } + copy(KonanConfigKeys.TARGET) put(KonanConfigKeys.OUTPUT, intermediateKLib.absolutePath) - put(CLIConfigurationKeys.CONTENT_ROOTS, configuration.getNotNull(CLIConfigurationKeys.CONTENT_ROOTS)) - put(KonanConfigKeys.LIBRARY_FILES, configuration.getNotNull(KonanConfigKeys.LIBRARY_FILES)) - put(KonanConfigKeys.REPOSITORIES, configuration.getNotNull(KonanConfigKeys.REPOSITORIES)) - configuration.get(KonanConfigKeys.FRIEND_MODULES)?.let { put(KonanConfigKeys.FRIEND_MODULES, it) } - configuration.get(KonanConfigKeys.REFINES_MODULES)?.let { put(KonanConfigKeys.REFINES_MODULES, it) } - configuration.get(KonanConfigKeys.EMIT_LAZY_OBJC_HEADER_FILE)?.let { put(KonanConfigKeys.EMIT_LAZY_OBJC_HEADER_FILE, it)} - configuration.get(KonanConfigKeys.FULL_EXPORTED_NAME_PREFIX)?.let { put(KonanConfigKeys.FULL_EXPORTED_NAME_PREFIX, it)} - configuration.get(KonanConfigKeys.EXPORT_KDOC)?.let { put(KonanConfigKeys.EXPORT_KDOC, it)} + copyNotNull(CLIConfigurationKeys.CONTENT_ROOTS) + copyNotNull(KonanConfigKeys.LIBRARY_FILES) + copyNotNull(KonanConfigKeys.REPOSITORIES) + copy(KonanConfigKeys.FRIEND_MODULES) + copy(KonanConfigKeys.REFINES_MODULES) + copy(KonanConfigKeys.EMIT_LAZY_OBJC_HEADER_FILE) + copy(KonanConfigKeys.FULL_EXPORTED_NAME_PREFIX) + copy(KonanConfigKeys.EXPORT_KDOC) + copy(BinaryOptions.unitSuspendFunctionObjCExport) + copy(BinaryOptions.objcExportDisableSwiftMemberNameMangling) + copy(BinaryOptions.objcExportIgnoreInterfaceMethodCollisions) + copy(KonanConfigKeys.OBJC_GENERICS) } // For the second stage, remove already compiled source files from the configuration.