authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-12-13 07:56:52+01:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-12-17 05:04:16+01:00
log424f9ba53289ab720c76ae06685168b1bf3f5a59
treef8f5a94dd5112d93f1d89ad6781d1842a904e45e
parentdf235f5163e79f66665bbc713112ed49e5d7a25a
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.zig.target: Check OS version for all targets in canBuildLibC().

The old logic only checked it for macOS, but we also need it to be checked for Linux now.

1 files changed, 10 insertions(+), 8 deletions(-)

lib/std/zig/target.zig+10-8
...@@ -86,15 +86,17 @@ pub const available_libcs = [_]ArchOsAbi{...@@ -86,15 +86,17 @@ pub const available_libcs = [_]ArchOsAbi{
86pub fn canBuildLibC(target: std.Target) bool {86pub fn canBuildLibC(target: std.Target) bool {
87 for (available_libcs) |libc| {87 for (available_libcs) |libc| {
88 if (target.cpu.arch == libc.arch and target.os.tag == libc.os and target.abi == libc.abi) {88 if (target.cpu.arch == libc.arch and target.os.tag == libc.os and target.abi == libc.abi) {
89 if (target.os.tag == .macos) {89 if (libc.os_ver) |libc_os_ver| {
90 const ver = target.os.version_range.semver;90 if (switch (target.os.versionRange()) {
91 return ver.min.order(libc.os_ver.?) != .lt;91 .semver => |v| v,
92 .linux => |v| v.range,
93 else => null,
94 }) |ver| {
95 if (ver.min.order(libc_os_ver) == .lt) return false;
96 }
92 }97 }
93 // Ensure glibc (aka *-(linux,hurd)-gnu) version is supported98 if (libc.glibc_min) |glibc_min| {
94 if (target.isGnuLibC()) {99 if (target.os.versionRange().gnuLibCVersion().?.order(glibc_min) == .lt) return false;
95 const min_glibc_ver = libc.glibc_min orelse return true;
96 const target_glibc_ver = target.os.versionRange().gnuLibCVersion().?;
97 return target_glibc_ver.order(min_glibc_ver) != .lt;
98 }100 }
99 return true;101 return true;
100 }102 }