From b390ced356a2150f21f8d15470f927ccc1c9f3ed Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Fri, 4 Dec 2020 17:13:19 +0100 Subject: [PATCH] macho: specify -install_name as full dylib's name This then allows for proper resolution of names via runpath search path list, i.e., `-rpath @loader_path` will correctly resolve to `@rpath/libxxx.dylib (...)` in the linked binary. --- src/link/MachO.zig | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/link/MachO.zig b/src/link/MachO.zig index a741b75d4c..5379b536ef 100644 --- a/src/link/MachO.zig +++ b/src/link/MachO.zig @@ -536,11 +536,9 @@ fn linkWithLLD(self: *MachO, comp: *Compilation) !void { try argv.append(cur_vers); } - // TODO getting an error when running an executable when doing this rpath thing - //Buf *dylib_install_name = buf_sprintf("@rpath/lib%s.%" ZIG_PRI_usize ".dylib", - // buf_ptr(g->root_out_name), g->version_major); - //try argv.append("-install_name"); - //try argv.append(buf_ptr(dylib_install_name)); + const dylib_install_name = try std.fmt.allocPrint(arena, "@rpath/{}", .{self.base.options.emit.?.sub_path}); + try argv.append("-install_name"); + try argv.append(dylib_install_name); } try argv.append("-arch");