diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanCompilerFrontendServices.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanCompilerFrontendServices.kt index a39ec71f406..7c98a06a223 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanCompilerFrontendServices.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanCompilerFrontendServices.kt @@ -19,7 +19,7 @@ import org.jetbrains.kotlin.resolve.deprecation.DeprecationResolver internal fun StorageComponentContainer.initContainer(config: KonanConfig) { useImpl() - if (config.configuration.get(KonanConfigKeys.EMIT_LAZY_OBJC_HEADER_FILE) != null) { + if (!config.configuration.get(KonanConfigKeys.EMIT_LAZY_OBJC_HEADER_FILE).isNullOrEmpty()) { useImpl() useInstance(object : ObjCExportProblemCollector { override fun reportWarning(text: String) {} @@ -55,7 +55,7 @@ internal fun StorageComponentContainer.initContainer(config: KonanConfig) { internal fun ComponentProvider.postprocessComponents(context: FrontendContext, files: Collection) { context.frontendServices = this.get() - context.config.configuration.get(KonanConfigKeys.EMIT_LAZY_OBJC_HEADER_FILE)?.let { + context.config.configuration.get(KonanConfigKeys.EMIT_LAZY_OBJC_HEADER_FILE)?.takeIf { it.isNotEmpty() }?.let { this.get().dumpObjCHeader(files, it, context.shouldExportKDoc()) } } 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 57896646187..76c1177908f 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 @@ -162,6 +162,9 @@ class KonanDriver( 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)} } // For the second stage, remove already compiled source files from the configuration. @@ -170,6 +173,9 @@ class KonanDriver( configuration.put(CommonConfigurationKeys.USE_FIR, false) // For the second stage, provide just compiled intermediate KLib as "-Xinclude=" param. require(intermediateKLib.exists) { "Intermediate KLib $intermediateKLib must have been created by successful first compilation stage" } + // We need to remove this flag, as it would otherwise override header written previously. + // Unfortunately, there is no way to remove the flag, so empty string is put instead + configuration.get(KonanConfigKeys.EMIT_LAZY_OBJC_HEADER_FILE)?.let { configuration.put(KonanConfigKeys.EMIT_LAZY_OBJC_HEADER_FILE, "") } configuration.put(KonanConfigKeys.INCLUDED_LIBRARIES, configuration.get(KonanConfigKeys.INCLUDED_LIBRARIES).orEmpty() + listOf(intermediateKLib.absolutePath)) compilationSpawner.spawn(configuration) // Need to spawn a new compilation to create fresh environment (without sources). diff --git a/kotlin-native/backend.native/tests/build.gradle b/kotlin-native/backend.native/tests/build.gradle index 36b13dcbf6e..ed55817c150 100644 --- a/kotlin-native/backend.native/tests/build.gradle +++ b/kotlin-native/backend.native/tests/build.gradle @@ -5350,7 +5350,8 @@ Task objcExportTest( opts += [ "-Xexport-kdoc", "-Xbinary=bundleId=foo.bar", - "-Xexport-library=test-no-enum-entries-${libraryName}.klib" + "-Xexport-library=test-no-enum-entries-${libraryName}.klib", + "-module-name", "Kt" ] opts += frameworkOpts }