After an upgrade to MinGW version 13, some compilation errors appear: drivers/bus/pci/windows/pci.c:362:58: error: 'GUID_DEVCLASS_NETUIO' undeclared drivers/bus/pci/windows/pci_netuio.c:57:39: error: 'GUID_DEVINTERFACE_NETUIO' undeclared
The cause is MinGW has set NTDDI_VERSION to the highest version without defining the expected NETUIO constants. It is safer to not rely on Windows headers version, and instead define what is not already defined, after including Windows headers. Fixes: 6605c7f02e24 ("bus/pci: fix build with Windows SDK >= 10.0.20253") Cc: sta...@dpdk.org Signed-off-by: Thomas Monjalon <tho...@monjalon.net> Acked-by: Bruce Richardson <bruce.richard...@intel.com> --- v3: try to fix Windows build by moving includes --- drivers/bus/pci/windows/pci.c | 11 ++++++----- drivers/bus/pci/windows/pci_netuio.c | 6 ------ drivers/bus/pci/windows/pci_netuio.h | 13 ++++++++++--- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/drivers/bus/pci/windows/pci.c b/drivers/bus/pci/windows/pci.c index e7e449306e..6f6f368cb7 100644 --- a/drivers/bus/pci/windows/pci.c +++ b/drivers/bus/pci/windows/pci.c @@ -12,18 +12,19 @@ #include <rte_memory.h> #include <rte_bus_pci.h> -#include "private.h" -#include "pci_netuio.h" - +/* DEVPKEY_Device_Numa_Node should be defined in devpkey.h */ #include <devpkey.h> -#include <regstr.h> - #if defined RTE_TOOLCHAIN_GCC && (__MINGW64_VERSION_MAJOR < 8) #include <devpropdef.h> DEFINE_DEVPROPKEY(DEVPKEY_Device_Numa_Node, 0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 3); #endif +#include <regstr.h> + +#include "private.h" +#include "pci_netuio.h" + /* * This code is used to simulate a PCI probe by parsing information in * the registry hive for PCI devices. diff --git a/drivers/bus/pci/windows/pci_netuio.c b/drivers/bus/pci/windows/pci_netuio.c index 346b2f4c0a..db75475f92 100644 --- a/drivers/bus/pci/windows/pci_netuio.c +++ b/drivers/bus/pci/windows/pci_netuio.c @@ -10,12 +10,6 @@ #include <rte_eal.h> #include <rte_bus_pci.h> -#ifdef __MINGW32__ -#include <ddk/ndisguid.h> -#else -#include <ndisguid.h> -#endif - #include "private.h" #include "pci_netuio.h" diff --git a/drivers/bus/pci/windows/pci_netuio.h b/drivers/bus/pci/windows/pci_netuio.h index 2f6c97ea73..0421de3854 100644 --- a/drivers/bus/pci/windows/pci_netuio.h +++ b/drivers/bus/pci/windows/pci_netuio.h @@ -5,12 +5,19 @@ #ifndef _PCI_NETUIO_H_ #define _PCI_NETUIO_H_ -#if !defined(NTDDI_WIN10_FE) || NTDDI_VERSION < NTDDI_WIN10_FE -/* GUID definition for device class netUIO */ +/* GUID_DEVCLASS_NETUIO should be defined in devguid.h */ +#ifndef GUID_DEVCLASS_NETUIO DEFINE_GUID(GUID_DEVCLASS_NETUIO, 0x78912bc1, 0xcb8e, 0x4b28, 0xa3, 0x29, 0xf3, 0x22, 0xeb, 0xad, 0xbe, 0x0f); +#endif -/* GUID definition for the netuio device interface */ +/* GUID_DEVINTERFACE_NETUIO should be defined in ndisguid.h */ +#ifdef __MINGW32__ +#include <ddk/ndisguid.h> +#else +#include <ndisguid.h> +#endif +#ifndef GUID_DEVINTERFACE_NETUIO DEFINE_GUID(GUID_DEVINTERFACE_NETUIO, 0x08336f60, 0x0679, 0x4c6c, 0x85, 0xd2, 0xae, 0x7c, 0xed, 0x65, 0xff, 0xf7); #endif -- 2.51.0