2016-01-07 12:06:04 +01:00
|
|
|
dnl Autoconf configure script for GDB, the GNU debugger.
|
2017-01-01 07:50:51 +01:00
|
|
|
dnl Copyright (C) 1995-2017 Free Software Foundation, Inc.
|
2016-01-07 12:06:04 +01:00
|
|
|
dnl
|
|
|
|
dnl This file is part of GDB.
|
|
|
|
dnl
|
|
|
|
dnl This program is free software; you can redistribute it and/or modify
|
|
|
|
dnl it under the terms of the GNU General Public License as published by
|
|
|
|
dnl the Free Software Foundation; either version 3 of the License, or
|
|
|
|
dnl (at your option) any later version.
|
|
|
|
dnl
|
|
|
|
dnl This program is distributed in the hope that it will be useful,
|
|
|
|
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
dnl GNU General Public License for more details.
|
|
|
|
dnl
|
|
|
|
dnl You should have received a copy of the GNU General Public License
|
|
|
|
dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
AC_DEFUN([AM_GDB_WARNINGS],[
|
|
|
|
AC_ARG_ENABLE(werror,
|
|
|
|
AS_HELP_STRING([--enable-werror], [treat compile warnings as errors]),
|
|
|
|
[case "${enableval}" in
|
|
|
|
yes | y) ERROR_ON_WARNING="yes" ;;
|
|
|
|
no | n) ERROR_ON_WARNING="no" ;;
|
|
|
|
*) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;;
|
|
|
|
esac])
|
|
|
|
|
|
|
|
# Enable -Werror by default when using gcc. Turn it off for releases.
|
|
|
|
if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" && $development; then
|
|
|
|
ERROR_ON_WARNING=yes
|
|
|
|
fi
|
|
|
|
|
|
|
|
WERROR_CFLAGS=""
|
|
|
|
if test "${ERROR_ON_WARNING}" = yes ; then
|
|
|
|
WERROR_CFLAGS="-Werror"
|
|
|
|
fi
|
|
|
|
|
2016-09-05 20:10:44 +02:00
|
|
|
# The options we'll try to enable.
|
2016-01-07 12:06:04 +01:00
|
|
|
build_warnings="-Wall -Wpointer-arith \
|
|
|
|
-Wno-unused -Wunused-value -Wunused-function \
|
|
|
|
-Wno-switch -Wno-char-subscripts \
|
2016-09-05 20:10:44 +02:00
|
|
|
-Wempty-body -Wunused-but-set-parameter -Wunused-but-set-variable \
|
2017-06-17 23:18:49 +02:00
|
|
|
-Wno-sign-compare -Wno-narrowing -Wno-error=maybe-uninitialized \
|
|
|
|
-Wno-mismatched-tags"
|
2016-01-07 12:06:04 +01:00
|
|
|
|
|
|
|
# Enable -Wno-format by default when using gcc on mingw since many
|
|
|
|
# GCC versions complain about %I64.
|
|
|
|
case "${host}" in
|
|
|
|
*-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;;
|
|
|
|
*) build_warnings="$build_warnings -Wformat-nonliteral" ;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(build-warnings,
|
|
|
|
AS_HELP_STRING([--enable-build-warnings], [enable build-time compiler warnings if gcc is used]),
|
|
|
|
[case "${enableval}" in
|
|
|
|
yes) ;;
|
|
|
|
no) build_warnings="-w";;
|
|
|
|
,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
|
|
|
|
build_warnings="${build_warnings} ${t}";;
|
|
|
|
*,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
|
|
|
|
build_warnings="${t} ${build_warnings}";;
|
|
|
|
*) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
|
|
|
|
esac
|
|
|
|
if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
|
|
|
|
echo "Setting compiler warning flags = $build_warnings" 6>&1
|
|
|
|
fi])dnl
|
|
|
|
AC_ARG_ENABLE(gdb-build-warnings,
|
|
|
|
AS_HELP_STRING([--enable-gdb-build-warnings], [enable GDB specific build-time compiler warnings if gcc is used]),
|
|
|
|
[case "${enableval}" in
|
|
|
|
yes) ;;
|
|
|
|
no) build_warnings="-w";;
|
|
|
|
,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
|
|
|
|
build_warnings="${build_warnings} ${t}";;
|
|
|
|
*,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
|
|
|
|
build_warnings="${t} ${build_warnings}";;
|
|
|
|
*) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
|
|
|
|
esac
|
|
|
|
if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
|
|
|
|
echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
|
|
|
|
fi])dnl
|
|
|
|
|
|
|
|
# The set of warnings supported by a C++ compiler is not the same as
|
|
|
|
# of the C compiler.
|
2016-09-05 20:10:44 +02:00
|
|
|
AC_LANG_PUSH([C++])
|
2016-01-07 12:06:04 +01:00
|
|
|
|
|
|
|
WARN_CFLAGS=""
|
|
|
|
if test "x${build_warnings}" != x -a "x$GCC" = xyes
|
|
|
|
then
|
|
|
|
AC_MSG_CHECKING(compiler warning flags)
|
|
|
|
# Separate out the -Werror flag as some files just cannot be
|
|
|
|
# compiled with it enabled.
|
|
|
|
for w in ${build_warnings}; do
|
|
|
|
# GCC does not complain about -Wno-unknown-warning. Invert
|
|
|
|
# and test -Wunknown-warning instead.
|
|
|
|
case $w in
|
|
|
|
-Wno-*)
|
|
|
|
wtest=`echo $w | sed 's/-Wno-/-W/g'` ;;
|
|
|
|
*)
|
|
|
|
wtest=$w ;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
case $w in
|
|
|
|
-Werr*) WERROR_CFLAGS=-Werror ;;
|
|
|
|
*)
|
|
|
|
# Check whether GCC accepts it.
|
|
|
|
saved_CFLAGS="$CFLAGS"
|
gdb: Use -Werror when checking for (un)supported warning flags
In warning.m4, we pass all the warning flags one by one to the compiler
to test if they are supported by this particular compiler. If the
compiler exits with an error, we conclude that this warning flag is not
supported and exclude it. This allows us to use warning flags without
having to worry about which versions of which compilers support each
flag.
clang, by default, only emits a warning if an unknown flag is passed:
warning: unknown warning option '-Wfoo' [-Wunknown-warning-option]
The result is that we think that all the warning flags we use are
supported by clang (they are not), and the compilation fails later when
building with -Werror, since the aforementioned warning becomes an
error. The fix is to also pass -Werror when probing for supported
flags, then we'll correctly get an error when using an unknown warning,
and we'll exclude it:
error: unknown warning option '-Wfoo' [-Werror,-Wunknown-warning-option]
I am not sure why there is a change in a random comment in
gdbserver/configure, but I suppose it's a leftfover from a previous
patch, so I included it.
gdb/ChangeLog:
* configure: Re-generate.
* warning.m4: Pass -Werror to compiler when checking for
supported warning flags.
gdb/gdbserver/ChangeLog:
* configure: Re-generate.
2017-06-17 23:18:20 +02:00
|
|
|
CFLAGS="$CFLAGS -Werror $wtest"
|
2016-01-07 12:06:04 +01:00
|
|
|
saved_CXXFLAGS="$CXXFLAGS"
|
gdb: Use -Werror when checking for (un)supported warning flags
In warning.m4, we pass all the warning flags one by one to the compiler
to test if they are supported by this particular compiler. If the
compiler exits with an error, we conclude that this warning flag is not
supported and exclude it. This allows us to use warning flags without
having to worry about which versions of which compilers support each
flag.
clang, by default, only emits a warning if an unknown flag is passed:
warning: unknown warning option '-Wfoo' [-Wunknown-warning-option]
The result is that we think that all the warning flags we use are
supported by clang (they are not), and the compilation fails later when
building with -Werror, since the aforementioned warning becomes an
error. The fix is to also pass -Werror when probing for supported
flags, then we'll correctly get an error when using an unknown warning,
and we'll exclude it:
error: unknown warning option '-Wfoo' [-Werror,-Wunknown-warning-option]
I am not sure why there is a change in a random comment in
gdbserver/configure, but I suppose it's a leftfover from a previous
patch, so I included it.
gdb/ChangeLog:
* configure: Re-generate.
* warning.m4: Pass -Werror to compiler when checking for
supported warning flags.
gdb/gdbserver/ChangeLog:
* configure: Re-generate.
2017-06-17 23:18:20 +02:00
|
|
|
CXXFLAGS="$CXXFLAGS -Werror $wtest"
|
2016-01-07 12:06:04 +01:00
|
|
|
AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
|
|
|
|
CFLAGS="$saved_CFLAGS"
|
|
|
|
CXXFLAGS="$saved_CXXFLAGS"
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
|
|
|
|
fi
|
|
|
|
AC_SUBST(WARN_CFLAGS)
|
|
|
|
AC_SUBST(WERROR_CFLAGS)
|
|
|
|
|
2016-09-05 20:10:44 +02:00
|
|
|
AC_LANG_POP([C++])
|
2016-01-07 12:06:04 +01:00
|
|
|
])
|