diff --git a/lib/std/Target.zig b/lib/std/Target.zig index b60a478de14b..12b2653ae5ec 100644 --- a/lib/std/Target.zig +++ b/lib/std/Target.zig @@ -146,6 +146,18 @@ pub const Os = struct { }; } + pub inline fn isMinGW(tag: Os.Tag, abi: Abi) bool { + return tag == .windows and abi.isGnu(); + } + + pub inline fn isMuslLibC(tag: Os.Tag, abi: Abi) bool { + return tag == .linux and abi.isMusl(); + } + + pub inline fn isWasiLibC(tag: Os.Tag, abi: Abi) bool { + return tag == .wasi and abi.isMusl(); + } + pub inline fn isGnuLibC(tag: Os.Tag, abi: Abi) bool { return (tag == .hurd or tag == .linux) and abi.isGnu(); } @@ -2022,7 +2034,15 @@ pub fn libPrefix(target: Target) [:0]const u8 { } pub inline fn isMinGW(target: Target) bool { - return target.os.tag == .windows and target.abi.isGnu(); + return target.os.tag.isMinGW(target.abi); +} + +pub inline fn isMuslLibC(target: Target) bool { + return target.os.tag.isMuslLibC(target.abi); +} + +pub inline fn isWasiLibC(target: Target) bool { + return target.os.tag.isWasiLibC(target.abi); } pub inline fn isGnuLibC(target: Target) bool { diff --git a/src/Compilation.zig b/src/Compilation.zig index c3e2758bd0f2..7a774bd18a03 100644 --- a/src/Compilation.zig +++ b/src/Compilation.zig @@ -1770,7 +1770,7 @@ pub fn create(gpa: Allocator, arena: Allocator, options: CreateOptions) !*Compil } // Loads the libraries provided by `target_util.libcFullLinkFlags(target)`. comp.link_task_queue.shared.appendAssumeCapacity(.load_host_libc); - } else if (target.isMusl() and !target.isWasm()) { + } else if (target.isMuslLibC()) { if (!std.zig.target.canBuildLibC(target)) return error.LibCUnavailable; if (musl.needsCrtiCrtn(target)) { @@ -1802,7 +1802,7 @@ pub fn create(gpa: Allocator, arena: Allocator, options: CreateOptions) !*Compil .{ .glibc_shared_objects = {} }, .{ .glibc_crt_file = .libc_nonshared_a }, }); - } else if (target.isWasm() and target.os.tag == .wasi) { + } else if (target.isWasiLibC()) { if (!std.zig.target.canBuildLibC(target)) return error.LibCUnavailable; for (comp.wasi_emulated_libs) |crt_file| {