From 9ab7eec23e6aa1fc8d5659566e426816ba573537 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 13 Nov 2025 18:05:46 +0100 Subject: [PATCH] represent Mac Catalyst as aarch64-maccatalyst-none rather than aarch64-ios-macabi Apple's own headers and tbd files prefer to think of Mac Catalyst as a distinct OS target. Earlier, when DriverKit support was added to LLVM, it was represented a distinct OS. So why Apple decided to only represent Mac Catalyst as an ABI in the target triple is beyond me. But this isn't the first time they've ignored established target triple norms (see: armv7k and aarch64_32) and it probably won't be the last. While doing this, I also audited all Darwin OS prongs throughout the codebase and made sure they cover all the tags. --- lib/compiler/aro/aro/Compilation.zig | 5 +- lib/compiler/aro/aro/Driver.zig | 1 + lib/compiler/aro/aro/TypeStore.zig | 2 +- lib/compiler/aro/aro/target.zig | 9 +- lib/compiler_rt/clear_cache.zig | 2 +- lib/std/Build/Cache.zig | 2 +- lib/std/Io.zig | 2 +- lib/std/Io/Threaded.zig | 10 +- lib/std/Progress.zig | 6 +- lib/std/Target.zig | 32 ++-- lib/std/Thread.zig | 12 +- lib/std/builtin.zig | 2 +- lib/std/c.zig | 226 +++++++++++++------------- lib/std/crypto/Certificate/Bundle.zig | 2 +- lib/std/debug.zig | 2 + lib/std/debug/cpu_context.zig | 2 +- lib/std/dynamic_library.zig | 4 +- lib/std/fs.zig | 4 +- lib/std/fs/Dir.zig | 13 +- lib/std/fs/get_app_data_dir.zig | 2 +- lib/std/heap.zig | 8 +- lib/std/math/modf.zig | 2 +- lib/std/os.zig | 8 +- lib/std/posix.zig | 16 +- lib/std/posix/test.zig | 4 +- lib/std/process.zig | 14 +- lib/std/process/Child.zig | 6 +- lib/std/time.zig | 2 +- lib/std/zig/LibCDirs.zig | 3 +- lib/std/zig/system.zig | 2 +- lib/std/zig/system/darwin.zig | 8 +- src/Compilation.zig | 7 +- src/Compilation/Config.zig | 2 +- src/Zcu/PerThread.zig | 2 +- src/codegen/llvm.zig | 19 ++- src/libs/libtsan.zig | 4 +- src/link.zig | 4 +- src/link/MachO.zig | 37 ++--- src/link/MachO/load_commands.zig | 2 +- src/main.zig | 2 +- src/target.zig | 1 + test/behavior/basic.zig | 2 +- test/behavior/threadlocal.zig | 2 +- test/behavior/var_args.zig | 10 +- test/c_abi/main.zig | 2 +- test/llvm_targets.zig | 3 +- 46 files changed, 272 insertions(+), 240 deletions(-) diff --git a/lib/compiler/aro/aro/Compilation.zig b/lib/compiler/aro/aro/Compilation.zig index f6238f1d2812a6563f82b1e54dd701f489eec702..0ec314ba83bbbb51d1c98679571dc7b9a6e1b038 100644 --- a/lib/compiler/aro/aro/Compilation.zig +++ b/lib/compiler/aro/aro/Compilation.zig @@ -335,6 +335,7 @@ fn generateSystemDefines(comp: *Compilation, w: *Io.Writer) !void { .openbsd => try define(w, "__OpenBSD__"), .dragonfly => try define(w, "__DragonFly__"), .illumos => try defineStd(w, "sun", is_gnu), + .maccatalyst, .macos, .tvos, .ios, @@ -635,7 +636,7 @@ fn generateSystemDefines(comp: *Compilation, w: *Io.Writer) !void { }, .aarch64, .aarch64_be => { try define(w, "__aarch64__"); - if (comp.target.os.tag == .macos) { + if (comp.target.os.tag.isDarwin()) { try define(w, "__AARCH64_SIMD__"); if (ptr_width == 32) { try define(w, "__ARM64_ARCH_8_32__"); @@ -992,7 +993,7 @@ fn writeBuiltinMacros(comp: *Compilation, system_defines_mode: SystemDefinesMode \\ ); if (comp.langopts.standard.atLeast(.c11)) switch (comp.target.os.tag) { - .openbsd, .driverkit, .ios, .macos, .tvos, .visionos, .watchos => { + .openbsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => { try w.writeAll("#define __STDC_NO_THREADS__ 1\n"); }, .ps4, .ps5 => { diff --git a/lib/compiler/aro/aro/Driver.zig b/lib/compiler/aro/aro/Driver.zig index ef871d7d26c12862ce7e841db904da57fda8c0f5..d6e35c5761c3aff10405ac57aa98c165cdc079ae 100644 --- a/lib/compiler/aro/aro/Driver.zig +++ b/lib/compiler/aro/aro/Driver.zig @@ -1467,6 +1467,7 @@ pub fn getPICMode(d: *Driver, lastpic: []const u8) Compilation.Error!struct { ba // generation, independent of the argument order. if (kernel_or_kext and (!(target.os.tag != .ios) or (target.os.isAtLeast(.ios, .{ .major = 6, .minor = 0, .patch = 0 }) orelse false)) and + (!(target.os.tag != .maccatalyst) or (target.os.isAtLeast(.maccatalyst, .{ .major = 6, .minor = 0, .patch = 0 }) orelse false)) and !(target.os.tag != .watchos) and !(target.os.tag != .driverkit)) { diff --git a/lib/compiler/aro/aro/TypeStore.zig b/lib/compiler/aro/aro/TypeStore.zig index 8f19e318fa8973943467ebe28b0b23f486128b12..2e3fd89c84897cbda0570f2572b33c07b3ad7a4a 100644 --- a/lib/compiler/aro/aro/TypeStore.zig +++ b/lib/compiler/aro/aro/TypeStore.zig @@ -2091,7 +2091,7 @@ fn generateVaListType(ts: *TypeStore, comp: *Compilation) !QualType { .xcore, => return .void_pointer, .aarch64, .aarch64_be => switch (comp.target.os.tag) { - .driverkit, .ios, .macos, .tvos, .visionos, .watchos, .windows => return .char_pointer, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .windows => return .char_pointer, else => .aarch64_va_list, }, .arm, .armeb, .thumb, .thumbeb => .arm_va_list, diff --git a/lib/compiler/aro/aro/target.zig b/lib/compiler/aro/aro/target.zig index 7f918b1b755c7905715353a9d7fe38ab9c71e309..d973b866c32f3141723c701b1fbbc93aa418a6a4 100644 --- a/lib/compiler/aro/aro/target.zig +++ b/lib/compiler/aro/aro/target.zig @@ -674,7 +674,7 @@ pub fn toLLVMTriple(target: std.Target, buf: []u8) []const u8 { .emscripten => "emscripten", .uefi => "windows", .macos => "macosx", - .ios => "ios", + .ios, .maccatalyst => "ios", .tvos => "tvos", .watchos => "watchos", .driverkit => "driverkit", @@ -703,7 +703,8 @@ pub fn toLLVMTriple(target: std.Target, buf: []u8) []const u8 { writer.writeByte('-') catch unreachable; const llvm_abi = switch (target.abi) { - .none, .ilp32 => "unknown", + .none => if (target.os.tag == .maccatalyst) "macabi" else "unknown", + .ilp32 => "unknown", .gnu => "gnu", .gnuabin32 => "gnuabin32", .gnuabi64 => "gnuabi64", @@ -728,7 +729,6 @@ pub fn toLLVMTriple(target: std.Target, buf: []u8) []const u8 { .msvc => "msvc", .itanium => "itanium", .simulator => "simulator", - .macabi => "macabi", .ohos => "ohos", .ohoseabi => "ohoseabi", }; @@ -742,6 +742,7 @@ pub fn isPIEDefault(target: std.Target) DefaultPIStatus { return switch (target.os.tag) { .haiku, + .maccatalyst, .macos, .ios, .tvos, @@ -809,6 +810,7 @@ pub fn isPICdefault(target: std.Target) DefaultPIStatus { return switch (target.os.tag) { .haiku, + .maccatalyst, .macos, .ios, .tvos, @@ -917,6 +919,7 @@ pub fn isPICDefaultForced(target: std.Target) DefaultPIStatus { return if (target.cpu.arch == .x86_64) .yes else .no; }, + .maccatalyst, .macos, .ios, .tvos, diff --git a/lib/compiler_rt/clear_cache.zig b/lib/compiler_rt/clear_cache.zig index 0c05e12d77156b54f8ed52ab160e4e3e7781c0e1..6b0fc18082ce027689285d8786c4bf300258828c 100644 --- a/lib/compiler_rt/clear_cache.zig +++ b/lib/compiler_rt/clear_cache.zig @@ -49,7 +49,7 @@ fn clear_cache(start: usize, end: usize) callconv(.c) void { else => false, }; const apple = switch (os) { - .ios, .macos, .watchos, .tvos, .visionos => true, + .ios, .maccatalyst, .macos, .watchos, .tvos, .visionos => true, else => false, }; if (x86) { diff --git a/lib/std/Build/Cache.zig b/lib/std/Build/Cache.zig index b966c25efcc3257f57acb7a8b2a417805e779387..892ff5cd9ec0a533ef126f1563fa573629640e0b 100644 --- a/lib/std/Build/Cache.zig +++ b/lib/std/Build/Cache.zig @@ -538,7 +538,7 @@ pub const Manifest = struct { // disambiguates by returning EEXIST, indicating original // failure was a race, or ENOENT, indicating deletion of // the directory of our open handle. - if (builtin.os.tag != .macos) { + if (!builtin.os.tag.isDarwin()) { self.diagnostic = .{ .manifest_create = error.FileNotFound }; return error.CacheCheckFailed; } diff --git a/lib/std/Io.zig b/lib/std/Io.zig index ba82b8fb598190376f08a64bcb315711fcd6f33e..02fda4743fc63d9fb836cd725ac7799c84b6963b 100644 --- a/lib/std/Io.zig +++ b/lib/std/Io.zig @@ -564,7 +564,7 @@ pub const Evented = switch (builtin.os.tag) { .x86_64, .aarch64 => @import("Io/IoUring.zig"), else => void, // context-switching code not implemented yet }, - .dragonfly, .freebsd, .netbsd, .openbsd, .macos, .ios, .tvos, .visionos, .watchos => switch (builtin.cpu.arch) { + .dragonfly, .freebsd, .netbsd, .openbsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => switch (builtin.cpu.arch) { .x86_64, .aarch64 => @import("Io/Kqueue.zig"), else => void, // context-switching code not implemented yet }, diff --git a/lib/std/Io/Threaded.zig b/lib/std/Io/Threaded.zig index c0dac8a7963ffc1a359f4e7b594044534e7d37a1..2d569f8f9cb9b9c9ada77f5a39a61318a8b0f41c 100644 --- a/lib/std/Io/Threaded.zig +++ b/lib/std/Io/Threaded.zig @@ -5140,11 +5140,11 @@ fn clockToPosix(clock: Io.Clock) posix.clockid_t { return switch (clock) { .real => posix.CLOCK.REALTIME, .awake => switch (native_os) { - .macos, .ios, .watchos, .tvos => posix.CLOCK.UPTIME_RAW, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => posix.CLOCK.UPTIME_RAW, else => posix.CLOCK.MONOTONIC, }, .boot => switch (native_os) { - .macos, .ios, .watchos, .tvos => posix.CLOCK.MONOTONIC_RAW, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => posix.CLOCK.MONOTONIC_RAW, // On freebsd derivatives, use MONOTONIC_FAST as currently there's // no precision tradeoff. .freebsd, .dragonfly => posix.CLOCK.MONOTONIC_FAST, @@ -5687,7 +5687,7 @@ fn futexWait(t: *Threaded, ptr: *const std.atomic.Value(u32), expect: u32) Io.Ca else => unreachable, }; }, - .driverkit, .ios, .macos, .tvos, .visionos, .watchos => { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => { const c = std.c; const flags: c.UL = .{ .op = .COMPARE_AND_WAIT, @@ -5774,7 +5774,7 @@ pub fn futexWaitUncancelable(ptr: *const std.atomic.Value(u32), expect: u32) voi else => recoverableOsBugDetected(), } }, - .driverkit, .ios, .macos, .tvos, .visionos, .watchos => { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => { const c = std.c; const flags: c.UL = .{ .op = .COMPARE_AND_WAIT, @@ -5872,7 +5872,7 @@ pub fn futexWake(ptr: *const std.atomic.Value(u32), max_waiters: u32) void { else => return recoverableOsBugDetected(), // deadlock due to operating system bug } }, - .driverkit, .ios, .macos, .tvos, .visionos, .watchos => { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => { const c = std.c; const flags: c.UL = .{ .op = .COMPARE_AND_WAIT, diff --git a/lib/std/Progress.zig b/lib/std/Progress.zig index d2e962a8c2b01383c64328c1bce196eebe4c703b..b2d4e3fafe66d60b55b83f71fbab5c948493e819 100644 --- a/lib/std/Progress.zig +++ b/lib/std/Progress.zig @@ -1549,11 +1549,13 @@ const have_sigwinch = switch (builtin.os.tag) { .netbsd, .openbsd, .haiku, - .macos, + .driverkit, .ios, - .watchos, + .maccatalyst, + .macos, .tvos, .visionos, + .watchos, .dragonfly, .freebsd, .serenity, diff --git a/lib/std/Target.zig b/lib/std/Target.zig index 81f3cc030d14d616514a3f394124f2fa66ad44cf..0622d1c858485e55aa096750ffd5fc9c0a00e1ec 100644 --- a/lib/std/Target.zig +++ b/lib/std/Target.zig @@ -39,6 +39,7 @@ pub const Os = struct { driverkit, ios, + maccatalyst, macos, tvos, visionos, @@ -78,6 +79,7 @@ pub const Os = struct { return switch (tag) { .driverkit, .ios, + .maccatalyst, .macos, .tvos, .visionos, @@ -121,6 +123,7 @@ pub const Os = struct { .windows, .uefi => ".dll", .driverkit, .ios, + .maccatalyst, .macos, .tvos, .visionos, @@ -180,8 +183,9 @@ pub const Os = struct { .openbsd, .driverkit, - .macos, .ios, + .maccatalyst, + .macos, .tvos, .visionos, .watchos, @@ -546,7 +550,7 @@ pub const Os = struct { .max = .{ .major = 15, .minor = 6, .patch = 0 }, }, }, - .ios => .{ + .ios, .maccatalyst => .{ .semver = .{ .min = .{ .major = 15, .minor = 0, .patch = 0 }, .max = .{ .major = 18, .minor = 6, .patch = 0 }, @@ -759,7 +763,6 @@ pub const Abi = enum { msvc, itanium, simulator, - macabi, ohos, ohoseabi, @@ -885,8 +888,6 @@ pub const Abi = enum { => .eabihf, else => .none, }, - .ios => if (arch == .x86_64) .macabi else .none, - .tvos, .visionos, .watchos => if (arch == .x86_64) .simulator else .none, .windows => .gnu, .uefi => .msvc, .@"3ds" => .eabihf, @@ -902,7 +903,12 @@ pub const Abi = enum { .serenity, .dragonfly, .driverkit, + .ios, + .maccatalyst, .macos, + .tvos, + .visionos, + .watchos, .ps3, .ps4, .ps5, @@ -1018,7 +1024,7 @@ pub const ObjectFormat = enum { pub fn default(os_tag: Os.Tag, arch: Cpu.Arch) ObjectFormat { return switch (os_tag) { - .driverkit, .ios, .macos, .tvos, .visionos, .watchos => .macho, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => .macho, .plan9 => .plan9, .uefi, .windows => .coff, else => switch (arch) { @@ -1988,7 +1994,7 @@ pub const Cpu = struct { }, .armeb, .thumbeb => &arm.cpu.baseline, .aarch64 => switch (os.tag) { - .driverkit, .macos => &aarch64.cpu.apple_m1, + .driverkit, .maccatalyst, .macos => &aarch64.cpu.apple_m1, .ios, .tvos => &aarch64.cpu.apple_a7, .visionos => &aarch64.cpu.apple_m2, .watchos => &aarch64.cpu.apple_s4, @@ -2014,8 +2020,8 @@ pub const Cpu = struct { .sparc => &sparc.cpu.v9, // glibc does not work with 'plain' v8. .x86 => &x86.cpu.pentium4, .x86_64 => switch (os.tag) { - .driverkit => &x86.cpu.nehalem, - .ios, .macos, .tvos, .visionos, .watchos => &x86.cpu.core2, + .driverkit, .maccatalyst => &x86.cpu.nehalem, + .macos => &x86.cpu.core2, .ps4 => &x86.cpu.btver2, .ps5 => &x86.cpu.znver2, else => generic(arch), @@ -2112,7 +2118,7 @@ pub inline fn isMuslLibC(target: *const Target) bool { pub inline fn isDarwinLibC(target: *const Target) bool { return switch (target.abi) { - .none, .macabi, .simulator => target.os.tag.isDarwin(), + .none, .simulator => target.os.tag.isDarwin(), else => false, }; } @@ -2141,8 +2147,9 @@ pub fn requiresLibC(target: *const Target) bool { return switch (target.os.tag) { .illumos, .driverkit, - .macos, .ios, + .maccatalyst, + .macos, .tvos, .watchos, .visionos, @@ -2307,6 +2314,7 @@ pub const DynamicLinker = struct { .driverkit, .ios, + .maccatalyst, .macos, .tvos, .visionos, @@ -2722,6 +2730,7 @@ pub const DynamicLinker = struct { .driverkit, .ios, + .maccatalyst, .macos, .tvos, .visionos, @@ -3234,6 +3243,7 @@ pub fn cTypeBitSize(target: *const Target, c_type: CType) u16 { .driverkit, .ios, + .maccatalyst, .macos, .tvos, .visionos, diff --git a/lib/std/Thread.zig b/lib/std/Thread.zig index 59c6d78166c667dd63ad42cee36700f9b603aacf..04dc1f6317d594b338e109ab5d4715228db46277 100644 --- a/lib/std/Thread.zig +++ b/lib/std/Thread.zig @@ -156,7 +156,7 @@ impl: Impl, pub const max_name_len = switch (native_os) { .linux => 15, .windows => 31, - .macos, .ios, .watchos, .tvos, .visionos => 63, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => 63, .netbsd => 31, .freebsd => 15, .openbsd => 23, @@ -234,7 +234,7 @@ pub fn setName(self: Thread, name: []const u8) SetNameError!void { else => |err| return windows.unexpectedStatus(err), } }, - .macos, .ios, .watchos, .tvos, .visionos => if (use_pthreads) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => if (use_pthreads) { // There doesn't seem to be a way to set the name for an arbitrary thread, only the current one. if (self.getHandle() != std.c.pthread_self()) return error.Unsupported; @@ -351,7 +351,7 @@ pub fn getName(self: Thread, buffer_ptr: *[max_name_len:0]u8) GetNameError!?[]co else => |err| return windows.unexpectedStatus(err), } }, - .macos, .ios, .watchos, .tvos, .visionos => if (use_pthreads) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => if (use_pthreads) { const err = std.c.pthread_getname_np(self.getHandle(), buffer.ptr, max_name_len + 1); switch (@as(posix.E, @enumFromInt(err))) { .SUCCESS => return std.mem.sliceTo(buffer, 0), @@ -411,7 +411,7 @@ pub const Id = switch (native_os) { .wasi, .serenity, => u32, - .macos, .ios, .watchos, .tvos, .visionos => u64, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => u64, .windows => windows.DWORD, else => usize, }; @@ -741,7 +741,7 @@ const PosixThreadImpl = struct { .linux => { return LinuxThreadImpl.getCurrentId(); }, - .macos, .ios, .watchos, .tvos, .visionos => { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => { var thread_id: u64 = undefined; // Pass thread=null to get the current thread ID. assert(c.pthread_threadid_np(null, &thread_id) == 0); @@ -1734,7 +1734,7 @@ test "setName, getName" { context.test_done_event.wait(); switch (native_os) { - .macos, .ios, .watchos, .tvos, .visionos => { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => { const res = thread.setName("foobar"); try std.testing.expectError(error.Unsupported, res); }, diff --git a/lib/std/builtin.zig b/lib/std/builtin.zig index b190c94485c6bf0aa8b2d92f166a907cb1245d5e..7b60289edf80fcaa3fed0b6a2f34ec27ef60bf57 100644 --- a/lib/std/builtin.zig +++ b/lib/std/builtin.zig @@ -987,7 +987,7 @@ pub const VaList = switch (builtin.cpu.arch) { .xcore, => *anyopaque, .aarch64, .aarch64_be => switch (builtin.os.tag) { - .driverkit, .ios, .macos, .tvos, .visionos, .watchos, .windows => *u8, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .windows => *u8, else => switch (builtin.zig_backend) { else => VaListAarch64, .stage2_llvm => @compileError("disabled due to miscompilations"), diff --git a/lib/std/c.zig b/lib/std/c.zig index 0bf9f40bb1aa07105b126d864938099d7ee82076..bfda9c31c946da82e57412aac18c51610d92f94e 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -115,7 +115,7 @@ pub const timespec = switch (native_os) { sec: time_t, nsec: c_long, }, - .dragonfly, .freebsd, .macos, .ios, .tvos, .watchos, .visionos => extern struct { + .dragonfly, .freebsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { sec: isize, nsec: isize, }, @@ -134,7 +134,7 @@ pub const dev_t = switch (native_os) { .linux => linux.dev_t, .emscripten => emscripten.dev_t, .wasi => wasi.device_t, - .openbsd, .haiku, .illumos, .macos, .ios, .tvos, .watchos, .visionos => i32, + .openbsd, .haiku, .illumos, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => i32, // https://github.com/SerenityOS/serenity/blob/b98f537f117b341788023ab82e0c11ca9ae29a57/Kernel/API/POSIX/sys/types.h#L43 .netbsd, .freebsd, .serenity => u64, else => void, @@ -145,7 +145,7 @@ pub const mode_t = switch (native_os) { .emscripten => emscripten.mode_t, .openbsd, .haiku, .netbsd, .illumos, .wasi, .windows => u32, // https://github.com/SerenityOS/serenity/blob/b98f537f117b341788023ab82e0c11ca9ae29a57/Kernel/API/POSIX/sys/types.h#L44 - .freebsd, .macos, .ios, .tvos, .watchos, .visionos, .dragonfly, .serenity => u16, + .freebsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .dragonfly, .serenity => u16, else => u0, }; @@ -194,7 +194,7 @@ pub const passwd = switch (native_os) { dir: ?[*:0]const u8, // home directory shell: ?[*:0]const u8, // shell program }, - .netbsd, .openbsd, .macos => extern struct { + .netbsd, .openbsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { name: ?[*:0]const u8, // user name passwd: ?[*:0]const u8, // encrypted password uid: uid_t, // user uid @@ -223,7 +223,7 @@ pub const passwd = switch (native_os) { }; pub const group = switch (native_os) { - .linux, .freebsd, .openbsd, .dragonfly, .netbsd, .macos => extern struct { + .linux, .freebsd, .openbsd, .dragonfly, .netbsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { name: ?[*:0]const u8, passwd: ?[*:0]const u8, gid: gid_t, @@ -275,7 +275,7 @@ pub const CLOCK = clockid_t; pub const clockid_t = switch (native_os) { .linux, .emscripten => linux.clockid_t, .wasi => wasi.clockid_t, - .macos, .ios, .tvos, .watchos, .visionos => enum(u32) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => enum(u32) { REALTIME = 0, MONOTONIC = 6, MONOTONIC_RAW = 4, @@ -457,7 +457,7 @@ pub const E = switch (native_os) { DQUOT = 10069, _, }, - .macos, .ios, .tvos, .watchos, .visionos => darwin.E, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => darwin.E, .freebsd => freebsd.E, .illumos => enum(u16) { /// No error occurred. @@ -833,7 +833,7 @@ pub const F = switch (native_os) { pub const GETFL = 3; pub const SETFL = 4; }, - .macos, .ios, .tvos, .watchos, .visionos => struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => struct { /// duplicate file descriptor pub const DUPFD = 0; /// get file descriptor flags @@ -1243,7 +1243,7 @@ pub const R_OK = switch (native_os) { pub const Flock = switch (native_os) { .linux => linux.Flock, .emscripten => emscripten.Flock, - .openbsd, .dragonfly, .netbsd, .macos, .ios, .tvos, .watchos, .visionos => extern struct { + .openbsd, .dragonfly, .netbsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { start: off_t, len: off_t, pid: pid_t, @@ -1294,7 +1294,7 @@ pub const Flock = switch (native_os) { }; pub const HOST_NAME_MAX = switch (native_os) { .linux => linux.HOST_NAME_MAX, - .macos, .ios, .tvos, .watchos, .visionos => 72, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => 72, .openbsd, .haiku, .dragonfly, .netbsd, .illumos, .freebsd => 255, // https://github.com/SerenityOS/serenity/blob/c87557e9c1865fa1a6440de34ff6ce6fc858a2b7/Kernel/API/POSIX/sys/limits.h#L22 .serenity => 64, @@ -1305,7 +1305,7 @@ pub const IOV_MAX = switch (native_os) { .emscripten => emscripten.IOV_MAX, // https://github.com/SerenityOS/serenity/blob/098af0f846a87b651731780ff48420205fd33754/Kernel/API/POSIX/sys/uio.h#L16 .openbsd, .haiku, .illumos, .wasi, .serenity => 1024, - .macos, .ios, .tvos, .watchos, .visionos => 16, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => 16, .dragonfly, .netbsd, .freebsd => KERN.IOV_MAX, else => {}, }; @@ -1524,7 +1524,7 @@ pub const KERN = switch (native_os) { pub const MADV = switch (native_os) { .linux => linux.MADV, .emscripten => emscripten.MADV, - .macos, .ios, .tvos, .watchos, .visionos => struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => struct { pub const NORMAL = 0; pub const RANDOM = 1; pub const SEQUENTIAL = 2; @@ -1622,7 +1622,7 @@ pub const MLOCK = switch (native_os) { pub const MSF = switch (native_os) { .linux => linux.MSF, .emscripten => emscripten.MSF, - .macos, .ios, .tvos, .watchos, .visionos => struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => struct { pub const ASYNC = 0x1; pub const INVALIDATE = 0x2; /// invalidate, leave mapped @@ -1651,7 +1651,7 @@ pub const NAME_MAX = switch (native_os) { // character, but POSIX definition says that NAME_MAX does not include the // terminating null. // https://github.com/SerenityOS/serenity/blob/c87557e9c1865fa1a6440de34ff6ce6fc858a2b7/Kernel/API/POSIX/sys/limits.h#L20 - .haiku, .openbsd, .dragonfly, .netbsd, .illumos, .freebsd, .macos, .ios, .tvos, .watchos, .visionos, .serenity => 255, + .haiku, .openbsd, .dragonfly, .netbsd, .illumos, .freebsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .serenity => 255, else => {}, }; pub const PATH_MAX = switch (native_os) { @@ -1659,7 +1659,7 @@ pub const PATH_MAX = switch (native_os) { .emscripten => emscripten.PATH_MAX, .wasi => 4096, .windows => 260, - .openbsd, .haiku, .dragonfly, .netbsd, .illumos, .freebsd, .macos, .ios, .tvos, .watchos, .visionos, .serenity => 1024, + .openbsd, .haiku, .dragonfly, .netbsd, .illumos, .freebsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .serenity => 1024, else => {}, }; @@ -1676,7 +1676,7 @@ pub const POLL = switch (native_os) { pub const NVAL = 0x4000; }, .windows => ws2_32.POLL, - .macos, .ios, .tvos, .watchos, .visionos => struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => struct { pub const IN = 0x001; pub const PRI = 0x002; pub const OUT = 0x004; @@ -1823,7 +1823,7 @@ pub const PROT = switch (native_os) { /// page can be executed pub const EXEC = 0x4; }, - .macos, .ios, .tvos, .watchos, .visionos => struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => struct { /// [MC2] no permissions pub const NONE: vm_prot_t = 0x00; /// [MC2] pages can be read @@ -1846,7 +1846,7 @@ pub const RLIM = switch (native_os) { .linux => linux.RLIM, .emscripten => emscripten.RLIM, // https://github.com/SerenityOS/serenity/blob/aae106e37b48f2158e68902293df1e4bf7b80c0f/Userland/Libraries/LibC/sys/resource.h#L52 - .openbsd, .haiku, .dragonfly, .netbsd, .freebsd, .macos, .ios, .tvos, .watchos, .visionos, .serenity => struct { + .openbsd, .haiku, .dragonfly, .netbsd, .freebsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .serenity => struct { /// No limit pub const INFINITY: rlim_t = (1 << 63) - 1; @@ -1903,7 +1903,7 @@ pub const S = switch (native_os) { return m & IFMT == IFSOCK; } }, - .macos, .ios, .tvos, .watchos, .visionos => struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => struct { pub const IFMT = 0o170000; pub const IFIFO = 0o010000; @@ -2396,7 +2396,7 @@ pub const S = switch (native_os) { pub const SA = switch (native_os) { .linux => linux.SA, .emscripten => emscripten.SA, - .macos, .ios, .tvos, .watchos, .visionos => struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => struct { /// take signal on signal stack pub const ONSTACK = 0x0001; /// restart system on signal return @@ -2502,7 +2502,7 @@ pub const _SC = if (builtin.abi.isAndroid()) enum(c_int) { PAGESIZE = 39, NPROCESSORS_ONLN = 97, } else switch (native_os) { - .driverkit, .ios, .macos, .tvos, .visionos, .watchos => enum(c_int) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => enum(c_int) { PAGESIZE = 29, }, .dragonfly => enum(c_int) { @@ -2562,7 +2562,7 @@ pub const SEEK = switch (native_os) { pub const END: wasi.whence_t = .END; }, // https://github.com/SerenityOS/serenity/blob/808ce594db1f2190e5212a250e900bde2ffe710b/Kernel/API/POSIX/stdio.h#L15-L17 - .openbsd, .haiku, .netbsd, .freebsd, .macos, .ios, .tvos, .watchos, .visionos, .windows, .serenity => struct { + .openbsd, .haiku, .netbsd, .freebsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .windows, .serenity => struct { pub const SET = 0; pub const CUR = 1; pub const END = 2; @@ -2622,7 +2622,7 @@ pub const SIG = switch (native_os) { /// Signal error value (returned by signal call on error) pub const ERR = -1; }, - .macos, .ios, .tvos, .watchos, .visionos => enum(u32) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => enum(u32) { pub const ERR: ?Sigaction.handler_fn = @ptrFromInt(maxInt(usize)); pub const DFL: ?Sigaction.handler_fn = @ptrFromInt(0); pub const IGN: ?Sigaction.handler_fn = @ptrFromInt(1); @@ -3185,7 +3185,7 @@ pub const Sigaction = switch (native_os) { else => common_linux_Sigaction, }, .emscripten => emscripten.Sigaction, - .netbsd, .macos, .ios, .tvos, .watchos, .visionos => extern struct { + .netbsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { pub const handler_fn = *align(1) const fn (SIG) callconv(.c) void; pub const sigaction_fn = *const fn (SIG, *const siginfo_t, ?*anyopaque) callconv(.c) void; @@ -3273,7 +3273,7 @@ pub const Sigaction = switch (native_os) { }; pub const T = switch (native_os) { .linux => linux.T, - .macos, .ios, .tvos, .watchos, .visionos => struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => struct { pub const IOCGWINSZ = ior(0x40000000, 't', 104, @sizeOf(winsize)); fn ior(inout: u32, group_arg: usize, num: usize, len: usize) usize { @@ -3664,7 +3664,7 @@ pub const T = switch (native_os) { }; pub const IOCPARM_MASK = switch (native_os) { .windows => ws2_32.IOCPARM_MASK, - .macos, .ios, .tvos, .watchos, .visionos => 0x1fff, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => 0x1fff, else => void, }; pub const TCSA = std.posix.TCSA; @@ -3679,7 +3679,7 @@ pub const VDSO = switch (native_os) { pub const W = switch (native_os) { .linux => linux.W, .emscripten => emscripten.W, - .macos, .ios, .tvos, .watchos, .visionos => struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => struct { /// [XSI] no hang in wait/no child to reap pub const NOHANG = 0x00000001; /// [XSI] notify on stop, untraced child @@ -3939,7 +3939,7 @@ pub const accept_filter_arg = switch (native_os) { // https://github.com/DragonFlyBSD/DragonFlyBSD/blob/6098912863ed4c7b3f70d7483910ce2956cf4ed3/sys/sys/socket.h#L164 // https://github.com/NetBSD/src/blob/cad5c68a8524927f65e22ad651de3905382be6e0/sys/sys/socket.h#L188 // https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/bsd/sys/socket.h#L504 - .freebsd, .dragonfly, .netbsd, .macos, .driverkit, .ios, .tvos, .watchos, .visionos => extern struct { + .freebsd, .dragonfly, .netbsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { name: [16]u8, arg: [240]u8, }, @@ -3948,7 +3948,7 @@ pub const accept_filter_arg = switch (native_os) { pub const clock_t = switch (native_os) { .linux => linux.clock_t, .emscripten => emscripten.clock_t, - .macos, .ios, .tvos, .watchos, .visionos => c_ulong, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => c_ulong, .freebsd => isize, .openbsd, .illumos => i64, .netbsd => u32, @@ -4034,7 +4034,7 @@ pub const in_pktinfo = switch (native_os) { .linux => linux.in_pktinfo, // https://github.com/illumos/illumos-gate/blob/608eb926e14f4ba4736b2d59e891335f1cba9e1e/usr/src/uts/common/netinet/in.h#L1132 // https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/bsd/netinet/in.h#L696 - .illumos, .driverkit, .ios, .macos, .tvos, .watchos, .visionos => extern struct { + .illumos, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { ifindex: u32, spec_dst: u32, addr: u32, @@ -4051,7 +4051,7 @@ pub const in6_pktinfo = switch (native_os) { // https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/bsd/netinet6/in6.h#L737 // https://github.com/haiku/haiku/blob/2aab5f5f14aeb3f34c3a3d9a9064cc3c0d914bea/headers/posix/netinet6/in6.h#L63 // https://github.com/SerenityOS/serenity/blob/5bd8af99be0bc4b2e14f361fd7d7590e6bcfa4d6/Kernel/API/POSIX/sys/socket.h#L122 - .freebsd, .dragonfly, .netbsd, .openbsd, .illumos, .driverkit, .ios, .macos, .tvos, .watchos, .visionos, .haiku, .serenity => extern struct { + .freebsd, .dragonfly, .netbsd, .openbsd, .illumos, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .haiku, .serenity => extern struct { addr: [16]u8, ifindex: u32, }, @@ -4084,10 +4084,11 @@ pub const linger = switch (native_os) { // https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/bsd/sys/socket.h#L498 .driverkit, .ios, + .maccatalyst, .macos, .tvos, - .watchos, .visionos, + .watchos, => extern struct { onoff: i32, // non-zero to linger on close linger: i32, // time to linger in seconds @@ -4104,9 +4105,10 @@ pub const msghdr = switch (native_os) { .netbsd, .haiku, .illumos, - .macos, .driverkit, .ios, + .maccatalyst, + .macos, .tvos, .visionos, .watchos, @@ -4139,9 +4141,10 @@ pub const msghdr_const = switch (native_os) { .netbsd, .haiku, .illumos, - .macos, .driverkit, .ios, + .maccatalyst, + .macos, .tvos, .visionos, .watchos, @@ -4191,9 +4194,10 @@ pub const cmsghdr = switch (native_os) { // https://github.com/haiku/haiku/blob/b54f586058fd6623645512e4631468cede9933b9/headers/posix/sys/socket.h#L132 .haiku, // https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/bsd/sys/socket.h#L1041 - .macos, .driverkit, .ios, + .maccatalyst, + .macos, .tvos, .visionos, .watchos, @@ -4215,7 +4219,7 @@ pub const nfds_t = switch (native_os) { .emscripten => emscripten.nfds_t, .haiku, .illumos, .wasi => usize, .windows => c_ulong, - .openbsd, .dragonfly, .netbsd, .freebsd, .macos, .ios, .tvos, .watchos, .visionos => u32, + .openbsd, .dragonfly, .netbsd, .freebsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => u32, // https://github.com/SerenityOS/serenity/blob/265764ff2fec038855193296588a887fc322d76a/Kernel/API/POSIX/poll.h#L32 .serenity => c_uint, else => void, @@ -4251,7 +4255,7 @@ pub const pollfd = switch (native_os) { pub const rlim_t = switch (native_os) { .linux => linux.rlim_t, .emscripten => emscripten.rlim_t, - .openbsd, .netbsd, .illumos, .macos, .ios, .tvos, .watchos, .visionos => u64, + .openbsd, .netbsd, .illumos, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => u64, .haiku, .dragonfly, .freebsd => i64, // https://github.com/SerenityOS/serenity/blob/aae106e37b48f2158e68902293df1e4bf7b80c0f/Userland/Libraries/LibC/sys/resource.h#L54 .serenity => usize, @@ -4271,7 +4275,7 @@ pub const rlimit = switch (native_os) { pub const rlimit_resource = switch (native_os) { .linux => linux.rlimit_resource, .emscripten => emscripten.rlimit_resource, - .openbsd, .macos, .ios, .tvos, .watchos, .visionos => enum(c_int) { + .openbsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => enum(c_int) { CPU = 0, FSIZE = 1, DATA = 2, @@ -4378,7 +4382,7 @@ pub const rlimit_resource = switch (native_os) { pub const rusage = switch (native_os) { .linux => linux.rusage, .emscripten => emscripten.rusage, - .macos, .ios, .tvos, .watchos, .visionos => extern struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { utime: timeval, stime: timeval, maxrss: isize, @@ -4449,7 +4453,7 @@ pub const rusage = switch (native_os) { pub const siginfo_t = switch (native_os) { .linux => linux.siginfo_t, .emscripten => emscripten.siginfo_t, - .driverkit, .macos, .ios, .tvos, .watchos, .visionos => extern struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { signo: SIG, errno: c_int, code: c_int, @@ -4639,7 +4643,7 @@ pub const sigset_t = switch (native_os) { .emscripten => emscripten.sigset_t, // https://github.com/SerenityOS/serenity/blob/ec492a1a0819e6239ea44156825c4ee7234ca3db/Kernel/API/POSIX/signal.h#L19 .openbsd, .serenity => u32, - .macos, .ios, .tvos, .watchos, .visionos => darwin.sigset_t, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => darwin.sigset_t, .dragonfly, .netbsd, .illumos, .freebsd => extern struct { __bits: [SIG.WORDS]u32, }, @@ -4669,7 +4673,7 @@ pub const addrinfo = if (builtin.abi.isAndroid()) extern struct { } else switch (native_os) { .linux, .emscripten => linux.addrinfo, .windows => ws2_32.addrinfo, - .freebsd, .macos, .ios, .tvos, .watchos, .visionos => extern struct { + .freebsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { flags: AI, family: i32, socktype: i32, @@ -4735,7 +4739,7 @@ pub const addrinfo = if (builtin.abi.isAndroid()) extern struct { pub const sockaddr = switch (native_os) { .linux, .emscripten => linux.sockaddr, .windows => ws2_32.sockaddr, - .macos, .ios, .tvos, .watchos, .visionos => extern struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { len: u8, family: sa_family_t, data: [14]u8, @@ -5077,7 +5081,7 @@ pub const in_port_t = u16; pub const sa_family_t = switch (native_os) { .linux, .emscripten => linux.sa_family_t, .windows => ws2_32.ADDRESS_FAMILY, - .openbsd, .haiku, .dragonfly, .netbsd, .freebsd, .macos, .ios, .tvos, .watchos, .visionos => u8, + .openbsd, .haiku, .dragonfly, .netbsd, .freebsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => u8, // https://github.com/SerenityOS/serenity/blob/ac44ec5ebc707f9dd0c3d4759a1e17e91db5d74f/Kernel/API/POSIX/sys/socket.h#L66 .illumos, .serenity => u16, else => void, @@ -5130,7 +5134,7 @@ pub const AF = if (builtin.abi.isAndroid()) struct { } else switch (native_os) { .linux, .emscripten => linux.AF, .windows => ws2_32.AF, - .macos, .ios, .tvos, .watchos, .visionos => struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => struct { pub const UNSPEC = 0; pub const LOCAL = 1; pub const UNIX = LOCAL; @@ -5416,7 +5420,7 @@ pub const PF = if (builtin.abi.isAndroid()) struct { pub const PF_MAX = AF.MAX; } else switch (native_os) { .linux, .emscripten => linux.PF, - .macos, .ios, .tvos, .watchos, .visionos => struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => struct { pub const UNSPEC = AF.UNSPEC; pub const LOCAL = AF.LOCAL; pub const UNIX = PF.LOCAL; @@ -5650,7 +5654,7 @@ pub const PF = if (builtin.abi.isAndroid()) struct { pub const DT = switch (native_os) { .linux => linux.DT, // https://github.com/SerenityOS/serenity/blob/1262a7d1424d0d2e89d80644409721cbf056ab17/Kernel/API/POSIX/dirent.h#L16-L35 - .netbsd, .freebsd, .openbsd, .macos, .ios, .tvos, .watchos, .visionos, .serenity => struct { + .netbsd, .freebsd, .openbsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .serenity => struct { pub const UNKNOWN = 0; pub const FIFO = 1; pub const CHR = 2; @@ -5679,7 +5683,7 @@ pub const MSG = switch (native_os) { .linux => linux.MSG, .emscripten => emscripten.MSG, .windows => ws2_32.MSG, - .driverkit, .macos, .ios, .tvos, .watchos, .visionos => darwin.MSG, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => darwin.MSG, .haiku => struct { pub const OOB = 0x0001; pub const PEEK = 0x0002; @@ -5796,7 +5800,7 @@ pub const SOCK = switch (native_os) { .linux => linux.SOCK, .emscripten => emscripten.SOCK, .windows => ws2_32.SOCK, - .macos, .ios, .tvos, .watchos, .visionos => struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => struct { pub const STREAM = 1; pub const DGRAM = 2; pub const RAW = 3; @@ -5897,7 +5901,7 @@ pub const SOCK = switch (native_os) { else => void, }; pub const TCP = switch (native_os) { - .macos => darwin.TCP, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => darwin.TCP, .linux => linux.TCP, .emscripten => emscripten.TCP, .windows => ws2_32.TCP, @@ -5911,7 +5915,7 @@ pub const TCP = switch (native_os) { pub const IPPROTO = switch (native_os) { .linux, .emscripten => linux.IPPROTO, .windows => ws2_32.IPPROTO, - .macos, .ios, .tvos, .watchos, .visionos => struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => struct { pub const ICMP = 1; pub const ICMPV6 = 58; pub const TCP = 6; @@ -6543,7 +6547,7 @@ pub const SOL = switch (native_os) { .linux => linux.SOL, .emscripten => emscripten.SOL, .windows => ws2_32.SOL, - .openbsd, .haiku, .dragonfly, .netbsd, .freebsd, .macos, .ios, .tvos, .watchos, .visionos => struct { + .openbsd, .haiku, .dragonfly, .netbsd, .freebsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => struct { pub const SOCKET = 0xffff; }, .illumos => struct { @@ -6562,7 +6566,7 @@ pub const SO = switch (native_os) { .linux => linux.SO, .emscripten => emscripten.SO, .windows => ws2_32.SO, - .macos, .ios, .tvos, .watchos, .visionos => struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => struct { pub const DEBUG = 0x0001; pub const ACCEPTCONN = 0x0002; pub const REUSEADDR = 0x0004; @@ -6807,7 +6811,7 @@ pub const SOMAXCONN = switch (native_os) { // https://github.com/NetBSD/src/blob/a673fb3f8487e974c669216064f7588207229fea/sys/sys/socket.h#L472 // https://github.com/openbsd/src/blob/8ba9cd88f10123fef7af805b8e5ccc2463ad8fa4/sys/sys/socket.h#L483 // https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/bsd/sys/socket.h#L815 - .freebsd, .dragonfly, .netbsd, .openbsd, .driverkit, .macos, .ios, .tvos, .watchos, .visionos => 128, + .freebsd, .dragonfly, .netbsd, .openbsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => 128, else => void, }; pub const SCM = switch (native_os) { @@ -6856,7 +6860,7 @@ pub const SCM = switch (native_os) { pub const TIMESTAMP = 0x04; }, // https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/bsd/sys/socket.h#L1114 - .driverkit, .macos, .ios, .tvos, .watchos, .visionos => struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => struct { pub const RIGHTS = 1; pub const TIMESTAMP = 2; pub const CREDS = 3; @@ -6870,7 +6874,7 @@ pub const IFNAMESIZE = switch (native_os) { .emscripten => emscripten.IFNAMESIZE, .windows => 30, // https://github.com/SerenityOS/serenity/blob/9882848e0bf783dfc8e8a6d887a848d70d9c58f4/Kernel/API/POSIX/net/if.h#L50 - .openbsd, .dragonfly, .netbsd, .freebsd, .macos, .ios, .tvos, .watchos, .visionos, .serenity => 16, + .openbsd, .dragonfly, .netbsd, .freebsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .serenity => 16, .illumos => 32, else => {}, }; @@ -6921,7 +6925,7 @@ pub const timeval = switch (native_os) { sec: c_long, usec: c_long, }, - .macos, .ios, .tvos, .watchos, .visionos => extern struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { sec: c_long, usec: i32, }, @@ -6941,7 +6945,7 @@ pub const timeval = switch (native_os) { pub const timezone = switch (native_os) { .linux => linux.timezone, .emscripten => emscripten.timezone, - .openbsd, .macos, .ios, .tvos, .watchos, .visionos => extern struct { + .openbsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { minuteswest: i32, dsttime: i32, }, @@ -6968,7 +6972,7 @@ pub const utsname = switch (native_os) { machine: [256:0]u8, domainname: [256:0]u8, }, - .macos => extern struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { sysname: [255:0]u8, nodename: [255:0]u8, release: [255:0]u8, @@ -6999,7 +7003,7 @@ pub const _errno = switch (native_os) { .emscripten => private.__errno_location, .wasi, .dragonfly => private.errnoFromThreadLocal, .windows => private._errno, - .macos, .ios, .tvos, .watchos, .visionos, .freebsd => private.__error, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .freebsd => private.__error, .illumos => private.___errno, .openbsd, .netbsd => private.__errno, .haiku => haiku._errnop, @@ -7070,7 +7074,7 @@ pub const RTLD = switch (native_os) { TRACE: bool = false, _: u22 = 0, }, - .macos, .ios, .tvos, .watchos, .visionos => packed struct(u32) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => packed struct(u32) { LAZY: bool = false, NOW: bool = false, LOCAL: bool = false, @@ -7102,7 +7106,7 @@ pub const dirent = switch (native_os) { type: u8, name: [256]u8, }, - .macos, .ios, .tvos, .watchos, .visionos => extern struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { ino: u64, seekoff: u64, reclen: u16, @@ -7246,7 +7250,7 @@ pub const AI = if (builtin.abi.isAndroid()) packed struct(u32) { ADDRCONFIG: bool = false, _: u25 = 0, }, - .macos, .ios, .tvos, .watchos, .visionos => packed struct(u32) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => packed struct(u32) { PASSIVE: bool = false, CANONNAME: bool = false, NUMERICHOST: bool = false, @@ -7363,7 +7367,7 @@ pub const EAI = if (builtin.abi.isAndroid()) enum(c_int) { _, }, - .haiku, .dragonfly, .netbsd, .freebsd, .macos, .ios, .tvos, .watchos, .visionos => enum(c_int) { + .haiku, .dragonfly, .netbsd, .freebsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => enum(c_int) { /// address family for hostname not supported ADDRFAMILY = 1, /// temporary failure in name resolution @@ -7697,7 +7701,7 @@ pub const Stat = switch (native_os) { }; } }, - .macos, .ios, .tvos, .watchos, .visionos => extern struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { dev: i32, mode: u16, nlink: u16, @@ -7940,7 +7944,7 @@ pub const pthread_mutex_t = switch (native_os) { else => @compileError("unsupported ABI"), }; }, - .macos, .ios, .tvos, .watchos, .visionos => extern struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { sig: c_long = 0x32AAABA7, data: [data_len]u8 = [_]u8{0} ** data_len, @@ -7997,7 +8001,7 @@ pub const pthread_cond_t = switch (native_os) { .linux => extern struct { data: [48]u8 align(@alignOf(usize)) = [_]u8{0} ** 48, }, - .macos, .ios, .tvos, .watchos, .visionos => extern struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { sig: c_long = 0x3CB0B1BB, data: [data_len]u8 = [_]u8{0} ** data_len, const data_len = if (@sizeOf(usize) == 8) 40 else 24; @@ -8056,7 +8060,7 @@ pub const pthread_rwlock_t = switch (native_os) { data: [56]u8 align(@alignOf(usize)) = [_]u8{0} ** 56, }, }, - .macos, .ios, .tvos, .watchos, .visionos => extern struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { sig: c_long = 0x2DA8B3B4, data: [192]u8 = [_]u8{0} ** 192, }, @@ -8108,7 +8112,7 @@ pub const pthread_attr_t = switch (native_os) { __size: [56]u8, __align: c_long, }, - .macos, .ios, .tvos, .watchos, .visionos => extern struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { __sig: c_long, __opaque: [56]u8, }, @@ -8136,7 +8140,7 @@ pub const pthread_attr_t = switch (native_os) { pub const pthread_key_t = switch (native_os) { .linux, .emscripten => c_uint, - .macos, .ios, .tvos, .watchos, .visionos => c_ulong, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => c_ulong, // https://github.com/SerenityOS/serenity/blob/b98f537f117b341788023ab82e0c11ca9ae29a57/Kernel/API/POSIX/sys/types.h#L65 .openbsd, .illumos, .serenity => c_int, else => void, @@ -8169,7 +8173,7 @@ pub const sem_t = switch (native_os) { .linux, .emscripten => extern struct { __size: [4 * @sizeOf(usize)]u8 align(@alignOf(usize)), }, - .macos, .ios, .tvos, .watchos, .visionos => c_int, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => c_int, .freebsd => extern struct { _magic: u32, _kern: extern struct { @@ -8213,7 +8217,7 @@ pub const Kevent = switch (native_os) { data: i64, udata: usize, }, - .macos, .ios, .tvos, .watchos, .visionos => extern struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { ident: usize, filter: i16, flags: u16, @@ -8293,7 +8297,7 @@ pub const AT = switch (native_os) { /// Remove directory instead of unlinking file pub const REMOVEDIR = 0x200; }, - .macos, .ios, .tvos, .watchos, .visionos => struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => struct { pub const FDCWD = -2; /// Use effective ids in access check pub const EACCESS = 0x0010; @@ -8548,7 +8552,7 @@ pub const O = switch (native_os) { DIRECTORY: bool = false, _: u10 = 0, }, - .macos, .ios, .tvos, .watchos, .visionos => packed struct(u32) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => packed struct(u32) { ACCMODE: std.posix.ACCMODE = .RDONLY, NONBLOCK: bool = false, APPEND: bool = false, @@ -8727,7 +8731,7 @@ pub const MAP = switch (native_os) { NORESERVE: bool = false, _: u27 = 0, }, - .macos, .ios, .tvos, .watchos, .visionos => packed struct(u32) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => packed struct(u32) { TYPE: enum(u4) { SHARED = 0x01, PRIVATE = 0x02, @@ -8812,7 +8816,7 @@ pub const cc_t = u8; /// Indices into the `cc` array in the `termios` struct. pub const V = switch (native_os) { .linux => linux.V, - .macos, .ios, .tvos, .watchos, .visionos, .netbsd, .openbsd => enum { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .netbsd, .openbsd => enum { EOF, EOL, EOL2, @@ -8932,7 +8936,7 @@ pub const V = switch (native_os) { pub const NCCS = switch (native_os) { .linux => linux.NCCS, - .macos, .ios, .tvos, .watchos, .visionos, .freebsd, .netbsd, .openbsd, .dragonfly => 20, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .freebsd, .netbsd, .openbsd, .dragonfly => 20, .haiku => 11, .illumos => 19, // https://github.com/SerenityOS/serenity/blob/d277cdfd4c7ed21d5248a83217ae03b9f890c3c8/Kernel/API/POSIX/termios.h#L15 @@ -8942,7 +8946,7 @@ pub const NCCS = switch (native_os) { pub const termios = switch (native_os) { .linux => linux.termios, - .macos, .ios, .tvos, .watchos, .visionos => extern struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { iflag: tc_iflag_t, oflag: tc_oflag_t, cflag: tc_cflag_t, @@ -8993,7 +8997,7 @@ pub const termios = switch (native_os) { pub const tc_iflag_t = switch (native_os) { .linux => linux.tc_iflag_t, - .macos, .ios, .tvos, .watchos, .visionos => packed struct(u64) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => packed struct(u64) { IGNBRK: bool = false, BRKINT: bool = false, IGNPAR: bool = false, @@ -9104,7 +9108,7 @@ pub const tc_iflag_t = switch (native_os) { pub const tc_oflag_t = switch (native_os) { .linux => linux.tc_oflag_t, - .macos, .ios, .tvos, .watchos, .visionos => packed struct(u64) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => packed struct(u64) { OPOST: bool = false, ONLCR: bool = false, OXTABS: bool = false, @@ -9202,7 +9206,7 @@ pub const CSIZE = switch (native_os) { pub const tc_cflag_t = switch (native_os) { .linux => linux.tc_cflag_t, - .macos, .ios, .tvos, .watchos, .visionos => packed struct(u64) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => packed struct(u64) { CIGNORE: bool = false, _1: u5 = 0, CSTOPB: bool = false, @@ -9351,7 +9355,7 @@ pub const tc_cflag_t = switch (native_os) { pub const tc_lflag_t = switch (native_os) { .linux => linux.tc_lflag_t, - .macos, .ios, .tvos, .watchos, .visionos => packed struct(u64) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => packed struct(u64) { ECHOKE: bool = false, ECHOE: bool = false, ECHOK: bool = false, @@ -9498,7 +9502,7 @@ pub const tc_lflag_t = switch (native_os) { pub const speed_t = switch (native_os) { .linux => linux.speed_t, - .macos, .ios, .tvos, .watchos, .visionos, .openbsd => enum(u64) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .openbsd => enum(u64) { B0 = 0, B50 = 50, B75 = 75, @@ -9693,7 +9697,7 @@ pub const NSIG = switch (native_os) { .windows => 23, .haiku => 65, .netbsd, .freebsd => 32, - .macos => darwin.NSIG, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => darwin.NSIG, .illumos => 75, // https://github.com/SerenityOS/serenity/blob/046c23f567a17758d762a33bdf04bacbfd088f9f/Kernel/API/POSIX/signal_numbers.h#L42 .openbsd, .serenity => 33, @@ -9701,7 +9705,7 @@ pub const NSIG = switch (native_os) { }; pub const MINSIGSTKSZ = switch (native_os) { - .macos, .ios, .tvos, .watchos, .visionos => 32768, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => 32768, .freebsd => switch (builtin.cpu.arch) { .powerpc64, .powerpc64le, .x86, .x86_64 => 2048, .arm, .aarch64, .riscv64 => 4096, @@ -9715,7 +9719,7 @@ pub const MINSIGSTKSZ = switch (native_os) { else => {}, }; pub const SIGSTKSZ = switch (native_os) { - .macos, .ios, .tvos, .watchos, .visionos => 131072, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => 131072, .netbsd, .freebsd => MINSIGSTKSZ + 32768, .illumos => 8192, .haiku => 16384, @@ -9726,7 +9730,7 @@ pub const SIGSTKSZ = switch (native_os) { }; pub const SS = switch (native_os) { .linux => linux.SS, - .openbsd, .macos, .ios, .tvos, .watchos, .visionos, .netbsd, .freebsd => struct { + .openbsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .netbsd, .freebsd => struct { pub const ONSTACK = 1; pub const DISABLE = 4; }, @@ -9739,7 +9743,7 @@ pub const SS = switch (native_os) { }; pub const EV = switch (native_os) { - .macos, .ios, .tvos, .watchos, .visionos => struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => struct { /// add event to kq (implies enable) pub const ADD = 0x0001; /// delete event from kq @@ -9879,7 +9883,7 @@ pub const EV = switch (native_os) { }; pub const EVFILT = switch (native_os) { - .macos, .ios, .tvos, .watchos, .visionos => struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => struct { pub const READ = -1; pub const WRITE = -2; /// attached to aio requests @@ -10002,7 +10006,7 @@ pub const EVFILT = switch (native_os) { }; pub const NOTE = switch (native_os) { - .macos, .ios, .tvos, .watchos, .visionos => struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => struct { /// On input, TRIGGER causes the event to be triggered for output. pub const TRIGGER = 0x01000000; /// ignore input fflags @@ -10293,7 +10297,7 @@ pub extern "c" fn sigwait(set: ?*sigset_t, sig: ?*c_int) c_int; pub extern "c" fn alarm(seconds: c_uint) c_uint; pub const close = switch (native_os) { - .macos, .ios, .tvos, .watchos, .visionos => darwin.@"close$NOCANCEL", + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => darwin.@"close$NOCANCEL", else => private.close, }; @@ -10308,7 +10312,7 @@ pub const clock_gettime = switch (native_os) { }; pub const fstat = switch (native_os) { - .macos => switch (native_arch) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => switch (native_arch) { .x86_64 => private.@"fstat$INODE64", else => private.fstat, }, @@ -10317,7 +10321,7 @@ pub const fstat = switch (native_os) { }; pub const fstatat = switch (native_os) { - .macos => switch (native_arch) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => switch (native_arch) { .x86_64 => private.@"fstatat$INODE64", else => private.fstatat, }, @@ -10351,7 +10355,7 @@ pub extern "c" fn setrlimit64(resource: rlimit_resource, rlim: *const rlimit) c_ pub const arc4random_buf = switch (native_os) { .linux => if (builtin.abi.isAndroid()) private.arc4random_buf else {}, - .dragonfly, .netbsd, .freebsd, .illumos, .openbsd, .serenity, .macos, .ios, .tvos, .watchos, .visionos => private.arc4random_buf, + .dragonfly, .netbsd, .freebsd, .illumos, .openbsd, .serenity, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => private.arc4random_buf, else => {}, }; pub const getentropy = switch (native_os) { @@ -10404,7 +10408,7 @@ pub extern "c" fn ftruncate64(fd: c_int, length: off_t) c_int; pub extern "c" fn fallocate(fd: fd_t, mode: c_int, offset: off_t, len: off_t) c_int; pub const sendfile = switch (native_os) { .freebsd => freebsd.sendfile, - .macos, .ios, .tvos, .watchos, .visionos => darwin.sendfile, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => darwin.sendfile, .linux => private.sendfile, else => {}, }; @@ -10445,7 +10449,7 @@ pub extern "c" fn madvise( ) c_int; pub const getdirentries = switch (native_os) { - .macos, .ios, .tvos, .watchos, .visionos => private.__getdirentries64, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => private.__getdirentries64, else => private.getdirentries, }; @@ -10500,7 +10504,7 @@ pub const nanosleep = switch (native_os) { }; pub const readdir = switch (native_os) { - .macos => switch (native_arch) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => switch (native_arch) { .x86_64 => private.@"readdir$INODE64", else => private.readdir, }, @@ -10509,7 +10513,7 @@ pub const readdir = switch (native_os) { }; pub const realpath = switch (native_os) { - .macos, .ios, .tvos, .watchos, .visionos => private.@"realpath$DARWIN_EXTSN", + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => private.@"realpath$DARWIN_EXTSN", else => private.realpath, }; @@ -10573,7 +10577,7 @@ pub const socketpair = switch (native_os) { }; pub const stat = switch (native_os) { - .macos => switch (native_arch) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => switch (native_arch) { .x86_64 => private.@"stat$INODE64", else => private.stat, }, @@ -10585,7 +10589,7 @@ pub const _msize = switch (native_os) { else => {}, }; pub const malloc_size = switch (native_os) { - .macos, .ios, .tvos, .watchos, .visionos, .serenity => private.malloc_size, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .serenity => private.malloc_size, else => {}, }; pub const malloc_usable_size = switch (native_os) { @@ -10593,7 +10597,7 @@ pub const malloc_usable_size = switch (native_os) { else => {}, }; pub const posix_memalign = switch (native_os) { - .dragonfly, .netbsd, .freebsd, .illumos, .openbsd, .linux, .macos, .ios, .tvos, .watchos, .visionos, .serenity => private.posix_memalign, + .dragonfly, .netbsd, .freebsd, .illumos, .openbsd, .linux, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .serenity => private.posix_memalign, else => {}, }; pub const sysconf = switch (native_os) { @@ -10602,7 +10606,7 @@ pub const sysconf = switch (native_os) { }; pub const sf_hdtr = switch (native_os) { - .freebsd, .macos, .ios, .tvos, .watchos, .visionos => extern struct { + .freebsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { headers: ?[*]const iovec_const, hdr_cnt: c_int, trailers: ?[*]const iovec_const, @@ -10661,15 +10665,17 @@ pub extern "c" fn wait4(pid: pid_t, status: ?*c_int, options: c_int, ru: ?*rusag pub const fork = switch (native_os) { .dragonfly, .freebsd, - .ios, .linux, + .driverkit, + .ios, + .maccatalyst, .macos, + .tvos, + .visionos, + .watchos, .netbsd, .openbsd, .illumos, - .tvos, - .watchos, - .visionos, .haiku, .serenity, => private.fork, @@ -10813,7 +10819,7 @@ pub extern "c" fn pthread_getspecific(key: pthread_key_t) ?*anyopaque; pub extern "c" fn pthread_setspecific(key: pthread_key_t, value: ?*anyopaque) c_int; pub extern "c" fn pthread_sigmask(how: c_int, set: *const sigset_t, oldset: *sigset_t) c_int; pub const pthread_setname_np = switch (native_os) { - .macos, .ios, .tvos, .watchos, .visionos => darwin.pthread_setname_np, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => darwin.pthread_setname_np, .illumos => illumos.pthread_setname_np, .netbsd => netbsd.pthread_setname_np, else => private.pthread_setname_np, @@ -10823,7 +10829,7 @@ pub extern "c" fn pthread_getname_np(thread: pthread_t, name: [*:0]u8, len: usiz pub extern "c" fn pthread_kill(pthread_t, signal: SIG) c_int; pub const pthread_threadid_np = switch (native_os) { - .macos, .ios, .tvos, .watchos, .visionos => private.pthread_threadid_np, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => private.pthread_threadid_np, else => {}, }; @@ -10831,7 +10837,7 @@ pub const caddr_t = ?[*]u8; pub const ptrace = switch (native_os) { .linux, .serenity => private.ptrace, - .macos, .ios, .tvos, .watchos, .visionos => darwin.ptrace, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => darwin.ptrace, .dragonfly => dragonfly.ptrace, .freebsd => freebsd.ptrace, .netbsd => netbsd.ptrace, @@ -10850,7 +10856,7 @@ pub extern "c" fn sem_timedwait(sem: *sem_t, abs_timeout: *const timespec) c_int pub extern "c" fn sem_getvalue(sem: *sem_t, sval: *c_int) c_int; pub const shm_open = switch (native_os) { - .driverkit, .macos, .ios, .tvos, .watchos, .visionos => darwin.shm_open, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => darwin.shm_open, else => private.shm_open, }; pub extern "c" fn shm_unlink(name: [*:0]const u8) c_int; diff --git a/lib/std/crypto/Certificate/Bundle.zig b/lib/std/crypto/Certificate/Bundle.zig index cc52ce71d3cc2868f26b1fe04e8e474fea5ae919..d7f6537c4add84e2410d93a5e30984cbbe80b038 100644 --- a/lib/std/crypto/Certificate/Bundle.zig +++ b/lib/std/crypto/Certificate/Bundle.zig @@ -73,7 +73,7 @@ pub const RescanError = RescanLinuxError || RescanMacError || RescanWithPathErro pub fn rescan(cb: *Bundle, gpa: Allocator, io: Io, now: Io.Timestamp) RescanError!void { switch (builtin.os.tag) { .linux => return rescanLinux(cb, gpa, io, now), - .macos => return rescanMac(cb, gpa, io, now), + .maccatalyst, .macos => return rescanMac(cb, gpa, io, now), .freebsd, .openbsd => return rescanWithPath(cb, gpa, io, now, "/etc/ssl/cert.pem"), .netbsd => return rescanWithPath(cb, gpa, io, now, "/etc/openssl/certs/ca-certificates.crt"), .dragonfly => return rescanWithPath(cb, gpa, io, now, "/usr/local/etc/ssl/cert.pem"), diff --git a/lib/std/debug.zig b/lib/std/debug.zig index 696d4f232dac0501027c8dd855504e7a78848033..3f1982070c2063e1bebc23d81be8f28ef1df1335 100644 --- a/lib/std/debug.zig +++ b/lib/std/debug.zig @@ -1392,6 +1392,7 @@ pub const have_segfault_handling_support = switch (native_os) { .driverkit, .ios, + .maccatalyst, .macos, .tvos, .visionos, @@ -1487,6 +1488,7 @@ fn handleSegfaultPosix(sig: posix.SIG, info: *const posix.siginfo_t, ctx_ptr: ?* .freebsd, .driverkit, .ios, + .maccatalyst, .macos, .tvos, .visionos, diff --git a/lib/std/debug/cpu_context.zig b/lib/std/debug/cpu_context.zig index 637c01d34b5487e74afd50a3d26c058201c7ad48..de8baffea4d1fd6a01cc3cac94f9e0490b427dd5 100644 --- a/lib/std/debug/cpu_context.zig +++ b/lib/std/debug/cpu_context.zig @@ -2131,7 +2131,7 @@ const signal_ucontext_t = switch (native_os) { }, }, // https://github.com/ziglang/zig/blob/60be67d3c0ba6ae15fa7115596734ab1e74fbcd3/lib/libc/include/any-macos-any/sys/_types/_ucontext.h - .driverkit, .macos, .ios, .tvos, .watchos, .visionos => extern struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .watchos, .visionos => extern struct { _onstack: i32, _sigmask: std.c.sigset_t, _stack: std.c.stack_t, diff --git a/lib/std/dynamic_library.zig b/lib/std/dynamic_library.zig index b889f5116e0dfafdf8e443c7efb3296f7827031b..d23d1ff1dd462924aade9b559617e7abf82064e2 100644 --- a/lib/std/dynamic_library.zig +++ b/lib/std/dynamic_library.zig @@ -16,7 +16,7 @@ pub const DynLib = struct { else DlDynLib, .windows => WindowsDynLib, - .macos, .tvos, .watchos, .ios, .visionos, .freebsd, .netbsd, .openbsd, .dragonfly, .illumos => DlDynLib, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .freebsd, .netbsd, .openbsd, .dragonfly, .illumos => DlDynLib, else => struct { const open = @compileError("unsupported platform"); const openZ = @compileError("unsupported platform"); @@ -675,7 +675,7 @@ test "dynamic_library" { const libname = switch (native_os) { .linux, .freebsd, .openbsd, .illumos => "invalid_so.so", .windows => "invalid_dll.dll", - .macos, .tvos, .watchos, .ios, .visionos => "invalid_dylib.dylib", + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => "invalid_dylib.dylib", else => return error.SkipZigTest, }; diff --git a/lib/std/fs.zig b/lib/std/fs.zig index 6db63b6e2b6fefabefdbf2172956bfd19036a140..26ce27e2b393f6e487adb5f7c8f10390295edc0a 100644 --- a/lib/std/fs.zig +++ b/lib/std/fs.zig @@ -52,7 +52,7 @@ pub const GetAppDataDirError = @import("fs/get_app_data_dir.zig").GetAppDataDirE /// * On other platforms, `[]u8` file paths are opaque sequences of bytes with /// no particular encoding. pub const max_path_bytes = switch (native_os) { - .linux, .macos, .ios, .freebsd, .openbsd, .netbsd, .dragonfly, .haiku, .illumos, .plan9, .emscripten, .wasi, .serenity => posix.PATH_MAX, + .linux, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .freebsd, .openbsd, .netbsd, .dragonfly, .haiku, .illumos, .plan9, .emscripten, .wasi, .serenity => posix.PATH_MAX, // Each WTF-16LE code unit may be expanded to 3 WTF-8 bytes. // If it would require 4 WTF-8 bytes, then there would be a surrogate // pair in the WTF-16LE, and we (over)account 3 bytes for it that way. @@ -73,7 +73,7 @@ pub const max_path_bytes = switch (native_os) { /// On WASI, file name components are encoded as valid UTF-8. /// On other platforms, `[]u8` components are an opaque sequence of bytes with no particular encoding. pub const max_name_bytes = switch (native_os) { - .linux, .macos, .ios, .freebsd, .openbsd, .netbsd, .dragonfly, .illumos, .serenity => posix.NAME_MAX, + .linux, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .freebsd, .openbsd, .netbsd, .dragonfly, .illumos, .serenity => posix.NAME_MAX, // Haiku's NAME_MAX includes the null terminator, so subtract one. .haiku => posix.NAME_MAX - 1, // Each WTF-16LE character may be expanded to 3 WTF-8 bytes. diff --git a/lib/std/fs/Dir.zig b/lib/std/fs/Dir.zig index c90eeef508318dcfd5e8221e01b37f6e562bdf26..f229204f458d6f32f31f91b4c7c0193d135cbf92 100644 --- a/lib/std/fs/Dir.zig +++ b/lib/std/fs/Dir.zig @@ -39,7 +39,7 @@ const IteratorError = error{ } || posix.UnexpectedError; pub const Iterator = switch (native_os) { - .macos, .ios, .freebsd, .netbsd, .dragonfly, .openbsd, .illumos => struct { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .freebsd, .netbsd, .dragonfly, .openbsd, .illumos => struct { dir: Dir, seek: i64, buf: [1024]u8 align(@alignOf(posix.system.dirent)), @@ -55,7 +55,7 @@ pub const Iterator = switch (native_os) { /// with subsequent calls to `next`, as well as when this `Dir` is deinitialized. pub fn next(self: *Self) Error!?Entry { switch (native_os) { - .macos, .ios => return self.nextDarwin(), + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => return self.nextDarwin(), .freebsd, .netbsd, .dragonfly, .openbsd => return self.nextBsd(), .illumos => return self.nextIllumos(), else => @compileError("unimplemented"), @@ -612,8 +612,13 @@ pub fn iterateAssumeFirstIteration(self: Dir) Iterator { fn iterateImpl(self: Dir, first_iter_start_value: bool) Iterator { switch (native_os) { - .macos, + .driverkit, .ios, + .maccatalyst, + .macos, + .tvos, + .visionos, + .watchos, .freebsd, .netbsd, .dragonfly, @@ -1103,7 +1108,7 @@ pub fn deleteFileZ(self: Dir, sub_path_c: [*:0]const u8) DeleteFileError!void { error.AccessDenied, error.PermissionDenied => |e| switch (native_os) { // non-Linux POSIX systems return permission errors when trying to delete a // directory, so we need to handle that case specifically and translate the error - .macos, .ios, .freebsd, .netbsd, .dragonfly, .openbsd, .illumos => { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .freebsd, .netbsd, .dragonfly, .openbsd, .illumos => { // Don't follow symlinks to match unlinkat (which acts on symlinks rather than follows them) const fstat = posix.fstatatZ(self.fd, sub_path_c, posix.AT.SYMLINK_NOFOLLOW) catch return e; const is_dir = fstat.mode & posix.S.IFMT == posix.S.IFDIR; diff --git a/lib/std/fs/get_app_data_dir.zig b/lib/std/fs/get_app_data_dir.zig index 05b115956cee29fc1833ce1e8b4bfa7fe836ad42..24741206cc9ccff964702ee21de939bbda0e65dd 100644 --- a/lib/std/fs/get_app_data_dir.zig +++ b/lib/std/fs/get_app_data_dir.zig @@ -23,7 +23,7 @@ pub fn getAppDataDir(allocator: mem.Allocator, appname: []const u8) GetAppDataDi defer allocator.free(local_app_data_dir); return fs.path.join(allocator, &[_][]const u8{ local_app_data_dir, appname }); }, - .macos => { + .maccatalyst, .macos => { const home_dir = posix.getenv("HOME") orelse { // TODO look in /etc/passwd return error.AppDataDirUnavailable; diff --git a/lib/std/heap.zig b/lib/std/heap.zig index 24d84c83c25835a8e6fe0f58d538efd1b97fc7b4..ebc0de26b8cf1bcd47e612673c67c8fcf34e7eaa 100644 --- a/lib/std/heap.zig +++ b/lib/std/heap.zig @@ -83,7 +83,7 @@ pub fn defaultQueryPageSize() usize { @max(std.c.sysconf(@intFromEnum(std.c._SC.PAGESIZE)), 0) else std.os.linux.getauxval(std.elf.AT_PAGESZ), - .driverkit, .ios, .macos, .tvos, .visionos, .watchos => { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => { const task_port = std.c.mach_task_self(); // mach_task_self may fail "if there are any resource failures or other errors". if (task_port == std.c.TASK.NULL) break :size 0; @@ -155,7 +155,7 @@ const CAllocator = struct { else {}; pub const supports_posix_memalign = switch (builtin.os.tag) { - .dragonfly, .netbsd, .freebsd, .illumos, .openbsd, .linux, .macos, .ios, .tvos, .watchos, .visionos, .serenity => true, + .dragonfly, .netbsd, .freebsd, .illumos, .openbsd, .linux, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .serenity => true, else => false, }; @@ -703,7 +703,7 @@ pub fn testAllocatorAlignedShrink(base_allocator: mem.Allocator) !void { } const page_size_min_default: ?usize = switch (builtin.os.tag) { - .driverkit, .ios, .macos, .tvos, .visionos, .watchos => switch (builtin.cpu.arch) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => switch (builtin.cpu.arch) { .x86_64 => 4 << 10, .aarch64 => 16 << 10, else => null, @@ -862,7 +862,7 @@ const page_size_min_default: ?usize = switch (builtin.os.tag) { }; const page_size_max_default: ?usize = switch (builtin.os.tag) { - .driverkit, .ios, .macos, .tvos, .visionos, .watchos => switch (builtin.cpu.arch) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => switch (builtin.cpu.arch) { .x86_64 => 4 << 10, .aarch64 => 16 << 10, else => null, diff --git a/lib/std/math/modf.zig b/lib/std/math/modf.zig index 60680cf831a2aa0ee77f190cc85960cafb3c34d7..99068d1a7892f639abe164e8401fbc1437a2caa8 100644 --- a/lib/std/math/modf.zig +++ b/lib/std/math/modf.zig @@ -85,7 +85,7 @@ fn ModfTests(comptime T: type) type { try expectApproxEqAbs(expected_c, r.fpart, epsilon); } test "vector" { - if (builtin.os.tag == .macos and builtin.cpu.arch == .aarch64) return error.SkipZigTest; + if (builtin.os.tag.isDarwin() and builtin.cpu.arch == .aarch64) return error.SkipZigTest; if (builtin.cpu.arch == .s390x) return error.SkipZigTest; if (comptime builtin.cpu.has(.loongarch, .lsx)) return error.SkipZigTest; // https://github.com/llvm/llvm-project/issues/159529 diff --git a/lib/std/os.zig b/lib/std/os.zig index 02fddb32b4b8f5c9d281825dca59bdc96d4d1912..5efca5899cae20e72acc80b48bd78ffe8c95e9d4 100644 --- a/lib/std/os.zig +++ b/lib/std/os.zig @@ -74,11 +74,13 @@ pub fn accessW(path: [*:0]const u16) windows.GetFileAttributesError!void { pub fn isGetFdPathSupportedOnTarget(os: std.Target.Os) bool { return switch (os.tag) { .windows, - .macos, + .driverkit, .ios, - .watchos, + .maccatalyst, + .macos, .tvos, .visionos, + .watchos, .linux, .illumos, .freebsd, @@ -113,7 +115,7 @@ pub fn getFdPath(fd: std.posix.fd_t, out_buffer: *[max_path_bytes]u8) std.posix. const end_index = std.unicode.wtf16LeToWtf8(out_buffer, wide_slice); return out_buffer[0..end_index]; }, - .macos, .ios, .watchos, .tvos, .visionos => { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => { // On macOS, we can use F.GETPATH fcntl command to query the OS for // the path to the file descriptor. @memset(out_buffer[0..max_path_bytes], 0); diff --git a/lib/std/posix.zig b/lib/std/posix.zig index 97c5c1b204cb56efb44254de11b5edb3b426e19a..91bfef60d1ef15fee97ff9c9e51501e09fd857a0 100644 --- a/lib/std/posix.zig +++ b/lib/std/posix.zig @@ -861,7 +861,7 @@ pub fn read(fd: fd_t, buf: []u8) ReadError!usize { // Prevents EINVAL. const max_count = switch (native_os) { .linux => 0x7ffff000, - .macos, .ios, .watchos, .tvos, .visionos => maxInt(i32), + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => maxInt(i32), else => maxInt(isize), }; while (true) { @@ -1002,7 +1002,7 @@ pub fn pread(fd: fd_t, buf: []u8, offset: u64) PReadError!usize { // Prevent EINVAL. const max_count = switch (native_os) { .linux => 0x7ffff000, - .macos, .ios, .watchos, .tvos, .visionos => maxInt(i32), + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => maxInt(i32), else => maxInt(isize), }; @@ -1115,7 +1115,7 @@ pub fn ftruncate(fd: fd_t, length: u64) TruncateError!void { /// On these systems, the read races with concurrent writes to the same file descriptor. pub fn preadv(fd: fd_t, iov: []const iovec, offset: u64) PReadError!usize { const have_pread_but_not_preadv = switch (native_os) { - .windows, .macos, .ios, .watchos, .tvos, .visionos, .haiku => true, + .windows, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .haiku => true, else => false, }; if (have_pread_but_not_preadv) { @@ -1269,7 +1269,7 @@ pub fn write(fd: fd_t, bytes: []const u8) WriteError!usize { const max_count = switch (native_os) { .linux => 0x7ffff000, - .macos, .ios, .watchos, .tvos, .visionos => maxInt(i32), + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => maxInt(i32), else => maxInt(isize), }; while (true) { @@ -1433,7 +1433,7 @@ pub fn pwrite(fd: fd_t, bytes: []const u8, offset: u64) PWriteError!usize { // Prevent EINVAL. const max_count = switch (native_os) { .linux => 0x7ffff000, - .macos, .ios, .watchos, .tvos, .visionos => maxInt(i32), + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => maxInt(i32), else => maxInt(isize), }; @@ -1487,7 +1487,7 @@ pub fn pwrite(fd: fd_t, bytes: []const u8, offset: u64) PWriteError!usize { /// If `iov.len` is larger than `IOV_MAX`, a partial write will occur. pub fn pwritev(fd: fd_t, iov: []const iovec_const, offset: u64) PWriteError!usize { const have_pwrite_but_not_pwritev = switch (native_os) { - .windows, .macos, .ios, .watchos, .tvos, .visionos, .haiku => true, + .windows, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .haiku => true, else => false, }; @@ -1747,7 +1747,7 @@ pub fn execveZ( .NOTDIR => return error.NotDir, .TXTBSY => return error.FileBusy, else => |err| switch (native_os) { - .macos, .ios, .tvos, .watchos, .visionos => switch (err) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => switch (err) { .BADEXEC => return error.InvalidExe, .BADARCH => return error.InvalidExe, else => return unexpectedErrno(err), @@ -6570,7 +6570,7 @@ pub fn ptrace(request: u32, pid: pid_t, addr: usize, data: usize) PtraceError!vo else => |err| return unexpectedErrno(err), }, - .macos, .ios, .tvos, .watchos, .visionos => switch (errno(std.c.ptrace( + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => switch (errno(std.c.ptrace( @enumFromInt(request), pid, @ptrFromInt(addr), diff --git a/lib/std/posix/test.zig b/lib/std/posix/test.zig index b1daf11730b5ae2807aa0d24e1eb17e24a5c7a48..aaaaa1d948a9ff744bf88cc476441fef6b1b7e6b 100644 --- a/lib/std/posix/test.zig +++ b/lib/std/posix/test.zig @@ -521,7 +521,7 @@ test "getrlimit and setrlimit" { } test "sigrtmin/max" { - if (native_os == .wasi or native_os == .windows or native_os == .macos) { + if (native_os == .wasi or native_os == .windows or native_os.isDarwin()) { return error.SkipZigTest; } @@ -550,7 +550,7 @@ test "sigset empty/full" { // Some signals (i.e., 32 - 34 on glibc/musl) are not allowed to be added to a // sigset by the C library, so avoid testing them. fn reserved_signo(i: usize) bool { - if (native_os == .macos) return false; + if (native_os.isDarwin()) return false; if (!builtin.link_libc) return false; const max = if (native_os == .netbsd) 32 else 31; return i > max and i < posix.sigrtmin(); diff --git a/lib/std/process.zig b/lib/std/process.zig index ee81bdad2631f5df036eb5ef33929a4cda523871..4e41d5901ed404e7242fd4485779abd135aa0d4c 100644 --- a/lib/std/process.zig +++ b/lib/std/process.zig @@ -1530,11 +1530,13 @@ pub const UserInfo = struct { pub fn getUserInfo(name: []const u8) !UserInfo { return switch (native_os) { .linux, + .driverkit, + .ios, + .maccatalyst, .macos, - .watchos, - .visionos, .tvos, - .ios, + .visionos, + .watchos, .freebsd, .netbsd, .openbsd, @@ -1666,7 +1668,7 @@ pub fn getBaseAddress() usize { else => {}, } else unreachable; }, - .driverkit, .ios, .macos, .tvos, .visionos, .watchos => { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => { return @intFromPtr(&std.c._mh_execute_header); }, .windows => return @intFromPtr(windows.kernel32.GetModuleHandleW(null)), @@ -1682,7 +1684,7 @@ pub const can_execv = switch (native_os) { /// Tells whether spawning child processes is supported (e.g. via Child) pub const can_spawn = switch (native_os) { - .wasi, .watchos, .tvos, .visionos => false, + .wasi, .ios, .tvos, .visionos, .watchos => false, else => true, }; @@ -1770,7 +1772,7 @@ pub fn totalSystemMemory() TotalSystemMemoryError!u64 { return @as(u64, @intCast(physmem)); }, // whole Darwin family - .driverkit, .ios, .macos, .tvos, .visionos, .watchos => { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => { // "hw.memsize" returns uint64_t var physmem: u64 = undefined; var len: usize = @sizeOf(u64); diff --git a/lib/std/process/Child.zig b/lib/std/process/Child.zig index 65b49707e45bf6521de1ea1a76ca6bfcc4acb86c..63cad29b85d51d398464f80459a5872ea379071d 100644 --- a/lib/std/process/Child.zig +++ b/lib/std/process/Child.zig @@ -136,7 +136,7 @@ pub const ResourceUsageStatistics = struct { return null; } }, - .macos, .ios => { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => { if (rus.rusage) |ru| { // Darwin oddly reports in bytes instead of kilobytes. return @as(usize, @intCast(ru.maxrss)); @@ -149,7 +149,7 @@ pub const ResourceUsageStatistics = struct { } const rusage_init = switch (native_os) { - .linux, .macos, .ios => @as(?posix.rusage, null), + .linux, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => @as(?posix.rusage, null), .windows => @as(?windows.VM_COUNTERS, null), else => {}, }; @@ -486,7 +486,7 @@ fn waitUnwrappedPosix(self: *ChildProcess) void { const res: posix.WaitPidResult = res: { if (self.request_resource_usage_statistics) { switch (native_os) { - .linux, .macos, .ios => { + .linux, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => { var ru: posix.rusage = undefined; const res = posix.wait4(self.id, 0, &ru); self.resource_usage_statistics.rusage = ru; diff --git a/lib/std/time.zig b/lib/std/time.zig index 66a38051ba6d4b9a6e3e5cba0afb851c4c834fa0..c47a3121a7bbff32875e274abf7d23510d32b482 100644 --- a/lib/std/time.zig +++ b/lib/std/time.zig @@ -76,7 +76,7 @@ pub const Instant = struct { }, // On darwin, use UPTIME_RAW instead of MONOTONIC as it ticks while // suspended. - .macos, .ios, .tvos, .watchos, .visionos => posix.CLOCK.UPTIME_RAW, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => posix.CLOCK.UPTIME_RAW, // On freebsd derivatives, use MONOTONIC_FAST as currently there's // no precision tradeoff. .freebsd, .dragonfly => posix.CLOCK.MONOTONIC_FAST, diff --git a/lib/std/zig/LibCDirs.zig b/lib/std/zig/LibCDirs.zig index 83864bc2385ecce872bb4174f92086fccdf8c5d0..dbd14a4f5635cffb1e5dc6969106c471b76ad448 100644 --- a/lib/std/zig/LibCDirs.zig +++ b/lib/std/zig/LibCDirs.zig @@ -227,7 +227,7 @@ pub fn detectFromBuilding( fn libCGenericName(target: *const std.Target) [:0]const u8 { switch (target.os.tag) { .windows => return "mingw", - .macos, .ios, .tvos, .watchos, .visionos => return "darwin", + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => return "darwin", .freebsd => return "freebsd", .netbsd => return "netbsd", else => {}, @@ -263,7 +263,6 @@ fn libCGenericName(target: *const std.Target) [:0]const u8 { .msvc, .itanium, .simulator, - .macabi, => unreachable, } } diff --git a/lib/std/zig/system.zig b/lib/std/zig/system.zig index c45f6db789702abdf99471f8d68c3f7eefe5d544..6737a610db6f23b4bfe6d0b74e50e79be0f7d7a5 100644 --- a/lib/std/zig/system.zig +++ b/lib/std/zig/system.zig @@ -81,7 +81,7 @@ pub fn getExternalExecutor( // If the OS match and OS is macOS and CPU is arm64, we can use Rosetta 2 // to emulate the foreign architecture. if (options.allow_rosetta and os_match and - host.os.tag == .macos and host.cpu.arch == .aarch64) + (host.os.tag == .maccatalyst or host.os.tag == .macos) and host.cpu.arch == .aarch64) { switch (candidate.cpu.arch) { .x86_64 => return .rosetta, diff --git a/lib/std/zig/system/darwin.zig b/lib/std/zig/system/darwin.zig index a5f28c2206c776769e697c42dc63fc663ff1b486..fbd6da2a9ef6004d936edb85c40641622d261330 100644 --- a/lib/std/zig/system/darwin.zig +++ b/lib/std/zig/system/darwin.zig @@ -37,13 +37,9 @@ pub fn isSdkInstalled(allocator: Allocator) bool { pub fn getSdk(allocator: Allocator, target: *const Target) ?[]const u8 { const is_simulator_abi = target.abi == .simulator; const sdk = switch (target.os.tag) { - .ios => switch (target.abi) { - .macabi => "macosx", - .simulator => "iphonesimulator", - else => "iphoneos", - }, .driverkit => "driverkit", - .macos => "macosx", + .ios => if (is_simulator_abi) "iphonesimulator" else "iphoneos", + .maccatalyst, .macos => "macosx", .tvos => if (is_simulator_abi) "appletvsimulator" else "appletvos", .visionos => if (is_simulator_abi) "xrsimulator" else "xros", .watchos => if (is_simulator_abi) "watchsimulator" else "watchos", diff --git a/src/Compilation.zig b/src/Compilation.zig index 3076cfdc6d4ea2b8e809046be95e5de13cd0cb00..d6167b2e66cac93d931fad7b9c15177c20ee57fe 100644 --- a/src/Compilation.zig +++ b/src/Compilation.zig @@ -6761,12 +6761,15 @@ fn addCommonCCArgs( } switch (target.os.tag) { - .ios, .macos, .tvos, .watchos => |os| if (is_clang) { + .ios, .maccatalyst, .macos, .tvos, .watchos => |os| if (is_clang) { try argv.ensureUnusedCapacity(2); // Pass the proper -m-version-min argument for darwin. const ver = target.os.version_range.semver.min; argv.appendAssumeCapacity(try std.fmt.allocPrint(arena, "-m{s}{s}-version-min={d}.{d}.{d}", .{ - @tagName(os), + switch (os) { + .maccatalyst => "ios", + else => @tagName(os), + }, switch (target.abi) { .simulator => "-simulator", else => "", diff --git a/src/Compilation/Config.zig b/src/Compilation/Config.zig index 2eca2c8411d92d080a12af47c267b9cfefcac0d7..0cb442d90f6ba54329f671fd46576a871686cf6a 100644 --- a/src/Compilation/Config.zig +++ b/src/Compilation/Config.zig @@ -369,7 +369,7 @@ pub fn resolve(options: Options) ResolveError!Config { // load_dynamic_library standalone test not passing on this combination // https://github.com/ziglang/zig/issues/24080 - if (target.os.tag == .macos and is_dyn_lib) break :b true; + if (target.os.tag.isDarwin() and is_dyn_lib) break :b true; // At this point we would prefer to use our own self-hosted backend, // because the compilation speed is better than LLVM. But only do it if diff --git a/src/Zcu/PerThread.zig b/src/Zcu/PerThread.zig index 41b5a32f6e2567fbb7ba2eb1c1c0875c03818154..ce7d44c4b6ba7461ae6d53cbe206cddbf10d5379 100644 --- a/src/Zcu/PerThread.zig +++ b/src/Zcu/PerThread.zig @@ -189,7 +189,7 @@ pub fn updateFile( // disambiguates by returning EEXIST, indicating original // failure was a race, or ENOENT, indicating deletion of the // directory of our open handle. - if (builtin.os.tag != .macos) { + if (!builtin.os.tag.isDarwin()) { std.process.fatal("cache directory '{f}' unexpectedly removed during compiler execution", .{ cache_directory, }); diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index c2c09bbd1f9892cd269d8e3a4463b7dff349167e..7c7151524a1271016535c2629df2540e160ad463 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -183,6 +183,7 @@ pub fn targetTriple(allocator: Allocator, target: *const std.Target) ![]const u8 try llvm_triple.appendSlice(switch (target.os.tag) { .driverkit, .ios, + .maccatalyst, .macos, .tvos, .visionos, @@ -204,7 +205,6 @@ pub fn targetTriple(allocator: Allocator, target: *const std.Target) ![]const u8 try llvm_triple.append('-'); const llvm_os = switch (target.os.tag) { - .freestanding => "unknown", .dragonfly => "dragonfly", .freebsd => "freebsd", .fuchsia => "fuchsia", @@ -218,11 +218,9 @@ pub fn targetTriple(allocator: Allocator, target: *const std.Target) ![]const u8 .cuda => "cuda", .nvcl => "nvcl", .amdhsa => "amdhsa", - .opencl => "unknown", // https://llvm.org/docs/SPIRVUsage.html#target-triples .ps3 => "lv2", .ps4 => "ps4", .ps5 => "ps5", - .vita => "unknown", // LLVM doesn't know about this target .mesa3d => "mesa3d", .amdpal => "amdpal", .hermit => "hermit", @@ -230,7 +228,7 @@ pub fn targetTriple(allocator: Allocator, target: *const std.Target) ![]const u8 .wasi => "wasi", .emscripten => "emscripten", .macos => "macosx", - .ios => "ios", + .ios, .maccatalyst => "ios", .tvos => "tvos", .watchos => "watchos", .driverkit => "driverkit", @@ -240,10 +238,13 @@ pub fn targetTriple(allocator: Allocator, target: *const std.Target) ![]const u8 .managarm => "managarm", .@"3ds", - .opengl, - .plan9, .contiki, + .freestanding, + .opencl, // https://llvm.org/docs/SPIRVUsage.html#target-triples + .opengl, .other, + .plan9, + .vita, => "unknown", }; try llvm_triple.appendSlice(llvm_os); @@ -266,7 +267,7 @@ pub fn targetTriple(allocator: Allocator, target: *const std.Target) ![]const u8 try llvm_triple.append('-'); const llvm_abi = switch (target.abi) { - .none, .ilp32 => "unknown", + .none => if (target.os.tag == .maccatalyst) "macabi" else "unknown", .gnu => "gnu", .gnuabin32 => "gnuabin32", .gnuabi64 => "gnuabi64", @@ -275,6 +276,7 @@ pub fn targetTriple(allocator: Allocator, target: *const std.Target) ![]const u8 .gnuf32 => "gnuf32", .gnusf => "gnusf", .gnux32 => "gnux32", + .ilp32 => "unknown", .code16 => "code16", .eabi => "eabi", .eabihf => "eabihf", @@ -296,7 +298,6 @@ pub fn targetTriple(allocator: Allocator, target: *const std.Target) ![]const u8 .msvc => "msvc", .itanium => "itanium", .simulator => "simulator", - .macabi => "macabi", .ohos, .ohoseabi => "ohos", }; try llvm_triple.appendSlice(llvm_abi); @@ -12595,7 +12596,7 @@ fn ccAbiPromoteInt(cc: std.builtin.CallingConvention, zcu: *Zcu, ty: Type) ?std. else => return null, }; return switch (target.os.tag) { - .macos, .ios, .watchos, .tvos, .visionos => switch (int_info.bits) { + .driverkit, .ios, .maccatalyst, .macos, .watchos, .tvos, .visionos => switch (int_info.bits) { 0...16 => int_info.signedness, else => null, }, diff --git a/src/libs/libtsan.zig b/src/libs/libtsan.zig index 12642bc452e2b902be2fc2f7c0c36aa8ba857cca..541d2bab3c83884d2e680119c6f13d3557d12c46 100644 --- a/src/libs/libtsan.zig +++ b/src/libs/libtsan.zig @@ -30,7 +30,7 @@ pub fn buildTsan(comp: *Compilation, prog_node: std.Progress.Node) BuildError!vo const root_name = switch (target.os.tag) { // On Apple platforms, we use the same name as LLVM because the // TSAN library implementation hard-codes a check for these names. - .driverkit, .macos => "clang_rt.tsan_osx_dynamic", + .driverkit, .maccatalyst, .macos => "clang_rt.tsan_osx_dynamic", .ios => if (target.abi == .simulator) "clang_rt.tsan_iossim_dynamic" else "clang_rt.tsan_ios_dynamic", .tvos => if (target.abi == .simulator) "clang_rt.tsan_tvossim_dynamic" else "clang_rt.tsan_tvos_dynamic", .visionos => if (target.abi == .simulator) "clang_rt.tsan_xrossim_dynamic" else "clang_rt.tsan_xros_dynamic", @@ -134,7 +134,7 @@ pub fn buildTsan(comp: *Compilation, prog_node: std.Progress.Node) BuildError!vo } const platform_tsan_sources = switch (target.os.tag) { - .ios, .macos, .watchos, .tvos, .visionos => &darwin_tsan_sources, + .driverkit, .ios, .maccatalyst, .macos, .watchos, .tvos, .visionos => &darwin_tsan_sources, .windows => &windows_tsan_sources, else => &unix_tsan_sources, }; diff --git a/src/link.zig b/src/link.zig index c0a8facb77d81dd10cc4ac913f06faf7b9e6c56e..c343c7e30f0c4787d2f7d9915545b4822a477875 100644 --- a/src/link.zig +++ b/src/link.zig @@ -620,7 +620,7 @@ pub const File = struct { .linux => std.posix.ptrace(std.os.linux.PTRACE.ATTACH, pid, 0, 0) catch |err| { log.warn("ptrace failure: {s}", .{@errorName(err)}); }, - .macos => { + .maccatalyst, .macos => { const macho_file = base.cast(.macho).?; macho_file.ptraceAttach(pid) catch |err| { log.warn("attaching failed with error: {s}", .{@errorName(err)}); @@ -700,7 +700,7 @@ pub const File = struct { if (base.child_pid) |pid| { switch (builtin.os.tag) { - .macos => { + .maccatalyst, .macos => { const macho_file = base.cast(.macho).?; macho_file.ptraceDetach(pid) catch |err| { log.warn("detaching failed with error: {s}", .{@errorName(err)}); diff --git a/src/link/MachO.zig b/src/link/MachO.zig index ef5c837fd10bcf4b67aa8f7e2853ff4a255c74e2..8a3ee073154c0b5f8dac72d29c1ded54948f422f 100644 --- a/src/link/MachO.zig +++ b/src/link/MachO.zig @@ -3596,7 +3596,7 @@ pub fn requiresCodeSig(self: MachO) bool { const target = self.getTarget(); return switch (target.cpu.arch) { .aarch64 => switch (target.os.tag) { - .driverkit, .macos => true, + .driverkit, .maccatalyst, .macos => true, .ios, .tvos, .visionos, .watchos => target.abi == .simulator, else => false, }, @@ -4032,7 +4032,7 @@ fn formatSectType(tt: u8, w: *Writer) Writer.Error!void { } const is_hot_update_compatible = switch (builtin.target.os.tag) { - .macos => true, + .maccatalyst, .macos => true, else => false, }; @@ -4174,7 +4174,7 @@ pub const Platform = struct { .os_tag = switch (cmd.platform) { .DRIVERKIT => .driverkit, .IOS, .IOSSIMULATOR => .ios, - .MACCATALYST => .ios, + .MACCATALYST => .maccatalyst, .MACOS => .macos, .TVOS, .TVOSSIMULATOR => .tvos, .VISIONOS, .VISIONOSSIMULATOR => .visionos, @@ -4182,7 +4182,6 @@ pub const Platform = struct { else => @panic("TODO"), }, .abi = switch (cmd.platform) { - .MACCATALYST => .macabi, .IOSSIMULATOR, .TVOSSIMULATOR, .VISIONOSSIMULATOR, @@ -4198,6 +4197,7 @@ pub const Platform = struct { .VERSION_MIN_TVOS, .VERSION_MIN_WATCHOS, => { + // We can't distinguish Mac Catalyst here, but this is legacy stuff anyway. const cmd = lc.cast(macho.version_min_command).?; return .{ .os_tag = switch (lc.cmd()) { @@ -4230,11 +4230,8 @@ pub const Platform = struct { pub fn toApplePlatform(plat: Platform) macho.PLATFORM { return switch (plat.os_tag) { .driverkit => .DRIVERKIT, - .ios => switch (plat.abi) { - .macabi => .MACCATALYST, - .simulator => .IOSSIMULATOR, - else => .IOS, - }, + .ios => if (plat.abi == .simulator) .IOSSIMULATOR else .IOS, + .maccatalyst => .MACCATALYST, .macos => .MACOS, .tvos => if (plat.abi == .simulator) .TVOSSIMULATOR else .TVOS, .visionos => if (plat.abi == .simulator) .VISIONOSSIMULATOR else .VISIONOS, @@ -4300,17 +4297,17 @@ const SupportedPlatforms = struct { // Source: https://github.com/apple-oss-distributions/ld64/blob/59a99ab60399c5e6c49e6945a9e1049c42b71135/src/ld/PlatformSupport.cpp#L52 // zig fmt: off const supported_platforms = [_]SupportedPlatforms{ - .{ .driverkit, .none, 0x130000, 0x130000 }, - .{ .ios, .none, 0x0C0000, 0x070000 }, - .{ .ios, .macabi, 0x0D0000, 0x0D0000 }, - .{ .ios, .simulator, 0x0D0000, 0x080000 }, - .{ .macos, .none, 0x0A0E00, 0x0A0800 }, - .{ .tvos, .none, 0x0C0000, 0x070000 }, - .{ .tvos, .simulator, 0x0D0000, 0x080000 }, - .{ .visionos, .none, 0x010000, 0x010000 }, - .{ .visionos, .simulator, 0x010000, 0x010000 }, - .{ .watchos, .none, 0x050000, 0x020000 }, - .{ .watchos, .simulator, 0x060000, 0x020000 }, + .{ .driverkit, .none, 0x130000, 0x130000 }, + .{ .ios, .none, 0x0C0000, 0x070000 }, + .{ .ios, .simulator, 0x0D0000, 0x080000 }, + .{ .maccatalyst, .none, 0x0D0000, 0x0D0000 }, + .{ .macos, .none, 0x0A0E00, 0x0A0800 }, + .{ .tvos, .none, 0x0C0000, 0x070000 }, + .{ .tvos, .simulator, 0x0D0000, 0x080000 }, + .{ .visionos, .none, 0x010000, 0x010000 }, + .{ .visionos, .simulator, 0x010000, 0x010000 }, + .{ .watchos, .none, 0x050000, 0x020000 }, + .{ .watchos, .simulator, 0x060000, 0x020000 }, }; // zig fmt: on diff --git a/src/link/MachO/load_commands.zig b/src/link/MachO/load_commands.zig index 59717dc9c9d8dc037eda8267af71290233005305..758475f06f0f0489bd128c0b7009ba597d9ce218 100644 --- a/src/link/MachO/load_commands.zig +++ b/src/link/MachO/load_commands.zig @@ -281,7 +281,7 @@ pub fn writeRpathLC(rpath: []const u8, writer: *Writer) !void { pub fn writeVersionMinLC(platform: MachO.Platform, sdk_version: ?std.SemanticVersion, writer: *Writer) !void { const cmd: macho.LC = switch (platform.os_tag) { .macos => .VERSION_MIN_MACOSX, - .ios => .VERSION_MIN_IPHONEOS, + .ios, .maccatalyst => .VERSION_MIN_IPHONEOS, .tvos => .VERSION_MIN_TVOS, .watchos => .VERSION_MIN_WATCHOS, else => unreachable, diff --git a/src/main.zig b/src/main.zig index 52bb4b9c4e19dceed6a0ec504110d84d7d9c2f6c..d52616aa77cfbff45f245acca1dc1eb44842c426 100644 --- a/src/main.zig +++ b/src/main.zig @@ -4487,7 +4487,7 @@ fn runOrTestHotSwap( } switch (builtin.target.os.tag) { - .macos, .ios, .tvos, .watchos, .visionos => { + .macos => { const PosixSpawn = @import("DarwinPosixSpawn.zig"); var attr = try PosixSpawn.Attr.init(); diff --git a/src/target.zig b/src/target.zig index 77765c2239e352e8401a7869897f1057168c8bea..66aba7e5cd53f17b1ef42567c4733d7d7c908a94 100644 --- a/src/target.zig +++ b/src/target.zig @@ -29,6 +29,7 @@ pub fn libCNeedsLibUnwind(target: *const std.Target, link_mode: std.builtin.Link pub fn libCxxNeedsLibUnwind(target: *const std.Target) bool { return switch (target.os.tag) { + .maccatalyst, .macos, .ios, .watchos, diff --git a/test/behavior/basic.zig b/test/behavior/basic.zig index c98caed91f880d2d0b7272286187be08536c1118..d704151aa6d9f975c945d30517c4c3281f52f57d 100644 --- a/test/behavior/basic.zig +++ b/test/behavior/basic.zig @@ -1398,7 +1398,7 @@ test "allocation and looping over 3-byte integer" { if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .macos) { + if (builtin.zig_backend == .stage2_llvm and builtin.os.tag.isDarwin()) { return error.SkipZigTest; // TODO } if (builtin.cpu.arch == .s390x and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // TODO diff --git a/test/behavior/threadlocal.zig b/test/behavior/threadlocal.zig index 48b1bcc530470f9c9249d9b8fce41342caa91221..cb4480f759af537ee0824d400fda530eb21a69b7 100644 --- a/test/behavior/threadlocal.zig +++ b/test/behavior/threadlocal.zig @@ -9,7 +9,7 @@ test "thread local variable" { if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_x86_64 and builtin.os.tag == .macos) { + if (builtin.zig_backend == .stage2_x86_64 and builtin.os.tag.isDarwin()) { // Fails due to register hazards. return error.SkipZigTest; } diff --git a/test/behavior/var_args.zig b/test/behavior/var_args.zig index 964fac339e6fd4b814c63eb74718e9e316af0329..5b71bcb4c30cf1b993f3371046153cc5581c32f5 100644 --- a/test/behavior/var_args.zig +++ b/test/behavior/var_args.zig @@ -97,7 +97,7 @@ test "simple variadic function" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_llvm and builtin.os.tag != .macos and builtin.cpu.arch.isAARCH64()) { + if (builtin.zig_backend == .stage2_llvm and !builtin.os.tag.isDarwin() and builtin.cpu.arch.isAARCH64()) { // https://github.com/ziglang/zig/issues/14096 return error.SkipZigTest; } @@ -159,7 +159,7 @@ test "coerce reference to var arg" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_llvm and builtin.os.tag != .macos and builtin.cpu.arch.isAARCH64()) { + if (builtin.zig_backend == .stage2_llvm and !builtin.os.tag.isDarwin() and builtin.cpu.arch.isAARCH64()) { // https://github.com/ziglang/zig/issues/14096 return error.SkipZigTest; } @@ -191,7 +191,7 @@ test "variadic functions" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_llvm and builtin.os.tag != .macos and builtin.cpu.arch.isAARCH64()) { + if (builtin.zig_backend == .stage2_llvm and !builtin.os.tag.isDarwin() and builtin.cpu.arch.isAARCH64()) { // https://github.com/ziglang/zig/issues/14096 return error.SkipZigTest; } @@ -244,7 +244,7 @@ test "copy VaList" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_llvm and builtin.os.tag != .macos and builtin.cpu.arch.isAARCH64()) { + if (builtin.zig_backend == .stage2_llvm and !builtin.os.tag.isDarwin() and builtin.cpu.arch.isAARCH64()) { // https://github.com/ziglang/zig/issues/14096 return error.SkipZigTest; } @@ -279,7 +279,7 @@ test "unused VaList arg" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_llvm and builtin.os.tag != .macos and builtin.cpu.arch.isAARCH64()) { + if (builtin.zig_backend == .stage2_llvm and !builtin.os.tag.isDarwin() and builtin.cpu.arch.isAARCH64()) { // https://github.com/ziglang/zig/issues/14096 return error.SkipZigTest; } diff --git a/test/c_abi/main.zig b/test/c_abi/main.zig index a6f692601a2c0e4b06ba1c28034e6063dbd39cdf..8316847743e5ebd382b5c4bb4604062a66e79bc7 100644 --- a/test/c_abi/main.zig +++ b/test/c_abi/main.zig @@ -1157,7 +1157,7 @@ test "big simd vector" { if (builtin.cpu.arch.isMIPS64() and builtin.mode != .Debug) return error.SkipZigTest; if (builtin.cpu.arch.isPowerPC64()) return error.SkipZigTest; if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .x86_64 and builtin.os.tag == .macos and builtin.mode != .Debug) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .x86_64 and builtin.os.tag.isDarwin() and builtin.mode != .Debug) return error.SkipZigTest; c_big_vec(.{ 1, 2, 3, 4, 5, 6, 7, 8 }); diff --git a/test/llvm_targets.zig b/test/llvm_targets.zig index 7909ea843d21db3cf9d0092ba8f9afd627cd5c40..ff6ed6830073446c974feb2642abb4cc66ec4974 100644 --- a/test/llvm_targets.zig +++ b/test/llvm_targets.zig @@ -9,7 +9,6 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .aarch64, .os_tag = .haiku, .abi = .none }, .{ .cpu_arch = .aarch64, .os_tag = .hermit, .abi = .none }, .{ .cpu_arch = .aarch64, .os_tag = .hurd, .abi = .gnu }, - .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .macabi }, .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .none }, .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .simulator }, .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .android }, @@ -17,6 +16,7 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .musl }, .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .none }, .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .ohos }, + .{ .cpu_arch = .aarch64, .os_tag = .maccatalyst, .abi = .none }, .{ .cpu_arch = .aarch64, .os_tag = .macos, .abi = .none }, .{ .cpu_arch = .aarch64, .os_tag = .netbsd, .abi = .none }, .{ .cpu_arch = .aarch64, .os_tag = .openbsd, .abi = .none }, @@ -326,6 +326,7 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .muslx32 }, .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .none }, .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .ohos }, + .{ .cpu_arch = .x86_64, .os_tag = .maccatalyst, .abi = .none }, .{ .cpu_arch = .x86_64, .os_tag = .macos, .abi = .none }, .{ .cpu_arch = .x86_64, .os_tag = .netbsd, .abi = .none }, .{ .cpu_arch = .x86_64, .os_tag = .openbsd, .abi = .none }, -- 2.54.0