aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Dietrich <[email protected]>2017-11-29 22:25:05 +0100
committerDylan Baker <[email protected]>2017-12-01 17:09:42 -0800
commitd93fabb013279d06ab025448afce1e5f665880ee (patch)
tree82e9f16e6e496585f7811fecf1bb92cf3af5788c
parent0ed952c7e9b811bc11dec64bd4bebcdf4222cc85 (diff)
configure: avoid testing for negative compiler options
gcc seems to always accept unsupported negative compiler warning options: echo "int i;" | gcc -c -xc -Wno-bob - # no error echo "int i;" | gcc -c -xc -Walice - # unsupported compiler option Inverting the options fixes the tests. V2: fix options in meson build Reviewed-by: Matt Turner <[email protected]> Reviewed-by: Dylan Baker <[email protected]> Signed-off-by: Marc Dietrich <[email protected]>
-rw-r--r--configure.ac6
-rw-r--r--meson.build23
2 files changed, 19 insertions, 10 deletions
diff --git a/configure.ac b/configure.ac
index f378e54b857..475155a96e4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -394,8 +394,10 @@ esac
AC_SUBST([VISIBILITY_CFLAGS])
AC_SUBST([VISIBILITY_CXXFLAGS])
-AX_CHECK_COMPILE_FLAG([-Wno-override-init], [WNO_OVERRIDE_INIT="$WNO_OVERRIDE_INIT -Wno-override-init"]) # gcc
-AX_CHECK_COMPILE_FLAG([-Wno-initializer-overrides], [WNO_OVERRIDE_INIT="$WNO_OVERRIDE_INIT -Wno-initializer-overrides"]) # clang
+dnl For some reason, the test for -Wno-foo always succeeds with gcc, even if the
+dnl option is not supported. Hence, check for -Wfoo instead.
+AX_CHECK_COMPILE_FLAG([-Woverride-init], [WNO_OVERRIDE_INIT="$WNO_OVERRIDE_INIT -Wno-override-init"]) # gcc
+AX_CHECK_COMPILE_FLAG([-Winitializer-overrides], [WNO_OVERRIDE_INIT="$WNO_OVERRIDE_INIT -Wno-initializer-overrides"]) # clang
AC_SUBST([WNO_OVERRIDE_INIT])
dnl
diff --git a/meson.build b/meson.build
index 65c6b98609e..f227bc3e018 100644
--- a/meson.build
+++ b/meson.build
@@ -503,11 +503,25 @@ endif
cpp = meson.get_compiler('cpp')
cpp_args = []
foreach a : ['-Wall', '-fno-math-errno', '-fno-trapping-math',
- '-Qunused-arguments', '-Wno-non-virtual-dtor']
+ '-Qunused-arguments']
if cpp.has_argument(a)
cpp_args += a
endif
endforeach
+
+# For some reason, the test for -Wno-foo always succeeds with gcc, even if the
+# option is not supported. Hence, check for -Wfoo instead.
+if cpp.has_argument('-Wnon-virtual-dtor')
+ cpp_args += '-Wno-non-virtual-dtor'
+endif
+
+no_override_init_args = []
+foreach a : ['override-init', 'initializer-overrides']
+ if cc.has_argument('-W' + a)
+ no_override_init_args += '-Wno-' + a
+ endif
+endforeach
+
cpp_vis_args = []
if cpp.has_argument('-fvisibility=hidden')
cpp_vis_args += '-fvisibility=hidden'
@@ -527,13 +541,6 @@ foreach a : ['-Werror=pointer-arith', '-Werror=vla']
endif
endforeach
-no_override_init_args = []
-foreach a : ['-Wno-override-init', '-Wno-initializer-overrides']
- if cc.has_argument(a)
- no_override_init_args += a
- endif
-endforeach
-
if host_machine.cpu_family().startswith('x86')
pre_args += '-DHAVE_SSE41'
with_sse41 = true