From d4596a3d7917d78d17cffc5cd2e7d47c8bf9a383 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Thu, 26 Aug 2010 18:03:02 +0000 Subject: [PATCH] * Makefile.in (WARN_CFLAGS): Get it from configure. (WERROR_CFLAGS): New. (INTERNAL_CFLAGS): Add WERROR_CFLAGS. * configure.ac: Introduce --enable-werror, which adds -Werror to the compiler command line. Enabled by default. Disable with --disable-werror. Add -Wdeclaration-after-statement Wpointer-arith and -Wformat-nonliteral to warning flags. * configure: Regenerate. --- gdb/gdbserver/Makefile.in | 5 ++-- gdb/gdbserver/configure | 69 ++++++++++++++++++++++++++++++++++++++++++++++ gdb/gdbserver/configure.ac | 42 ++++++++++++++++++++++++++++ 3 files changed, 114 insertions(+), 2 deletions(-) diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in index 467bfdf..e397bd7 100644 --- a/gdb/gdbserver/Makefile.in +++ b/gdb/gdbserver/Makefile.in @@ -86,14 +86,15 @@ INCLUDE_CFLAGS = -I. -I${srcdir} -I$(srcdir)/../common \ GLOBAL_CFLAGS = ${MT_CFLAGS} ${MH_CFLAGS} #PROFILE_CFLAGS = -pg -WARN_CFLAGS = -Wall +WARN_CFLAGS = @WARN_CFLAGS@ +WERROR_CFLAGS = @WERROR_CFLAGS@ # CFLAGS is specifically reserved for setting from the command line # when running make. I.E. "make CFLAGS=-Wmissing-prototypes". CFLAGS = @CFLAGS@ # INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros. -INTERNAL_CFLAGS = $(WARN_CFLAGS) ${CFLAGS} ${GLOBAL_CFLAGS} \ +INTERNAL_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS) ${CFLAGS} ${GLOBAL_CFLAGS} \ ${PROFILE_CFLAGS} ${INCLUDE_CFLAGS} # LDFLAGS is specifically reserved for setting from the command line diff --git a/gdb/gdbserver/configure b/gdb/gdbserver/configure index 3a8033a..1667d14 100755 --- a/gdb/gdbserver/configure +++ b/gdb/gdbserver/configure @@ -601,6 +601,8 @@ RDYNAMIC REPORT_BUGS_TEXI REPORT_BUGS_TO PKGVERSION +WERROR_CFLAGS +WARN_CFLAGS ustinc ustlibs LIBOBJS @@ -673,6 +675,7 @@ enable_option_checking with_ust with_ust_include with_ust_lib +enable_werror with_pkgversion with_bugurl with_libthread_db @@ -1300,6 +1303,12 @@ if test -n "$ac_init_help"; then cat <<\_ACEOF +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-werror treat compile warnings as errors + Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) @@ -3914,6 +3923,66 @@ fi +# Check whether --enable-werror was given. +if test "${enable_werror+set}" = set; then : + enableval=$enable_werror; case "${enableval}" in + yes | y) ERROR_ON_WARNING="yes" ;; + no | n) ERROR_ON_WARNING="no" ;; + *) as_fn_error "bad value ${enableval} for --enable-werror" "$LINENO" 5 ;; + esac +fi + + +# Enable -Werror by default when using gcc +if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then + ERROR_ON_WARNING=yes +fi + +WERROR_CFLAGS="" +if test "${ERROR_ON_WARNING}" = yes ; then + WERROR_CFLAGS="-Werror" +fi + +build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \ +-Wformat-nonliteral " + +WARN_CFLAGS="" +if test "x$GCC" = xyes +then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking compiler warning flags" >&5 +$as_echo_n "checking compiler warning flags... " >&6; } + # Separate out the -Werror flag as some files just cannot be + # compiled with it enabled. + for w in ${build_warnings}; do + case $w in + -Werr*) WERROR_CFLAGS=-Werror ;; + *) # Check that GCC accepts it + saved_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $w" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + WARN_CFLAGS="${WARN_CFLAGS} $w" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$saved_CFLAGS" + esac + done + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${WARN_CFLAGS} ${WERROR_CFLAGS}" >&5 +$as_echo "${WARN_CFLAGS} ${WERROR_CFLAGS}" >&6; } +fi + + + old_LIBS="$LIBS" LIBS="$LIBS -ldl" for ac_func in dladdr diff --git a/gdb/gdbserver/configure.ac b/gdb/gdbserver/configure.ac index 958a158..24ef9a8 100644 --- a/gdb/gdbserver/configure.ac +++ b/gdb/gdbserver/configure.ac @@ -93,6 +93,48 @@ fi AC_SUBST(ustlibs) AC_SUBST(ustinc) +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 +if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then + ERROR_ON_WARNING=yes +fi + +WERROR_CFLAGS="" +if test "${ERROR_ON_WARNING}" = yes ; then + WERROR_CFLAGS="-Werror" +fi + +build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \ +-Wformat-nonliteral " + +WARN_CFLAGS="" +if test "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 + case $w in + -Werr*) WERROR_CFLAGS=-Werror ;; + *) # Check that GCC accepts it + saved_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $w" + AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",) + CFLAGS="$saved_CFLAGS" + esac + done + AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS}) +fi +AC_SUBST(WARN_CFLAGS) +AC_SUBST(WERROR_CFLAGS) + dnl dladdr is glibc-specific. It is used by thread-db.c but only for dnl debugging messages. It lives in -ldl which is handled below so we don't dnl use AC_CHECK_LIB (or AC_SEARCH_LIBS) here. Instead we just temporarily -- 2.7.4