diff options
author | Carlos Garcia Campos <carlosgc@gnome.org> | 2007-11-05 17:09:15 +0100 |
---|---|---|
committer | Carlos Garcia Campos <carlosgc@annarchy.freedesktop.org> | 2007-11-05 08:59:49 -0800 |
commit | a7fdd1340bb0edeaaf57db1a7698ffbaa974848d (patch) | |
tree | 5dc4f9e72dfd44b5ac916cc99aadd8b22a534964 /configure.ac | |
parent | 0e87354d2be1f3307cc0b3ad8dc2b6e03c7225cc (diff) |
Add lots of warning flags for gcc and compatible compilers. Fix some compile warnings.
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 71 |
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 |