summaryrefslogtreecommitdiff
path: root/acinclude.m4
diff options
context:
space:
mode:
authorBen Pfaff <blp@ovn.org>2018-09-18 02:11:20 -0700
committerBen Pfaff <blp@ovn.org>2018-09-26 13:19:00 -0700
commit4c1e8cb9423df8dfd53b0e8ffe58a3d4a9c5148a (patch)
treec8ba797cabf6b8ac84468edb0936141612868611 /acinclude.m4
parent8821b212df5450799dfae8e9b4058b2cdacc49f0 (diff)
downloadopenvswitch-4c1e8cb9423df8dfd53b0e8ffe58a3d4a9c5148a.tar.gz
acinclude.m4: Really check whether GCC support -Wno-null-pointer-arithmetic.
I've noticed recently an annoying quantity of error messages like the following in builds in various places: gcc: error: unrecognized command line option ‘-Wunknown-warning-option’ This didn't really make sense because OVS checks whether the compiler supports warning options before it uses them. Looking closer, the GCC manual has a note that explains the issue: When an unrecognized warning option is requested (e.g., '-Wunknown-warning'), GCC emits a diagnostic stating that the option is not recognized. However, if the '-Wno-' form is used, the behavior is slightly different: no diagnostic is produced for '-Wno-unknown-warning' unless other diagnostics are being produced. This allows the use of new '-Wno-' options with old compilers, but if something goes wrong, the compiler warns that an unrecognized option is present. Thus, we can properly check only for the *positive* version of a warning option, so this commit makes the OVS tests do that. Fixes: a7021b08b0d5 ("configure: Disable -Wnull-pointer-arithmetic Clang warning.") Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Aaron Conole <aconole@redhat.com>
Diffstat (limited to 'acinclude.m4')
-rw-r--r--acinclude.m46
1 files changed, 5 insertions, 1 deletions
diff --git a/acinclude.m4 b/acinclude.m4
index 0690baedf..8d8503498 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -996,7 +996,11 @@ AC_DEFUN([_OVS_CHECK_CC_OPTION], [dnl
dnl gcc: unrecognized option '-Qunused-arguments'
dnl 0
dnl %
- CFLAGS="$CFLAGS $WERROR $1"
+ dnl
+ dnl In addition, GCC does not complain about a -Wno-<foo> option that
+ dnl it does not understand, unless it has another error to report, so
+ dnl instead of testing for -Wno-<foo>, test for the positive version.
+ CFLAGS="$CFLAGS $WERROR m4_bpatsubst([$1], [-Wno-], [-W])"
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE([int x;])],
[if test -s conftest.err && grep "unrecognized option" conftest.err