From ad9ff5834a3cb2ee485353ab03d6c509e2200f17 Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Sun, 10 Apr 2011 17:23:11 +0200 Subject: [PATCH] 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. --- configure.in | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/configure.in b/configure.in index 2cc091bc..c9c30c6a 100644 --- a/configure.in +++ b/configure.in @@ -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" -- 2.40.0