summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac175
1 files changed, 57 insertions, 118 deletions
diff --git a/configure.ac b/configure.ac
index abed17f096..f80cb47dac 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1656,59 +1656,12 @@ esac
# Add some more warnings which we use in development but not in the
# released versions. (Some relevant gcc versions can't handle these.)
+#
+# Note that we have to do this near the end of the autoconf process, or
+# else we may run into problems when these warnings hit on the testing C
+# programs that autoconf wants to build.
if test "x$enable_gcc_warnings_advisory" != "xno"; then
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
-#if !defined(__GNUC__) || (__GNUC__ < 4)
-#error
-#endif])], have_gcc4=yes, have_gcc4=no)
-
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
-#if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 2)
-#error
-#endif])], have_gcc42=yes, have_gcc42=no)
-
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
-#if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 3)
-#error
-#endif])], have_gcc43=yes, have_gcc43=no)
-
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
-#if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 6)
-#error
-#endif])], have_gcc46=yes, have_gcc46=no)
-
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
-#if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 7)
-#error
-#endif])], have_gcc47=yes, have_gcc47=no)
-
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
-#if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 8)
-#error
-#endif])], have_gcc48=yes, have_gcc48=no)
-
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
-#if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 9)
-#error
-#endif])], have_gcc49=yes, have_gcc49=no)
-
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
-#if !defined(__GNUC__) || (__GNUC__ < 5)
-#error
-#endif])], have_gcc5=yes, have_gcc5=no)
-
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
-#if !defined(__GNUC__) || (__GNUC__ < 6)
-#error
-#endif])], have_gcc6=yes, have_gcc6=no)
-
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -Wshorten-64-to-32"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], have_shorten64_flag=yes,
- have_shorten64_flag=no)
- CFLAGS="$save_CFLAGS"
-
case "$host" in
*-*-openbsd* | *-*-bitrig*)
# Some OpenBSD versions (like 4.8) have -Wsystem-headers by default.
@@ -1718,79 +1671,67 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
CFLAGS="$CFLAGS -Wno-system-headers" ;;
esac
+
CFLAGS="$CFLAGS -W -Wfloat-equal -Wundef -Wpointer-arith"
CFLAGS="$CFLAGS -Wstrict-prototypes -Wmissing-prototypes -Wwrite-strings"
CFLAGS="$CFLAGS -Wredundant-decls -Wchar-subscripts -Wcomment -Wformat=2"
- CFLAGS="$CFLAGS -Wwrite-strings -Wmissing-declarations -Wredundant-decls"
+ CFLAGS="$CFLAGS -Wwrite-strings -Wmissing-declarations"
CFLAGS="$CFLAGS -Wnested-externs -Wbad-function-cast -Wswitch-enum"
CFLAGS="$CFLAGS -Waggregate-return -Wpacked -Wunused"
CFLAGS="$CFLAGS -Wunused-parameter"
- if test "x$have_gcc4" = "xyes"; then
- # These warnings break gcc 3.3.5 and work on gcc 4.0.2
- CFLAGS="$CFLAGS -Winit-self -Wmissing-field-initializers -Wold-style-definition"
- fi
-
- if test "x$have_gcc42" = "xyes"; then
- # These warnings break gcc 4.0.2 and work on gcc 4.2
- # XXXX020 See if any of these work with earlier versions.
- CFLAGS="$CFLAGS -Waddress -Wmissing-noreturn"
- fi
-
- if test "x$have_gcc42" = "xyes" && test "x$have_gcc5" != "xyes"; then
- CFLAGS="$CFLAGS -Wstrict-overflow=1"
- # We used to use -Wstrict-overflow=5, but that breaks us heavily under 4.3.
- # Save it for GCC 5 where they improved the testing.
- fi
-
- if test "x$have_gcc42" = "xyes" && test "x$have_clang" = "xno"; then
- # These warnings break gcc 4.0.2 and clang, but work on gcc 4.2
- CFLAGS="$CFLAGS -Wnormalized=id -Woverride-init"
- fi
-
- if test "x$have_gcc43" = "xyes"; then
- # These warnings break gcc 4.2 and work on gcc 4.3
- # XXXX020 See if any of these work with earlier versions.
- CFLAGS="$CFLAGS -Wextra -Warray-bounds"
- fi
-
- if test "x$have_gcc46" = "xyes"; then
- # This warning was added in gcc 4.3, but it appears to generate
- # spurious warnings in gcc 4.4. I don't know if it works in 4.5.
- CFLAGS="$CFLAGS -Wlogical-op"
- # and these should be just fine in gcc 4.6
- CFLAGS="$CFLAGS -Wmissing-format-attribute -Wsuggest-attribute=noreturn -Wsync-nand -Wtrampolines -Wunused-but-set-parameter -Wunused-but-set-variable -Wvariadic-macros"
- CFLAGS="$CFLAGS -Wdouble-promotion"
- CFLAGS="$CFLAGS -Woverlength-strings"
+ # GCC4.3 users once report trouble with -Wstrict-overflow=5. GCC5 users
+ # have it work better.
+ # CFLAGS="$CFLAGS -Wstrict-overflow=1"
+
+ # This warning was added in gcc 4.3, but it appears to generate
+ # spurious warnings in gcc 4.4. I don't know if it works in 4.5.
+ #CFLAGS="$CFLAGS -Wlogical-op"
+
+ m4_foreach_w([warning_flag], [
+ -Waddress
+ -Warray-bounds
+ -Wc99-c11-compat
+ -Wdate-time
+ -Wdouble-promotion
+ -Wduplicated-cond
+ -Wextra
+ -Wfloat-conversion
+ -Wignored-attributes
+ -Winit-self
+ -Wlogical-op
+ -Wmissing-field-initializers
+ -Wmissing-format-attribute
+ -Wmissing-noreturn
+ -Wnormalized=id
+ -Wnull-dereference
+ -Wold-style-definition
+ -Woverlength-strings
+ -Woverride-init
+ -Wshift-count-negative
+ -Wshift-count-overflow
+ -Wshift-negative-value
+ -Wshift-overflow=2
+ -Wshorten-64-to-32
+ -Wsizeof-array-argument
+ -Wstrict-overflow=2
+ -Wsuggest-attribute=format
+ -Wsuggest-attribute=noreturn
+ -Wswitch-bool
+ -Wsync-nand
+ -Wtrampolines
+ -Wunused-but-set-parameter
+ -Wunused-but-set-variable
+ -Wunused-const-variable=2
+ -Wunused-local-typedefs
+ -Wvariadic-macros
+ ], [ TOR_CHECK_CFLAGS([warning_flag]) ])
+
+ if test "$tor_cv_cflags__Wnull_dereference" = "yes"; then
+ AC_DEFINE([HAVE_CFLAG_WNULL_DEREFERENCE], 1, [True if we have -Wnull-dereference])
fi
-
- if test "x$have_gcc47" = "xyes"; then
- CFLAGS="$CFLAGS -Wunused-local-typedefs"
- fi
-
- if test "x$have_gcc48" = "xyes"; then
- CFLAGS="$CFLAGS -Wsuggest-attribute=format"
- fi
-
- if test "x$have_gcc49" = "xyes"; then
- CFLAGS="$CFLAGS -Wdate-time"
- CFLAGS="$CFLAGS -Wfloat-conversion"
- fi
-
- if test "x$have_gcc5" = "xyes"; then
- CFLAGS="$CFLAGS -Wc99-c11-compat -Wshift-count-negative -Wshift-count-overflow -Wsizeof-array-argument -Wswitch-bool"
- CFLAGS="$CFLAGS -Wstrict-overflow=2"
- fi
-
- if test "x$have_gcc6" = "xyes"; then
- CFLAGS="$CFLAGS -Wignored-attributes -Wshift-negative-value -Wshift-overflow=2"
- CFLAGS="$CFLAGS -Wnull-dereference"
- CFLAGS="$CFLAGS -Wduplicated-cond"
- CFLAGS="$CFLAGS -Wunused-const-variable=2"
- fi
-
- if test "x$have_shorten64_flag" = "xyes"; then
- CFLAGS="$CFLAGS -Wshorten-64-to-32"
+ if test "$tor_cv_cflags__Woverlength_strings" = "yes"; then
+ AC_DEFINE([HAVE_CFLAG_WOVERLENGTH_STRINGS], 1, [True if we have -Woverlength-strings])
fi
if test "x$enable_fatal_warnings" = "xyes"; then
@@ -1799,8 +1740,6 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
CFLAGS="$CFLAGS -Werror"
fi
-##This will break the world on some 64-bit architectures
-# CFLAGS="$CFLAGS -Winline"
fi
if test "$enable_coverage" = "yes" && test "$have_clang" = "no"; then