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 {...@@ -269,19 +269,18 @@ pub const Target = struct {
269 .macos => return switch (arch) {269 .macos => return switch (arch) {
270 .aarch64 => VersionRange{270 .aarch64 => VersionRange{
271 .semver = .{271 .semver = .{
272 .min = .{ .major = 11, .minor = 6 },272 .min = .{ .major = 11, .minor = 6, .patch = 6 },
273 .max = .{ .major = 12, .minor = 0 },273 .max = .{ .major = 12, .minor = 4 },
274 },274 },
275 },275 },
276 .x86_64 => VersionRange{276 .x86_64 => VersionRange{
277 .semver = .{277 .semver = .{
278 .min = .{ .major = 10, .minor = 13 },278 .min = .{ .major = 10, .minor = 15, .patch = 7 },
279 .max = .{ .major = 12, .minor = 0 },279 .max = .{ .major = 12, .minor = 4 },
280 },280 },
281 },281 },
282 else => unreachable,282 else => unreachable,
283 },283 },
284
285 .ios => return .{284 .ios => return .{
286 .semver = .{285 .semver = .{
287 .min = .{ .major = 12, .minor = 0 },286 .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");...@@ -26,6 +26,9 @@ const x86_64_abi = @import("../arch/x86_64/abi.zig");
26const Error = error{ OutOfMemory, CodegenFail };26const Error = error{ OutOfMemory, CodegenFail };
2727
28pub fn targetTriple(allocator: Allocator, target: std.Target) ![:0]u8 {28pub fn targetTriple(allocator: Allocator, target: std.Target) ![:0]u8 {
29 var llvm_triple = std.ArrayList(u8).init(allocator);
30 defer llvm_triple.deinit();
31
29 const llvm_arch = switch (target.cpu.arch) {32 const llvm_arch = switch (target.cpu.arch) {
30 .arm => "arm",33 .arm => "arm",
31 .armeb => "armeb",34 .armeb => "armeb",
...@@ -85,78 +88,64 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![:0]u8 {...@@ -85,78 +88,64 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![:0]u8 {
85 .spirv32 => return error.@"LLVM backend does not support SPIR-V",88 .spirv32 => return error.@"LLVM backend does not support SPIR-V",
86 .spirv64 => return error.@"LLVM backend does not support SPIR-V",89 .spirv64 => return error.@"LLVM backend does not support SPIR-V",
87 };90 };
8891 try llvm_triple.appendSlice(llvm_arch);
89 var arena = std.heap.ArenaAllocator.init(allocator);92 try llvm_triple.appendSlice("-unknown-");
90 defer arena.deinit();93
9194 const llvm_os = switch (target.os.tag) {
92 const llvm_os = blk: {95 .freestanding => "unknown",
93 if (target.os.tag.isDarwin()) {96 .ananas => "ananas",
94 const min_version = target.os.version_range.semver.min;97 .cloudabi => "cloudabi",
95 const llvm_os = switch (target.os.tag) {98 .dragonfly => "dragonfly",
96 .macos => "macosx",99 .freebsd => "freebsd",
97 .ios => "ios",100 .fuchsia => "fuchsia",
98 .tvos => "tvos",101 .kfreebsd => "kfreebsd",
99 .watchos => "watchos",102 .linux => "linux",
100 else => unreachable,103 .lv2 => "lv2",
101 };104 .netbsd => "netbsd",
102 break :blk try std.fmt.allocPrintZ(arena.allocator(), "{s}{d}.{d}.{d}", .{105 .openbsd => "openbsd",
103 llvm_os,106 .solaris => "solaris",
104 min_version.major,107 .windows => "windows",
105 min_version.minor,108 .zos => "zos",
106 min_version.patch,109 .haiku => "haiku",
107 });110 .minix => "minix",
108 }111 .rtems => "rtems",
109112 .nacl => "nacl",
110 const llvm_os = switch (target.os.tag) {113 .aix => "aix",
111 .freestanding => "unknown",114 .cuda => "cuda",
112 .ananas => "ananas",115 .nvcl => "nvcl",
113 .cloudabi => "cloudabi",116 .amdhsa => "amdhsa",
114 .dragonfly => "dragonfly",117 .ps4 => "ps4",
115 .freebsd => "freebsd",118 .elfiamcu => "elfiamcu",
116 .fuchsia => "fuchsia",119 .mesa3d => "mesa3d",
117 .kfreebsd => "kfreebsd",120 .contiki => "contiki",
118 .linux => "linux",121 .amdpal => "amdpal",
119 .lv2 => "lv2",122 .hermit => "hermit",
120 .netbsd => "netbsd",123 .hurd => "hurd",
121 .openbsd => "openbsd",124 .wasi => "wasi",
122 .solaris => "solaris",125 .emscripten => "emscripten",
123 .windows => "windows",126 .uefi => "windows",
124 .zos => "zos",127 .macos => "macosx",
125 .haiku => "haiku",128 .ios => "ios",
126 .minix => "minix",129 .tvos => "tvos",
127 .rtems => "rtems",130 .watchos => "watchos",
128 .nacl => "nacl",131 .opencl,
129 .aix => "aix",132 .glsl450,
130 .cuda => "cuda",133 .vulkan,
131 .nvcl => "nvcl",134 .plan9,
132 .amdhsa => "amdhsa",135 .other,
133 .ps4 => "ps4",136 => "unknown",
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;
159 };137 };
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
161 const llvm_abi = switch (target.abi) {150 const llvm_abi = switch (target.abi) {
162 .none => "unknown",151 .none => "unknown",
...@@ -182,8 +171,9 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![:0]u8 {...@@ -182,8 +171,9 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![:0]u8 {
182 .simulator => "simulator",171 .simulator => "simulator",
183 .macabi => "macabi",172 .macabi => "macabi",
184 };173 };
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);
187}177}
188178
189pub const Object = struct {179pub const Object = struct {