authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-07-07 15:33:50+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-07-07 15:34:40+02:00
log164578636cfe760ab03f8f37f039ca7e5a0c801b
treeb4bbe112805fccf4570d1a7256d355c176fc48b2
parenta3c08eccbe30255b744ba14dca0061b396a84bab
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.Target: add switch (Nintendo Switch) Os tag

contributes to https://codeberg.org/ziglang/zig/issues/31341

8 files changed, 39 insertions(+), 5 deletions(-)

lib/std/Build/Configuration.zig+3
...@@ -2618,6 +2618,7 @@ pub const TargetQuery = struct {...@@ -2618,6 +2618,7 @@ pub const TargetQuery = struct {
2618 uefi,2618 uefi,
2619 @"3ds",2619 @"3ds",
2620 wiiu,2620 wiiu,
2621 @"switch",
2621 psx,2622 psx,
2622 ps3,2623 ps3,
2623 ps4,2624 ps4,
...@@ -2669,6 +2670,7 @@ pub const TargetQuery = struct {...@@ -2669,6 +2670,7 @@ pub const TargetQuery = struct {
2669 .uefi => .uefi,2670 .uefi => .uefi,
2670 .@"3ds" => .@"3ds",2671 .@"3ds" => .@"3ds",
2671 .wiiu => .wiiu,2672 .wiiu => .wiiu,
2673 .@"switch" => .@"switch",
2672 .psx => .psx,2674 .psx => .psx,
2673 .ps3 => .ps3,2675 .ps3 => .ps3,
2674 .ps4 => .ps4,2676 .ps4 => .ps4,
...@@ -2720,6 +2722,7 @@ pub const TargetQuery = struct {...@@ -2720,6 +2722,7 @@ pub const TargetQuery = struct {
2720 .uefi => .uefi,2722 .uefi => .uefi,
2721 .@"3ds" => .@"3ds",2723 .@"3ds" => .@"3ds",
2722 .wiiu => .wiiu,2724 .wiiu => .wiiu,
2725 .@"switch" => .@"switch",
2723 .psx => .psx,2726 .psx => .psx,
2724 .ps3 => .ps3,2727 .ps3 => .ps3,
2725 .ps4 => .ps4,2728 .ps4 => .ps4,
lib/std/Target.zig+23-1
...@@ -50,6 +50,7 @@ pub const Os = struct {...@@ -50,6 +50,7 @@ pub const Os = struct {
5050
51 @"3ds",51 @"3ds",
52 wiiu,52 wiiu,
53 @"switch",
5354
54 psx,55 psx,
55 ps3,56 ps3,
...@@ -196,6 +197,7 @@ pub const Os = struct {...@@ -196,6 +197,7 @@ pub const Os = struct {
196197
197 .@"3ds",198 .@"3ds",
198 .wiiu,199 .wiiu,
200 .@"switch",
199201
200 .psp,202 .psp,
201 .vita,203 .vita,
...@@ -632,6 +634,13 @@ pub const Os = struct {...@@ -632,6 +634,13 @@ pub const Os = struct {
632 },634 },
633 },635 },
634636
637 .@"switch" => .{
638 .semver = .{
639 .min = .{ .major = 1, .minor = 0, .patch = 0 },
640 .max = .{ .major = 22, .minor = 5, .patch = 0 },
641 },
642 },
643
635 .psp => .{644 .psp => .{
636 .semver = .{645 .semver = .{
637 // https://www.psdevwiki.com/psp/Official_Firmware_(OFW)#1.XX_Kernel646 // https://www.psdevwiki.com/psp/Official_Firmware_(OFW)#1.XX_Kernel
...@@ -944,6 +953,7 @@ pub const Abi = enum {...@@ -944,6 +953,7 @@ pub const Abi = enum {
944 .tvos,953 .tvos,
945 .visionos,954 .visionos,
946 .watchos,955 .watchos,
956 .@"switch",
947 .ps3,957 .ps3,
948 .ps4,958 .ps4,
949 .ps5,959 .ps5,
...@@ -2040,6 +2050,7 @@ pub const Cpu = struct {...@@ -2040,6 +2050,7 @@ pub const Cpu = struct {
2040 .ios, .tvos => &aarch64.cpu.apple_a7,2050 .ios, .tvos => &aarch64.cpu.apple_a7,
2041 .visionos => &aarch64.cpu.apple_m2,2051 .visionos => &aarch64.cpu.apple_m2,
2042 .watchos => &aarch64.cpu.apple_s4,2052 .watchos => &aarch64.cpu.apple_s4,
2053 .@"switch" => &aarch64.cpu.cortex_a57,
2043 else => generic(arch),2054 else => generic(arch),
2044 },2055 },
2045 .avr => &avr.cpu.avr2,2056 .avr => &avr.cpu.avr2,
...@@ -2271,8 +2282,9 @@ pub fn requiresLibC(target: *const Target) bool {...@@ -2271,8 +2282,9 @@ pub fn requiresLibC(target: *const Target) bool {
2271 .plan9,2282 .plan9,
2272 .other,2283 .other,
2273 .@"3ds",2284 .@"3ds",
2274 .tios,
2275 .wiiu,2285 .wiiu,
2286 .@"switch",
2287 .tios,
2276 .ashetos,2288 .ashetos,
2277 => false,2289 => false,
2278 };2290 };
...@@ -2421,6 +2433,7 @@ pub const DynamicLinker = struct {...@@ -2421,6 +2433,7 @@ pub const DynamicLinker = struct {
24212433
2422 .@"3ds",2434 .@"3ds",
2423 .wiiu,2435 .wiiu,
2436 .@"switch",
24242437
2425 .emscripten,2438 .emscripten,
2426 .wasi,2439 .wasi,
...@@ -2845,6 +2858,7 @@ pub const DynamicLinker = struct {...@@ -2845,6 +2858,7 @@ pub const DynamicLinker = struct {
28452858
2846 .@"3ds",2859 .@"3ds",
2847 .wiiu,2860 .wiiu,
2861 .@"switch",
28482862
2849 .psx,2863 .psx,
2850 .psp,2864 .psp,
...@@ -3410,6 +3424,14 @@ pub fn cTypeBitSize(target: *const Target, c_type: CType) u16 {...@@ -3410,6 +3424,14 @@ pub fn cTypeBitSize(target: *const Target, c_type: CType) u16 {
3410 .longlong, .ulonglong, .double, .longdouble => return 64,3424 .longlong, .ulonglong, .double, .longdouble => return 64,
3411 },3425 },
34123426
3427 .@"switch" => switch (c_type) {
3428 .char => return 8,
3429 .short, .ushort => return 16,
3430 .int, .uint, .float => return 32,
3431 .long, .ulong, .longlong, .ulonglong, .double => return 64,
3432 .longdouble => return 128,
3433 },
3434
3413 .psx => switch (c_type) {3435 .psx => switch (c_type) {
3414 .char => return 8,3436 .char => return 8,
3415 .short, .ushort => return 16,3437 .short, .ushort => return 16,
lib/std/debug.zig+1
...@@ -511,6 +511,7 @@ pub fn defaultPanic(msg: []const u8, first_trace_addr: ?usize) noreturn {...@@ -511,6 +511,7 @@ pub fn defaultPanic(msg: []const u8, first_trace_addr: ?usize) noreturn {
511511
512 .@"3ds",512 .@"3ds",
513 .wiiu,513 .wiiu,
514 .@"switch",
514515
515 .psx,516 .psx,
516 .psp,517 .psp,
lib/std/start.zig+1
...@@ -78,6 +78,7 @@ comptime {...@@ -78,6 +78,7 @@ comptime {
7878
79 .@"3ds",79 .@"3ds",
80 .wiiu,80 .wiiu,
81 .@"switch",
8182
82 .psx,83 .psx,
83 .psp,84 .psp,
src/Compilation.zig+1
...@@ -6196,6 +6196,7 @@ fn addCommonCCArgs(...@@ -6196,6 +6196,7 @@ fn addCommonCCArgs(
6196 // Homebrew targets without LLVM support; use communities's preferred macros.6196 // Homebrew targets without LLVM support; use communities's preferred macros.
6197 .@"3ds" => try argv.append("-D__3DS__"),6197 .@"3ds" => try argv.append("-D__3DS__"),
6198 .wiiu => try argv.append("-D__WIIU__"),6198 .wiiu => try argv.append("-D__WIIU__"),
6199 .@"switch" => try argv.append("-D__SWITCH__"),
6199 .psx => try argv.append("-D__psx__"),6200 .psx => try argv.append("-D__psx__"),
6200 .psp => try argv.append("-D__PSP__"),6201 .psp => try argv.append("-D__PSP__"),
6201 .vita => try argv.append("-D__vita__"),6202 .vita => try argv.append("-D__vita__"),
src/codegen/llvm.zig+2-1
...@@ -239,7 +239,6 @@ pub fn targetTriple(allocator: Allocator, target: *const std.Target) ![]const u8...@@ -239,7 +239,6 @@ pub fn targetTriple(allocator: Allocator, target: *const std.Target) ![]const u8
239 .vulkan => "vulkan",239 .vulkan => "vulkan",
240 .managarm => "managarm",240 .managarm => "managarm",
241241
242 .@"3ds",
243 .contiki,242 .contiki,
244 .freestanding,243 .freestanding,
245 .opencl, // https://llvm.org/docs/SPIRVUsage.html#target-triples244 .opencl, // https://llvm.org/docs/SPIRVUsage.html#target-triples
...@@ -250,7 +249,9 @@ pub fn targetTriple(allocator: Allocator, target: *const std.Target) ![]const u8...@@ -250,7 +249,9 @@ pub fn targetTriple(allocator: Allocator, target: *const std.Target) ![]const u8
250 .psp,249 .psp,
251 .vita,250 .vita,
252 .tios,251 .tios,
252 .@"3ds",
253 .wiiu,253 .wiiu,
254 .@"switch",
254 .ashetos,255 .ashetos,
255 => "unknown",256 => "unknown",
256 };257 };
src/target.zig+7-3
...@@ -62,9 +62,13 @@ pub fn libCxxNeedsLibUnwind(target: *const std.Target) bool {...@@ -62,9 +62,13 @@ pub fn libCxxNeedsLibUnwind(target: *const std.Target) bool {
62}62}
6363
64pub fn requiresPie(target: *const std.Target, link_mode: std.lang.LinkMode) bool {64pub fn requiresPie(target: *const std.Target, link_mode: std.lang.LinkMode) bool {
65 return target.os.tag == .fuchsia or65 return switch (target.os.tag) {
66 (target.abi.isAndroid() and link_mode == .dynamic) or66 .ashetos,
67 target.os.tag == .ashetos;67 .fuchsia,
68 .@"switch",
69 => true,
70 else => target.abi.isAndroid() and link_mode == .dynamic,
71 };
68}72}
6973
70/// This function returns whether non-pic code is completely invalid on the given target.74/// This function returns whether non-pic code is completely invalid on the given target.
test/llvm_targets.zig+1
...@@ -22,6 +22,7 @@ const targets = [_]std.Target.Query{...@@ -22,6 +22,7 @@ const targets = [_]std.Target.Query{
22 .{ .cpu_arch = .aarch64, .os_tag = .openbsd, .abi = .none },22 .{ .cpu_arch = .aarch64, .os_tag = .openbsd, .abi = .none },
23 .{ .cpu_arch = .aarch64, .os_tag = .rtems, .abi = .none },23 .{ .cpu_arch = .aarch64, .os_tag = .rtems, .abi = .none },
24 .{ .cpu_arch = .aarch64, .os_tag = .serenity, .abi = .none },24 .{ .cpu_arch = .aarch64, .os_tag = .serenity, .abi = .none },
25 .{ .cpu_arch = .aarch64, .os_tag = .@"switch", .abi = .none },
25 .{ .cpu_arch = .aarch64, .os_tag = .tvos, .abi = .none },26 .{ .cpu_arch = .aarch64, .os_tag = .tvos, .abi = .none },
26 .{ .cpu_arch = .aarch64, .os_tag = .tvos, .abi = .simulator },27 .{ .cpu_arch = .aarch64, .os_tag = .tvos, .abi = .simulator },
27 .{ .cpu_arch = .aarch64, .os_tag = .uefi, .abi = .none },28 .{ .cpu_arch = .aarch64, .os_tag = .uefi, .abi = .none },