summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorCarlos Garcia Campos <carlosgc@gnome.org>2007-11-05 17:09:15 +0100
committerCarlos Garcia Campos <carlosgc@annarchy.freedesktop.org>2007-11-05 08:59:49 -0800
commita7fdd1340bb0edeaaf57db1a7698ffbaa974848d (patch)
tree5dc4f9e72dfd44b5ac916cc99aadd8b22a534964 /configure.ac
parent0e87354d2be1f3307cc0b3ad8dc2b6e03c7225cc (diff)
Add lots of warning flags for gcc and compatible compilers. Fix some compile warnings.
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac71
1 files changed, 70 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index 9bfbd53..6ef6e07 100644
--- a/configure.ac
+++ b/configure.ac
@@ -31,7 +31,76 @@ if test "x$enable_test" = "xyes"; then
fi
AM_CONDITIONAL(ENABLE_TEST, test x$enable_test = xyes)
-
+
+dnl ===========================================================================
+dnl check compiler flags (From cairo)
+AC_DEFUN([SPECTRE_CC_TRY_FLAG], [
+ AC_MSG_CHECKING([whether $CC supports $1])
+
+ spectre_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $1"
+
+ AC_COMPILE_IFELSE([ ], [spectre_cc_flag=yes], [spectre_cc_flag=no])
+ CFLAGS="$spectre_save_CFLAGS"
+
+ if test "x$spectre_cc_flag" = "xyes"; then
+ ifelse([$2], , :, [$2])
+ else
+ ifelse([$3], , :, [$3])
+ fi
+ AC_MSG_RESULT([$spectre_cc_flag])
+])
+
+
+dnl Use lots of warning flags with with gcc and compatible compilers
+
+dnl Note: if you change the following variable, the cache is automatically
+dnl skipped and all flags rechecked. So there's no need to do anything
+dnl else. If for any reason you need to force a recheck, just change
+dnl MAYBE_WARN in an ignorable way (like adding whitespace)
+
+MAYBE_WARN="-Wall -ansi \
+-Wsign-compare -Werror-implicit-function-declaration \
+-Wpointer-arith -Wstrict-prototypes \
+-Wmissing-prototypes -Wmissing-declarations -Wnested-externs \
+-Wpacked -Wswitch-enum \
+-Wstrict-aliasing=2 -Winit-self -Wunsafe-loop-optimizations \
+-Wdeclaration-after-statement \
+-Wno-missing-field-initializers -Wno-unused-parameter \
+-Wno-attributes -Wno-long-long -Winline"
+
+
+# invalidate cached value if MAYBE_WARN has changed
+if test "x$spectre_cv_warn_maybe" != "x$MAYBE_WARN"; then
+ unset spectre_cv_warn_cflags
+fi
+AC_CACHE_CHECK([for supported warning flags], spectre_cv_warn_cflags, [
+ echo
+ WARN_CFLAGS=""
+
+ # Some warning options are not supported by all versions of
+ # gcc, so test all desired options against the current
+ # compiler.
+ #
+ # Note that there are some order dependencies
+ # here. Specifically, an option that disables a warning will
+ # have no net effect if a later option then enables that
+ # warnings, (perhaps implicitly). So we put some grouped
+ # options (-Wall and -Wextra) up front and the -Wno options
+ # last.
+
+ for W in $MAYBE_WARN; do
+ SPECTRE_CC_TRY_FLAG([$W], [WARN_CFLAGS="$WARN_CFLAGS $W"])
+ done
+
+ spectre_cv_warn_cflags=$WARN_CFLAGS
+ spectre_cv_warn_maybe=$MAYBE_WARN
+
+ AC_MSG_CHECKING([which warning flags were supported])])
+WARN_CFLAGS="$spectre_cv_warn_cflags"
+SPECTRE_CFLAGS="$SPECTRE_CFLAGS $WARN_CFLAGS"
+
+AC_SUBST(SPECTRE_CFLAGS)
AC_OUTPUT([
Makefile