mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-10 05:17:59 +03:00
Correctly detect warning flags with clang
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@redhat.com>
This commit is contained in:
parent
7d73b11427
commit
c163410044
@ -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],
|
||||
@ -179,12 +191,19 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
|
||||
dnl -fstack-protector stuff passes gl_WARN_ADD with gcc
|
||||
dnl on Mingw32, but fails when actually used
|
||||
case $host in
|
||||
*-*-linux*)
|
||||
*-*-linux*|*-*-freebsd*)
|
||||
dnl Fedora only uses -fstack-protector, but doesn't seem to
|
||||
dnl be great overhead in adding -fstack-protector-all instead
|
||||
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"
|
||||
])
|
||||
|
Loading…
Reference in New Issue
Block a user