From: Alexey Marchuk <alexey...@mellanox.com> mlx5 common library checks if several symbols/definitions are presented in system header files. If some are not presented, they will be enabled by mlx5_glue library. The problem appears with clang and '-Werror' - code generated by meson is not compiled due to unused variable:
Code: #include <infiniband/mlx5dv.h> int main(void) { /* If it's not defined as a macro, try to use as a symbol */ #ifndef mlx5dv_create_flow_action_packet_reformat mlx5dv_create_flow_action_packet_reformat; #endif return 0; } Compiler stdout: Compiler stderr: /hpc/local/work/alexeymar/repo/spdk/dpdk/build-tmp/meson-private/tmp5obnak86/testfile.c:6:17: error: expression result unused [-Werror,-Wunused-value] mlx5dv_create_flow_action_packet_reformat; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ As result, almost all symbols are enabled in mlx5_glue while they exist is system headers. As result, we get multiple symbols redefenitions when we compile mlx5_common. As a solution for this problem we can suppress -Wunused-vaurable using pragma DPDK 23.11 note: Starting with commit bellow, all cflags are passed to the has_header_symbol(). (33d6694) build: use C11 standard To make sure that the symbol is properly detected, the pedantic flags needs to be removed. Signed-off-by: Alexey Marchuk <alexey...@mellanox.com> Signed-off-by: Sebastian Brzezinka <sebastian.brzezi...@intel.com> --- drivers/common/mlx5/linux/meson.build | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/common/mlx5/linux/meson.build b/drivers/common/mlx5/linux/meson.build index b3a64547c5..84b2c64041 100644 --- a/drivers/common/mlx5/linux/meson.build +++ b/drivers/common/mlx5/linux/meson.build @@ -231,7 +231,11 @@ if libmtcr_ul_found endif foreach arg:has_sym_args - mlx5_config.set(arg[0], cc.has_header_symbol(arg[1], arg[2], dependencies: libs, args: cflags)) + file_prefix = '#pragma clang diagnostic ignored "-Wunused-value"' + cflags += [ + '-Wno-pedantic', + ] + mlx5_config.set(arg[0], cc.has_header_symbol(arg[1], arg[2], prefix : file_prefix, dependencies: libs, args: cflags)) endforeach foreach arg:has_member_args file_prefix = '#include <' + arg[1] + '>' -- 2.34.1 --------------------------------------------------------------------- Intel Technology Poland sp. z o.o. ul. Slowackiego 173 | 80-298 Gdansk | Sad Rejonowy Gdansk Polnoc | VII Wydzial Gospodarczy Krajowego Rejestru Sadowego - KRS 101882 | NIP 957-07-52-316 | Kapital zakladowy 200.000 PLN. Spolka oswiadcza, ze posiada status duzego przedsiebiorcy w rozumieniu ustawy z dnia 8 marca 2013 r. o przeciwdzialaniu nadmiernym opoznieniom w transakcjach handlowych. Ta wiadomosc wraz z zalacznikami jest przeznaczona dla okreslonego adresata i moze zawierac informacje poufne. W razie przypadkowego otrzymania tej wiadomosci, prosimy o powiadomienie nadawcy oraz trwale jej usuniecie; jakiekolwiek przegladanie lub rozpowszechnianie jest zabronione. This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). If you are not the intended recipient, please contact the sender and delete all copies; any review or distribution by others is strictly prohibited.