diff options
author | Nick Mathewson <nickm@torproject.org> | 2016-05-27 10:39:34 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2016-05-27 10:39:34 -0400 |
commit | a0dd8360983e8df41424694f4708ffa6f03f65a1 (patch) | |
tree | d0d207578b777aa49407c84fa84776d267e50443 | |
parent | 437cbb17c215e60cfd673d99e9c7ad729df6431a (diff) | |
parent | 771ca7c5446584989d1602a053c4261ca3450cab (diff) | |
download | tor-a0dd8360983e8df41424694f4708ffa6f03f65a1.tar.gz tor-a0dd8360983e8df41424694f4708ffa6f03f65a1.zip |
Merge remote-tracking branch 'public/ticket19044'
-rw-r--r-- | changes/19044 | 5 | ||||
-rw-r--r-- | configure.ac | 26 | ||||
-rw-r--r-- | doc/HACKING/CodingStandards.md | 12 | ||||
-rw-r--r-- | doc/HACKING/HowToReview.md | 2 |
4 files changed, 28 insertions, 17 deletions
diff --git a/changes/19044 b/changes/19044 new file mode 100644 index 0000000000..a7f938a248 --- /dev/null +++ b/changes/19044 @@ -0,0 +1,5 @@ + o Minor features (compilation): + - Our big list of extra GCC warnings is now enabled by default when + building with GCC (or with anything like Clang that claims to be + GCC-compatible). To make all warnings into fatal compilation errors, + pass --enable-fatal-warnings to configure. Closes ticket 19044. diff --git a/configure.ac b/configure.ac index edb6e9f566..29715c1a3d 100644 --- a/configure.ac +++ b/configure.ac @@ -143,9 +143,11 @@ case "$host" in esac AC_ARG_ENABLE(gcc-warnings, - AS_HELP_STRING(--enable-gcc-warnings, [enable verbose warnings])) + AS_HELP_STRING(--enable-gcc-warnings, [deprecated alias for enable-fatal-warnings])) +AC_ARG_ENABLE(fatal-warnings, + AS_HELP_STRING(--enable-fatal-warnings, [tell the compiler to treat all warnings as errors.])) AC_ARG_ENABLE(gcc-warnings-advisory, - AS_HELP_STRING(--enable-gcc-warnings-advisory, [enable verbose warnings, excluding -Werror])) + AS_HELP_STRING(--disable-gcc-warnings-advisory, [disable the regular verbose warnings])) dnl Others suggest '/gs /safeseh /nxcompat /dynamicbase' for non-gcc on Windows AC_ARG_ENABLE(gcc-hardening, @@ -1636,6 +1638,12 @@ else enable_gcc_warnings_advisory=no fi +# Warnings implies advisory-warnings and -Werror. +if test "$enable_gcc_warnings" = "yes"; then + enable_gcc_warnings_advisory=yes + enable_fatal_warnings=yes +fi + # OS X Lion started deprecating the system openssl. Let's just disable # all deprecation warnings on OS X. Also, to potentially make the binary # a little smaller, let's enable dead_strip. @@ -1648,8 +1656,7 @@ esac # Add some more warnings which we use in development but not in the # released versions. (Some relevant gcc versions can't handle these.) -if test "x$enable_gcc_warnings" = "xyes" || - test "x$enable_gcc_warnings_advisory" = "xyes"; then +if test "x$enable_gcc_warnings_advisory" != "xno"; then AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [ #if !defined(__GNUC__) || (__GNUC__ < 4) @@ -1671,7 +1678,6 @@ if test "x$enable_gcc_warnings" = "xyes" || #error #endif])], have_gcc46=yes, have_gcc46=no) - save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Wshorten-64-to-32" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], have_shorten64_flag=yes, @@ -1693,10 +1699,6 @@ if test "x$enable_gcc_warnings" = "xyes" || CFLAGS="$CFLAGS -Wwrite-strings -Wmissing-declarations -Wredundant-decls" CFLAGS="$CFLAGS -Wnested-externs -Wbad-function-cast -Wswitch-enum" - if test "x$enable_gcc_warnings" = "xyes"; then - CFLAGS="$CFLAGS -Werror" - fi - # Disabled, so we can use mallinfo(): -Waggregate-return if test "x$have_gcc4" = "xyes"; then @@ -1733,7 +1735,11 @@ if test "x$enable_gcc_warnings" = "xyes" || CFLAGS="$CFLAGS -Wshorten-64-to-32" fi - + if test "x$enable_fatal_warnings" = "xyes"; then + # I'd like to use TOR_CHECK_CFLAGS here, but I can't, since the + # default autoconf programs are full of errors. + CFLAGS="$CFLAGS -Werror" + fi ##This will break the world on some 64-bit architectures # CFLAGS="$CFLAGS -Winline" diff --git a/doc/HACKING/CodingStandards.md b/doc/HACKING/CodingStandards.md index 4aafa5ddd4..f1c65850a4 100644 --- a/doc/HACKING/CodingStandards.md +++ b/doc/HACKING/CodingStandards.md @@ -3,7 +3,7 @@ Coding conventions for Tor tl;dr: - - Run configure with `--enable-gcc-warnings` + - Run configure with `--enable-fatal-warnings` - Run `make check-spaces` to catch whitespace errors - Document your functions - Write unit tests @@ -21,7 +21,7 @@ preference) Did you remember... - - To build your code while configured with `--enable-gcc-warnings`? + - To build your code while configured with `--enable-fatal-warnings`? - To run `make check-spaces` on your code? - To run `make check-docs` to see whether all new options are on the manpage? @@ -125,10 +125,10 @@ deviations from our C whitespace style. Generally, we use: `puts (x)`. - Function declarations at the start of the line. -We try hard to build without warnings everywhere. In particular, if you're -using gcc, you should invoke the configure script with the option -`--enable-gcc-warnings`. This will give a bunch of extra warning flags to -the compiler, and help us find divergences from our preferred C style. +We try hard to build without warnings everywhere. In particular, if +you're using gcc, you should invoke the configure script with the +option `--enable-fatal-warnings`. This will tell the compiler +to make all warnings into errors. Functions to use; functions not to use -------------------------------------- diff --git a/doc/HACKING/HowToReview.md b/doc/HACKING/HowToReview.md index de7891c923..d53318942f 100644 --- a/doc/HACKING/HowToReview.md +++ b/doc/HACKING/HowToReview.md @@ -15,7 +15,7 @@ Top-level smell-checks (Difficulty: easy) -- Does it compile with `--enable-gcc-warnings`? +- Does it compile with `--enable-fatal-warnings`? - Does `make check-spaces` pass? |