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(
7979 try jws.objectField("glibc");
8080 try jws.beginArray();
8181 for (glibc_abi.all_versions) |ver| {
82 // Actual glibc minimum is architecture specific. This just covers the broadest minimum.
83 if (ver.order(target.glibc_min_version) != .lt) {
84 const tmp = try std.fmt.allocPrint(allocator, "{}", .{ver});
85 defer allocator.free(tmp);
86 try jws.write(tmp);
87 }
82 const tmp = try std.fmt.allocPrint(allocator, "{}", .{ver});
83 defer allocator.free(tmp);
84 try jws.write(tmp);
8885 }
8986 try jws.endArray();
9087
src/target.zig+2-8
......@@ -12,10 +12,7 @@ pub const ArchOsAbi = struct {
1212 abi: std.Target.Abi,
1313 os_ver: ?std.SemanticVersion = null,
1414
15 // Minimum glibc version that provides support for the arch/os (for
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.
15 // Minimum glibc version that provides support for the arch/os when ABI is GNU.
1916 glibc_min: ?std.SemanticVersion = null,
2017};
2118
......@@ -82,9 +79,6 @@ pub const available_libcs = [_]ArchOsAbi{
8279 .{ .arch = .x86_64, .os = .macos, .abi = .none, .os_ver = .{ .major = 10, .minor = 7, .patch = 0 } },
8380};
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
8882pub fn libCGenericName(target: std.Target) [:0]const u8 {
8983 switch (target.os.tag) {
9084 .windows => return "mingw",
......@@ -165,7 +159,7 @@ pub fn canBuildLibC(target: std.Target) bool {
165159 }
166160 // Ensure glibc (aka *-linux-gnu) version is supported
167161 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;
169163 const target_glibc_ver = target.os.version_range.linux.glibc;
170164 return target_glibc_ver.order(min_glibc_ver) != .lt;
171165 }