On 08/15/2012 12:42 AM, Eric Blake wrote:
The previous patch pulled in a newer version of stat-time.h from
gnulib, which tries to suppress some stupid gcc warnings (see
<http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113>) by exploiting
a feature of newer gcc. But we still aim to compile on RHEL 6.3,
with gcc 4.4.6 (not to mention even older devel platforms like
RHEL 5), which fails to build thanks to our development -Werror.
It took me a while to figure out how to make our set of warnings
smaller on older gcc without losing the benefit of the warnings
when using newer gcc (such as the one on Fedora 17), but this
should do the trick.
* m4/virt-compile-warnings.m4 (LIBVIRT_COMPILE_WARNINGS): Avoid
warnings that gnulib can't silence on older gcc.
---
If I don't get a review by tomorrow, I will go ahead and push this
under the build-breaker rule.
m4/virt-compile-warnings.m4 | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/m4/virt-compile-warnings.m4 b/m4/virt-compile-warnings.m4
index 9dee000..702506d 100644
--- a/m4/virt-compile-warnings.m4
+++ b/m4/virt-compile-warnings.m4
@@ -58,6 +58,23 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
# Gnulib's stat-time.h violates this
dontwarn="$dontwarn -Waggregate-return"
+ # Gnulib uses '#pragma GCC diagnostic push' to silence some
+ # warnings, but older gcc doesn't support this.
+ AC_CACHE_VAL([lv_cv_gcc_pragma_push_works], [
+ save_CFLAGS=$CFLAGS
+ CFLAGS=-Wunknown-pragmas
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic pop
+ ]])],
+ [lv_cv_gcc_pragma_push_works=yes],
+ [lv_cv_gcc_pragma_push_works=no])
+ CFLAGS=$save_CFLAGS])
+ if test $lv_cv_gcc_pragma_push_works = no; then
+ dontwarn="$dontwarn -Wmissing-prototypes"
+ dontwarn="$dontwarn -Wmissing-declarations"
+ fi
+
# We might fundamentally need some of these disabled forever, but
# ideally we'd turn many of them on
dontwarn="$dontwarn -Wfloat-equal"
Hi Eric,
I assume this was intended to suppress errors like this here:
CC libvirt_driver_storage_la-storage_backend.lo
cc1: warnings being treated as errors
In file included from ../../src/storage/storage_backend.c:59:
../../gnulib/lib/stat-time.h:55: error: no previous prototype for
'get_stat_atime_ns' [-Wmissing-prototypes]
../../gnulib/lib/stat-time.h:68: error: no previous prototype for
'get_stat_ctime_ns' [-Wmissing-prototypes]
../../gnulib/lib/stat-time.h:81: error: no previous prototype for
'get_stat_mtime_ns' [-Wmissing-prototypes]
../../gnulib/lib/stat-time.h:94: error: no previous prototype for
'get_stat_birthtime_ns' [-Wmissing-prototypes]
../../gnulib/lib/stat-time.h:109: error: no previous prototype for
'get_stat_atime' [-Wmissing-prototypes]
../../gnulib/lib/stat-time.h:123: error: no previous prototype for
'get_stat_ctime' [-Wmissing-prototypes]
../../gnulib/lib/stat-time.h:137: error: no previous prototype for
'get_stat_mtime' [-Wmissing-prototypes]
../../gnulib/lib/stat-time.h:152: error: no previous prototype for
'get_stat_birthtime' [-Wmissing-prototypes]
unfortunately, even applying the patch above and rerunning bootstrap,
configure, make didn't help and I'm still getting the errors ... the
interesting thing is that pragma push seems to work...
I am compiling on RHEL6.2, gcc 4.4.6
grep pragma_push config.log
lv_cv_gcc_pragma_push_works=yes
--
Mit freundlichen Grüßen/Kind Regards
Viktor Mihajlovski
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list