authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-01-08 13:43:10-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-01-08 13:43:10-07:00
loged410b9c1e9a09e674f862b5f3af9d207837a472
treefcd420c65cc1a2623c74b47885017ef0c50da21d
parent8fd15c6ca8b93fa9888e2641ebec149f6d600643

lift artificial restriction on minimum glibc version

Fixes a regression introduced in c22d1c00a8825f60e7b01b97c6f73cbc21ca8257. See #17769

2 files changed, 5 insertions(+), 14 deletions(-)

src/print_targets.zig+3-6
...@@ -79,12 +79,9 @@ pub fn cmdTargets(...@@ -79,12 +79,9 @@ pub fn cmdTargets(
79 try jws.objectField("glibc");79 try jws.objectField("glibc");
80 try jws.beginArray();80 try jws.beginArray();
81 for (glibc_abi.all_versions) |ver| {81 for (glibc_abi.all_versions) |ver| {
82 // Actual glibc minimum is architecture specific. This just covers the broadest minimum.82 const tmp = try std.fmt.allocPrint(allocator, "{}", .{ver});
83 if (ver.order(target.glibc_min_version) != .lt) {83 defer allocator.free(tmp);
84 const tmp = try std.fmt.allocPrint(allocator, "{}", .{ver});84 try jws.write(tmp);
85 defer allocator.free(tmp);
86 try jws.write(tmp);
87 }
88 }85 }
89 try jws.endArray();86 try jws.endArray();
9087
src/target.zig+2-8
...@@ -12,10 +12,7 @@ pub const ArchOsAbi = struct {...@@ -12,10 +12,7 @@ pub const ArchOsAbi = struct {
12 abi: std.Target.Abi,12 abi: std.Target.Abi,
13 os_ver: ?std.SemanticVersion = null,13 os_ver: ?std.SemanticVersion = null,
1414
15 // Minimum glibc version that provides support for the arch/os (for15 // Minimum glibc version that provides support for the arch/os when ABI is GNU.
16 // .abi = .gnu). For most entries, the .glibc_min is null,
17 // meaning the Zig minimum required by the standard library (see
18 // glibc_min_version) is sufficient.
19 glibc_min: ?std.SemanticVersion = null,16 glibc_min: ?std.SemanticVersion = null,
20};17};
2118
...@@ -82,9 +79,6 @@ pub const available_libcs = [_]ArchOsAbi{...@@ -82,9 +79,6 @@ pub const available_libcs = [_]ArchOsAbi{
82 .{ .arch = .x86_64, .os = .macos, .abi = .none, .os_ver = .{ .major = 10, .minor = 7, .patch = 0 } },79 .{ .arch = .x86_64, .os = .macos, .abi = .none, .os_ver = .{ .major = 10, .minor = 7, .patch = 0 } },
83};80};
8481
85/// Minimum glibc version, due to dependencies from the Zig standard library on glibc symbols
86pub const glibc_min_version: std.SemanticVersion = .{ .major = 2, .minor = 17, .patch = 0 };
87
88pub fn libCGenericName(target: std.Target) [:0]const u8 {82pub fn libCGenericName(target: std.Target) [:0]const u8 {
89 switch (target.os.tag) {83 switch (target.os.tag) {
90 .windows => return "mingw",84 .windows => return "mingw",
...@@ -165,7 +159,7 @@ pub fn canBuildLibC(target: std.Target) bool {...@@ -165,7 +159,7 @@ pub fn canBuildLibC(target: std.Target) bool {
165 }159 }
166 // Ensure glibc (aka *-linux-gnu) version is supported160 // Ensure glibc (aka *-linux-gnu) version is supported
167 if (target.isGnuLibC()) {161 if (target.isGnuLibC()) {
168 const min_glibc_ver = libc.glibc_min orelse glibc_min_version;162 const min_glibc_ver = libc.glibc_min orelse return true;
169 const target_glibc_ver = target.os.version_range.linux.glibc;163 const target_glibc_ver = target.os.version_range.linux.glibc;
170 return target_glibc_ver.order(min_glibc_ver) != .lt;164 return target_glibc_ver.order(min_glibc_ver) != .lt;
171 }165 }