authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-04-21 06:52:06+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-05-10 12:19:26+02:00
log01390cc533b471c5a8ad13b8b1380a508b630fef
tree9c4fdec7edc8bd3903e3be9ad58ad99a7f56caf1
parent6e64bc845ff6d98fda4eca45b79baf4d77954465
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.zig.LibCDirs: Add FreeBSD libc support.


2 files changed, 12 insertions(+), 2 deletions(-)

lib/std/zig/LibCDirs.zig+5-2
...@@ -168,12 +168,14 @@ pub fn detectFromBuilding(...@@ -168,12 +168,14 @@ pub fn detectFromBuilding(
168168
169 const generic_name = libCGenericName(target);169 const generic_name = libCGenericName(target);
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.abi.isMusl())171 const arch_name = if (target.isMuslLibC())
172 std.zig.target.muslArchNameHeaders(target.cpu.arch)172 std.zig.target.muslArchNameHeaders(target.cpu.arch)
173 else if (target.isFreeBSDLibC())
174 std.zig.target.freebsdArchNameHeaders(target.cpu.arch)
173 else175 else
174 @tagName(target.cpu.arch);176 @tagName(target.cpu.arch);
175 const os_name = @tagName(target.os.tag);177 const os_name = @tagName(target.os.tag);
176 const abi_name = if (target.abi.isMusl())178 const abi_name = if (target.isMuslLibC())
177 std.zig.target.muslAbiNameHeaders(target.abi)179 std.zig.target.muslAbiNameHeaders(target.abi)
178 else180 else
179 @tagName(target.abi);181 @tagName(target.abi);
...@@ -218,6 +220,7 @@ fn libCGenericName(target: std.Target) [:0]const u8 {...@@ -218,6 +220,7 @@ fn libCGenericName(target: std.Target) [:0]const u8 {
218 switch (target.os.tag) {220 switch (target.os.tag) {
219 .windows => return "mingw",221 .windows => return "mingw",
220 .macos, .ios, .tvos, .watchos, .visionos => return "darwin",222 .macos, .ios, .tvos, .watchos, .visionos => return "darwin",
223 .freebsd => return "freebsd",
221 else => {},224 else => {},
222 }225 }
223 switch (target.abi) {226 switch (target.abi) {
lib/std/zig/target.zig+7
...@@ -188,6 +188,13 @@ pub fn muslAbiNameHeaders(abi: std.Target.Abi) [:0]const u8 {...@@ -188,6 +188,13 @@ pub fn muslAbiNameHeaders(abi: std.Target.Abi) [:0]const u8 {
188 };188 };
189}189}
190190
191pub fn freebsdArchNameHeaders(arch: std.Target.Cpu.Arch) [:0]const u8 {
192 return switch (arch) {
193 .powerpc64le => "powerpc64",
194 else => @tagName(arch),
195 };
196}
197
191pub fn isLibCLibName(target: std.Target, name: []const u8) bool {198pub fn isLibCLibName(target: std.Target, name: []const u8) bool {
192 const ignore_case = target.os.tag.isDarwin() or target.os.tag == .windows;199 const ignore_case = target.os.tag.isDarwin() or target.os.tag == .windows;
193200