Skip to content

Commit 7c7627b

Browse files
committed
compiler: Use new merged header paths for glibc and NetBSD libc.
1 parent dc76049 commit 7c7627b

File tree

4 files changed

+37
-2
lines changed

4 files changed

+37
-2
lines changed

lib/std/zig/LibCDirs.zig

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,8 @@ pub fn detectFromBuilding(
170170
// Some architecture families are handled by the same set of headers.
171171
const arch_name = if (target.isMuslLibC() or target.isWasiLibC())
172172
std.zig.target.muslArchNameHeaders(target.cpu.arch)
173+
else if (target.isGnuLibC())
174+
std.zig.target.glibcArchNameHeaders(target.cpu.arch)
173175
else if (target.isFreeBSDLibC())
174176
std.zig.target.freebsdArchNameHeaders(target.cpu.arch)
175177
else if (target.isNetBSDLibC())
@@ -179,6 +181,10 @@ pub fn detectFromBuilding(
179181
const os_name = @tagName(target.os.tag);
180182
const abi_name = if (target.isMuslLibC())
181183
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)
182188
else
183189
@tagName(target.abi);
184190
const arch_include_dir = try std.fmt.allocPrint(

lib/std/zig/target.zig

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,25 @@ pub fn muslAbiNameHeaders(abi: std.Target.Abi) [:0]const u8 {
233233
};
234234
}
235235

236+
pub 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+
250+
pub fn glibcAbiNameHeaders(abi: std.Target.Abi) [:0]const u8 {
251+
_ = abi;
252+
return "gnu";
253+
}
254+
236255
pub fn freebsdArchNameHeaders(arch: std.Target.Cpu.Arch) [:0]const u8 {
237256
return switch (arch) {
238257
.powerpc64le => "powerpc64",
@@ -250,6 +269,13 @@ pub fn netbsdArchNameHeaders(arch: std.Target.Cpu.Arch) [:0]const u8 {
250269
};
251270
}
252271

272+
pub fn netbsdAbiNameHeaders(abi: std.Target.Abi) [:0]const u8 {
273+
return switch (abi) {
274+
.eabi, .eabihf => "eabi",
275+
else => "none",
276+
};
277+
}
278+
253279
pub fn isLibCLibName(target: std.Target, name: []const u8) bool {
254280
const ignore_case = target.os.tag.isDarwin() or target.os.tag == .windows;
255281

src/libs/glibc.zig

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,10 @@ fn add_include_dirs(comp: *Compilation, arena: Allocator, args: *std.ArrayList([
463463

464464
try args.append("-I");
465465
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),
467470
}));
468471

469472
try args.append("-I");

src/libs/netbsd.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ pub fn buildCrtFile(comp: *Compilation, crt_file: CrtFile, prog_node: std.Progre
100100
try includePath(comp, arena, try std.fmt.allocPrint(arena, "{s}-{s}-{s}", .{
101101
std.zig.target.netbsdArchNameHeaders(target.cpu.arch),
102102
@tagName(target.os.tag),
103-
@tagName(target.abi),
103+
std.zig.target.netbsdAbiNameHeaders(target.abi),
104104
})),
105105
"-I",
106106
try includePath(comp, arena, "generic-netbsd"),

0 commit comments

Comments
 (0)