@@ -18,10 +18,14 @@ pub const available_libcs = [_]ArchOsAbi{
18
18
.{ .arch = .arm , .os = .linux , .abi = .gnueabihf , .os_ver = .{ .major = 2 , .minor = 1 , .patch = 0 } },
19
19
.{ .arch = .arm , .os = .linux , .abi = .musleabi , .os_ver = .{ .major = 2 , .minor = 1 , .patch = 0 } },
20
20
.{ .arch = .arm , .os = .linux , .abi = .musleabihf , .os_ver = .{ .major = 2 , .minor = 1 , .patch = 0 } },
21
+ .{ .arch = .arm , .os = .netbsd , .abi = .eabi , .os_ver = .{ .major = 1 , .minor = 2 , .patch = 0 } },
22
+ .{ .arch = .arm , .os = .netbsd , .abi = .eabihf , .os_ver = .{ .major = 1 , .minor = 2 , .patch = 0 } },
21
23
.{ .arch = .armeb , .os = .linux , .abi = .gnueabi , .os_ver = .{ .major = 2 , .minor = 6 , .patch = 0 } },
22
24
.{ .arch = .armeb , .os = .linux , .abi = .gnueabihf , .os_ver = .{ .major = 2 , .minor = 6 , .patch = 0 } },
23
25
.{ .arch = .armeb , .os = .linux , .abi = .musleabi , .os_ver = .{ .major = 2 , .minor = 6 , .patch = 0 } },
24
26
.{ .arch = .armeb , .os = .linux , .abi = .musleabihf , .os_ver = .{ .major = 2 , .minor = 6 , .patch = 0 } },
27
+ .{ .arch = .armeb , .os = .netbsd , .abi = .eabi , .os_ver = .{ .major = 1 , .minor = 2 , .patch = 0 } },
28
+ .{ .arch = .armeb , .os = .netbsd , .abi = .eabihf , .os_ver = .{ .major = 1 , .minor = 2 , .patch = 0 } },
25
29
.{ .arch = .thumb , .os = .freebsd , .abi = .eabihf , .os_ver = .{ .major = 11 , .minor = 0 , .patch = 0 } },
26
30
.{ .arch = .thumb , .os = .linux , .abi = .musleabi , .os_ver = .{ .major = 2 , .minor = 1 , .patch = 0 } },
27
31
.{ .arch = .thumb , .os = .linux , .abi = .musleabihf , .os_ver = .{ .major = 2 , .minor = 1 , .patch = 0 } },
@@ -32,9 +36,11 @@ pub const available_libcs = [_]ArchOsAbi{
32
36
.{ .arch = .aarch64 , .os = .linux , .abi = .gnu , .os_ver = .{ .major = 3 , .minor = 7 , .patch = 0 }, .glibc_min = .{ .major = 2 , .minor = 17 , .patch = 0 } },
33
37
.{ .arch = .aarch64 , .os = .linux , .abi = .musl , .os_ver = .{ .major = 3 , .minor = 7 , .patch = 0 } },
34
38
.{ .arch = .aarch64 , .os = .macos , .abi = .none , .os_ver = .{ .major = 11 , .minor = 0 , .patch = 0 } },
39
+ .{ .arch = .aarch64 , .os = .netbsd , .abi = .none , .os_ver = .{ .major = 9 , .minor = 0 , .patch = 0 } },
35
40
.{ .arch = .aarch64 , .os = .windows , .abi = .gnu },
36
41
.{ .arch = .aarch64_be , .os = .linux , .abi = .gnu , .os_ver = .{ .major = 3 , .minor = 13 , .patch = 0 }, .glibc_min = .{ .major = 2 , .minor = 17 , .patch = 0 } },
37
42
.{ .arch = .aarch64_be , .os = .linux , .abi = .musl , .os_ver = .{ .major = 3 , .minor = 13 , .patch = 0 } },
43
+ .{ .arch = .aarch64_be , .os = .netbsd , .abi = .none , .os_ver = .{ .major = 9 , .minor = 0 , .patch = 0 } },
38
44
.{ .arch = .csky , .os = .linux , .abi = .gnueabi , .os_ver = .{ .major = 4 , .minor = 20 , .patch = 0 }, .glibc_min = .{ .major = 2 , .minor = 29 , .patch = 0 }, .glibc_triple = "csky-linux-gnuabiv2-soft" },
39
45
.{ .arch = .csky , .os = .linux , .abi = .gnueabihf , .os_ver = .{ .major = 4 , .minor = 20 , .patch = 0 }, .glibc_min = .{ .major = 2 , .minor = 29 , .patch = 0 }, .glibc_triple = "csky-linux-gnuabiv2" },
40
46
.{ .arch = .hexagon , .os = .linux , .abi = .musl , .os_ver = .{ .major = 3 , .minor = 2 , .patch = 102 } },
@@ -44,14 +50,19 @@ pub const available_libcs = [_]ArchOsAbi{
44
50
.{ .arch = .loongarch64 , .os = .linux , .abi = .muslsf , .os_ver = .{ .major = 5 , .minor = 19 , .patch = 0 } },
45
51
.{ .arch = .m68k , .os = .linux , .abi = .gnu , .os_ver = .{ .major = 1 , .minor = 3 , .patch = 94 } },
46
52
.{ .arch = .m68k , .os = .linux , .abi = .musl , .os_ver = .{ .major = 1 , .minor = 3 , .patch = 94 } },
53
+ .{ .arch = .m68k , .os = .netbsd , .abi = .none },
47
54
.{ .arch = .mips , .os = .linux , .abi = .gnueabi , .os_ver = .{ .major = 1 , .minor = 1 , .patch = 82 }, .glibc_triple = "mips-linux-gnu-soft" },
48
55
.{ .arch = .mips , .os = .linux , .abi = .gnueabihf , .os_ver = .{ .major = 1 , .minor = 1 , .patch = 82 }, .glibc_triple = "mips-linux-gnu" },
49
56
.{ .arch = .mips , .os = .linux , .abi = .musleabi , .os_ver = .{ .major = 1 , .minor = 1 , .patch = 82 } },
50
57
.{ .arch = .mips , .os = .linux , .abi = .musleabihf , .os_ver = .{ .major = 1 , .minor = 1 , .patch = 82 } },
58
+ .{ .arch = .mips , .os = .netbsd , .abi = .eabi , .os_ver = .{ .major = 1 , .minor = 1 , .patch = 0 } },
59
+ .{ .arch = .mips , .os = .netbsd , .abi = .eabihf , .os_ver = .{ .major = 1 , .minor = 1 , .patch = 0 } },
51
60
.{ .arch = .mipsel , .os = .linux , .abi = .gnueabi , .os_ver = .{ .major = 1 , .minor = 1 , .patch = 82 }, .glibc_triple = "mipsel-linux-gnu-soft" },
52
61
.{ .arch = .mipsel , .os = .linux , .abi = .gnueabihf , .os_ver = .{ .major = 1 , .minor = 1 , .patch = 82 }, .glibc_triple = "mipsel-linux-gnu" },
53
62
.{ .arch = .mipsel , .os = .linux , .abi = .musleabi , .os_ver = .{ .major = 1 , .minor = 1 , .patch = 82 } },
54
63
.{ .arch = .mipsel , .os = .linux , .abi = .musleabihf , .os_ver = .{ .major = 1 , .minor = 1 , .patch = 82 } },
64
+ .{ .arch = .mipsel , .os = .netbsd , .abi = .eabi , .os_ver = .{ .major = 1 , .minor = 1 , .patch = 0 } },
65
+ .{ .arch = .mipsel , .os = .netbsd , .abi = .eabihf , .os_ver = .{ .major = 1 , .minor = 1 , .patch = 0 } },
55
66
.{ .arch = .mips64 , .os = .linux , .abi = .gnuabi64 , .os_ver = .{ .major = 2 , .minor = 3 , .patch = 48 }, .glibc_triple = "mips64-linux-gnu-n64" },
56
67
.{ .arch = .mips64 , .os = .linux , .abi = .gnuabin32 , .os_ver = .{ .major = 2 , .minor = 6 , .patch = 0 }, .glibc_triple = "mips64-linux-gnu-n32" },
57
68
.{ .arch = .mips64 , .os = .linux , .abi = .muslabi64 , .os_ver = .{ .major = 2 , .minor = 3 , .patch = 48 } },
@@ -65,6 +76,8 @@ pub const available_libcs = [_]ArchOsAbi{
65
76
.{ .arch = .powerpc , .os = .linux , .abi = .gnueabihf , .os_ver = .{ .major = 1 , .minor = 3 , .patch = 45 }, .glibc_triple = "powerpc-linux-gnu" },
66
77
.{ .arch = .powerpc , .os = .linux , .abi = .musleabi , .os_ver = .{ .major = 1 , .minor = 3 , .patch = 45 } },
67
78
.{ .arch = .powerpc , .os = .linux , .abi = .musleabihf , .os_ver = .{ .major = 1 , .minor = 3 , .patch = 45 } },
79
+ .{ .arch = .powerpc , .os = .netbsd , .abi = .eabi , .os_ver = .{ .major = 6 , .minor = 0 , .patch = 0 } },
80
+ .{ .arch = .powerpc , .os = .netbsd , .abi = .eabihf , .os_ver = .{ .major = 1 , .minor = 4 , .patch = 0 } },
68
81
.{ .arch = .powerpc64 , .os = .freebsd , .abi = .none , .os_ver = .{ .major = 8 , .minor = 0 , .patch = 0 } },
69
82
.{ .arch = .powerpc64 , .os = .linux , .abi = .gnu , .os_ver = .{ .major = 2 , .minor = 6 , .patch = 0 } },
70
83
.{ .arch = .powerpc64 , .os = .linux , .abi = .musl , .os_ver = .{ .major = 2 , .minor = 6 , .patch = 0 } },
@@ -79,24 +92,31 @@ pub const available_libcs = [_]ArchOsAbi{
79
92
.{ .arch = .s390x , .os = .linux , .abi = .gnu , .os_ver = .{ .major = 2 , .minor = 4 , .patch = 2 } },
80
93
.{ .arch = .s390x , .os = .linux , .abi = .musl , .os_ver = .{ .major = 2 , .minor = 4 , .patch = 2 } },
81
94
.{ .arch = .sparc , .os = .linux , .abi = .gnu , .os_ver = .{ .major = 2 , .minor = 1 , .patch = 19 }, .glibc_triple = "sparcv9-linux-gnu" },
95
+ .{ .arch = .sparc , .os = .netbsd , .abi = .none },
82
96
.{ .arch = .sparc64 , .os = .linux , .abi = .gnu , .os_ver = .{ .major = 2 , .minor = 1 , .patch = 19 } },
97
+ .{ .arch = .sparc64 , .os = .netbsd , .abi = .none , .os_ver = .{ .major = 1 , .minor = 4 , .patch = 0 } },
83
98
.{ .arch = .wasm32 , .os = .wasi , .abi = .musl },
84
99
.{ .arch = .x86 , .os = .freebsd , .abi = .none },
85
100
.{ .arch = .x86 , .os = .linux , .abi = .gnu , .glibc_triple = "i686-linux-gnu" },
86
101
.{ .arch = .x86 , .os = .linux , .abi = .musl },
102
+ .{ .arch = .x86 , .os = .netbsd , .abi = .none },
87
103
.{ .arch = .x86 , .os = .windows , .abi = .gnu },
88
104
.{ .arch = .x86_64 , .os = .freebsd , .abi = .none , .os_ver = .{ .major = 5 , .minor = 1 , .patch = 0 } },
89
105
.{ .arch = .x86_64 , .os = .linux , .abi = .gnu , .os_ver = .{ .major = 2 , .minor = 6 , .patch = 4 } },
90
106
.{ .arch = .x86_64 , .os = .linux , .abi = .gnux32 , .os_ver = .{ .major = 3 , .minor = 4 , .patch = 0 }, .glibc_triple = "x86_64-linux-gnu-x32" },
91
107
.{ .arch = .x86_64 , .os = .linux , .abi = .musl , .os_ver = .{ .major = 2 , .minor = 6 , .patch = 4 } },
92
108
.{ .arch = .x86_64 , .os = .linux , .abi = .muslx32 , .os_ver = .{ .major = 3 , .minor = 4 , .patch = 0 } },
93
109
.{ .arch = .x86_64 , .os = .macos , .abi = .none , .os_ver = .{ .major = 10 , .minor = 7 , .patch = 0 } },
110
+ .{ .arch = .x86_64 , .os = .netbsd , .abi = .none , .os_ver = .{ .major = 2 , .minor = 0 , .patch = 0 } },
94
111
.{ .arch = .x86_64 , .os = .windows , .abi = .gnu },
95
112
};
96
113
97
114
/// The version of Zig's bundled FreeBSD libc used when linking libc statically.
98
115
pub const freebsd_libc_version : std.SemanticVersion = .{ .major = 14 , .minor = 0 , .patch = 0 };
99
116
117
+ /// The version of Zig's bundled NetBSD libc used when linking libc statically.
118
+ pub const netbsd_libc_version : std.SemanticVersion = .{ .major = 10 , .minor = 1 , .patch = 0 };
119
+
100
120
pub fn canBuildLibC (target : std.Target ) bool {
101
121
for (available_libcs ) | libc | {
102
122
if (target .cpu .arch == libc .arch and target .os .tag == libc .os and target .abi == libc .abi ) {
@@ -378,6 +398,19 @@ pub fn isLibCLibName(target: std.Target, name: []const u8) bool {
378
398
return true ;
379
399
}
380
400
401
+ if (target .isNetBSDLibC ()) {
402
+ if (eqlIgnoreCase (ignore_case , name , "execinfo" ))
403
+ return true ;
404
+ if (eqlIgnoreCase (ignore_case , name , "m" ))
405
+ return true ;
406
+ if (eqlIgnoreCase (ignore_case , name , "pthread" ))
407
+ return true ;
408
+ if (eqlIgnoreCase (ignore_case , name , "rt" ))
409
+ return true ;
410
+ if (eqlIgnoreCase (ignore_case , name , "util" ))
411
+ return true ;
412
+ }
413
+
381
414
if (target .os .tag == .haiku ) {
382
415
if (eqlIgnoreCase (ignore_case , name , "root" ))
383
416
return true ;
0 commit comments