Fix compilation under LLVM/clang with --enable-gcc-warnings

When compiling using clang (2.9 or lower) do not enable
-Wnormalized=id or -Woverride-init when --enable-gcc-warnings
or --enable-gcc-warnings-advisory is set as these options
are unsupported.

This commit is based on a patch for Tor
(git commit 56bdc844ba68ac0911efc7ad3398f1eafeaaac76 by Steven
Murdoch), Copyright (c) 2007-2011, The Tor Project, Inc.
This commit is contained in:
Sebastian Hahn 2011-04-10 17:23:11 +02:00
parent b4f89f00c6
commit ad9ff5834a

View File

@ -635,6 +635,16 @@ if test x$enable_gcc_warnings = xyes && test "$GCC" = "yes"; then
#error
#endif])], have_gcc45=yes, have_gcc45=no)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
#if !defined(__clang__)
#error
#endif])], have_clang=yes, have_clang=no)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
#if !defined(__clang__) || (__clang_major__ > 2) || (__clang_major__ == 2 && __clang_minor__ > 9)
#error
#endif])], have_clang29orlower=yes, have_clang29orlower=no)
CFLAGS="$CFLAGS -W -Wfloat-equal -Wundef -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wwrite-strings -Wredundant-decls -Wchar-subscripts -Wcomment -Wformat -Wwrite-strings -Wmissing-declarations -Wredundant-decls -Wnested-externs -Wbad-function-cast -Wswitch-enum -Werror"
CFLAGS="$CFLAGS -Wno-unused-parameter -Wstrict-aliasing"
@ -646,13 +656,27 @@ if test x$enable_gcc_warnings = xyes && test "$GCC" = "yes"; then
if test x$have_gcc42 = xyes ; then
# These warnings break gcc 4.0.2 and work on gcc 4.2
CFLAGS="$CFLAGS -Waddress -Wnormalized=id -Woverride-init"
CFLAGS="$CFLAGS -Waddress"
fi
if test x$have_gcc42 = xyes && test x$have_clang29orlower = xno; then
# These warnings break gcc 4.0.2 and clang, but work on gcc 4.2
# We only disable these for clang 2.9 and lower, in case they are
# supported in later versions.
CFLAGS="$CFLAGS -Wnormalized=id -Woverride-init"
fi
if test x$have_gcc45 = xyes ; then
# These warnings work on gcc 4.5
CFLAGS="$CFLAGS -Wlogical-op"
fi
if test x$have_clang = xyes; then
# Disable the unused-function warnings, because these trigger
# for minheap-internal.h related code.
CFLAGS="$CFLAGS -Wno-unused-function"
fi
##This will break the world on some 64-bit architectures
# CFLAGS="$CFLAGS -Winline"