diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2022-05-15 17:56:51 +0200 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2022-05-22 17:45:07 +0200 |
| commit | f8a1a2c4a18a2a5f274029c4c59f3a8e83f36b6b (patch) | |
| tree | 67541059c1b35597907ab5ce14729d42b849a0bb /src/codegen/llvm.zig | |
| parent | 5b813f1a2acdc1668e39008b02a234f3da724552 (diff) | |
| download | zig-f8a1a2c4a18a2a5f274029c4c59f3a8e83f36b6b.tar.gz zig-f8a1a2c4a18a2a5f274029c4c59f3a8e83f36b6b.zip | |
stage2: append min version to target triple when lowering to LLVM
Diffstat (limited to 'src/codegen/llvm.zig')
| -rw-r--r-- | src/codegen/llvm.zig | 111 |
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) { |
