From: Timm Bäder Date: Wed, 17 Feb 2021 09:27:06 +0000 (+0100) Subject: build: Check for -Wimplicit-fallthrough=5 separately X-Git-Tag: elfutils-0.184~23 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d6c85cff9df027ea3972f021d674f96b9bd9d9db;p=thirdparty%2Felfutils.git build: Check for -Wimplicit-fallthrough=5 separately GCC accepts the =5, which means it doesn't try to parse any comments and only accepts the fallthrough attribute in code. Clang does not ever parse any comments and always wants the fallthrough attribute anyway. Clang also doesn't accept the =n parameter for -Wimplicit-fallthrough. Test for =5 separately and use it if supported and fall back to just -Wimplicit-fallthrough otherwise. Signed-off-by: Timm Bäder --- diff --git a/config/eu.am b/config/eu.am index 6c3c444f1..e109ffd3b 100644 --- a/config/eu.am +++ b/config/eu.am @@ -64,8 +64,12 @@ endif if HAVE_IMPLICIT_FALLTHROUGH_WARNING # Use strict fallthrough. Only __attribute__((fallthrough)) will prevent the # warning +if HAVE_IMPLICIT_FALLTHROUGH_5_WARNING IMPLICIT_FALLTHROUGH_WARNING=-Wimplicit-fallthrough=5 else +IMPLICIT_FALLTHROUGH_WARNING=-Wimplicit-fallthrough +endif +else IMPLICIT_FALLTHROUGH_WARNING= endif diff --git a/configure.ac b/configure.ac index d345495dc..e56aeb6a7 100644 --- a/configure.ac +++ b/configure.ac @@ -519,6 +519,18 @@ CFLAGS="$old_CFLAGS"]) AM_CONDITIONAL(HAVE_IMPLICIT_FALLTHROUGH_WARNING, [test "x$ac_cv_implicit_fallthrough" != "xno"]) +# Check whether the compiler additionally accepts -Wimplicit-fallthrough=5 +# GCC accepts this and 5 means "don't parse any fallthrough comments and +# only accept the fallthrough attribute" +AC_CACHE_CHECK([whether the compiler accepts -Wimplicit-fallthrough=5], ac_cv_implicit_fallthrough_5, [dnl +old_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -Wimplicit-fallthrough=5 -Werror" +AC_COMPILE_IFELSE([AC_LANG_SOURCE([])], + ac_cv_implicit_fallthrough_5=yes, ac_cv_implicit_fallthrough_5=no) +CFLAGS="$old_CFLAGS"]) +AM_CONDITIONAL(HAVE_IMPLICIT_FALLTHROUGH_5_WARNING, + [test "x$ac_cv_implicit_fallthrough_5" != "xno"]) + # Assume the fallthrough attribute is supported if -Wimplict-fallthrough is supported if test "$ac_cv_implicit_fallthrough" = "yes"; then AC_DEFINE([HAVE_FALLTHROUGH], [1],