[adding bug-gnulib] On 05/13/2013 06:17 AM, Daniel P. Berrange wrote: > From: "Daniel P. Berrange" <berrange@xxxxxxxxxx> > > 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 <berrange@xxxxxxxxxx> > --- > 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
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list