| ... | ... | @@ -13,6 +13,7 @@ pub const ArchOsAbi = struct { |
| 13 | 13 | |
| 14 | 14 | pub const available_libcs = [_]ArchOsAbi{ |
| 15 | 15 | .{ .arch = .arc, .os = .linux, .abi = .gnu, .os_ver = .{ .major = 4, .minor = 2, .patch = 0 }, .glibc_min = .{ .major = 2, .minor = 32, .patch = 0 } }, |
| 16 | .{ .arch = .arm, .os = .freebsd, .abi = .eabihf, .os_ver = .{ .major = 10, .minor = 0, .patch = 0 } }, |
| 16 | 17 | .{ .arch = .arm, .os = .linux, .abi = .gnueabi, .os_ver = .{ .major = 2, .minor = 1, .patch = 0 } }, |
| 17 | 18 | .{ .arch = .arm, .os = .linux, .abi = .gnueabihf, .os_ver = .{ .major = 2, .minor = 1, .patch = 0 } }, |
| 18 | 19 | .{ .arch = .arm, .os = .linux, .abi = .musleabi, .os_ver = .{ .major = 2, .minor = 1, .patch = 0 } }, |
| ... | ... | @@ -21,11 +22,13 @@ pub const available_libcs = [_]ArchOsAbi{ |
| 21 | 22 | .{ .arch = .armeb, .os = .linux, .abi = .gnueabihf, .os_ver = .{ .major = 2, .minor = 6, .patch = 0 } }, |
| 22 | 23 | .{ .arch = .armeb, .os = .linux, .abi = .musleabi, .os_ver = .{ .major = 2, .minor = 6, .patch = 0 } }, |
| 23 | 24 | .{ .arch = .armeb, .os = .linux, .abi = .musleabihf, .os_ver = .{ .major = 2, .minor = 6, .patch = 0 } }, |
| 25 | .{ .arch = .thumb, .os = .freebsd, .abi = .eabihf, .os_ver = .{ .major = 11, .minor = 0, .patch = 0 } }, |
| 24 | 26 | .{ .arch = .thumb, .os = .linux, .abi = .musleabi, .os_ver = .{ .major = 2, .minor = 1, .patch = 0 } }, |
| 25 | 27 | .{ .arch = .thumb, .os = .linux, .abi = .musleabihf, .os_ver = .{ .major = 2, .minor = 1, .patch = 0 } }, |
| 26 | 28 | .{ .arch = .thumb, .os = .windows, .abi = .gnu }, |
| 27 | 29 | .{ .arch = .thumbeb, .os = .linux, .abi = .musleabi, .os_ver = .{ .major = 2, .minor = 6, .patch = 0 } }, |
| 28 | 30 | .{ .arch = .thumbeb, .os = .linux, .abi = .musleabihf, .os_ver = .{ .major = 2, .minor = 6, .patch = 0 } }, |
| 31 | .{ .arch = .aarch64, .os = .freebsd, .abi = .none, .os_ver = .{ .major = 11, .minor = 0, .patch = 0 } }, |
| 29 | 32 | .{ .arch = .aarch64, .os = .linux, .abi = .gnu, .os_ver = .{ .major = 3, .minor = 7, .patch = 0 }, .glibc_min = .{ .major = 2, .minor = 17, .patch = 0 } }, |
| 30 | 33 | .{ .arch = .aarch64, .os = .linux, .abi = .musl, .os_ver = .{ .major = 3, .minor = 7, .patch = 0 } }, |
| 31 | 34 | .{ .arch = .aarch64, .os = .macos, .abi = .none, .os_ver = .{ .major = 11, .minor = 0, .patch = 0 } }, |
| ... | ... | @@ -57,16 +60,20 @@ pub const available_libcs = [_]ArchOsAbi{ |
| 57 | 60 | .{ .arch = .mips64el, .os = .linux, .abi = .gnuabin32, .os_ver = .{ .major = 2, .minor = 6, .patch = 0 }, .glibc_triple = "mips64el-linux-gnu-n32" }, |
| 58 | 61 | .{ .arch = .mips64el, .os = .linux, .abi = .muslabi64, .os_ver = .{ .major = 2, .minor = 3, .patch = 48 } }, |
| 59 | 62 | .{ .arch = .mips64el, .os = .linux, .abi = .muslabin32, .os_ver = .{ .major = 2, .minor = 6, .patch = 0 } }, |
| 63 | .{ .arch = .powerpc, .os = .freebsd, .abi = .eabihf, .os_ver = .{ .major = 7, .minor = 1, .patch = 0 } }, |
| 60 | 64 | .{ .arch = .powerpc, .os = .linux, .abi = .gnueabi, .os_ver = .{ .major = 1, .minor = 3, .patch = 45 }, .glibc_triple = "powerpc-linux-gnu-soft" }, |
| 61 | 65 | .{ .arch = .powerpc, .os = .linux, .abi = .gnueabihf, .os_ver = .{ .major = 1, .minor = 3, .patch = 45 }, .glibc_triple = "powerpc-linux-gnu" }, |
| 62 | 66 | .{ .arch = .powerpc, .os = .linux, .abi = .musleabi, .os_ver = .{ .major = 1, .minor = 3, .patch = 45 } }, |
| 63 | 67 | .{ .arch = .powerpc, .os = .linux, .abi = .musleabihf, .os_ver = .{ .major = 1, .minor = 3, .patch = 45 } }, |
| 68 | .{ .arch = .powerpc64, .os = .freebsd, .abi = .none, .os_ver = .{ .major = 8, .minor = 0, .patch = 0 } }, |
| 64 | 69 | .{ .arch = .powerpc64, .os = .linux, .abi = .gnu, .os_ver = .{ .major = 2, .minor = 6, .patch = 0 } }, |
| 65 | 70 | .{ .arch = .powerpc64, .os = .linux, .abi = .musl, .os_ver = .{ .major = 2, .minor = 6, .patch = 0 } }, |
| 71 | .{ .arch = .powerpc64le, .os = .freebsd, .abi = .none, .os_ver = .{ .major = 13, .minor = 0, .patch = 0 } }, |
| 66 | 72 | .{ .arch = .powerpc64le, .os = .linux, .abi = .gnu, .os_ver = .{ .major = 3, .minor = 14, .patch = 0 }, .glibc_min = .{ .major = 2, .minor = 19, .patch = 0 } }, |
| 67 | 73 | .{ .arch = .powerpc64le, .os = .linux, .abi = .musl, .os_ver = .{ .major = 3, .minor = 14, .patch = 0 } }, |
| 68 | 74 | .{ .arch = .riscv32, .os = .linux, .abi = .gnu, .os_ver = .{ .major = 4, .minor = 15, .patch = 0 }, .glibc_min = .{ .major = 2, .minor = 33, .patch = 0 }, .glibc_triple = "riscv32-linux-gnu-rv32imafdc-ilp32d" }, |
| 69 | 75 | .{ .arch = .riscv32, .os = .linux, .abi = .musl, .os_ver = .{ .major = 4, .minor = 15, .patch = 0 } }, |
| 76 | .{ .arch = .riscv64, .os = .freebsd, .abi = .none, .os_ver = .{ .major = 12, .minor = 0, .patch = 0 } }, |
| 70 | 77 | .{ .arch = .riscv64, .os = .linux, .abi = .gnu, .os_ver = .{ .major = 4, .minor = 15, .patch = 0 }, .glibc_min = .{ .major = 2, .minor = 27, .patch = 0 }, .glibc_triple = "riscv64-linux-gnu-rv64imafdc-lp64d" }, |
| 71 | 78 | .{ .arch = .riscv64, .os = .linux, .abi = .musl, .os_ver = .{ .major = 4, .minor = 15, .patch = 0 } }, |
| 72 | 79 | .{ .arch = .s390x, .os = .linux, .abi = .gnu, .os_ver = .{ .major = 2, .minor = 4, .patch = 2 } }, |
| ... | ... | @@ -74,9 +81,11 @@ pub const available_libcs = [_]ArchOsAbi{ |
| 74 | 81 | .{ .arch = .sparc, .os = .linux, .abi = .gnu, .os_ver = .{ .major = 2, .minor = 1, .patch = 19 }, .glibc_triple = "sparcv9-linux-gnu" }, |
| 75 | 82 | .{ .arch = .sparc64, .os = .linux, .abi = .gnu, .os_ver = .{ .major = 2, .minor = 1, .patch = 19 } }, |
| 76 | 83 | .{ .arch = .wasm32, .os = .wasi, .abi = .musl }, |
| 84 | .{ .arch = .x86, .os = .freebsd, .abi = .none }, |
| 77 | 85 | .{ .arch = .x86, .os = .linux, .abi = .gnu, .glibc_triple = "i686-linux-gnu" }, |
| 78 | 86 | .{ .arch = .x86, .os = .linux, .abi = .musl }, |
| 79 | 87 | .{ .arch = .x86, .os = .windows, .abi = .gnu }, |
| 88 | .{ .arch = .x86_64, .os = .freebsd, .abi = .none, .os_ver = .{ .major = 5, .minor = 1, .patch = 0 } }, |
| 80 | 89 | .{ .arch = .x86_64, .os = .linux, .abi = .gnu, .os_ver = .{ .major = 2, .minor = 6, .patch = 4 } }, |
| 81 | 90 | .{ .arch = .x86_64, .os = .linux, .abi = .gnux32, .os_ver = .{ .major = 3, .minor = 4, .patch = 0 }, .glibc_triple = "x86_64-linux-gnu-x32" }, |
| 82 | 91 | .{ .arch = .x86_64, .os = .linux, .abi = .musl, .os_ver = .{ .major = 2, .minor = 6, .patch = 4 } }, |
| ... | ... | @@ -85,6 +94,9 @@ pub const available_libcs = [_]ArchOsAbi{ |
| 85 | 94 | .{ .arch = .x86_64, .os = .windows, .abi = .gnu }, |
| 86 | 95 | }; |
| 87 | 96 | |
| 97 | /// The version of Zig's bundled FreeBSD libc used when linking libc statically. |
| 98 | pub const freebsd_libc_version: std.SemanticVersion = .{ .major = 14, .minor = 0, .patch = 0 }; |
| 99 | |
| 88 | 100 | pub fn canBuildLibC(target: std.Target) bool { |
| 89 | 101 | for (available_libcs) |libc| { |
| 90 | 102 | if (target.cpu.arch == libc.arch and target.os.tag == libc.os and target.abi == libc.abi) { |
| ... | ... | @@ -321,6 +333,27 @@ pub fn isLibCLibName(target: std.Target, name: []const u8) bool { |
| 321 | 333 | return true; |
| 322 | 334 | } |
| 323 | 335 | |
| 336 | if (target.isFreeBSDLibC()) { |
| 337 | if (eqlIgnoreCase(ignore_case, name, "dl")) |
| 338 | return true; |
| 339 | if (eqlIgnoreCase(ignore_case, name, "execinfo")) |
| 340 | return true; |
| 341 | if (eqlIgnoreCase(ignore_case, name, "m")) |
| 342 | return true; |
| 343 | if (eqlIgnoreCase(ignore_case, name, "pthread")) |
| 344 | return true; |
| 345 | if (eqlIgnoreCase(ignore_case, name, "rt")) |
| 346 | return true; |
| 347 | if (eqlIgnoreCase(ignore_case, name, "stdthreads")) |
| 348 | return true; |
| 349 | if (eqlIgnoreCase(ignore_case, name, "thr")) |
| 350 | return true; |
| 351 | if (eqlIgnoreCase(ignore_case, name, "util")) |
| 352 | return true; |
| 353 | if (eqlIgnoreCase(ignore_case, name, "xnet")) |
| 354 | return true; |
| 355 | } |
| 356 | |
| 324 | 357 | if (target.os.tag == .haiku) { |
| 325 | 358 | if (eqlIgnoreCase(ignore_case, name, "root")) |
| 326 | 359 | return true; |