From 2ed5940216664f26135f5e991c467e6473b3f1c8 Mon Sep 17 00:00:00 2001 From: Phil Krylov Date: Sat, 11 Nov 2023 19:59:23 +0100 Subject: [PATCH] 2023-11-11 19:42 UTC+0100 Phil Krylov (phil a t krylov.eu) (#333) 2023-11-11 19:42 UTC+0100 Phil Krylov (phil a t krylov.eu) * config/win/mingw.mk * utils/hbmk2/hbmk2.prg ! Use -D__USE_MINGW_ANSI_STDIO=0 to opt out of C99 printf emulation on MinGW-W64 10.0+. --- ChangeLog.txt | 6 ++++++ config/win/mingw.mk | 7 +++++++ utils/hbmk2/hbmk2.prg | 8 ++++++++ 3 files changed, 21 insertions(+) diff --git a/ChangeLog.txt b/ChangeLog.txt index 6780430bee..0a49ec3cdd 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -7,6 +7,12 @@ Entries may not always be in chronological/commit order. See license at the end of file. */ +2023-11-11 19:42 UTC+0100 Phil Krylov (phil a t krylov.eu) + * config/win/mingw.mk + * utils/hbmk2/hbmk2.prg + ! Use -D__USE_MINGW_ANSI_STDIO=0 to opt out of C99 printf emulation on + MinGW-W64 10.0+. + 2023-11-11 18:38 UTC+0100 Phil Krylov (phil a t krylov.eu) * include/hbwinuni.h * src/vm/maindllp/dllpcode.c diff --git a/config/win/mingw.mk b/config/win/mingw.mk index 74f7a3320b..981c5a8ff2 100644 --- a/config/win/mingw.mk +++ b/config/win/mingw.mk @@ -78,6 +78,13 @@ ifeq ($(HB_BUILD_DEBUG),yes) CFLAGS += -g endif +ifeq ($(HB_COMPILER),mingw64) + # Newer MinGW-W64 versions (10+, IIRC) need this to opt out of C99 format + # string emulation and keep our format strings compatible among the + # different Windows compilers + CFLAGS += -D__USE_MINGW_ANSI_STDIO=0 +endif + RC := $(HB_CCPATH)$(HB_CCPREFIX)windres RC_OUT := -o$(subst x,x, ) RCFLAGS += -I. -I$(HB_HOST_INC) -O coff diff --git a/utils/hbmk2/hbmk2.prg b/utils/hbmk2/hbmk2.prg index cc66cc6f52..80677968a1 100644 --- a/utils/hbmk2/hbmk2.prg +++ b/utils/hbmk2/hbmk2.prg @@ -4385,6 +4385,14 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit EXIT CASE _WARN_NO ; AAdd( hbmk[ _HBMK_aOPTC ], "-w" ) ; EXIT ENDSWITCH + + IF hbmk[ _HBMK_cCOMP ] == "mingw64" + // Newer MinGW-W64 versions (10+, IIRC) need this to opt out of C99 format + // string emulation and keep our format strings compatible among the + // different Windows compilers + cOpt_CompC += " -D__USE_MINGW_ANSI_STDIO=0" + ENDIF + IF hbmk[ _HBMK_lHARDEN ] IF hbmk[ _HBMK_cPLAT ] == "win" /* It is also supported by official mingw 4.4.x and mingw64 4.4.x,