diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/LinkStage.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/LinkStage.kt index 8a4c21811cf..085bc63ce08 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/LinkStage.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/LinkStage.kt @@ -329,18 +329,25 @@ internal class LinkStage(val context: Context) { get() = if (nomain || dynamic) emptyList() else platform.entrySelector private fun link(objectFiles: List, includedBinaries: List, libraryProvidedLinkerFlags: List): ExecutableFile? { - val executable = if (context.config.produce != CompilerOutputKind.FRAMEWORK) { - context.config.outputFile + val frameworkLinkerArgs: List + val executable: String + + if (context.config.produce != CompilerOutputKind.FRAMEWORK) { + frameworkLinkerArgs = emptyList() + executable = context.config.outputFile } else { val framework = File(context.config.outputFile) + val dylibName = framework.name.removeSuffix(".framework") + frameworkLinkerArgs = listOf("-install_name", "@rpath/${framework.name}/$dylibName") framework.mkdirs() - framework.child(framework.name.removeSuffix(".framework")).absolutePath + executable = framework.child(dylibName).absolutePath } val linkCommand = platform.linkCommand(objectFiles, executable, optimize, debug, dynamic) + platform.targetLibffi + asLinkerArgs(config.getNotNull(KonanConfigKeys.LINKER_ARGS)) + entryPointSelector + + frameworkLinkerArgs + platform.linkCommandSuffix() + platform.linkStaticLibraries(includedBinaries) + libraryProvidedLinkerFlags