[libvirt] [PATCH] Use gnulib's manywarnings & warnings modules

Remove custom code for checking compiler warnings, using gl_WARN_ADD instead. Don't list all flags ourselves, use gnulib's gl_MANYWARN_ALL_GCC to get all possible GCC flags, then turn off the ones we don't want yet. This patch alone doesn't buy us much. What we want is some more followup patches, which remove entries from the 'dontwarn' list, fixing up the corresponding code problems. We also need to fix our stack usage in many places so we can lower the ridiculous size of -Wframe-larger-than=20480 * acinclude.m4: Rewrite to use gl_WARN_ADD and gl_MANYWARN_ALL_GCC * bootstrap.conf: Add warnings & manywarnings * configure.ac: Switch to gl_WARN_ADD * m4/compiler-flags.m4: Obsoleted by gl_WARN_ADD --- acinclude.m4 | 153 ++++++++++++++++++++++++++------------------------ bootstrap.conf | 2 + configure.ac | 15 +++-- m4/compiler-flags.m4 | 48 ---------------- 4 files changed, 91 insertions(+), 127 deletions(-) delete mode 100644 m4/compiler-flags.m4 diff --git a/acinclude.m4 b/acinclude.m4 index 838ec46..63bfec7 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -1,11 +1,6 @@ dnl -dnl Taken from gnome-common/macros2/gnome-compiler-flags.m4 -dnl -dnl We've added: -dnl -Wextra -Wshadow -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Winline -Wredundant-decls -dnl We've removed -dnl CFLAGS="$realsave_CFLAGS" -dnl to avoid clobbering user-specified CFLAGS +dnl Enable all known GCC compiler warnings, except for those +dnl we can't yet cope with dnl AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[ dnl ****************************** @@ -13,90 +8,102 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[ dnl ****************************** AC_ARG_ENABLE(compile-warnings, - [AC_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@], + [AC_HELP_STRING([--enable-compile-warnings=@<:@no/yes/error@:>@], [Turn on compiler warnings])],, - [enable_compile_warnings="m4_default([$1],[maximum])"]) - - warnCFLAGS= - - common_flags= - common_flags="$common_flags -Wp,-D_FORTIFY_SOURCE=2" - common_flags="$common_flags -fexceptions" - common_flags="$common_flags -fasynchronous-unwind-tables" - common_flags="$common_flags -fdiagnostics-show-option" + [enable_compile_warnings="m4_default([$1],[yes])"]) case "$enable_compile_warnings" in no) try_compiler_flags="" ;; - minimum) - try_compiler_flags="-Wall -Wformat -Wformat-security $common_flags" - ;; - yes) - try_compiler_flags="-Wall -Wformat -Wformat-security -Wmissing-prototypes $common_flags" - ;; - maximum|error) - try_compiler_flags="-Wall -Wformat -Wformat-security" - try_compiler_flags="$try_compiler_flags -Wmissing-prototypes" - try_compiler_flags="$try_compiler_flags -Wnested-externs " - try_compiler_flags="$try_compiler_flags -Wpointer-arith" - try_compiler_flags="$try_compiler_flags -Wextra -Wshadow" - try_compiler_flags="$try_compiler_flags -Wcast-align" - try_compiler_flags="$try_compiler_flags -Wwrite-strings" - try_compiler_flags="$try_compiler_flags -Waggregate-return" - try_compiler_flags="$try_compiler_flags -Wstrict-prototypes" - try_compiler_flags="$try_compiler_flags -Winline" - try_compiler_flags="$try_compiler_flags -Wredundant-decls" - try_compiler_flags="$try_compiler_flags -Wno-sign-compare" - try_compiler_flags="$try_compiler_flags -Wlogical-op" - try_compiler_flags="$try_compiler_flags $common_flags" - if test "$enable_compile_warnings" = "error" ; then - try_compiler_flags="$try_compiler_flags -Werror" - fi + yes|minimum|maximum|error) + + # List of warnings that are not relevant / wanted + dontwarn="$dontwarn -Wc++-compat" # Don't care about C++ compiler compat + dontwarn="$dontwarn -Wtraditional" # Don't care about ancient C standard compat + dontwarn="$dontwarn -Wtraditional-conversion" # Don't care about ancient C standard compat + dontwarn="$dontwarn -Wsystem-headers" # Ignore warnings in /usr/include + dontwarn="$dontwarn -Wpadded" # Happy for compiler to add struct padding + dontwarn="$dontwarn -Wunreachable-code" # GCC very confused with -O2 + dontwarn="$dontwarn -Wconversion" # Too many to deal with + dontwarn="$dontwarn -Wsign-conversion" # Too many to deal with + dontwarn="$dontwarn -Wvla" # GNULIB gettext.h violates + dontwarn="$dontwarn -Wundef" # Many GNULIB violations + dontwarn="$dontwarn -Wcast-qual" # Need to allow bad cast for execve() + dontwarn="$dontwarn -Wlong-long" # We need to use long long in many places + + # We might fundamentally need some of these disabled forever, but ideally + # we'd turn many of them on + dontwarn="$dontwarn -Wformat-nonliteral" + dontwarn="$dontwarn -Wswitch-default" + dontwarn="$dontwarn -Wswitch-enum" + dontwarn="$dontwarn -Wstrict-overflow" + dontwarn="$dontwarn -Wfloat-equal" + dontwarn="$dontwarn -Wdeclaration-after-statement" + dontwarn="$dontwarn -Wunsafe-loop-optimizations" + dontwarn="$dontwarn -Wcast-qual" + dontwarn="$dontwarn -Wconversion" + dontwarn="$dontwarn -Wsign-conversion" + dontwarn="$dontwarn -Wold-style-definition" + dontwarn="$dontwarn -Wmissing-noreturn" + dontwarn="$dontwarn -Wpacked" + dontwarn="$dontwarn -Wunused-macros" + dontwarn="$dontwarn -W" + dontwarn="$dontwarn -Woverlength-strings" + dontwarn="$dontwarn -Wmissing-format-attribute" + dontwarn="$dontwarn -Wstack-protector" + + # 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 + + # This should be < 256 really, but with PATH_MAX everywhere + # we have doom, even with 4096. In fact we have some functions + # with several PATH_MAX sized variables :-( We should kill off + # all PATH_MAX usage and then lower this limit + gl_WARN_ADD([-Wframe-larger-than=20480]) + dnl gl_WARN_ADD([-Wframe-larger-than=4096]) + dnl gl_WARN_ADD([-Wframe-larger-than=256]) + + # Extra special flags + gl_WARN_ADD([-Wp,-D_FORTIFY_SOURCE=2]) + 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]) + gl_WARN_ADD([-fexceptions]) + gl_WARN_ADD([-fasynchronous-unwind-tables]) + gl_WARN_ADD([-fdiagnostics-show-option]) + + if test "$enable_compile_warnings" = "error" + then + gl_WARN_ADD([-Werror]) + fi ;; *) AC_MSG_ERROR(Unknown argument '$enable_compile_warnings' to --enable-compile-warnings) ;; esac - COMPILER_FLAGS= - for option in $try_compiler_flags; do - gl_COMPILER_FLAGS($option) - done - unset option - unset try_compiler_flags - - AC_ARG_ENABLE(iso-c, - AC_HELP_STRING([--enable-iso-c], - [Try to warn if code is not ISO C ]),, - [enable_iso_c=no]) - - AC_MSG_CHECKING(what language compliance flags to pass to the C compiler) - complCFLAGS= - if test "x$enable_iso_c" != "xno"; then - if test "x$GCC" = "xyes"; then - case " $CFLAGS " in - *[\ \ ]-ansi[\ \ ]*) ;; - *) complCFLAGS="$complCFLAGS -ansi" ;; - esac - case " $CFLAGS " in - *[\ \ ]-pedantic[\ \ ]*) ;; - *) complCFLAGS="$complCFLAGS -pedantic" ;; - esac - fi - fi - AC_MSG_RESULT($complCFLAGS) - - WARN_CFLAGS="$COMPILER_FLAGS $complCFLAGS" WARN_LDFLAGS=$WARN_CFLAGS AC_SUBST([WARN_CFLAGS]) AC_SUBST([WARN_LDFLAGS]) dnl Needed to keep compile quiet on python 2.4 - COMPILER_FLAGS= - gl_COMPILER_FLAGS(-Wno-redundant-decls) - WARN_PYTHON_CFLAGS=$COMPILER_FLAGS + save_WARN_CFLAGS=$WARN_CFLAGS + WARN_CFLAGS= + gl_WARN_ADD(-Wno-redundant-decls) + WARN_PYTHON_CFLAGS=$WARN_CFLAGS AC_SUBST(WARN_PYTHON_CFLAGS) + WARN_CFLAGS=$save_WARN_CFLAGS ]) diff --git a/bootstrap.conf b/bootstrap.conf index 733c354..e8cdf76 100644 --- a/bootstrap.conf +++ b/bootstrap.conf @@ -45,6 +45,7 @@ ignore-value inet_pton ioctl maintainer-makefile +manywarnings mkstemp mkstemps mktempd @@ -80,6 +81,7 @@ timegm uname useless-if-before-free usleep +warnings vasprintf verify vc-list-files diff --git a/configure.ac b/configure.ac index 2378d9a..0b9855b 100644 --- a/configure.ac +++ b/configure.ac @@ -1970,12 +1970,14 @@ AC_ARG_ENABLE([test-coverage], enable_coverage=$enableval if test "${enable_coverage}" = yes; then - COMPILER_FLAGS= - gl_COMPILER_FLAGS(-fprofile-arcs) - gl_COMPILER_FLAGS(-ftest-coverage) - AC_SUBST([COVERAGE_CFLAGS], [$COMPILER_FLAGS]) - AC_SUBST([COVERAGE_LDFLAGS], [$COMPILER_FLAGS]) - COMPILER_FLAGS= + save_WARN_CFLAGS=$WARN_CFLAGS + WARN_CFLAGS= + gl_WARN_ADD(-fprofile-arcs) + gl_WARN_ADD(-ftest-coverage) + COVERAGE_FLAGS=$WARN_CFLAGS + AC_SUBST([COVERAGE_CFLAGS], [$COVERAGE_FLAGS]) + AC_SUBST([COVERAGE_LDFLAGS], [$COVERAGE_FLAGS]) + WARN_CFLAGS=$save_WARN_CFLAGS fi AC_ARG_ENABLE([test-oom], @@ -2538,6 +2540,7 @@ AC_MSG_NOTICE([Miscellaneous]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Debug: $enable_debug]) AC_MSG_NOTICE([ Warnings: $enable_compile_warnings]) +AC_MSG_NOTICE([Warning Flags: $WARN_CFLAGS]) AC_MSG_NOTICE([ Readline: $lv_use_readline]) AC_MSG_NOTICE([ Python: $with_python]) AC_MSG_NOTICE([ DTrace: $with_dtrace]) diff --git a/m4/compiler-flags.m4 b/m4/compiler-flags.m4 deleted file mode 100644 index 6db4816..0000000 --- a/m4/compiler-flags.m4 +++ /dev/null @@ -1,48 +0,0 @@ -# serial 4 -# Find valid warning flags for the C Compiler. -*-Autoconf-*- -# -# Copyright (C) 2010 Red Hat, Inc. -# Copyright (C) 2001, 2002, 2006 Free Software Foundation, Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA - -# Written by Jesse Thilo. - -AC_DEFUN([gl_COMPILER_FLAGS], - [AC_MSG_CHECKING(whether compiler accepts $1) - ac_save_CFLAGS="$CFLAGS" - dnl Some flags are dependant, so we set all previously checked - dnl flags when testing. Except for -Werror which we have to - dnl check on its own, because some of our compiler flags cause - dnl warnings from the autoconf test program! - if test "$1" = "-Werror" ; then - CFLAGS="$CFLAGS $1" - else - CFLAGS="$CFLAGS $COMPILER_FLAGS $1" - fi - AC_TRY_LINK([], [], has_option=yes, has_option=no,) - echo 'int x;' >conftest.c - $CC $CFLAGS -c conftest.c 2>conftest.err - ret=$? - if test $ret != 0 || test -s conftest.err || test $has_option = "no"; then - AC_MSG_RESULT(no) - else - AC_MSG_RESULT(yes) - COMPILER_FLAGS="$COMPILER_FLAGS $1" - fi - CFLAGS="$ac_save_CFLAGS" - rm -f conftest* - ]) -- 1.7.4

On 04/01/2011 09:39 AM, Daniel P. Berrange wrote:
Remove custom code for checking compiler warnings, using gl_WARN_ADD instead. Don't list all flags ourselves, use gnulib's gl_MANYWARN_ALL_GCC to get all possible GCC flags, then turn off the ones we don't want yet.
This patch alone doesn't buy us much. What we want is some more followup patches, which remove entries from the 'dontwarn' list, fixing up the corresponding code problems.
Should we therefore defer this patch until post-0.9.0 when we can do more about the warnings cleanup?
We also need to fix our stack usage in many places so we can lower the ridiculous size of -Wframe-larger-than=20480
5 pages, ouch! Windows will (silently!) abort a process that has a page fault that jumps larger than the 1 page stack guard; a good goal is -Wframe-larger-than=4096.
* acinclude.m4: Rewrite to use gl_WARN_ADD and gl_MANYWARN_ALL_GCC * bootstrap.conf: Add warnings & manywarnings * configure.ac: Switch to gl_WARN_ADD * m4/compiler-flags.m4: Obsoleted by gl_WARN_ADD --- acinclude.m4 | 153 ++++++++++++++++++++++++++------------------------
I really don't like how we have crammed so much into acinclude.m4; it would be nicer if we could separate things into individual m4/foo.m4 files...
bootstrap.conf | 2 + configure.ac | 15 +++-- m4/compiler-flags.m4 | 48 ----------------
...much like this used to be. But that's orthogonal to this patch. (It always takes me too long to figure out where the libvirt list of -W flags is to modify that list).
@@ -13,90 +8,102 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[ dnl ******************************
AC_ARG_ENABLE(compile-warnings, - [AC_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@], + [AC_HELP_STRING([--enable-compile-warnings=@<:@no/yes/error@:>@], [Turn on compiler warnings])],,
So we're getting rid of minimum and maximum (truthfully, I never used them). Sounds okay, especially since they weren't documented in HACKING (just in ./configure --help).
+ yes|minimum|maximum|error)
Hmm, so you still silently accept them, but they now are synonyms for yes.
+ + # List of warnings that are not relevant / wanted + dontwarn="$dontwarn -Wc++-compat" # Don't care about C++ compiler compat + dontwarn="$dontwarn -Wtraditional" # Don't care about ancient C standard compat + dontwarn="$dontwarn -Wtraditional-conversion" # Don't care about ancient C standard compat + dontwarn="$dontwarn -Wsystem-headers" # Ignore warnings in /usr/include + dontwarn="$dontwarn -Wpadded" # Happy for compiler to add struct padding + dontwarn="$dontwarn -Wunreachable-code" # GCC very confused with -O2 + dontwarn="$dontwarn -Wconversion" # Too many to deal with + dontwarn="$dontwarn -Wsign-conversion" # Too many to deal with + dontwarn="$dontwarn -Wvla" # GNULIB gettext.h violates + dontwarn="$dontwarn -Wundef" # Many GNULIB violations
We really ought to follow coreutils' lead of generating two separate lists of -W flags - a larger set for libvirt and a smaller set for gnulib. Then exemptions such as -Wvla could be used just for gnulib. But that can be a followup patch.
+ dontwarn="$dontwarn -Wcast-qual" # Need to allow bad cast for execve() + dontwarn="$dontwarn -Wlong-long" # We need to use long long in many places + + # We might fundamentally need some of these disabled forever, but ideally + # we'd turn many of them on + dontwarn="$dontwarn -Wformat-nonliteral" + dontwarn="$dontwarn -Wswitch-default" + dontwarn="$dontwarn -Wswitch-enum" + dontwarn="$dontwarn -Wstrict-overflow" + dontwarn="$dontwarn -Wfloat-equal" + dontwarn="$dontwarn -Wdeclaration-after-statement" + dontwarn="$dontwarn -Wunsafe-loop-optimizations" + dontwarn="$dontwarn -Wcast-qual" + dontwarn="$dontwarn -Wconversion" + dontwarn="$dontwarn -Wsign-conversion" + dontwarn="$dontwarn -Wold-style-definition" + dontwarn="$dontwarn -Wmissing-noreturn" + dontwarn="$dontwarn -Wpacked" + dontwarn="$dontwarn -Wunused-macros" + dontwarn="$dontwarn -W"
-W is the same as -Wextra - that turns on a lot of useful warnings. Can we fine-tune it to just disable the needed warnings?
+ dontwarn="$dontwarn -Woverlength-strings" + dontwarn="$dontwarn -Wmissing-format-attribute" + dontwarn="$dontwarn -Wstack-protector" + + # 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
Yep, gnulib's macros are nice for this!
+ + # This should be < 256 really, but with PATH_MAX everywhere + # we have doom, even with 4096. In fact we have some functions + # with several PATH_MAX sized variables :-( We should kill off + # all PATH_MAX usage and then lower this limit + gl_WARN_ADD([-Wframe-larger-than=20480]) + dnl gl_WARN_ADD([-Wframe-larger-than=4096]) + dnl gl_WARN_ADD([-Wframe-larger-than=256])
256 is a bit tight; I don't know of any platform where 4096 is an unreasonable bound for still reliably detecting stack overflow (then again, 4096 compared to 256 is 16 times more likely to stack overflow on a deeply nested call graph where every function in the graph uses a lot of stack).
+ + # Extra special flags + gl_WARN_ADD([-Wp,-D_FORTIFY_SOURCE=2]) + 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]) + gl_WARN_ADD([-fexceptions]) + gl_WARN_ADD([-fasynchronous-unwind-tables]) + gl_WARN_ADD([-fdiagnostics-show-option]) + + if test "$enable_compile_warnings" = "error" + then + gl_WARN_ADD([-Werror]) + fi ;; *) AC_MSG_ERROR(Unknown argument '$enable_compile_warnings' to --enable-compile-warnings) ;; esac
AC_ARG_ENABLE([test-oom], @@ -2538,6 +2540,7 @@ AC_MSG_NOTICE([Miscellaneous]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Debug: $enable_debug]) AC_MSG_NOTICE([ Warnings: $enable_compile_warnings]) +AC_MSG_NOTICE([Warning Flags: $WARN_CFLAGS])
Nice configure summary addition. Overall, I like the direction of this patch. -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org

On Fri, Apr 01, 2011 at 10:02:18AM -0600, Eric Blake wrote:
On 04/01/2011 09:39 AM, Daniel P. Berrange wrote:
* acinclude.m4: Rewrite to use gl_WARN_ADD and gl_MANYWARN_ALL_GCC * bootstrap.conf: Add warnings & manywarnings * configure.ac: Switch to gl_WARN_ADD * m4/compiler-flags.m4: Obsoleted by gl_WARN_ADD --- acinclude.m4 | 153 ++++++++++++++++++++++++++------------------------
I really don't like how we have crammed so much into acinclude.m4; it would be nicer if we could separate things into individual m4/foo.m4 files...
The new series moves this file
+ # List of warnings that are not relevant / wanted + dontwarn="$dontwarn -Wc++-compat" # Don't care about C++ compiler compat + dontwarn="$dontwarn -Wtraditional" # Don't care about ancient C standard compat + dontwarn="$dontwarn -Wtraditional-conversion" # Don't care about ancient C standard compat + dontwarn="$dontwarn -Wsystem-headers" # Ignore warnings in /usr/include + dontwarn="$dontwarn -Wpadded" # Happy for compiler to add struct padding + dontwarn="$dontwarn -Wunreachable-code" # GCC very confused with -O2 + dontwarn="$dontwarn -Wconversion" # Too many to deal with + dontwarn="$dontwarn -Wsign-conversion" # Too many to deal with + dontwarn="$dontwarn -Wvla" # GNULIB gettext.h violates + dontwarn="$dontwarn -Wundef" # Many GNULIB violations
We really ought to follow coreutils' lead of generating two separate lists of -W flags - a larger set for libvirt and a smaller set for gnulib. Then exemptions such as -Wvla could be used just for gnulib. But that can be a followup patch.
The problem isn't with the compilation of gnulib - that doesn't use any of these flags. The issue is with various things in the gnulib header files, which impact compilation of the main libvirt code. eg ../gnulib/lib/gettext.h:218:3: error: variable length array 'msg_ctxt_id' is used [-Wvla]
+ dontwarn="$dontwarn -Wcast-qual" # Need to allow bad cast for execve() + dontwarn="$dontwarn -Wlong-long" # We need to use long long in many places + + # We might fundamentally need some of these disabled forever, but ideally + # we'd turn many of them on + dontwarn="$dontwarn -Wformat-nonliteral" + dontwarn="$dontwarn -Wswitch-default" + dontwarn="$dontwarn -Wswitch-enum" + dontwarn="$dontwarn -Wstrict-overflow" + dontwarn="$dontwarn -Wfloat-equal" + dontwarn="$dontwarn -Wdeclaration-after-statement" + dontwarn="$dontwarn -Wunsafe-loop-optimizations" + dontwarn="$dontwarn -Wcast-qual" + dontwarn="$dontwarn -Wconversion" + dontwarn="$dontwarn -Wsign-conversion" + dontwarn="$dontwarn -Wold-style-definition" + dontwarn="$dontwarn -Wmissing-noreturn" + dontwarn="$dontwarn -Wpacked" + dontwarn="$dontwarn -Wunused-macros" + dontwarn="$dontwarn -W"
-W is the same as -Wextra - that turns on a lot of useful warnings. Can we fine-tune it to just disable the needed warnings?
Removing that means I need a manual check for -Wno-sign-compare since gl_MANYWAY_COMPLEMENT can't see that -W include -Wsign-compare
+ dontwarn="$dontwarn -Woverlength-strings" + dontwarn="$dontwarn -Wmissing-format-attribute" + dontwarn="$dontwarn -Wstack-protector" + + # 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
Yep, gnulib's macros are nice for this!
Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
participants (2)
-
Daniel P. Berrange
-
Eric Blake