diff --git a/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt b/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt index 0d2863c7f69..de20550d211 100644 --- a/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt +++ b/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.konan.CURRENT import org.jetbrains.kotlin.konan.CompilerVersion import org.jetbrains.kotlin.konan.file.File import org.jetbrains.kotlin.konan.target.CompilerOutputKind +import org.jetbrains.kotlin.library.uniqueName import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.util.profile @@ -75,6 +76,7 @@ class K2Native : CLICompiler() { try { val konanConfig = KonanConfig(project, configuration) + ensureModuleName(konanConfig, environment) runTopLevelPhases(konanConfig, environment) } catch (e: KonanCompilationException) { return ExitCode.COMPILATION_ERROR @@ -101,6 +103,18 @@ class K2Native : CLICompiler() { return this?.asList() ?: listOf() } + private fun ensureModuleName(config: KonanConfig, environment: KotlinCoreEnvironment) { + if (environment.getSourceFiles().isEmpty()) { + val libraries = config.resolvedLibraries.getFullList() + val moduleName = config.moduleId + if (libraries.any { it.uniqueName == moduleName }) { + val kexeModuleName = "${moduleName}_kexe" + config.configuration.put(KonanConfigKeys.MODULE_NAME, kexeModuleName) + assert(libraries.none { it.uniqueName == kexeModuleName }) + } + } + } + // It is executed before doExecute(). override fun setupPlatformSpecificArgumentsAndServices( configuration: CompilerConfiguration, diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt index fffa46d3abb..84a1265ebfd 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt @@ -87,7 +87,7 @@ class KonanConfig(val project: Project, val configuration: CompilerConfiguration configuration, target, distribution, resolveManifestDependenciesLenient = metadataKlib ) - internal val resolvedLibraries get() = resolve.resolvedLibraries + val resolvedLibraries get() = resolve.resolvedLibraries internal val cacheSupport = CacheSupport(configuration, resolvedLibraries, target, produce)