[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [libvirt] [PATCH 4/6] Correctly detect warning flags with clang
From: |
Eric Blake |
Subject: |
Re: [libvirt] [PATCH 4/6] Correctly detect warning flags with clang |
Date: |
Mon, 13 May 2013 13:28:54 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130402 Thunderbird/17.0.5 |
[adding bug-gnulib]
On 05/13/2013 06:17 AM, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange" <address@hidden>
>
> Clang will happily claim to support any warning flags
> unless the -Werror and -Wunknown-warning-option flags
> are set. Thus we need to make sure these are set when
> testing for clags.
>
> We must also set the clang specific warning flags
> -Wno-unused-command-line-argument to avoid a warning
> from the ssp-buffer-size flag when linking .o files.
>
> Signed-off-by: Daniel P. Berrange <address@hidden>
> ---
> m4/virt-compile-warnings.m4 | 22 ++++++++++++++++++++++
> 1 file changed, 22 insertions(+)
Some of this needs to be imported into upstream gnulib.
>
> diff --git a/m4/virt-compile-warnings.m4 b/m4/virt-compile-warnings.m4
> index fbeb3eb..5803d48 100644
> --- a/m4/virt-compile-warnings.m4
> +++ b/m4/virt-compile-warnings.m4
> @@ -60,6 +60,18 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
> # gcc 4.4.6 complains this is C++ only; gcc 4.7.0 implies this from -Wall
> dontwarn="$dontwarn -Wenum-compare"
>
> + # clang rather horribly ignores unknown warning flags by
> + # default. Thus to get gl_WARN_ADD to reliably detect
> + # flags, we need to set '-Werror -Wunknown-warning-option'
> + # in CFLAGS while probing support
> + WARN_CFLAGS=
> + orig_CFLAGS="$CFLAGS"
> + gl_WARN_ADD([-Wunknown-warning-option])
> + if test -n "$WARN_CFLAGS" ; then
> + WARN_CFLAGS=
> + CFLAGS="-Werror -Wunknown-warning-option $CFLAGS"
> + fi
> +
> # gcc 4.2 treats attribute(format) as an implicit attribute(nonnull),
> # which triggers spurious warnings for our usage
> AC_CACHE_CHECK([whether gcc -Wformat allows NULL strings],
> @@ -185,6 +197,13 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
> dnl gl_WARN_ADD([-fstack-protector])
> gl_WARN_ADD([-fstack-protector-all])
> gl_WARN_ADD([--param=ssp-buffer-size=4])
> + dnl Even though it supports it, clang complains about
> + dnl use of --param=ssp-buffer-size=4 unless used with
> + dnl the -c arg. It doesn't like it when used with args
> + dnl that just link together .o files. Unfortunately
> + dnl we can't avoid that with automake, so we must turn
> + dnl off the following clang specific warning
> + gl_WARN_ADD([-Wno-unused-command-line-argument])
> ;;
> esac
> gl_WARN_ADD([-fexceptions])
> @@ -222,4 +241,7 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
> AC_DEFINE_UNQUOTED([BROKEN_GCC_WLOGICALOP], 1,
> [Define to 1 if gcc -Wlogical-op reports false positives on strchr])
> fi
> +
> + # Remove stuff we set for clang
> + CFLAGS="$orig_CFLAGS"
> ])
>
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
- Re: [libvirt] [PATCH 4/6] Correctly detect warning flags with clang,
Eric Blake <=
- Re: [libvirt] [PATCH 4/6] Correctly detect warning flags with clang, Paul Eggert, 2013/05/15
- [PATCH 2/8] inttostr: port --enable-gcc-warnings to clang, Paul Eggert, 2013/05/15
- [PATCH 3/8] malloca: port --enable-gcc-warnings to clang, Paul Eggert, 2013/05/15
- [PATCH 4/8] mbsstr: port --enable-gcc-warnings to clang, Paul Eggert, 2013/05/15
- [PATCH 5/8] memchr2: port --enable-gcc-warnings to clang, Paul Eggert, 2013/05/15
- [PATCH 6/8] obstack: port --enable-gcc-warnings to clang, Paul Eggert, 2013/05/15
- [PATCH 7/8] sig2str: port --enable-gcc-warnings to clang, Paul Eggert, 2013/05/15
- [PATCH 8/8] stdio: port --enable-gcc-warnings to clang, Paul Eggert, 2013/05/15