From 6d48357cc79a8c6b626cba7152165dfe2d3674d3 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 7 Dec 2022 01:50:49 -0800 Subject: [PATCH] build.zig: on windows always link llvm-required system libs When building with LLVM, always do -lole32 -lversion -luuid even when using the cmake-provided build stuff. Otherwise we get undefined symbols when linking. --- build.zig | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/build.zig b/build.zig index b452885827..bcc50ea9fa 100644 --- a/build.zig +++ b/build.zig @@ -280,6 +280,13 @@ pub fn build(b: *Builder) !void { try addStaticLlvmOptionsToExe(exe); try addStaticLlvmOptionsToExe(test_cases); } + if (target.isWindows()) { + inline for (.{ exe, test_cases }) |artifact| { + artifact.linkSystemLibrary("version"); + artifact.linkSystemLibrary("uuid"); + artifact.linkSystemLibrary("ole32"); + } + } } const semver = try std.SemanticVersion.parse(version); @@ -614,12 +621,6 @@ fn addStaticLlvmOptionsToExe(exe: *std.build.LibExeObjStep) !void { // This means we rely on clang-or-zig-built LLVM, Clang, LLD libraries. exe.linkSystemLibrary("c++"); - - if (exe.target.getOs().tag == .windows) { - exe.linkSystemLibrary("version"); - exe.linkSystemLibrary("uuid"); - exe.linkSystemLibrary("ole32"); - } } fn addCxxKnownPath(