diff options
| author | Alex Rønne Petersen <alex@alexrp.com> | 2025-05-29 23:27:26 +0200 |
|---|---|---|
| committer | Alex Rønne Petersen <alex@alexrp.com> | 2025-05-30 00:15:37 +0200 |
| commit | 7c7627b18a85a1ab7e09b6dadfc9bba0903880db (patch) | |
| tree | b1ca9e2937cedf8a4f64738f42d5b3897b37d461 /lib/std | |
| parent | dc760492a44a3e494943f9191efbd6ded291af87 (diff) | |
| download | zig-7c7627b18a85a1ab7e09b6dadfc9bba0903880db.tar.gz zig-7c7627b18a85a1ab7e09b6dadfc9bba0903880db.zip | |
compiler: Use new merged header paths for glibc and NetBSD libc.
Diffstat (limited to 'lib/std')
| -rw-r--r-- | lib/std/zig/LibCDirs.zig | 6 | ||||
| -rw-r--r-- | lib/std/zig/target.zig | 26 |
2 files changed, 32 insertions, 0 deletions
diff --git a/lib/std/zig/LibCDirs.zig b/lib/std/zig/LibCDirs.zig index 7b371acbcb..90d4fa4d5f 100644 --- a/lib/std/zig/LibCDirs.zig +++ b/lib/std/zig/LibCDirs.zig @@ -170,6 +170,8 @@ pub fn detectFromBuilding( // Some architecture families are handled by the same set of headers. const arch_name = if (target.isMuslLibC() or target.isWasiLibC()) std.zig.target.muslArchNameHeaders(target.cpu.arch) + else if (target.isGnuLibC()) + std.zig.target.glibcArchNameHeaders(target.cpu.arch) else if (target.isFreeBSDLibC()) std.zig.target.freebsdArchNameHeaders(target.cpu.arch) else if (target.isNetBSDLibC()) @@ -179,6 +181,10 @@ pub fn detectFromBuilding( const os_name = @tagName(target.os.tag); const abi_name = if (target.isMuslLibC()) std.zig.target.muslAbiNameHeaders(target.abi) + else if (target.isGnuLibC()) + std.zig.target.glibcAbiNameHeaders(target.abi) + else if (target.isNetBSDLibC()) + std.zig.target.netbsdAbiNameHeaders(target.abi) else @tagName(target.abi); const arch_include_dir = try std.fmt.allocPrint( diff --git a/lib/std/zig/target.zig b/lib/std/zig/target.zig index 35dac87ff3..05440f4441 100644 --- a/lib/std/zig/target.zig +++ b/lib/std/zig/target.zig @@ -233,6 +233,25 @@ pub fn muslAbiNameHeaders(abi: std.Target.Abi) [:0]const u8 { }; } +pub fn glibcArchNameHeaders(arch: std.Target.Cpu.Arch) [:0]const u8 { + return switch (arch) { + .aarch64, .aarch64_be => "aarch64", + .arm, .armeb => "arm", + .loongarch64 => "loongarch", + .mips, .mipsel, .mips64, .mips64el => "mips", + .powerpc, .powerpc64, .powerpc64le => "powerpc", + .riscv32, .riscv64 => "riscv", + .sparc, .sparc64 => "sparc", + .x86, .x86_64 => "x86", + else => @tagName(arch), + }; +} + +pub fn glibcAbiNameHeaders(abi: std.Target.Abi) [:0]const u8 { + _ = abi; + return "gnu"; +} + pub fn freebsdArchNameHeaders(arch: std.Target.Cpu.Arch) [:0]const u8 { return switch (arch) { .powerpc64le => "powerpc64", @@ -250,6 +269,13 @@ pub fn netbsdArchNameHeaders(arch: std.Target.Cpu.Arch) [:0]const u8 { }; } +pub fn netbsdAbiNameHeaders(abi: std.Target.Abi) [:0]const u8 { + return switch (abi) { + .eabi, .eabihf => "eabi", + else => "none", + }; +} + pub fn isLibCLibName(target: std.Target, name: []const u8) bool { const ignore_case = target.os.tag.isDarwin() or target.os.tag == .windows; |
