Add -install_name to produced frameworks

This commit is contained in:
Svyatoslav Scherbina
2017-11-29 12:17:34 +03:00
committed by SvyatoslavScherbina
parent 85103a455b
commit 954caf836a
@@ -329,18 +329,25 @@ internal class LinkStage(val context: Context) {
get() = if (nomain || dynamic) emptyList() else platform.entrySelector get() = if (nomain || dynamic) emptyList() else platform.entrySelector
private fun link(objectFiles: List<ObjectFile>, includedBinaries: List<String>, libraryProvidedLinkerFlags: List<String>): ExecutableFile? { private fun link(objectFiles: List<ObjectFile>, includedBinaries: List<String>, libraryProvidedLinkerFlags: List<String>): ExecutableFile? {
val executable = if (context.config.produce != CompilerOutputKind.FRAMEWORK) { val frameworkLinkerArgs: List<String>
context.config.outputFile val executable: String
if (context.config.produce != CompilerOutputKind.FRAMEWORK) {
frameworkLinkerArgs = emptyList()
executable = context.config.outputFile
} else { } else {
val framework = File(context.config.outputFile) val framework = File(context.config.outputFile)
val dylibName = framework.name.removeSuffix(".framework")
frameworkLinkerArgs = listOf("-install_name", "@rpath/${framework.name}/$dylibName")
framework.mkdirs() framework.mkdirs()
framework.child(framework.name.removeSuffix(".framework")).absolutePath executable = framework.child(dylibName).absolutePath
} }
val linkCommand = platform.linkCommand(objectFiles, executable, optimize, debug, dynamic) + val linkCommand = platform.linkCommand(objectFiles, executable, optimize, debug, dynamic) +
platform.targetLibffi + platform.targetLibffi +
asLinkerArgs(config.getNotNull(KonanConfigKeys.LINKER_ARGS)) + asLinkerArgs(config.getNotNull(KonanConfigKeys.LINKER_ARGS)) +
entryPointSelector + entryPointSelector +
frameworkLinkerArgs +
platform.linkCommandSuffix() + platform.linkCommandSuffix() +
platform.linkStaticLibraries(includedBinaries) + platform.linkStaticLibraries(includedBinaries) +
libraryProvidedLinkerFlags libraryProvidedLinkerFlags