authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2020-12-04 17:13:19+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-12-04 12:23:49-08:00
logb390ced356a2150f21f8d15470f927ccc1c9f3ed
tree4c2c56bdc9f8009971e4b9ca199f7b010d1af10f
parenta90de4eef5f490d9caff2e1b672fc2f09df9205b

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.

1 files changed, 3 insertions(+), 5 deletions(-)

src/link/MachO.zig+3-5
...@@ -536,11 +536,9 @@ fn linkWithLLD(self: *MachO, comp: *Compilation) !void {...@@ -536,11 +536,9 @@ fn linkWithLLD(self: *MachO, comp: *Compilation) !void {
536 try argv.append(cur_vers);536 try argv.append(cur_vers);
537 }537 }
538538
539 // TODO getting an error when running an executable when doing this rpath thing539 const dylib_install_name = try std.fmt.allocPrint(arena, "@rpath/{}", .{self.base.options.emit.?.sub_path});
540 //Buf *dylib_install_name = buf_sprintf("@rpath/lib%s.%" ZIG_PRI_usize ".dylib",540 try argv.append("-install_name");
541 // buf_ptr(g->root_out_name), g->version_major);541 try argv.append(dylib_install_name);
542 //try argv.append("-install_name");
543 //try argv.append(buf_ptr(dylib_install_name));
544 }542 }
545543
546 try argv.append("-arch");544 try argv.append("-arch");