diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2022-06-29 07:56:21 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-29 07:56:21 +0200 |
| commit | bb3e1bcf31bdf9306030e797ed673021c7766d58 (patch) | |
| tree | 9f69c650687742302e1a7a4760018439ad27680a /src | |
| parent | 41533fa6a1fa5e9e9b38a59403930501fd61a259 (diff) | |
| parent | c2c1998269f8a92e39c14dabb68b253c012d56ef (diff) | |
| download | zig-bb3e1bcf31bdf9306030e797ed673021c7766d58.tar.gz zig-bb3e1bcf31bdf9306030e797ed673021c7766d58.zip | |
Merge pull request #11954 from ziglang/fixes-weak-l
macho: weak libraries and frameworks fixes
Diffstat (limited to 'src')
| -rw-r--r-- | src/clang_options_data.zig | 27 | ||||
| -rw-r--r-- | src/link.zig | 2 | ||||
| -rw-r--r-- | src/main.zig | 4 |
3 files changed, 30 insertions, 3 deletions
diff --git a/src/clang_options_data.zig b/src/clang_options_data.zig index 25cdd04f82..b4bef06c9e 100644 --- a/src/clang_options_data.zig +++ b/src/clang_options_data.zig @@ -4867,8 +4867,22 @@ flagpd1("version"), .psl = false, }, flagpd1("w"), -sepd1("weak_framework"), -sepd1("weak_library"), +.{ + .name = "weak_framework", + .syntax = .separate, + .zig_equivalent = .weak_framework, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +.{ + .name = "weak_library", + .syntax = .separate, + .zig_equivalent = .weak_library, + .pd1 = true, + .pd2 = false, + .psl = false, +}, sepd1("weak_reference_mismatches"), flagpd1("whatsloaded"), flagpd1("why_load"), @@ -6200,7 +6214,14 @@ jspd1("iquote"), .pd2 = true, .psl = false, }, -joinpd1("weak-l"), +.{ + .name = "weak-l", + .syntax = .joined, + .zig_equivalent = .weak_library, + .pd1 = true, + .pd2 = false, + .psl = false, +}, .{ .name = "Ofast", .syntax = .flag, diff --git a/src/link.zig b/src/link.zig index da6e8c53ed..6c5e876022 100644 --- a/src/link.zig +++ b/src/link.zig @@ -19,6 +19,7 @@ const Package = @import("Package.zig"); const Type = @import("type.zig").Type; const TypedValue = @import("TypedValue.zig"); +/// When adding a new field, remember to update `hashAddSystemLibs`. pub const SystemLib = struct { needed: bool = false, weak: bool = false, @@ -35,6 +36,7 @@ pub fn hashAddSystemLibs( hh.addListOfBytes(keys); for (hm.values()) |value| { hh.add(value.needed); + hh.add(value.weak); } } diff --git a/src/main.zig b/src/main.zig index ae1b95a4aa..f13fe342ca 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1625,6 +1625,8 @@ fn buildOutputType( .entry => { entry = it.only_arg; }, + .weak_library => try system_libs.put(it.only_arg, .{ .weak = true }), + .weak_framework => try frameworks.put(gpa, it.only_arg, .{ .weak = true }), } } // Parse linker args. @@ -4577,6 +4579,8 @@ pub const ClangArgIterator = struct { emit_llvm, sysroot, entry, + weak_library, + weak_framework, }; const Args = struct { |
