bug-gnulib
[Top][All Lists]
Advanced

[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])




reply via email to

[Prev in Thread] Current Thread [Next in Thread]