authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-05-29 23:27:26+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-05-30 00:15:37+02:00
log7c7627b18a85a1ab7e09b6dadfc9bba0903880db
treeb1ca9e2937cedf8a4f64738f42d5b3897b37d461
parentdc760492a44a3e494943f9191efbd6ded291af87
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

compiler: Use new merged header paths for glibc and NetBSD libc.


4 files changed, 37 insertions(+), 2 deletions(-)

lib/std/zig/LibCDirs.zig+6
...@@ -170,6 +170,8 @@ pub fn detectFromBuilding(...@@ -170,6 +170,8 @@ pub fn detectFromBuilding(
170 // Some architecture families are handled by the same set of headers.170 // Some architecture families are handled by the same set of headers.
171 const arch_name = if (target.isMuslLibC() or target.isWasiLibC())171 const arch_name = if (target.isMuslLibC() or target.isWasiLibC())
172 std.zig.target.muslArchNameHeaders(target.cpu.arch)172 std.zig.target.muslArchNameHeaders(target.cpu.arch)
173 else if (target.isGnuLibC())
174 std.zig.target.glibcArchNameHeaders(target.cpu.arch)
173 else if (target.isFreeBSDLibC())175 else if (target.isFreeBSDLibC())
174 std.zig.target.freebsdArchNameHeaders(target.cpu.arch)176 std.zig.target.freebsdArchNameHeaders(target.cpu.arch)
175 else if (target.isNetBSDLibC())177 else if (target.isNetBSDLibC())
...@@ -179,6 +181,10 @@ pub fn detectFromBuilding(...@@ -179,6 +181,10 @@ pub fn detectFromBuilding(
179 const os_name = @tagName(target.os.tag);181 const os_name = @tagName(target.os.tag);
180 const abi_name = if (target.isMuslLibC())182 const abi_name = if (target.isMuslLibC())
181 std.zig.target.muslAbiNameHeaders(target.abi)183 std.zig.target.muslAbiNameHeaders(target.abi)
184 else if (target.isGnuLibC())
185 std.zig.target.glibcAbiNameHeaders(target.abi)
186 else if (target.isNetBSDLibC())
187 std.zig.target.netbsdAbiNameHeaders(target.abi)
182 else188 else
183 @tagName(target.abi);189 @tagName(target.abi);
184 const arch_include_dir = try std.fmt.allocPrint(190 const arch_include_dir = try std.fmt.allocPrint(
lib/std/zig/target.zig+26
...@@ -233,6 +233,25 @@ pub fn muslAbiNameHeaders(abi: std.Target.Abi) [:0]const u8 {...@@ -233,6 +233,25 @@ pub fn muslAbiNameHeaders(abi: std.Target.Abi) [:0]const u8 {
233 };233 };
234}234}
235235
236pub fn glibcArchNameHeaders(arch: std.Target.Cpu.Arch) [:0]const u8 {
237 return switch (arch) {
238 .aarch64, .aarch64_be => "aarch64",
239 .arm, .armeb => "arm",
240 .loongarch64 => "loongarch",
241 .mips, .mipsel, .mips64, .mips64el => "mips",
242 .powerpc, .powerpc64, .powerpc64le => "powerpc",
243 .riscv32, .riscv64 => "riscv",
244 .sparc, .sparc64 => "sparc",
245 .x86, .x86_64 => "x86",
246 else => @tagName(arch),
247 };
248}
249
250pub fn glibcAbiNameHeaders(abi: std.Target.Abi) [:0]const u8 {
251 _ = abi;
252 return "gnu";
253}
254
236pub fn freebsdArchNameHeaders(arch: std.Target.Cpu.Arch) [:0]const u8 {255pub fn freebsdArchNameHeaders(arch: std.Target.Cpu.Arch) [:0]const u8 {
237 return switch (arch) {256 return switch (arch) {
238 .powerpc64le => "powerpc64",257 .powerpc64le => "powerpc64",
...@@ -250,6 +269,13 @@ pub fn netbsdArchNameHeaders(arch: std.Target.Cpu.Arch) [:0]const u8 {...@@ -250,6 +269,13 @@ pub fn netbsdArchNameHeaders(arch: std.Target.Cpu.Arch) [:0]const u8 {
250 };269 };
251}270}
252271
272pub fn netbsdAbiNameHeaders(abi: std.Target.Abi) [:0]const u8 {
273 return switch (abi) {
274 .eabi, .eabihf => "eabi",
275 else => "none",
276 };
277}
278
253pub fn isLibCLibName(target: std.Target, name: []const u8) bool {279pub fn isLibCLibName(target: std.Target, name: []const u8) bool {
254 const ignore_case = target.os.tag.isDarwin() or target.os.tag == .windows;280 const ignore_case = target.os.tag.isDarwin() or target.os.tag == .windows;
255281
src/libs/glibc.zig+4-1
...@@ -463,7 +463,10 @@ fn add_include_dirs(comp: *Compilation, arena: Allocator, args: *std.ArrayList([...@@ -463,7 +463,10 @@ fn add_include_dirs(comp: *Compilation, arena: Allocator, args: *std.ArrayList([
463463
464 try args.append("-I");464 try args.append("-I");
465 try args.append(try std.fmt.allocPrint(arena, "{s}" ++ s ++ "libc" ++ s ++ "include" ++ s ++ "{s}-{s}-{s}", .{465 try args.append(try std.fmt.allocPrint(arena, "{s}" ++ s ++ "libc" ++ s ++ "include" ++ s ++ "{s}-{s}-{s}", .{
466 comp.dirs.zig_lib.path orelse ".", @tagName(target.cpu.arch), @tagName(target.os.tag), @tagName(target.abi),466 comp.dirs.zig_lib.path orelse ".",
467 std.zig.target.glibcArchNameHeaders(target.cpu.arch),
468 @tagName(target.os.tag),
469 std.zig.target.glibcAbiNameHeaders(target.abi),
467 }));470 }));
468471
469 try args.append("-I");472 try args.append("-I");
src/libs/netbsd.zig+1-1
...@@ -100,7 +100,7 @@ pub fn buildCrtFile(comp: *Compilation, crt_file: CrtFile, prog_node: std.Progre...@@ -100,7 +100,7 @@ pub fn buildCrtFile(comp: *Compilation, crt_file: CrtFile, prog_node: std.Progre
100 try includePath(comp, arena, try std.fmt.allocPrint(arena, "{s}-{s}-{s}", .{100 try includePath(comp, arena, try std.fmt.allocPrint(arena, "{s}-{s}-{s}", .{
101 std.zig.target.netbsdArchNameHeaders(target.cpu.arch),101 std.zig.target.netbsdArchNameHeaders(target.cpu.arch),
102 @tagName(target.os.tag),102 @tagName(target.os.tag),
103 @tagName(target.abi),103 std.zig.target.netbsdAbiNameHeaders(target.abi),
104 })),104 })),
105 "-I",105 "-I",
106 try includePath(comp, arena, "generic-netbsd"),106 try includePath(comp, arena, "generic-netbsd"),