Enable GCC warnings in developer builds
However, do not fail; just issue the warnings. Add an option --enable-gcc-warnings=warn-only to configure, to implement this. * INSTALL, etc/NEWS: Document this. * configure.ac (gl_GCC_VERSION_IFELSE): New macro, from coreutils. (gl_gcc_warnings, WERROR_CFLAGS): Use it to add new option. Don’t treat --with-x-toolkit=no as a special case when configuring warnings.
This commit is contained in:
parent
93d54ba104
commit
5baecbc0eb
3 changed files with 46 additions and 22 deletions
8
INSTALL
8
INSTALL
|
@ -318,9 +318,11 @@ Use --enable-gcc-warnings to enable compile-time checks that warn
|
|||
about possibly-questionable C code. This is intended for developers
|
||||
and is useful with GNU-compatible compilers. On a recent GNU system
|
||||
there should be no warnings; on older and on non-GNU systems the
|
||||
generated warnings may still be useful, though you may prefer building
|
||||
with 'make WERROR_CFLAGS=' so that the warnings are not treated as
|
||||
errors.
|
||||
generated warnings may still be useful, though you may prefer
|
||||
configuring with --enable-gcc-warnings=warn-only so they are not
|
||||
treated as errors. The default is --enable-gcc-warnings=warn-only if
|
||||
it appears to be a developer build, and is --disable-gcc-warnings
|
||||
otherwise.
|
||||
|
||||
Use --disable-silent-rules to cause 'make' to give more details about
|
||||
the commands it executes. This can be helpful when debugging a build
|
||||
|
|
54
configure.ac
54
configure.ac
|
@ -842,17 +842,44 @@ if test "$ac_test_CFLAGS" != set; then
|
|||
esac
|
||||
fi
|
||||
|
||||
# gl_GCC_VERSION_IFELSE([major], [minor], [run-if-found], [run-if-not-found])
|
||||
# ---------------------------------------------------------------------------
|
||||
# If $CPP is gcc-MAJOR.MINOR or newer, then run RUN-IF-FOUND.
|
||||
# Otherwise, run RUN-IF-NOT-FOUND.
|
||||
AC_DEFUN([gl_GCC_VERSION_IFELSE],
|
||||
[AC_PREPROC_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[
|
||||
#if ($1) < __GNUC__ || (($1) == __GNUC__ && ($2) <= __GNUC_MINOR__)
|
||||
/* ok */
|
||||
#else
|
||||
# error "your version of gcc is older than $1.$2"
|
||||
#endif
|
||||
]]),
|
||||
], [$3], [$4])
|
||||
]
|
||||
)
|
||||
|
||||
AC_ARG_ENABLE([gcc-warnings],
|
||||
[AS_HELP_STRING([--enable-gcc-warnings],
|
||||
[turn on lots of GCC warnings/errors. This is intended for
|
||||
developers, and may generate false alarms when used
|
||||
with older or non-GNU development tools.])],
|
||||
[AS_HELP_STRING([--enable-gcc-warnings@<:@=TYPE@:>@],
|
||||
[control generation of GCC warnings. The TYPE 'yes'
|
||||
means to fail if any warnings are issued; 'warn-only'
|
||||
means issue warnings without failing (default for
|
||||
developer builds); 'no' means disable warnings
|
||||
(default for non-developer builds).])],
|
||||
[case $enableval in
|
||||
yes|no) ;;
|
||||
yes|no|warn-only) ;;
|
||||
*) AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;;
|
||||
esac
|
||||
gl_gcc_warnings=$enableval],
|
||||
[gl_gcc_warnings=no]
|
||||
[# By default, use 'warn-only' if it looks like the invoker of 'configure'
|
||||
# is a developer as opposed to a builder. This is most likely true
|
||||
# if GCC is recent enough and there is a .git subdirectory;
|
||||
# however, if there is also a .tarball-version file it is probably
|
||||
# just a reliease imported into Git for patch management.
|
||||
gl_gcc_warnings=no
|
||||
test -d "$srcdir"/.git && test ! -f "$srcdir"/.tarball-version &&
|
||||
gl_GCC_VERSION_IFELSE([5], [3], [gl_gcc_warnings=warn-only])]
|
||||
)
|
||||
|
||||
# clang is unduly picky about some things.
|
||||
|
@ -868,7 +895,7 @@ AC_CACHE_CHECK([whether the compiler is clang], [emacs_cv_clang],
|
|||
|
||||
# When compiling with GCC, prefer -isystem to -I when including system
|
||||
# include files, to avoid generating useless diagnostics for the files.
|
||||
AS_IF([test "$gl_gcc_warnings" != yes],
|
||||
AS_IF([test $gl_gcc_warnings = no],
|
||||
[
|
||||
isystem='-I'
|
||||
AS_IF([test "$emacs_cv_clang" = yes],
|
||||
|
@ -892,7 +919,7 @@ AS_IF([test "$gl_gcc_warnings" != yes],
|
|||
nw="$nw -Wwrite-strings"
|
||||
;;
|
||||
esac
|
||||
AS_IF([test -z "$nw"],
|
||||
AS_IF([test $gl_gcc_warnings = yes],
|
||||
[gl_WARN_ADD([-Werror], [WERROR_CFLAGS])])
|
||||
AC_SUBST([WERROR_CFLAGS])
|
||||
|
||||
|
@ -2011,17 +2038,6 @@ fi
|
|||
## $window_system is now set to the window system we will
|
||||
## ultimately use.
|
||||
|
||||
if test "$window_system" = none && test "$gl_gcc_warnings" = yes; then
|
||||
# Too many warnings for now.
|
||||
nw=
|
||||
nw="$nw -Wsuggest-attribute=noreturn"
|
||||
gl_MANYWARN_COMPLEMENT([WARN_CFLAGS], [$WARN_CFLAGS], [$nw])
|
||||
|
||||
gl_WARN_ADD([-Wno-unused-variable])
|
||||
gl_WARN_ADD([-Wno-unused-but-set-variable])
|
||||
gl_WARN_ADD([-Wno-unused-but-set-parameter])
|
||||
fi
|
||||
|
||||
term_header=
|
||||
HAVE_X_WINDOWS=no
|
||||
HAVE_X11=no
|
||||
|
|
6
etc/NEWS
6
etc/NEWS
|
@ -25,6 +25,12 @@ otherwise leave it unmarked.
|
|||
|
||||
* Installation Changes in Emacs 25.2
|
||||
|
||||
** The new option 'configure --enable-gcc-warnings=warn-only' causes
|
||||
GCC to issue warnings without stopping the bild. This behavior is now
|
||||
the default in developer builds. As before, use
|
||||
'--disable-gcc-warnings' to suppress GCC's warnings, and
|
||||
'--enable-gcc-warnings' to stop the build if GCC issues warnings.
|
||||
|
||||
+++
|
||||
** New configure option '--disable-build-details' attempts to build an
|
||||
Emacs that is more likely to be reproducible; that is, if you build
|
||||
|
|
Loading…
Add table
Reference in a new issue