[libvirt] [PATCHv2] build: avoid warnings on older gcc

Viktor Mihajlovski mihajlov at linux.vnet.ibm.com
Thu Aug 16 07:36:06 UTC 2012


On 08/15/2012 09:25 PM, 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.
> ---
>
> v2: Use AC_CACHE_CHECK, add -Werror, and test further.
> Pushing under the build-breaker rule.
>
>   m4/virt-compile-warnings.m4 | 18 ++++++++++++++++++
>   1 file changed, 18 insertions(+)
>
> diff --git a/m4/virt-compile-warnings.m4 b/m4/virt-compile-warnings.m4
> index 9dee000..26f6134 100644
> --- a/m4/virt-compile-warnings.m4
> +++ b/m4/virt-compile-warnings.m4
> @@ -58,6 +58,24 @@ 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_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
> +
>       # We might fundamentally need some of these disabled forever, but
>       # ideally we'd turn many of them on
>       dontwarn="$dontwarn -Wfloat-equal"
>

Works for me now -- thanks!

-- 

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




More information about the libvir-list mailing list