On Wed, Feb 5, 2020 at 10:44 PM Dmitry Kozlyuk <dmitry.kozl...@gmail.com> wrote: > > This patch series add support for building DPDK using MinGW-w64. > > MinGW-w64 provides GNU toolchain and independent platform SDK on > Windows. It also supports cross-compilation to Windows from POSIX > systems by providing cross tollchains and libraries [0]. It does NOT > emulate a full POSIX environment, like Cygwin or MSYS do. > > There are advantages in using MinGW-w64 in addition to Clang: > > 1. Cross-compilation out-of-the-box. MinGW-w64 is provides a pthread > implementation, GNU getopt, and Windows platform SDK. > > 2. Easier porting of POSIX applications using DPDK to Windows, because > application code can use the same benefits as mentioned above. > > 3. Having both primary compilers enabled on Windows provides more > diagnostics and generally prevents non-portable code. > > [0]: http://mingw-w64.org > > v2 Changes: > > Add patch to use lowercase system header filenames. > Move Meson cross-file for x86 to arch directory. > Change wording in comments. > Add Meson version warning in documentation. > > Dmitry Kozlyuk (7): > eal: introduce portable format attribute > eal: use portable format attribute > cmdline: use portable format attribute > eal/windows: use lowercase filenames for system headers > build: MinGW-w64 support for Meson > build: add cross-file for MinGW-w64 > doc: guide for Windows build using MinGW-w64 > > config/meson.build | 14 +++++ > config/x86/meson_mingw.txt | 14 +++++ > doc/guides/windows_gsg/build_dpdk.rst | 65 ++++++++++++++++++--- > lib/librte_cmdline/cmdline.h | 4 +- > lib/librte_eal/common/include/rte_common.h | 17 +++++- > lib/librte_eal/common/include/rte_debug.h | 2 +- > lib/librte_eal/common/include/rte_devargs.h | 2 +- > lib/librte_eal/common/include/rte_log.h | 4 +- > lib/librte_eal/meson.build | 3 + > lib/librte_eal/windows/eal/include/rte_os.h | 4 +- > lib/meson.build | 8 ++- > 11 files changed, 118 insertions(+), 19 deletions(-) > create mode 100644 config/x86/meson_mingw.txt > > -- > 2.25.0 > Hi Dmitry,
I applied your v2 patch and I did a native build on windows 10. Hit an error showing ../lib/librte_eal/windows/eal/eal_lcore.c:54:2: error: 'for' loop initial declarations are only allowed in C99 mode for (unsigned int socket = 0; socket < ^ ../lib/librte_eal/windows/eal/eal_lcore.c:54:2: note: use option -std=c99 or -std=gnu99 to compile your code Then I fixed them by having separate declaration out side for loop. then $ ninja -C build works However the output looks weird: C:\dpdk\build\examples>dpdk-helloworld.exe EAL: Detected 2 lcore(s) EAL: Detected 1 NUMA nodes hehello fllo frorom cm core 1 ore 0 Regards, William --- more detailed --- C:\dpdk>meson -v 0.53.999 C:\dpdk>gcc -v Reading specs from c:/mingw-w64/bin/../lib64/gcc/x86_64-w64-mingw32/4.8.3/specs COLLECT_GCC=gcc C:\dpdk>meson --reconfigure -Dexamples=helloworld build The Meson build system Version: 0.53.999 Source dir: C:\dpdk Build dir: C:\dpdk\build Build type: native build Program cat found: NO Program more found: YES (C:\WINDOWS\system32\more.COM) Project name: DPDK Project version: 20.02.0-rc2 C compiler for the host machine: cc (gcc 4.8.3 "cc (GCC) 4.8.3") C linker for the host machine: cc GNU ld.bfd 2.24 Host machine cpu family: x86_64 Host machine cpu: x86_64 Program cat found: NO Program more found: YES (C:\WINDOWS\system32\more.COM) Program ../buildtools/symlink-drivers-solibs.sh found: YES (sh C:\dpdk\config\../buildtools/symlink-drivers-so libs.sh) Checking for size of "void *" : 8 Library m found: YES Library numa found: NO Found pkg-config: C:\mingw-w64\bin\pkg-config.EXE (0.25)