net/mlx: update C compliance standard
authorAdrien Mazarguil <adrien.mazarguil@6wind.com>
Fri, 30 Jun 2017 17:19:08 +0000 (19:19 +0200)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 6 Jul 2017 13:00:57 +0000 (15:00 +0200)
commit3aec2d14d646b57f5529534b26e8bcbd0a918d94
treebaa7facd358ab080bf60314e2d06f432e07430aa
parent8ae9c69a2b7d36ca9283748f37c4aa8da06a3b6c
net/mlx: update C compliance standard

This commit addresses a compilation issue against Glibc >= 2.25, which
implements assert() through a nonstandard ({ }) construct. Such constructs
can normally not be used without __extension__ keyword when -pedantic is
enabled, as is the case when compiling mlx4 and mlx5 PMDs in debug mode.

While assert.h checks for the compiler ability to support GNU extensions,
Clang, unlike GCC, does not allow the above syntax when combining
-std=gnu99 with -pedantic.

Work around missing keyword by moving these PMDs to a stricter compliance
standard without GNU extensions but properly checked by Glibc. Doing so is
supported on the DPDK side since includes have been cleaned up.

Even in C11, using types other than _Bool or signed/unsigned int for
bit-fields is an extension. Some GCC versions complain about that when
-pedantic checks are enabled.

The RTE_STD_C11 macro correctly prevented this issue with C99 but not with
C11 as it becomes a no-op. Forcing the extension keyword addresses it.

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Tested-by: Yongseok Koh <yskoh@mellanox.com>
drivers/net/mlx4/Makefile
drivers/net/mlx5/Makefile
drivers/net/mlx5/mlx5_rxtx.h