Windows compilation with cross-mingw on Fedora 39 failed because MEM_REPLACE_PLACEHOLDER and MEM_RESERVE_PLACEHOLDER were already defined in the compiler environment:
eal_memory.c:77: error: "MEM_REPLACE_PLACEHOLDER" redefined /usr/x86_64-w64-mingw32/sys-root/mingw/include/winnt.h:5710: note: this is the location of the previous definition eal_memory.c:78: error: "MEM_RESERVE_PLACEHOLDER" redefined /usr/x86_64-w64-mingw32/sys-root/mingw/include/winnt.h:5715: note: this is the location of the previous definition The patch masks MEM_REPLACE_PLACEHOLDER and MEM_RESERVE_PLACEHOLDER macros if they were pre-defined by compiler. The patch also masks MEM_COALESCE_PLACEHOLDERS and MEM_PRESERVE_PLACEHOLDER to prevent similar errors. Fixes: 2a5d547a4a9b ("eal/windows: implement basic memory management") Cc: sta...@dpdk.org Signed-off-by: Gregory Etelson <getel...@nvidia.com> --- lib/eal/windows/eal_memory.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/eal/windows/eal_memory.c b/lib/eal/windows/eal_memory.c index 215d768e2c..31410a41fd 100644 --- a/lib/eal/windows/eal_memory.c +++ b/lib/eal/windows/eal_memory.c @@ -72,10 +72,18 @@ static VirtualAlloc2_type VirtualAlloc2_ptr; #ifdef RTE_TOOLCHAIN_GCC +#ifndef MEM_COALESCE_PLACEHOLDERS #define MEM_COALESCE_PLACEHOLDERS 0x00000001 +#endif +#ifndef MEM_PRESERVE_PLACEHOLDER #define MEM_PRESERVE_PLACEHOLDER 0x00000002 +#endif +#ifndef MEM_REPLACE_PLACEHOLDER #define MEM_REPLACE_PLACEHOLDER 0x00004000 +#endif +#ifndef MEM_RESERVE_PLACEHOLDER #define MEM_RESERVE_PLACEHOLDER 0x00040000 +#endif int eal_mem_win32api_init(void) -- 2.39.2