From c5395f7cd948f02ada095515b9d6824cbbac4f22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Wed, 30 Oct 2024 11:05:18 +0100 Subject: [PATCH] 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. --- src/codegen/llvm.zig | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 682b96d31a..2dcb1c3907 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -239,13 +239,20 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 { }; try llvm_triple.appendSlice(llvm_os); - if (target.os.tag.isDarwin()) { - const min_version = target.os.version_range.semver.min; - try llvm_triple.writer().print("{d}.{d}.{d}", .{ - min_version.major, - min_version.minor, - min_version.patch, - }); + switch (target.os.versionRange()) { + .none, + .windows, + => {}, + .semver => |ver| try llvm_triple.writer().print("{d}.{d}.{d}", .{ + ver.min.major, + ver.min.minor, + ver.min.patch, + }), + .linux => |ver| try llvm_triple.writer().print("{d}.{d}.{d}", .{ + ver.range.min.major, + ver.range.min.minor, + ver.range.min.patch, + }), } try llvm_triple.append('-'); @@ -279,6 +286,19 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 { }; try llvm_triple.appendSlice(llvm_abi); + // This should eventually handle the Android API level too. + switch (target.os.versionRange()) { + .none, + .semver, + .windows, + => {}, + .linux => |ver| if (target.abi.isGnu()) try llvm_triple.writer().print("{d}.{d}.{d}", .{ + ver.glibc.major, + ver.glibc.minor, + ver.glibc.patch, + }), + } + return llvm_triple.toOwnedSlice(); }