aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--configure.ac54
1 files changed, 41 insertions, 13 deletions
diff --git a/configure.ac b/configure.ac
index 1db7bc882..98de67893 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1478,21 +1478,36 @@ AC_SUBST(W32SOCKLIBS)
#
AC_MSG_NOTICE([checking for cc features])
if test "$GCC" = yes; then
- # Note that it is okay to use CFLAGS here because this are just
+ # Check whether gcc does not emit a diagnositc for unknow -Wno-*
+ # options. This is the case for gcc >= 4.6
+ AC_MSG_CHECKING([if gcc ignores unknown -Wno-* options])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6 )
+#kickerror
+#endif]],[])],[_gcc_silent_wno=yes],[_gcc_silent_wno=no])
+ AC_MSG_RESULT($_gcc_silent_wno)
+
+ # Note that it is okay to use CFLAGS here because these are just
# warning options and the user should have a chance of overriding
# them.
if test "$USE_MAINTAINER_MODE" = "yes"; then
CFLAGS="$CFLAGS -O3 -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
CFLAGS="$CFLAGS -Wformat -Wno-format-y2k -Wformat-security"
- AC_MSG_CHECKING([if gcc supports -Wno-missing-field-initializers])
- _gcc_cflags_save=$CFLAGS
- CFLAGS="-Wno-missing-field-initializers"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_wopt=yes,_gcc_wopt=no)
- AC_MSG_RESULT($_gcc_wopt)
- CFLAGS=$_gcc_cflags_save;
+ if test x"$_gcc_silent_wno" = xyes ; then
+ _gcc_wopt=yes
+ else
+ AC_MSG_CHECKING([if gcc supports -Wno-missing-field-initializers])
+ _gcc_cflags_save=$CFLAGS
+ CFLAGS="-Wno-missing-field-initializers"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
+ [_gcc_wopt=yes],[_gcc_wopt=no])
+ AC_MSG_RESULT($_gcc_wopt)
+ CFLAGS=$_gcc_cflags_save;
+ fi
if test x"$_gcc_wopt" = xyes ; then
CFLAGS="$CFLAGS -W -Wno-sign-compare -Wno-missing-field-initializers"
fi
+
AC_MSG_CHECKING([if gcc supports -Wdeclaration-after-statement])
_gcc_cflags_save=$CFLAGS
CFLAGS="-Wdeclaration-after-statement"
@@ -1506,12 +1521,17 @@ if test "$GCC" = yes; then
CFLAGS="$CFLAGS -Wall"
fi
- AC_MSG_CHECKING([if gcc supports -Wno-pointer-sign])
- _gcc_cflags_save=$CFLAGS
- CFLAGS="-Wno-pointer-sign"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_psign=yes,_gcc_psign=no)
- AC_MSG_RESULT($_gcc_psign)
- CFLAGS=$_gcc_cflags_save;
+ if test x"$_gcc_silent_wno" = xyes ; then
+ _gcc_psign=yes
+ else
+ AC_MSG_CHECKING([if gcc supports -Wno-pointer-sign])
+ _gcc_cflags_save=$CFLAGS
+ CFLAGS="-Wno-pointer-sign"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
+ [_gcc_psign=yes],[_gcc_psign=no])
+ AC_MSG_RESULT($_gcc_psign)
+ CFLAGS=$_gcc_cflags_save;
+ fi
if test x"$_gcc_psign" = xyes ; then
CFLAGS="$CFLAGS -Wno-pointer-sign"
fi
@@ -1525,6 +1545,14 @@ if test "$GCC" = yes; then
if test x"$_gcc_psign" = xyes ; then
CFLAGS="$CFLAGS -Wpointer-arith"
fi
+
+ # The undocumented option -Wno-psabi suppresses the annoying
+ # "the ABI of passing union with long double has changed in GCC 4.4"
+ # which is emitted in estream-printf.c but entirely irrelvant
+ # because that union is local to the file.
+ if test x"$_gcc_silent_wno" = xyes ; then
+ CFLAGS="$CFLAGS -Wno-psabi"
+ fi
fi