aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2022-06-29 07:56:21 +0200
committerGitHub <noreply@github.com>2022-06-29 07:56:21 +0200
commitbb3e1bcf31bdf9306030e797ed673021c7766d58 (patch)
tree9f69c650687742302e1a7a4760018439ad27680a /src
parent41533fa6a1fa5e9e9b38a59403930501fd61a259 (diff)
parentc2c1998269f8a92e39c14dabb68b253c012d56ef (diff)
downloadzig-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.zig27
-rw-r--r--src/link.zig2
-rw-r--r--src/main.zig4
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 {