aboutsummaryrefslogtreecommitdiff
path: root/src/target.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2021-11-24 16:14:52 +0100
committerJakub Konka <kubkon@jakubkonka.com>2021-11-25 12:19:16 +0100
commit42a351e099dd41fe96dab4f6dadd277884188f3f (patch)
tree7958c3e2e7a1505dd1c2b547e61f1f228641c031 /src/target.zig
parent2dcfa486feecc964a1aab6b843ab85c2be1d7a9b (diff)
downloadzig-42a351e099dd41fe96dab4f6dadd277884188f3f.tar.gz
zig-42a351e099dd41fe96dab4f6dadd277884188f3f.zip
infer and match macos sdk version for libc headers
Diffstat (limited to 'src/target.zig')
-rw-r--r--src/target.zig12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/target.zig b/src/target.zig
index 6b6ed2fbc5..6f6d9f811d 100644
--- a/src/target.zig
+++ b/src/target.zig
@@ -5,6 +5,7 @@ pub const ArchOsAbi = struct {
arch: std.Target.Cpu.Arch,
os: std.Target.Os.Tag,
abi: std.Target.Abi,
+ os_ver: ?std.builtin.Version = null,
};
pub const available_libcs = [_]ArchOsAbi{
@@ -14,7 +15,8 @@ pub const available_libcs = [_]ArchOsAbi{
.{ .arch = .aarch64, .os = .linux, .abi = .gnu },
.{ .arch = .aarch64, .os = .linux, .abi = .musl },
.{ .arch = .aarch64, .os = .windows, .abi = .gnu },
- .{ .arch = .aarch64, .os = .macos, .abi = .gnu },
+ .{ .arch = .aarch64, .os = .macos, .abi = .gnu, .os_ver = .{ .major = 11, .minor = 0 } },
+ .{ .arch = .aarch64, .os = .macos, .abi = .gnu, .os_ver = .{ .major = 12, .minor = 0 } },
.{ .arch = .armeb, .os = .linux, .abi = .gnueabi },
.{ .arch = .armeb, .os = .linux, .abi = .gnueabihf },
.{ .arch = .armeb, .os = .linux, .abi = .musleabi },
@@ -64,7 +66,9 @@ pub const available_libcs = [_]ArchOsAbi{
.{ .arch = .x86_64, .os = .linux, .abi = .gnux32 },
.{ .arch = .x86_64, .os = .linux, .abi = .musl },
.{ .arch = .x86_64, .os = .windows, .abi = .gnu },
- .{ .arch = .x86_64, .os = .macos, .abi = .gnu },
+ .{ .arch = .x86_64, .os = .macos, .abi = .gnu, .os_ver = .{ .major = 10, .minor = 0 } },
+ .{ .arch = .x86_64, .os = .macos, .abi = .gnu, .os_ver = .{ .major = 11, .minor = 0 } },
+ .{ .arch = .x86_64, .os = .macos, .abi = .gnu, .os_ver = .{ .major = 12, .minor = 0 } },
};
pub fn libCGenericName(target: std.Target) [:0]const u8 {
@@ -105,6 +109,10 @@ pub fn libCGenericName(target: std.Target) [:0]const u8 {
pub fn canBuildLibC(target: std.Target) bool {
for (available_libcs) |libc| {
if (target.cpu.arch == libc.arch and target.os.tag == libc.os and target.abi == libc.abi) {
+ if (target.os.tag == .macos) {
+ const ver = target.os.version_range.semver;
+ if (ver.min.major != libc.os_ver.?.major) continue; // no match, keep going
+ }
return true;
}
}