[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: xalloc: missing prototype
From: |
Akim Demaille |
Subject: |
Re: xalloc: missing prototype |
Date: |
Fri, 7 Dec 2012 10:19:53 +0100 |
Le 5 déc. 2012 à 17:19, Eric Blake <address@hidden> a écrit :
> What I have instead done in libvirt to allow compilation with older gcc
> is the following:
>
> # Gnulib uses '#pragma GCC diagnostic push' to silence some
> # warnings, but older gcc doesn't support this.
> AC_CACHE_CHECK([whether pragma GCC diagnostic push works],
> [lv_cv_gcc_pragma_push_works], [
> save_CFLAGS=$CFLAGS
> CFLAGS='-Wunknown-pragmas -Werror'
> 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
Thanks Eric, I installed this in Bison (maint):
commit 85a2f27fc4e271e992ca35561ae93c55aac21c07
Author: Akim Demaille <address@hidden>
Date: Fri Dec 7 09:58:40 2012 +0100
build: keep -Wmissing-declarations and -Wmissing-prototypes for modern GCCs
Fixes a -Werror failure of xalloc.h used in src.
From Eric Blake.
http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00006.html
* configure.ac: Check whether GCC pragma diagnostic push/pop works.
Enable these warnings for bison if it does.
Enable these warnings for the test suite anyway.
diff --git a/configure.ac b/configure.ac
index 4004f55..d14cb29 100644
--- a/configure.ac
+++ b/configure.ac
@@ -58,6 +58,20 @@ AC_PROG_CXX
# Gnulib (early checks).
gl_EARLY
+# Gnulib uses '#pragma GCC diagnostic push' to silence some
+# warnings, but older gcc doesn't support this.
+AC_CACHE_CHECK([whether pragma GCC diagnostic push works],
+ [lv_cv_gcc_pragma_push_works], [
+ save_CFLAGS=$CFLAGS
+ CFLAGS='-Wunknown-pragmas -Werror'
+ 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])
+
AC_ARG_ENABLE([gcc-warnings],
[ --enable-gcc-warnings turn on lots of GCC warnings (not recommended)],
[case $enable_gcc_warnings in
@@ -68,8 +82,7 @@ AC_ARG_ENABLE([gcc-warnings],
if test "$enable_gcc_warnings" = yes; then
warn_common='-Wall -Wextra -Wno-sign-compare -Wcast-align
-Wformat -Wpointer-arith -Wwrite-strings'
- warn_c='-Wbad-function-cast -Wmissing-declarations -Wmissing-prototypes
- -Wshadow -Wstrict-prototypes'
+ warn_c='-Wbad-function-cast -Wshadow -Wstrict-prototypes'
warn_cxx='-Wnoexcept'
AC_LANG_PUSH([C])
# Clang supports many of GCC's -W options, but only issues warnings
@@ -89,12 +102,21 @@ if test "$enable_gcc_warnings" = yes; then
gl_WARN_ADD([$i], [WARN_CFLAGS])
done
gl_WARN_ADD([-Werror], [WERROR_CFLAGS])
+
+ # Warnings for the test suite, and maybe for bison if GCC is modern
+ # enough.
+ gl_WARN_ADD([-Wmissing-declarations], [WARN_CFLAGS_TEST])
+ gl_WARN_ADD([-Wmissing-prototypes], [WARN_CFLAGS_TEST])
+ test $lv_cv_gcc_pragma_push_works = yes &&
+ AS_VAR_APPEND([WARN_CFLAGS], [" $WARN_CFLAGS_TEST"])
+
# Warnings for the test suite only.
gl_WARN_ADD([-Wundef], [WARN_CFLAGS_TEST])
gl_WARN_ADD([-pedantic], [WARN_CFLAGS_TEST])
CFLAGS=$save_CFLAGS
AC_LANG_POP([C])
+
AC_LANG_PUSH([C++])
save_CXXFLAGS=$CXXFLAGS
gl_WARN_ADD([-Werror=unknown-warning-option], [CXXFLAGS])
- xalloc: missing prototype, Akim Demaille, 2012/12/05
- Re: xalloc: missing prototype, Eric Blake, 2012/12/05
- Re: xalloc: missing prototype, Paul Eggert, 2012/12/05
- Re: xalloc: missing prototype, Akim Demaille, 2012/12/06
- Re: xalloc: missing prototype, Akim Demaille, 2012/12/07
- Re: xalloc: missing prototype, Paul Eggert, 2012/12/07
- Re: xalloc: missing prototype, Akim Demaille, 2012/12/09
- Re: xalloc: missing prototype, Paul Eggert, 2012/12/09
- Re: xalloc: missing prototype, Akim Demaille, 2012/12/10