zig cc: define __CRT__NO_INLINE for MinGW-w64 targets

See added comment for why.
This commit is contained in:
Alex Rønne Petersen
2026-04-22 15:30:58 +02:00
parent 0a9c4008fd
commit 47848ba3d6
+7
View File
@@ -6362,6 +6362,13 @@ fn addCommonCCArgs(
try argv.append(
try std.fmt.allocPrint(arena, "-D_WIN32_WINNT=0x{x:0>4}", .{minver}),
);
// MinGW-w64's inline functions in headers (e.g. `fabs`), which are emitted with `linkonce_odr`
// linkage, sometimes cause duplicate symbol errors due to us providing the same symbols with
// `weak` linkage in compiler-rt or libzigc. So just disable them. Besides, they undermine the
// goal of moving more libc code to Zig, and they're also just kind of unnecessary since LLVM is
// perfectly capable of recognizing and optimizing libcalls.
try argv.append("-D__CRT__NO_INLINE");
} else if (target.isFreeBSDLibC()) {
// https://docs.freebsd.org/en/books/porters-handbook/versions
const min_ver = target.os.version_range.semver.min;