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(+) 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" ]) -- 1.8.2.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list