From: Michael Jeanson Date: Thu, 3 Mar 2022 23:28:26 +0000 (-0500) Subject: Split warning flags list for C and C++ X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=commitdiff_plain;h=a50f74e482c2cb9eba4a8ba49d132a831cc994a0 Split warning flags list for C and C++ When using Ccache [1], some flags specific to C are accepted by the C++ compiler but result in warning messages on each invocation of the compiler. To remediate this, split the warning flags detection list in three, a common base and a specific list for C and C++. [1] https://github.com/ccache/ccache/issues/738 Change-Id: I9ef360efbfae445845ca1016e5f5eebdd3bdb0ac Signed-off-by: Michael Jeanson Signed-off-by: Jérémie Galarneau --- diff --git a/configure.ac b/configure.ac index 408b4b0e2..663636258 100644 --- a/configure.ac +++ b/configure.ac @@ -57,7 +57,7 @@ AC_TYPE_UINT8_T # Detect warning flags supported by the C and C++ compilers and append them to # WARN_CFLAGS and WARN_CXXFLAGS. -m4_define([WARN_FLAGS_LIST], [ dnl +m4_define([WARN_FLAGS_COMMON_LIST], [ dnl -Wall dnl dnl We currently get this warning when building with Clang: dnl @@ -65,23 +65,25 @@ m4_define([WARN_FLAGS_LIST], [ dnl dnl extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __THROWNL; dnl ^ -Wno-incomplete-setjmp-declaration dnl - -Wdiscarded-qualifiers dnl -Wmissing-declarations dnl - -Wmissing-prototypes dnl - -Wmissing-parameter-type dnl -Wshadow dnl -Wno-gnu-folding-constant dnl -Wsuggest-attribute=format dnl -Wformat=2 dnl - dnl GCC enables this with -Wall in C++, and that generates a - dnl lot of warnings that have on average a low value to fix. - -Wno-sign-compare dnl +]) + +# Detect warning flags specific to the C compiler and append them to +# WARN_CFLAGS. +m4_define([WARN_FLAGS_C_LIST], [ dnl + -Wdiscarded-qualifiers dnl + -Wmissing-prototypes dnl + -Wmissing-parameter-type dnl ]) # Pass -Werror as an extra flag during the test: this is needed to make the # -Wunknown-warning-option diagnostic fatal with clang. AC_LANG_PUSH([C]) -AX_APPEND_COMPILE_FLAGS([WARN_FLAGS_LIST], [WARN_CFLAGS], [-Werror]) +AX_APPEND_COMPILE_FLAGS([WARN_FLAGS_COMMON_LIST WARN_FLAGS_C_LIST], [WARN_CFLAGS], [-Werror]) AC_LANG_POP([C]) # The test used in AX_APPEND_COMPILE_FLAGS, generated using AC_LANG_PROGRAM, is @@ -106,10 +108,18 @@ AC_LANG_POP([C]) # Find a C++11 compiler with GNU extensions (-std=gnu++11) AX_CXX_COMPILE_STDCXX([11], [ext], [mandatory]) +# Detect warning flags specific to the C++ compiler and append them to +# WARN_CXXFLAGS. +m4_define([WARN_FLAGS_CXX_LIST], [ dnl + dnl GCC enables this with -Wall in C++, and that generates a + dnl lot of warnings that have on average a low value to fix. + -Wno-sign-compare dnl +]) + # Pass -Werror as an extra flag during the test: this is needed to make the # -Wunknown-warning-option diagnostic fatal with clang. AC_LANG_PUSH([C++]) -AX_APPEND_COMPILE_FLAGS([WARN_FLAGS_LIST], [WARN_CXXFLAGS], [-Werror]) +AX_APPEND_COMPILE_FLAGS([WARN_FLAGS_COMMON_LIST WARN_FLAGS_CXX_LIST], [WARN_CXXFLAGS], [-Werror]) AC_LANG_POP([C++]) # Disable 'strict aliasing' if the C++ compiler supports it.