Skip to content
Snippets Groups Projects
  • LIU Hao's avatar
    902c7559
    Always define `WIN32_LEAN_AND_MEAN` before <windows.h> · 902c7559
    LIU Hao authored
    Recently, mingw-w64 has got updated <msxml.h> from Wine which is included
    indirectly by <windows.h> if `WIN32_LEAN_AND_MEAN` is not defined. The
    `IXMLDOMDocument` class has a member function named `abort()`, which gets
    affected by our `abort()` macro in "system.h".
    
    `WIN32_LEAN_AND_MEAN` should, nevertheless, always be defined. This
    can exclude 'APIs such as Cryptography, DDE, RPC, Shell, and Windows
    Sockets' [1], and speed up compilation of these files a bit.
    
    [1] https://learn.microsoft.com/en-us/windows/win32/winprog/using-the-windows-headers
    
    gcc/
    
    	PR middle-end/108300
    	* config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
    	before <windows.h>.
    	* diagnostic-color.cc: Likewise.
    	* plugin.cc: Likewise.
    	* prefix.cc: Likewise.
    
    gcc/ada/
    
    	PR middle-end/108300
    	* adaint.c: Define `WIN32_LEAN_AND_MEAN` before `#include
    	<windows.h>`.
    	* cio.c: Likewise.
    	* ctrl_c.c: Likewise.
    	* expect.c: Likewise.
    	* gsocket.h: Likewise.
    	* mingw32.h: Likewise.
    	* mkdir.c: Likewise.
    	* rtfinal.c: Likewise.
    	* rtinit.c: Likewise.
    	* seh_init.c: Likewise.
    	* sysdep.c: Likewise.
    	* terminals.c: Likewise.
    	* tracebak.c: Likewise.
    
    gcc/jit/
    
    	PR middle-end/108300
    	* jit-w32.h: Define `WIN32_LEAN_AND_MEAN` before <windows.h>.
    
    libatomic/
    
    	PR middle-end/108300
    	* config/mingw/lock.c: Define `WIN32_LEAN_AND_MEAN` before
    	<windows.h>.
    
    libffi/
    
    	PR middle-end/108300
    	* src/aarch64/ffi.c: Define `WIN32_LEAN_AND_MEAN` before
    	<windows.h>.
    
    libgcc/
    
    	PR middle-end/108300
    	* config/i386/enable-execute-stack-mingw32.c: Define
    	`WIN32_LEAN_AND_MEAN` before <windows.h>.
    	* libgcc2.c: Likewise.
    	* unwind-generic.h: Likewise.
    
    libgfortran/
    
    	PR middle-end/108300
    	* intrinsics/sleep.c: Define `WIN32_LEAN_AND_MEAN` before
    	<windows.h>.
    
    libgomp/
    
    	PR middle-end/108300
    	* config/mingw32/proc.c: Define `WIN32_LEAN_AND_MEAN` before
    	<windows.h>.
    
    libiberty/
    
    	PR middle-end/108300
    	* make-temp-file.c: Define `WIN32_LEAN_AND_MEAN` before <windows.h>.
    	* pex-win32.c: Likewise.
    
    libssp/
    
    	PR middle-end/108300
    	* ssp.c: Define `WIN32_LEAN_AND_MEAN` before <windows.h>.
    
    libstdc++-v3/
    
    	PR middle-end/108300
    	* src/c++11/system_error.cc: Define `WIN32_LEAN_AND_MEAN` before
    	<windows.h>.
    	* src/c++11/thread.cc: Likewise.
    	* src/c++17/fs_ops.cc: Likewise.
    	* src/filesystem/ops.cc: Likewise.
    
    libvtv/
    
    	PR middle-end/108300
    	* vtv_malloc.cc: Define `WIN32_LEAN_AND_MEAN` before <windows.h>.
    	* vtv_rts.cc: Likewise.
    	* vtv_utils.cc: Likewise.
    902c7559
    History
    Always define `WIN32_LEAN_AND_MEAN` before <windows.h>
    LIU Hao authored
    Recently, mingw-w64 has got updated <msxml.h> from Wine which is included
    indirectly by <windows.h> if `WIN32_LEAN_AND_MEAN` is not defined. The
    `IXMLDOMDocument` class has a member function named `abort()`, which gets
    affected by our `abort()` macro in "system.h".
    
    `WIN32_LEAN_AND_MEAN` should, nevertheless, always be defined. This
    can exclude 'APIs such as Cryptography, DDE, RPC, Shell, and Windows
    Sockets' [1], and speed up compilation of these files a bit.
    
    [1] https://learn.microsoft.com/en-us/windows/win32/winprog/using-the-windows-headers
    
    gcc/
    
    	PR middle-end/108300
    	* config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
    	before <windows.h>.
    	* diagnostic-color.cc: Likewise.
    	* plugin.cc: Likewise.
    	* prefix.cc: Likewise.
    
    gcc/ada/
    
    	PR middle-end/108300
    	* adaint.c: Define `WIN32_LEAN_AND_MEAN` before `#include
    	<windows.h>`.
    	* cio.c: Likewise.
    	* ctrl_c.c: Likewise.
    	* expect.c: Likewise.
    	* gsocket.h: Likewise.
    	* mingw32.h: Likewise.
    	* mkdir.c: Likewise.
    	* rtfinal.c: Likewise.
    	* rtinit.c: Likewise.
    	* seh_init.c: Likewise.
    	* sysdep.c: Likewise.
    	* terminals.c: Likewise.
    	* tracebak.c: Likewise.
    
    gcc/jit/
    
    	PR middle-end/108300
    	* jit-w32.h: Define `WIN32_LEAN_AND_MEAN` before <windows.h>.
    
    libatomic/
    
    	PR middle-end/108300
    	* config/mingw/lock.c: Define `WIN32_LEAN_AND_MEAN` before
    	<windows.h>.
    
    libffi/
    
    	PR middle-end/108300
    	* src/aarch64/ffi.c: Define `WIN32_LEAN_AND_MEAN` before
    	<windows.h>.
    
    libgcc/
    
    	PR middle-end/108300
    	* config/i386/enable-execute-stack-mingw32.c: Define
    	`WIN32_LEAN_AND_MEAN` before <windows.h>.
    	* libgcc2.c: Likewise.
    	* unwind-generic.h: Likewise.
    
    libgfortran/
    
    	PR middle-end/108300
    	* intrinsics/sleep.c: Define `WIN32_LEAN_AND_MEAN` before
    	<windows.h>.
    
    libgomp/
    
    	PR middle-end/108300
    	* config/mingw32/proc.c: Define `WIN32_LEAN_AND_MEAN` before
    	<windows.h>.
    
    libiberty/
    
    	PR middle-end/108300
    	* make-temp-file.c: Define `WIN32_LEAN_AND_MEAN` before <windows.h>.
    	* pex-win32.c: Likewise.
    
    libssp/
    
    	PR middle-end/108300
    	* ssp.c: Define `WIN32_LEAN_AND_MEAN` before <windows.h>.
    
    libstdc++-v3/
    
    	PR middle-end/108300
    	* src/c++11/system_error.cc: Define `WIN32_LEAN_AND_MEAN` before
    	<windows.h>.
    	* src/c++11/thread.cc: Likewise.
    	* src/c++17/fs_ops.cc: Likewise.
    	* src/filesystem/ops.cc: Likewise.
    
    libvtv/
    
    	PR middle-end/108300
    	* vtv_malloc.cc: Define `WIN32_LEAN_AND_MEAN` before <windows.h>.
    	* vtv_rts.cc: Likewise.
    	* vtv_utils.cc: Likewise.