Add very strict compiler warning flags.

Lots of new warnings to clean up.  Have fun.
This commit is contained in:
Matthew Barnes
2009-05-25 00:18:46 -04:00
parent 1e71050275
commit 3dadd1f855
2 changed files with 89 additions and 15 deletions

View File

@ -577,3 +577,65 @@ AC_SUBST(LTCXXCOMPILE)
# end dolt
])
dnl as-compiler-flag.m4 0.1.0
dnl autostars m4 macro for detection of compiler flags
dnl David Schleef <ds@schleef.org>
dnl $Id: as-compiler-flag.m4,v 1.1 2005/12/15 23:35:19 ds Exp $
dnl AS_COMPILER_FLAG(CFLAGS, ACTION-IF-ACCEPTED, [ACTION-IF-NOT-ACCEPTED])
dnl Tries to compile with the given CFLAGS.
dnl Runs ACTION-IF-ACCEPTED if the compiler can compile with the flags,
dnl and ACTION-IF-NOT-ACCEPTED otherwise.
AC_DEFUN([AS_COMPILER_FLAG],
[
AC_MSG_CHECKING([to see if compiler understands $1])
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $1"
AC_TRY_COMPILE([ ], [], [flag_ok=yes], [flag_ok=no])
CFLAGS="$save_CFLAGS"
if test "X$flag_ok" = Xyes ; then
m4_ifvaln([$2],[$2])
true
else
m4_ifvaln([$3],[$3])
true
fi
AC_MSG_RESULT([$flag_ok])
])
dnl AS_COMPILER_FLAGS(VAR, FLAGS)
dnl Tries to compile with the given CFLAGS.
AC_DEFUN([AS_COMPILER_FLAGS],
[
list=$2
flags_supported=""
flags_unsupported=""
AC_MSG_CHECKING([for supported compiler flags])
for each in $list
do
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $each"
AC_TRY_COMPILE([ ], [], [flag_ok=yes], [flag_ok=no])
CFLAGS="$save_CFLAGS"
if test "X$flag_ok" = Xyes ; then
flags_supported="$flags_supported $each"
else
flags_unsupported="$flags_unsupported $each"
fi
done
AC_MSG_RESULT([$flags_supported])
if test "X$flags_unsupported" != X ; then
AC_MSG_WARN([unsupported compiler flags: $flags_unsupported])
fi
$1="$$1 $flags_supported"
])

View File

@ -45,6 +45,33 @@ m4_define([libnotify_minimum_version], [0.3.0])
m4_define([gnome_pilot_minimum_version], [2.0.15])
m4_define([gweather_minimum_version], [2.25.3])
# Compiler Warning Flags
AS_COMPILER_FLAGS(WARNING_FLAGS,
"-DG_DISABLE_DEPRECATED
-DPANGO_DISABLE_DEPRECATED
-DGDK_PIXBUF_DISABLE_DEPRECATED
-DGDK_DISABLE_DEPRECATED
-Wall -Wextra
-Wno-missing-field-initializers
-Wno-sign-compare
-Wno-unused-parameter
-Wdeclaration-after-statement
-Werror-implicit-function-declaration
-Wformat-nonliteral -Wformat-security -Winit-self
-Wmissing-declarations -Wmissing-include-dirs
-Wmissing-noreturn -Wnested-externs -Wpointer-arith
-Wredundant-decls -Wundef -Wwrite-strings")
AC_SUBST(WARNING_FLAGS)
# Other useful compiler warnings for test builds only.
# These may produce warnings we have no control over.
#
# -Wmissing-format-attribute
# -Wshadow
CFLAGS="$CFLAGS $WARNING_FLAGS"
# GNOME Documentation
GNOME_DOC_INIT
# Gross hack to enable 'make dist' on automake 1.9+tar 1.14.
@ -1383,21 +1410,6 @@ dnl We use AC_SUBST_FILE because AC_SUBST won't deal with newlines
EVO_MARSHAL_RULE=$srcdir/marshal.mk
AC_SUBST_FILE(EVO_MARSHAL_RULE)
dnl *************************
dnl CFLAGS and LIBS and stuff
dnl *************************
GNOME_COMPILE_WARNINGS(yes)
CFLAGS="$CFLAGS $WARN_CFLAGS"
case $CFLAGS in
*-Wall*)
# Turn off the annoying "comparison between signed and unsigned"
# warning in gcc 3.3
CFLAGS="$CFLAGS -Wno-sign-compare"
;;
esac
dnl **************************
dnl Check for X libs and -lX11
dnl **************************