[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.
This commit is contained in:
Pavel Kunyavskiy
2023-07-24 10:36:24 +02:00
committed by Space Team
parent 3547b404d5
commit ba75ee4c03
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.cli.common.config.kotlinSourceRoots
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.CompilerConfigurationKey
import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.konan.file.File import org.jetbrains.kotlin.konan.file.File
import org.jetbrains.kotlin.konan.library.impl.createKonanLibrary import org.jetbrains.kotlin.konan.library.impl.createKonanLibrary
@@ -153,18 +154,24 @@ class KonanDriver(
it.deleteOnExit() it.deleteOnExit()
} }
compilationSpawner.spawn(emptyList()) { compilationSpawner.spawn(emptyList()) {
fun <T> copy(key: CompilerConfigurationKey<T>) = putIfNotNull(key, configuration.get(key))
fun <T> copyNotNull(key: CompilerConfigurationKey<T>) = put(key, configuration.getNotNull(key))
// For the first stage, use "-p library" produce mode. // For the first stage, use "-p library" produce mode.
put(KonanConfigKeys.PRODUCE, CompilerOutputKind.LIBRARY) put(KonanConfigKeys.PRODUCE, CompilerOutputKind.LIBRARY)
configuration.get(KonanConfigKeys.TARGET)?.let { put(KonanConfigKeys.TARGET, it) } copy(KonanConfigKeys.TARGET)
put(KonanConfigKeys.OUTPUT, intermediateKLib.absolutePath) put(KonanConfigKeys.OUTPUT, intermediateKLib.absolutePath)
put(CLIConfigurationKeys.CONTENT_ROOTS, configuration.getNotNull(CLIConfigurationKeys.CONTENT_ROOTS)) copyNotNull(CLIConfigurationKeys.CONTENT_ROOTS)
put(KonanConfigKeys.LIBRARY_FILES, configuration.getNotNull(KonanConfigKeys.LIBRARY_FILES)) copyNotNull(KonanConfigKeys.LIBRARY_FILES)
put(KonanConfigKeys.REPOSITORIES, configuration.getNotNull(KonanConfigKeys.REPOSITORIES)) copyNotNull(KonanConfigKeys.REPOSITORIES)
configuration.get(KonanConfigKeys.FRIEND_MODULES)?.let { put(KonanConfigKeys.FRIEND_MODULES, it) } copy(KonanConfigKeys.FRIEND_MODULES)
configuration.get(KonanConfigKeys.REFINES_MODULES)?.let { put(KonanConfigKeys.REFINES_MODULES, it) } copy(KonanConfigKeys.REFINES_MODULES)
configuration.get(KonanConfigKeys.EMIT_LAZY_OBJC_HEADER_FILE)?.let { put(KonanConfigKeys.EMIT_LAZY_OBJC_HEADER_FILE, it)} copy(KonanConfigKeys.EMIT_LAZY_OBJC_HEADER_FILE)
configuration.get(KonanConfigKeys.FULL_EXPORTED_NAME_PREFIX)?.let { put(KonanConfigKeys.FULL_EXPORTED_NAME_PREFIX, it)} copy(KonanConfigKeys.FULL_EXPORTED_NAME_PREFIX)
configuration.get(KonanConfigKeys.EXPORT_KDOC)?.let { put(KonanConfigKeys.EXPORT_KDOC, it)} 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. // For the second stage, remove already compiled source files from the configuration.