aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2020-12-04 16:23:21 +0100
committerAndrew Kelley <andrew@ziglang.org>2020-12-04 11:37:55 -0800
commitc4853ba7ea007f46f8680749c028767287d39f68 (patch)
tree69485827953cc62d05ed50ff11f4078d8a58d00d /src
parentb6b7a6401c064582b610b8ca6935a388c3bb3c03 (diff)
downloadzig-c4853ba7ea007f46f8680749c028767287d39f68.tar.gz
zig-c4853ba7ea007f46f8680749c028767287d39f68.zip
Version-gate appending -syslibroot flag to lld
This commit version-gates appending `-syslibroot` flag to lld. This is predicated upon the fact that for versions of macOS lower than 11, lld would fail to find and link against frameworks with this flag specified. Co-authored-by: Andrew Kelley <andrew@ziglang.org>
Diffstat (limited to 'src')
-rw-r--r--src/Compilation.zig5
-rw-r--r--src/link/MachO.zig2
2 files changed, 6 insertions, 1 deletions
diff --git a/src/Compilation.zig b/src/Compilation.zig
index 63858a1bcb..2188d7b87a 100644
--- a/src/Compilation.zig
+++ b/src/Compilation.zig
@@ -534,7 +534,10 @@ pub fn create(gpa: *Allocator, options: InitOptions) !*Compilation {
const darwin_options: DarwinOptions = if (build_options.have_llvm and comptime std.Target.current.isDarwin()) outer: {
const opts: DarwinOptions = if (use_lld and options.is_native_os and options.target.isDarwin()) inner: {
- const syslibroot = try std.zig.system.getSDKPath(arena);
+ // TODO Revisit this targeting versions lower than macOS 11 when LLVM 12 is out.
+ // See https://github.com/ziglang/zig/issues/6996
+ const at_least_big_sur = options.target.os.getVersionRange().semver.min.major >= 11;
+ const syslibroot = if (at_least_big_sur) try std.zig.system.getSDKPath(arena) else null;
const system_linker_hack = std.os.getenv("ZIG_SYSTEM_LINKER_HACK") != null;
break :inner .{
.syslibroot = syslibroot,
diff --git a/src/link/MachO.zig b/src/link/MachO.zig
index 97d2332018..a741b75d4c 100644
--- a/src/link/MachO.zig
+++ b/src/link/MachO.zig
@@ -421,6 +421,8 @@ fn linkWithLLD(self: *MachO, comp: *Compilation) !void {
man.hash.addStringSet(self.base.options.system_libs);
man.hash.add(allow_shlib_undefined);
man.hash.add(self.base.options.bind_global_refs_locally);
+ man.hash.add(self.base.options.system_linker_hack);
+ man.hash.addOptionalBytes(self.base.options.syslibroot);
// We don't actually care whether it's a cache hit or miss; we just need the digest and the lock.
_ = try man.hit();