[dpdk-dev] [PATCH] eal/windows: fix build warnings in MinGW

Thomas Monjalon thomas at monjalon.net
Mon Apr 19 20:15:43 CEST 2021


19/04/2021 20:06, Tal Shnaiderman:
> > > 2021-04-18 19:04 (UTC+0000), Tal Shnaiderman:
> > > > > 18/04/2021 19:08, Tal Shnaiderman:
> > > > > > the strncasecmp marco defined in rte_os_shim.h is already
> > > > > > defined in MinGW-w64, as a result the compiler prints out the
> > > > > > warning below on function redefinition whenever compiling a file
> > > > > > including the
> > > header.
> > > > > >
> > > > > > ..\lib/librte_eal/windows/include/rte_os_shim.h:21:
> > > > > > warning: "strncasecmp" redefined #define strncasecmp(s1, s2,
> > > > > > count) _strnicmp(s1, s2, count)
> > > > >
> > > > > Why the tests are passing? Are we allowing warnings in build test?
> > > >
> > > > It's a good question, I see CI is passing without warnings, Dmitry
> > > > can you
> > > reproduce it?
> > > >
> > > > On my side the collision is with the following file:
> > > >
> > > > C:/mingw-w64/x86_64/mingw64/x86_64-w64-
> > > mingw32/include/string.h:119:
> > > > note: this is the location of the previous definition  #define
> > > > strncasecmp _strnicmp
> > > >
> > > > I'm using:
> > > > -gcc (x86_64-win32-seh-rev0, Built by MinGW-W64 project) 8.1.0
> > > > -meson
> > > > 0.53.2
> > >
> > > I can't reproduce it using the same versions.
> > > Do you invoke meson with other options than "-Dexamples=..."?
> > 
> > This is the meson line I'm using:
> > 
> > meson "-Dexamples=helloworld" build --wipe --default-library=static --
> > buildtype debug
> > 
> > The problem however is that MinGW's string.h defines the macro in line 119,
> > for some reason my build includes it and the rest doesn't.
> 
> Hi Dmitry,
> 
> I also noticed warnings in clang on my setup that are related to rte_os_shim.h:
> 
> [185/314] Compiling C object drivers/a715181@@tmp_rte_common_mlx5 at sta/common_mlx5_mlx5_common_mp.c.obj.
> In file included from ../drivers/common/mlx5/mlx5_common_mp.c:13:
> In file included from ..\drivers\common/mlx5/mlx5_common_utils.h:8:
> In file included from ..\drivers\common/mlx5/mlx5_common.h:17:
> ..\lib/librte_eal/windows/include\rte_os_shim.h:22:51: warning: token pasting of ',' and __VA_ARGS__ is a GNU extension [-Wgnu-zero-variadic-macro-arguments]
> #define open(path, flags, ...) _open(path, flags, ##__VA_ARGS__)
>                                                   ^
> However don't see it in CI, I'm using clang version 9.0.1

It seems we should improve our CI.
Please open suggestions in the CI bugzilla.





More information about the dev mailing list