commit f385419259d2d322263cf7dc9393d2cb5797eb17 (tree)
parent 96a703ee6deea1dfbfe300fc997c99c485fa3df8
Author: Jakub Konka <kubkon@jakubkonka.com>
Date: Fri, 4 Dec 2020 17:13:19 +0100
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.
Diffstat:
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/src/link/MachO.zig b/src/link/MachO.zig
@@ -587,11 +587,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");