> > > > > +if is_windows > > > > > + # Require platform SDK for Windows 7 and above. > > > > > + add_project_arguments('-D_WIN32_WINNT=0x0601', language: 'c') > > > > > > > > > > > > > Please explain. Why Windows 7 is needed? What this define is doing? > > > > > > Yes, Windows 7 and above is need for already existing code in eal_lcore.c, > > > specifically for GetLogicalProcessorInformation() call. > > > > > > When including <windows.h>, one must define minimum API version the > > > application is compiled against [0]. MSVC and Clang default to the > > > version of > > > platform SDK (that is, maximum supported). MinGW defaults to Windows XP, > > > so > > > this definition must be either in <rte_os.h> before #include <windows.h> > > > or > > > here. Because other files may include <windows.h>, I'd prefer to have a > > > global definition via compiler command-line. > > > > > > [0]: > > > https://docs.microsoft.com/en-us/windows/win32/WinProg/using-the-windows-headers > > > > > > > OK, thanks. > > Please reword the comment with something like > > "Minimum supported API is Windows 7." > > > For this, as an alternative to putting it as a project argument, you can just > add it to dpdk_conf which means it will end up as a define in the global > rte_build_config.h and so be directly included in each compilation unit > ahead of any other headers. (rte_config.h includes rte_build_config.h)
Can you please explain why using dpdk_conf is a better alternative? In lib/meson.build I can see add_project_arguments('_D_GNU_SOURCE', ...), which serves a similar purpose on POSIX systems. Compiler option also makes it impossible to forget or redefine this constant in code by mistake. -- Dmitry Kozlyuk