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

Aaron Conole aconole at redhat.com
Mon Apr 19 21:29:32 CEST 2021


Thomas Monjalon <thomas at monjalon.net> writes:

> 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.

Please do.

Will this only be caught by mingw64 on windows?  Will we get the same
issues with a linux mingw install?  I'm guessing yes, but don't know
mingw very well.  We may be able to install the mingw package under our
github actions pipeline.



More information about the dev mailing list