Commit 221bd829bc
Changed files (1)
lib
std
lib/std/Target.zig
@@ -701,50 +701,111 @@ pub const Abi = enum {
pub fn default(arch: Cpu.Arch, os: Os) Abi {
return if (arch.isWasm()) .musl else switch (os.tag) {
.freestanding,
- .dragonfly,
- .ps3,
- .zos,
- .rtems,
- .aix,
- .cuda,
- .nvcl,
- .amdhsa,
- .ps4,
- .ps5,
- .elfiamcu,
- .mesa3d,
- .contiki,
- .amdpal,
- .hermit,
.other,
- => .eabi,
- .openbsd,
- .freebsd,
- .fuchsia,
- .netbsd,
- .hurd,
- .haiku,
- .windows,
- => .gnu,
- .uefi => .msvc,
+ => switch (arch) {
+ // Soft float is usually a sane default for freestanding.
+ .arm,
+ .armeb,
+ .thumb,
+ .thumbeb,
+ .csky,
+ .mips,
+ .mipsel,
+ .powerpc,
+ .powerpcle,
+ => .eabi,
+ else => .none,
+ },
+ .aix,
+ => if (arch == .powerpc) .eabihf else .none,
.linux,
.wasi,
.emscripten,
=> .musl,
- .bridgeos,
- .opencl,
- .opengl,
- .vulkan,
- .plan9, // TODO specify abi
- .macos,
+ .rtems,
+ => switch (arch) {
+ .arm,
+ .armeb,
+ .thumb,
+ .thumbeb,
+ .mips,
+ .mipsel,
+ => .eabi,
+ .powerpc,
+ => .eabihf,
+ else => .none,
+ },
+ .hurd,
+ .windows,
+ => .gnu,
+ .freebsd,
+ => switch (arch) {
+ .arm,
+ .armeb,
+ .thumb,
+ .thumbeb,
+ .powerpc,
+ => .eabihf,
+ .mips,
+ .mipsel,
+ => .eabi,
+ else => .none,
+ },
+ .netbsd,
+ => switch (arch) {
+ .arm,
+ .armeb,
+ .thumb,
+ .thumbeb,
+ .powerpc,
+ => .eabihf,
+ .mips,
+ .mipsel,
+ => .eabi,
+ else => .none,
+ },
+ .openbsd,
+ => switch (arch) {
+ .arm,
+ .thumb,
+ => .eabi,
+ .powerpc,
+ => .eabihf,
+ else => .none,
+ },
.ios,
+ => if (arch == .x86_64) .macabi else .none,
.tvos,
- .watchos,
.visionos,
+ => if (arch == .x86_64) .simulator else .none,
+ .uefi,
+ => .msvc,
+ .contiki,
+ .elfiamcu,
+ .fuchsia,
+ .hermit,
+ .haiku,
+ .plan9,
+ .serenity,
+ .zos,
+ .dragonfly,
+ .bridgeos,
.driverkit,
- .solaris,
+ .macos,
+ .watchos,
.illumos,
- .serenity,
+ .solaris,
+ .ps3,
+ .ps4,
+ .ps5,
+ .amdhsa,
+ .amdpal,
+ .cuda,
+ .mesa3d,
+ .nvcl,
+ .opencl,
+ .opengl,
+ .vulkan,
=> .none,
};
}