authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-04-22 15:30:58+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-04-22 15:31:56+02:00
log0c796adb87491359dcf56efc75fde763e43b733e
treed7c90f83f4e482e3918459a173ec655b965adb51
parent2f7fd0dd4297e51b553d988f00a7c2b8e51a03e8
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

zig cc: define __CRT__NO_INLINE for MinGW-w64 targets

See added comment for why.

1 files changed, 7 insertions(+), 0 deletions(-)

src/Compilation.zig+7
...@@ -6367,6 +6367,13 @@ fn addCommonCCArgs(...@@ -6367,6 +6367,13 @@ fn addCommonCCArgs(
6367 try argv.append(6367 try argv.append(
6368 try std.fmt.allocPrint(arena, "-D_WIN32_WINNT=0x{x:0>4}", .{minver}),6368 try std.fmt.allocPrint(arena, "-D_WIN32_WINNT=0x{x:0>4}", .{minver}),
6369 );6369 );
6370
6371 // MinGW-w64's inline functions in headers (e.g. `fabs`), which are emitted with `linkonce_odr`
6372 // linkage, sometimes cause duplicate symbol errors due to us providing the same symbols with
6373 // `weak` linkage in compiler-rt or libzigc. So just disable them. Besides, they undermine the
6374 // goal of moving more libc code to Zig, and they're also just kind of unnecessary since LLVM is
6375 // perfectly capable of recognizing and optimizing libcalls.
6376 try argv.append("-D__CRT__NO_INLINE");
6370 } else if (target.isFreeBSDLibC()) {6377 } else if (target.isFreeBSDLibC()) {
6371 // https://docs.freebsd.org/en/books/porters-handbook/versions6378 // https://docs.freebsd.org/en/books/porters-handbook/versions
6372 const min_ver = target.os.version_range.semver.min;6379 const min_ver = target.os.version_range.semver.min;