authorgravatar for michael.dusan@gmail.comMichael Dusan <michael.dusan@gmail.com> 2021-03-14 10:52:35-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-03-14 17:26:24-04:00
loga502c160cd51ce3de80b3be945245b7a91967a85
tree3da5d0105e43b3f92906ef02261afee449840c82
parent27d07c6c4de36af1186392d4bec321825403860e

macho: fix various linker flags

fix drivers: zig {cc,c++} - `-dynamiclib` is an alias to `-shared` - associate `-dynamiclib` with zig `.shared` semantics fix drivers: zig {cc,c++,build-lib,build-exe} - use `-dynamic` for {exe,dylib} - for dylib this fixes a regression - for exe this replaces incorrect use of `-static`

3 files changed, 13 insertions(+), 4 deletions(-)

src/clang_options_data.zig+8-1
...@@ -2426,7 +2426,14 @@ flagpd1("dwarf-ext-refs"),...@@ -2426,7 +2426,14 @@ flagpd1("dwarf-ext-refs"),
2426sepd1("dylib_file"),2426sepd1("dylib_file"),
2427flagpd1("dylinker"),2427flagpd1("dylinker"),
2428flagpd1("dynamic"),2428flagpd1("dynamic"),
2429flagpd1("dynamiclib"),2429.{
2430 .name = "dynamiclib",
2431 .syntax = .flag,
2432 .zig_equivalent = .shared,
2433 .pd1 = true,
2434 .pd2 = false,
2435 .psl = false,
2436},
2430flagpd1("emit-ast"),2437flagpd1("emit-ast"),
2431flagpd1("emit-codegen-only"),2438flagpd1("emit-codegen-only"),
2432flagpd1("emit-header-module"),2439flagpd1("emit-header-module"),
src/link/MachO.zig+1-3
...@@ -644,9 +644,7 @@ fn linkWithLLD(self: *MachO, comp: *Compilation) !void {...@@ -644,9 +644,7 @@ fn linkWithLLD(self: *MachO, comp: *Compilation) !void {
644 try argv.append("defs");644 try argv.append("defs");
645 }645 }
646646
647 if (is_dyn_lib) {647 if (is_exe_or_dyn_lib) {
648 try argv.append("-static");
649 } else {
650 try argv.append("-dynamic");648 try argv.append("-dynamic");
651 }649 }
652650
tools/update_clang_options.zig+4
...@@ -332,6 +332,10 @@ const known_options = [_]KnownOpt{...@@ -332,6 +332,10 @@ const known_options = [_]KnownOpt{
332 .name = "s",332 .name = "s",
333 .ident = "strip",333 .ident = "strip",
334 },334 },
335 .{
336 .name = "dynamiclib",
337 .ident = "shared",
338 },
335};339};
336340
337const blacklisted_options = [_][]const u8{};341const blacklisted_options = [_][]const u8{};