| ... | ... | @@ -86,15 +86,17 @@ pub const available_libcs = [_]ArchOsAbi{ |
| 86 | 86 | pub fn canBuildLibC(target: std.Target) bool { |
| 87 | 87 | for (available_libcs) |libc| { |
| 88 | 88 | if (target.cpu.arch == libc.arch and target.os.tag == libc.os and target.abi == libc.abi) { |
| 89 | | if (target.os.tag == .macos) { |
| 90 | | const ver = target.os.version_range.semver; |
| 91 | | return ver.min.order(libc.os_ver.?) != .lt; |
| 89 | if (libc.os_ver) |libc_os_ver| { |
| 90 | if (switch (target.os.versionRange()) { |
| 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 supported |
| 94 | | if (target.isGnuLibC()) { |
| 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 | if (libc.glibc_min) |glibc_min| { |
| 99 | if (target.os.versionRange().gnuLibCVersion().?.order(glibc_min) == .lt) return false; |
| 98 | 100 | } |
| 99 | 101 | return true; |
| 100 | 102 | } |