Skip to content

Commit 5a6f00d

Browse files
committed
llvm: Set OS min version and libc version in ~all cases.
Except Windows, because that just doesn't really fit into LLVM's target triple format currently.
1 parent 892c212 commit 5a6f00d

File tree

1 file changed

+27
-7
lines changed

1 file changed

+27
-7
lines changed

src/codegen/llvm.zig

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -239,13 +239,20 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 {
239239
};
240240
try llvm_triple.appendSlice(llvm_os);
241241

242-
if (target.os.tag.isDarwin()) {
243-
const min_version = target.os.version_range.semver.min;
244-
try llvm_triple.writer().print("{d}.{d}.{d}", .{
245-
min_version.major,
246-
min_version.minor,
247-
min_version.patch,
248-
});
242+
switch (target.os.versionRange()) {
243+
.none,
244+
.windows,
245+
=> {},
246+
.semver => |ver| try llvm_triple.writer().print("{d}.{d}.{d}", .{
247+
ver.min.major,
248+
ver.min.minor,
249+
ver.min.patch,
250+
}),
251+
.linux => |ver| try llvm_triple.writer().print("{d}.{d}.{d}", .{
252+
ver.range.min.major,
253+
ver.range.min.minor,
254+
ver.range.min.patch,
255+
}),
249256
}
250257
try llvm_triple.append('-');
251258

@@ -279,6 +286,19 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 {
279286
};
280287
try llvm_triple.appendSlice(llvm_abi);
281288

289+
// This should eventually handle the Android API level too.
290+
switch (target.os.versionRange()) {
291+
.none,
292+
.semver,
293+
.windows,
294+
=> {},
295+
.linux => |ver| if (target.abi.isGnu()) try llvm_triple.writer().print("{d}.{d}.{d}", .{
296+
ver.glibc.major,
297+
ver.glibc.minor,
298+
ver.glibc.patch,
299+
}),
300+
}
301+
282302
return llvm_triple.toOwnedSlice();
283303
}
284304

0 commit comments

Comments
 (0)