diff --git a/lib/std/Build/Configuration.zig b/lib/std/Build/Configuration.zig index f0337507418a420489755e6eebf4607bbe19054c..1e85120d02dc488d40860e01cfcf9e56ae5ec57c 100644 --- a/lib/std/Build/Configuration.zig +++ b/lib/std/Build/Configuration.zig @@ -2401,6 +2401,7 @@ pub const TargetQuery = struct { @"3ds", wiiu, @"switch", + gba, psx, ps3, ps4, diff --git a/lib/std/Target.zig b/lib/std/Target.zig index b28ebd50ecaf35a117a5a84c5fc2a4cc4a81e086..f73d6d4f80ee092a2918e1b44eeecdabf322c5e8 100644 --- a/lib/std/Target.zig +++ b/lib/std/Target.zig @@ -51,6 +51,7 @@ pub const Os = struct { @"3ds", wiiu, @"switch", + gba, psx, ps3, @@ -167,6 +168,7 @@ pub const Os = struct { .ps3, .ps4, .ps5, + .gba, .emscripten, @@ -407,6 +409,7 @@ pub const Os = struct { .ps3, .ps4, .ps5, + .gba, .emscripten, @@ -933,6 +936,7 @@ pub const Abi = enum { .uefi => .msvc, .@"3ds" => .eabihf, .wiiu => .eabihf, + .gba => .eabi, .psx => .eabi, .psp => .eabihf, .vita => .eabihf, @@ -2071,10 +2075,12 @@ pub const Cpu = struct { .arm => switch (os.tag) { .@"3ds" => &arm.cpu.mpcore, .vita => &arm.cpu.cortex_a9, + .gba => &arm.cpu.arm7tdmi, else => &arm.cpu.baseline, }, .thumb => switch (os.tag) { .vita => &arm.cpu.cortex_a9, + .gba => &arm.cpu.arm7tdmi, else => &arm.cpu.baseline, }, .armeb, .thumbeb => &arm.cpu.baseline, @@ -2306,6 +2312,7 @@ pub fn requiresLibC(target: *const Target) bool { .ps3, .ps4, .ps5, + .gba, .psp, .vita, .mesa3d, @@ -2474,6 +2481,7 @@ pub const DynamicLinker = struct { .@"3ds", .wiiu, .@"switch", + .gba, .emscripten, .wasi, @@ -2913,6 +2921,7 @@ pub const DynamicLinker = struct { .@"3ds", .wiiu, .@"switch", + .gba, .psx, .psp, @@ -3492,6 +3501,13 @@ pub fn cTypeBitSize(target: *const Target, c_type: CType) ?u16 { .longdouble => return 128, }, + .gba => switch (c_type) { + .char => return 8, + .short, .ushort => return 16, + .int, .uint, .long, .ulong, .float => return 32, + .longlong, .ulonglong, .double, .longdouble => return 64, + }, + .psx => switch (c_type) { .char => return 8, .short, .ushort => return 16, diff --git a/lib/std/debug.zig b/lib/std/debug.zig index ca1bf3f6edf8a79fb2459fe481f311ec7f50c4b1..a855098e0010a76e97b2eb13a063291233c75b0e 100644 --- a/lib/std/debug.zig +++ b/lib/std/debug.zig @@ -520,6 +520,7 @@ pub fn defaultPanic(msg: []const u8, first_trace_addr: ?usize) noreturn { .@"3ds", .wiiu, .@"switch", + .gba, .psx, .psp, diff --git a/lib/std/start.zig b/lib/std/start.zig index 228b51e08ef9cd2b0eaaa8d8f5e974e1613076d7..28b997fd7ee2bd7d49034d189b638a5d8cd5f69b 100644 --- a/lib/std/start.zig +++ b/lib/std/start.zig @@ -79,6 +79,7 @@ comptime { .@"3ds", .wiiu, .@"switch", + .gba, .psx, .psp, diff --git a/lib/std/zig/llvm/Builder.zig b/lib/std/zig/llvm/Builder.zig index 34e1bf7e6fe3c2644cb2b79449ba276aae9c6a58..beb2ce7ae966ede2b9fdfa48bb5e24163ac36619 100644 --- a/lib/std/zig/llvm/Builder.zig +++ b/lib/std/zig/llvm/Builder.zig @@ -295,6 +295,7 @@ pub fn tripleForTarget(allocator: Allocator, target: *const std.Target) ![]const .@"3ds", .wiiu, .@"switch", + .gba, .ashetos, => "unknown", }; diff --git a/src/Compilation.zig b/src/Compilation.zig index e641eaa0e4c670a116b0689ea08ec5dd0cf7cdf8..d4d24e6640efd31032146b245c7a2bce64ba1fc1 100644 --- a/src/Compilation.zig +++ b/src/Compilation.zig @@ -6297,6 +6297,7 @@ fn addCommonCCArgs( .@"3ds" => try argv.append("-D__3DS__"), .wiiu => try argv.append("-D__WIIU__"), .@"switch" => try argv.append("-D__SWITCH__"), + .gba => try argv.append("-D__GBA__"), .psx => try argv.append("-D__psx__"), .psp => try argv.append("-D__PSP__"), .vita => try argv.append("-D__vita__"), diff --git a/test/llvm_targets.zig b/test/llvm_targets.zig index 101c56df41624bd92404ddcb47c390eceeacc8e0..38c5040e1d06ea158046c1db75711de4cf27e2b9 100644 --- a/test/llvm_targets.zig +++ b/test/llvm_targets.zig @@ -54,6 +54,7 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .arm, .os_tag = .freestanding, .abi = .eabi }, .{ .cpu_arch = .arm, .os_tag = .freestanding, .abi = .eabihf }, .{ .cpu_arch = .arm, .os_tag = .fuchsia, .abi = .eabihf }, + .{ .cpu_arch = .arm, .os_tag = .gba, .abi = .eabi }, .{ .cpu_arch = .arm, .os_tag = .haiku, .abi = .eabihf }, .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .androideabi }, .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .eabi }, @@ -263,6 +264,7 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .thumb, .os_tag = .freestanding, .abi = .eabi }, .{ .cpu_arch = .thumb, .os_tag = .freestanding, .abi = .eabihf }, .{ .cpu_arch = .thumb, .os_tag = .fuchsia, .abi = .eabihf }, + .{ .cpu_arch = .thumb, .os_tag = .gba, .abi = .eabi }, .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .eabi }, .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .eabihf }, .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .musleabi },