zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 47848ba3d619f7bf64adff10933176f6296d1552 (tree)
parent 0a9c4008fd66dd85accb6e5e862849a26500c6ec
Author: Alex Rønne Petersen <alex@alexrp.com>
Date:   Wed, 22 Apr 2026 15:30:58 +0200

zig cc: define __CRT__NO_INLINE for MinGW-w64 targets

See added comment for why.

Diffstat:
Msrc/Compilation.zig | 7+++++++
1 file changed, 7 insertions(+), 0 deletions(-)

diff --git a/src/Compilation.zig b/src/Compilation.zig @@ -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;