authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-05-22 11:30:52+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-05-22 22:31:41+02:00
logcbefd354a662800c5bc662773146ce978631f717
tree1f5bf963940028b12f347f3851dedb2517b7d79c
parente306d04473818ac8b58779aa1ff20b12edb8e94a

Bump support macOS versions; clean up allocs in llvm.targetTriple


2 files changed, 66 insertions(+), 77 deletions(-)

lib/std/target.zig+4-5
......@@ -269,19 +269,18 @@ pub const Target = struct {
269269 .macos => return switch (arch) {
270270 .aarch64 => VersionRange{
271271 .semver = .{
272 .min = .{ .major = 11, .minor = 6 },
273 .max = .{ .major = 12, .minor = 0 },
272 .min = .{ .major = 11, .minor = 6, .patch = 6 },
273 .max = .{ .major = 12, .minor = 4 },
274274 },
275275 },
276276 .x86_64 => VersionRange{
277277 .semver = .{
278 .min = .{ .major = 10, .minor = 13 },
279 .max = .{ .major = 12, .minor = 0 },
278 .min = .{ .major = 10, .minor = 15, .patch = 7 },
279 .max = .{ .major = 12, .minor = 4 },
280280 },
281281 },
282282 else => unreachable,
283283 },
284
285284 .ios => return .{
286285 .semver = .{
287286 .min = .{ .major = 12, .minor = 0 },
src/codegen/llvm.zig+62-72
......@@ -26,6 +26,9 @@ const x86_64_abi = @import("../arch/x86_64/abi.zig");
2626const Error = error{ OutOfMemory, CodegenFail };
2727
2828pub fn targetTriple(allocator: Allocator, target: std.Target) ![:0]u8 {
29 var llvm_triple = std.ArrayList(u8).init(allocator);
30 defer llvm_triple.deinit();
31
2932 const llvm_arch = switch (target.cpu.arch) {
3033 .arm => "arm",
3134 .armeb => "armeb",
......@@ -85,78 +88,64 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![:0]u8 {
8588 .spirv32 => return error.@"LLVM backend does not support SPIR-V",
8689 .spirv64 => return error.@"LLVM backend does not support SPIR-V",
8790 };
88
89 var arena = std.heap.ArenaAllocator.init(allocator);
90 defer arena.deinit();
91
92 const llvm_os = blk: {
93 if (target.os.tag.isDarwin()) {
94 const min_version = target.os.version_range.semver.min;
95 const llvm_os = switch (target.os.tag) {
96 .macos => "macosx",
97 .ios => "ios",
98 .tvos => "tvos",
99 .watchos => "watchos",
100 else => unreachable,
101 };
102 break :blk try std.fmt.allocPrintZ(arena.allocator(), "{s}{d}.{d}.{d}", .{
103 llvm_os,
104 min_version.major,
105 min_version.minor,
106 min_version.patch,
107 });
108 }
109
110 const llvm_os = switch (target.os.tag) {
111 .freestanding => "unknown",
112 .ananas => "ananas",
113 .cloudabi => "cloudabi",
114 .dragonfly => "dragonfly",
115 .freebsd => "freebsd",
116 .fuchsia => "fuchsia",
117 .kfreebsd => "kfreebsd",
118 .linux => "linux",
119 .lv2 => "lv2",
120 .netbsd => "netbsd",
121 .openbsd => "openbsd",
122 .solaris => "solaris",
123 .windows => "windows",
124 .zos => "zos",
125 .haiku => "haiku",
126 .minix => "minix",
127 .rtems => "rtems",
128 .nacl => "nacl",
129 .aix => "aix",
130 .cuda => "cuda",
131 .nvcl => "nvcl",
132 .amdhsa => "amdhsa",
133 .ps4 => "ps4",
134 .elfiamcu => "elfiamcu",
135 .mesa3d => "mesa3d",
136 .contiki => "contiki",
137 .amdpal => "amdpal",
138 .hermit => "hermit",
139 .hurd => "hurd",
140 .wasi => "wasi",
141 .emscripten => "emscripten",
142 .uefi => "windows",
143
144 .opencl,
145 .glsl450,
146 .vulkan,
147 .plan9,
148 .other,
149 => "unknown",
150
151 .macos,
152 .ios,
153 .tvos,
154 .watchos,
155 => unreachable,
156 };
157
158 break :blk llvm_os;
91 try llvm_triple.appendSlice(llvm_arch);
92 try llvm_triple.appendSlice("-unknown-");
93
94 const llvm_os = switch (target.os.tag) {
95 .freestanding => "unknown",
96 .ananas => "ananas",
97 .cloudabi => "cloudabi",
98 .dragonfly => "dragonfly",
99 .freebsd => "freebsd",
100 .fuchsia => "fuchsia",
101 .kfreebsd => "kfreebsd",
102 .linux => "linux",
103 .lv2 => "lv2",
104 .netbsd => "netbsd",
105 .openbsd => "openbsd",
106 .solaris => "solaris",
107 .windows => "windows",
108 .zos => "zos",
109 .haiku => "haiku",
110 .minix => "minix",
111 .rtems => "rtems",
112 .nacl => "nacl",
113 .aix => "aix",
114 .cuda => "cuda",
115 .nvcl => "nvcl",
116 .amdhsa => "amdhsa",
117 .ps4 => "ps4",
118 .elfiamcu => "elfiamcu",
119 .mesa3d => "mesa3d",
120 .contiki => "contiki",
121 .amdpal => "amdpal",
122 .hermit => "hermit",
123 .hurd => "hurd",
124 .wasi => "wasi",
125 .emscripten => "emscripten",
126 .uefi => "windows",
127 .macos => "macosx",
128 .ios => "ios",
129 .tvos => "tvos",
130 .watchos => "watchos",
131 .opencl,
132 .glsl450,
133 .vulkan,
134 .plan9,
135 .other,
136 => "unknown",
159137 };
138 try llvm_triple.appendSlice(llvm_os);
139
140 if (target.os.tag.isDarwin()) {
141 const min_version = target.os.version_range.semver.min;
142 try llvm_triple.writer().print("{d}.{d}.{d}", .{
143 min_version.major,
144 min_version.minor,
145 min_version.patch,
146 });
147 }
148 try llvm_triple.append('-');
160149
161150 const llvm_abi = switch (target.abi) {
162151 .none => "unknown",
......@@ -182,8 +171,9 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![:0]u8 {
182171 .simulator => "simulator",
183172 .macabi => "macabi",
184173 };
174 try llvm_triple.appendSlice(llvm_abi);
185175
186 return std.fmt.allocPrintZ(allocator, "{s}-unknown-{s}-{s}", .{ llvm_arch, llvm_os, llvm_abi });
176 return llvm_triple.toOwnedSliceSentinel(0);
187177}
188178
189179pub const Object = struct {