diff options
author | Daniel P. Berrange <berrange@redhat.com> | 2012-03-15 10:40:43 +0000 |
---|---|---|
committer | Daniel P. Berrange <berrange@redhat.com> | 2012-04-25 09:49:25 +0100 |
commit | d986fb466bb60c5e6229086261b6b3ed0b383d92 (patch) | |
tree | b309ef0a797a766cea504e2a2980f0dd2937f0a6 /m4/spice-compile-warnings.m4 | |
parent | 39565707a9b9b6460ca18c5c9749ae565d583e2a (diff) | |
download | spice-d986fb466bb60c5e6229086261b6b3ed0b383d92.tar.gz spice-d986fb466bb60c5e6229086261b6b3ed0b383d92.tar.xz spice-d986fb466bb60c5e6229086261b6b3ed0b383d92.zip |
Enable many more compiler warnings
* m4/manywarnings.m4m, m4/warnings.m4: Import GNULIB warnings
modules
* m4/spice-compile-warnings.m4: Define SPICE_COMPILE_WARNINGS
* configure.ac: Replace compile warning check with a call to
SPICE_COMPILE_WARNINGS
* client/Makefile.am: Use WARN_CXXFLAGS instead of WARN_CFLAGS
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Diffstat (limited to 'm4/spice-compile-warnings.m4')
-rw-r--r-- | m4/spice-compile-warnings.m4 | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/m4/spice-compile-warnings.m4 b/m4/spice-compile-warnings.m4 new file mode 100644 index 00000000..8de2ffd0 --- /dev/null +++ b/m4/spice-compile-warnings.m4 @@ -0,0 +1,162 @@ +dnl +dnl Enable all known GCC compiler warnings, except for those +dnl we can't yet cope with +dnl +AC_DEFUN([SPICE_COMPILE_WARNINGS],[ + dnl ****************************** + dnl More compiler warnings + dnl ****************************** + + AC_ARG_ENABLE([werror], + AS_HELP_STRING([--enable-werror], [Use -Werror (if supported)]), + [set_werror="$enableval"], + [if test -d $srcdir/.git; then + is_git_version=true + set_werror=yes + else + set_werror=no + fi]) + + # List of warnings that are not relevant / wanted + + # Don't care about C++ compiler compat + dontwarn="$dontwarn -Wc++-compat" + dontwarn="$dontwarn -Wabi" + dontwarn="$dontwarn -Wdeprecated" + # Don't care about ancient C standard compat + dontwarn="$dontwarn -Wtraditional" + # Don't care about ancient C standard compat + dontwarn="$dontwarn -Wtraditional-conversion" + # Ignore warnings in /usr/include + dontwarn="$dontwarn -Wsystem-headers" + # Happy for compiler to add struct padding + dontwarn="$dontwarn -Wpadded" + # GCC very confused with -O2 + dontwarn="$dontwarn -Wunreachable-code" + + + dontwarn="$dontwarn -Wconversion" + dontwarn="$dontwarn -Wsign-conversion" + dontwarn="$dontwarn -Wvla" + dontwarn="$dontwarn -Wundef" + dontwarn="$dontwarn -Wcast-qual" + dontwarn="$dontwarn -Wlong-long" + dontwarn="$dontwarn -Wswitch-default" + dontwarn="$dontwarn -Wswitch-enum" + dontwarn="$dontwarn -Wstrict-overflow" + dontwarn="$dontwarn -Wunsafe-loop-optimizations" + dontwarn="$dontwarn -Wformat-nonliteral" + dontwarn="$dontwarn -Wfloat-equal" + dontwarn="$dontwarn -Wdeclaration-after-statement" + dontwarn="$dontwarn -Wcast-qual" + dontwarn="$dontwarn -Wconversion" + dontwarn="$dontwarn -Wsign-conversion" + dontwarn="$dontwarn -Wpacked" + dontwarn="$dontwarn -Wunused-macros" + dontwarn="$dontwarn -Woverlength-strings" + dontwarn="$dontwarn -Wstack-protector" + dontwarn="$dontwarn -Winline" + dontwarn="$dontwarn -Wbad-function-cast" + dontwarn="$dontwarn -Wshadow" + + # We want to enable thse, but need to sort out the + # decl mess with gtk/generated_*.c + dontwarn="$dontwarn -Wmissing-prototypes" + dontwarn="$dontwarn -Wmissing-declarations" + + # Stuff that C++ won't allow. Turn them back on later + dontwarn="$dontwarn -Waggregate-return" + dontwarn="$dontwarn -Wstrict-prototypes" + dontwarn="$dontwarn -Wold-style-definition" + dontwarn="$dontwarn -Wnested-externs" + dontwarn="$dontwarn -Wformat-zero-length" + dontwarn="$dontwarn -Wpointer-to-int-cast" + dontwarn="$dontwarn -Wjump-misses-init" + + # Issues in x11/platform_utils.cpp prevent us turning this on + dontwarn="$dontwarn -Wmissing-format-attribute" + + # Get all possible GCC warnings + gl_MANYWARN_ALL_GCC([maybewarn]) + + # Remove the ones we don't want, blacklisted earlier + gl_MANYWARN_COMPLEMENT([wantwarn], [$maybewarn], [$dontwarn]) + + # Check for $CC support of each warning + for w in $wantwarn; do + gl_WARN_ADD([$w]) + done + + # GNULIB uses '-W' (aka -Wextra) which includes a bunch of stuff. + # Unfortunately, this means you can't simply use '-Wsign-compare' + # with gl_MANYWARN_COMPLEMENT + # So we have -W enabled, and then have to explicitly turn off... + gl_WARN_ADD([-Wno-sign-compare]) + gl_WARN_ADD([-Wno-unused-parameter]) + # We can't enable this due to horrible spice_usb_device_get_description + # signature + gl_WARN_ADD([-Wno-format-nonliteral]) + # CEGui headers cause violation of this + gl_WARN_ADD([-Wno-ignored-qualifiers]) + + + + + # GNULIB turns on -Wformat=2 which implies -Wformat-nonliteral, + # so we need to manually re-exclude it. + gl_WARN_ADD([-Wno-format-nonliteral]) + + # This should be < 1024 really. pixman_utils is the blackspot + # preventing lower usage + gl_WARN_ADD([-Wframe-larger-than=20460]) + + # Use improved glibc headers + AC_DEFINE([_FORTIFY_SOURCE], [2], + [enable compile-time and run-time bounds-checking, and some warnings]) + + # Extra special flags + dnl -fstack-protector stuff passes gl_WARN_ADD with gcc + dnl on Mingw32, but fails when actually used + case $host in + *-*-linux*) + dnl Fedora only uses -fstack-protector, but doesn't seem to + dnl be great overhead in adding -fstack-protector-all instead + dnl gl_WARN_ADD([-fstack-protector]) + gl_WARN_ADD([-fstack-protector-all]) + gl_WARN_ADD([--param=ssp-buffer-size=4]) + ;; + esac + gl_WARN_ADD([-fexceptions]) + gl_WARN_ADD([-fasynchronous-unwind-tables]) + gl_WARN_ADD([-fdiagnostics-show-option]) + gl_WARN_ADD([-funit-at-a-time]) + + # Need -fipa-pure-const in order to make -Wsuggest-attribute=pure + # fire even without -O. + gl_WARN_ADD([-fipa-pure-const]) + + # We should eventually enable this, but right now there are at + # least 75 functions triggering warnings. + gl_WARN_ADD([-Wno-suggest-attribute=pure]) + gl_WARN_ADD([-Wno-suggest-attribute=const]) + + if test "$set_werror" = "yes" + then + gl_WARN_ADD([-Werror]) + fi + WARN_CXXFLAGS=$WARN_CFLAGS + AC_SUBST([WARN_CXXFLAGS]) + + # These are C-only warnings + gl_WARN_ADD([-Waggregate-return]) + gl_WARN_ADD([-Wstrict-prototypes]) + gl_WARN_ADD([-Wold-style-definition]) + gl_WARN_ADD([-Wnested-externs]) + gl_WARN_ADD([-Wformat-zero-length]) + gl_WARN_ADD([-Wpointer-to-int-cast]) + gl_WARN_ADD([-Wjump-misses-init]) + + WARN_LDFLAGS=$WARN_CFLAGS + AC_SUBST([WARN_CFLAGS]) + AC_SUBST([WARN_LDFLAGS]) +]) |