Commit 259b7c3f3f
Changed files (2)
lib
std
src
lib/std/Target.zig
@@ -697,57 +697,6 @@ pub const Os = struct {
=> |field| @field(os.version_range, @tagName(field)).isAtLeast(ver),
};
}
-
- /// On Darwin, we always link libSystem which contains libc.
- /// Similarly on FreeBSD and NetBSD we always link system libc
- /// since this is the stable syscall interface.
- pub fn requiresLibC(os: Os) bool {
- return switch (os.tag) {
- .aix,
- .driverkit,
- .macos,
- .ios,
- .tvos,
- .watchos,
- .visionos,
- .dragonfly,
- .openbsd,
- .haiku,
- .solaris,
- .illumos,
- .serenity,
- => true,
-
- .linux,
- .windows,
- .freebsd,
- .netbsd,
- .freestanding,
- .fuchsia,
- .ps3,
- .zos,
- .rtems,
- .cuda,
- .nvcl,
- .amdhsa,
- .ps4,
- .ps5,
- .mesa3d,
- .contiki,
- .amdpal,
- .hermit,
- .hurd,
- .wasi,
- .emscripten,
- .uefi,
- .opencl,
- .opengl,
- .vulkan,
- .plan9,
- .other,
- => false,
- };
- }
};
pub const aarch64 = @import("Target/aarch64.zig");
@@ -2055,6 +2004,56 @@ pub inline fn isWasiLibC(target: *const Target) bool {
return target.os.tag == .wasi and target.abi.isMusl();
}
+/// Does this target require linking libc? This may be the case if the target has an unstable
+/// syscall interface, for example.
+pub fn requiresLibC(target: *const Target) bool {
+ return switch (target.os.tag) {
+ .aix,
+ .driverkit,
+ .macos,
+ .ios,
+ .tvos,
+ .watchos,
+ .visionos,
+ .dragonfly,
+ .openbsd,
+ .haiku,
+ .solaris,
+ .illumos,
+ .serenity,
+ => true,
+
+ .linux
+ .windows,
+ .freebsd,
+ .netbsd,
+ .freestanding,
+ .fuchsia,
+ .ps3,
+ .zos,
+ .rtems,
+ .cuda,
+ .nvcl,
+ .amdhsa,
+ .ps4,
+ .ps5,
+ .mesa3d,
+ .contiki,
+ .amdpal,
+ .hermit,
+ .hurd,
+ .wasi,
+ .emscripten,
+ .uefi,
+ .opencl,
+ .opengl,
+ .vulkan,
+ .plan9,
+ .other,
+ => false,
+ };
+}
+
pub const DynamicLinker = struct {
/// Contains the memory used to store the dynamic linker path. This field
/// should not be used directly. See `get` and `set`. This field exists so
src/target.zig
@@ -20,7 +20,7 @@ pub fn cannotDynamicLink(target: *const std.Target) bool {
/// Similarly on FreeBSD and NetBSD we always link system libc
/// since this is the stable syscall interface.
pub fn osRequiresLibC(target: *const std.Target) bool {
- return target.os.requiresLibC();
+ return target.requiresLibC();
}
pub fn libCNeedsLibUnwind(target: *const std.Target, link_mode: std.builtin.LinkMode) bool {