Commit 01390cc533

Alex Rønne Petersen <alex@alexrp.com>
2025-04-21 06:52:06
std.zig.LibCDirs: Add FreeBSD libc support.
1 parent 6e64bc8
Changed files (2)
lib/std/zig/LibCDirs.zig
@@ -168,12 +168,14 @@ pub fn detectFromBuilding(
 
     const generic_name = libCGenericName(target);
     // Some architecture families are handled by the same set of headers.
-    const arch_name = if (target.abi.isMusl())
+    const arch_name = if (target.isMuslLibC())
         std.zig.target.muslArchNameHeaders(target.cpu.arch)
+    else if (target.isFreeBSDLibC())
+        std.zig.target.freebsdArchNameHeaders(target.cpu.arch)
     else
         @tagName(target.cpu.arch);
     const os_name = @tagName(target.os.tag);
-    const abi_name = if (target.abi.isMusl())
+    const abi_name = if (target.isMuslLibC())
         std.zig.target.muslAbiNameHeaders(target.abi)
     else
         @tagName(target.abi);
@@ -218,6 +220,7 @@ fn libCGenericName(target: std.Target) [:0]const u8 {
     switch (target.os.tag) {
         .windows => return "mingw",
         .macos, .ios, .tvos, .watchos, .visionos => return "darwin",
+        .freebsd => return "freebsd",
         else => {},
     }
     switch (target.abi) {
lib/std/zig/target.zig
@@ -188,6 +188,13 @@ pub fn muslAbiNameHeaders(abi: std.Target.Abi) [:0]const u8 {
     };
 }
 
+pub fn freebsdArchNameHeaders(arch: std.Target.Cpu.Arch) [:0]const u8 {
+    return switch (arch) {
+        .powerpc64le => "powerpc64",
+        else => @tagName(arch),
+    };
+}
+
 pub fn isLibCLibName(target: std.Target, name: []const u8) bool {
     const ignore_case = target.os.tag.isDarwin() or target.os.tag == .windows;