aboutsummaryrefslogtreecommitdiff
path: root/src/codegen
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2022-05-15 17:56:51 +0200
committerJakub Konka <kubkon@jakubkonka.com>2022-05-22 17:45:07 +0200
commitf8a1a2c4a18a2a5f274029c4c59f3a8e83f36b6b (patch)
tree67541059c1b35597907ab5ce14729d42b849a0bb /src/codegen
parent5b813f1a2acdc1668e39008b02a234f3da724552 (diff)
downloadzig-f8a1a2c4a18a2a5f274029c4c59f3a8e83f36b6b.tar.gz
zig-f8a1a2c4a18a2a5f274029c4c59f3a8e83f36b6b.zip
stage2: append min version to target triple when lowering to LLVM
Diffstat (limited to 'src/codegen')
-rw-r--r--src/codegen/llvm.zig111
1 files changed, 67 insertions, 44 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig
index b9c8e5437f..5f071af017 100644
--- a/src/codegen/llvm.zig
+++ b/src/codegen/llvm.zig
@@ -86,50 +86,73 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![:0]u8 {
.spirv64 => return error.@"LLVM backend does not support SPIR-V",
};
- const llvm_os = switch (target.os.tag) {
- .freestanding => "unknown",
- .ananas => "ananas",
- .cloudabi => "cloudabi",
- .dragonfly => "dragonfly",
- .freebsd => "freebsd",
- .fuchsia => "fuchsia",
- .ios => "ios",
- .kfreebsd => "kfreebsd",
- .linux => "linux",
- .lv2 => "lv2",
- .macos => "macosx",
- .netbsd => "netbsd",
- .openbsd => "openbsd",
- .solaris => "solaris",
- .windows => "windows",
- .zos => "zos",
- .haiku => "haiku",
- .minix => "minix",
- .rtems => "rtems",
- .nacl => "nacl",
- .aix => "aix",
- .cuda => "cuda",
- .nvcl => "nvcl",
- .amdhsa => "amdhsa",
- .ps4 => "ps4",
- .elfiamcu => "elfiamcu",
- .tvos => "tvos",
- .watchos => "watchos",
- .mesa3d => "mesa3d",
- .contiki => "contiki",
- .amdpal => "amdpal",
- .hermit => "hermit",
- .hurd => "hurd",
- .wasi => "wasi",
- .emscripten => "emscripten",
- .uefi => "windows",
-
- .opencl,
- .glsl450,
- .vulkan,
- .plan9,
- .other,
- => "unknown",
+ const llvm_os = blk: {
+ if (target.os.tag.isDarwin()) {
+ const min_version = target.os.version_range.semver.min;
+ const llvm_os = switch (target.os.tag) {
+ .macos => "macosx",
+ .ios => "ios",
+ .tvos => "tvos",
+ .watchos => "watchos",
+ else => unreachable,
+ };
+ break :blk try std.fmt.allocPrintZ(allocator, "{s}{d}.{d}.{d}", .{
+ llvm_os,
+ min_version.major,
+ min_version.minor,
+ min_version.patch,
+ });
+ }
+
+ const llvm_os = switch (target.os.tag) {
+ .freestanding => "unknown",
+ .ananas => "ananas",
+ .cloudabi => "cloudabi",
+ .dragonfly => "dragonfly",
+ .freebsd => "freebsd",
+ .fuchsia => "fuchsia",
+ .kfreebsd => "kfreebsd",
+ .linux => "linux",
+ .lv2 => "lv2",
+ .netbsd => "netbsd",
+ .openbsd => "openbsd",
+ .solaris => "solaris",
+ .windows => "windows",
+ .zos => "zos",
+ .haiku => "haiku",
+ .minix => "minix",
+ .rtems => "rtems",
+ .nacl => "nacl",
+ .aix => "aix",
+ .cuda => "cuda",
+ .nvcl => "nvcl",
+ .amdhsa => "amdhsa",
+ .ps4 => "ps4",
+ .elfiamcu => "elfiamcu",
+ .mesa3d => "mesa3d",
+ .contiki => "contiki",
+ .amdpal => "amdpal",
+ .hermit => "hermit",
+ .hurd => "hurd",
+ .wasi => "wasi",
+ .emscripten => "emscripten",
+ .uefi => "windows",
+
+ .opencl,
+ .glsl450,
+ .vulkan,
+ .plan9,
+ .other,
+ => "unknown",
+
+ .macos,
+ .ios,
+ .tvos,
+ .watchos,
+ => unreachable,
+ };
+
+ break :blk llvm_os;
};
const llvm_abi = switch (target.abi) {