gdbsupport: use AM_GDB_WARNINGS
authorSimon Marchi <simon.marchi@efficios.com>
Tue, 11 Feb 2020 15:46:23 +0000 (10:46 -0500)
committerSimon Marchi <simon.marchi@efficios.com>
Tue, 11 Feb 2020 15:46:23 +0000 (10:46 -0500)
Since gdbsupport has been given its own build system, it is no longer
compiled with the warning flags specified in gdb/warning.m4.

This patch makes it use AM_GDB_WARNINGS.

gdbsupport/ChangeLog:

* acinclude.m4: Include ../gdb/warning.m4.
* configure.ac: Use AM_GDB_WARNINGS.
* Makefile.am: Set AM_CFLAGS to WARN_CFLAGS and WERROR_CFLAGS.
* Makefile.in: Re-generate.
* configure: Re-generate.

gdbsupport/ChangeLog
gdbsupport/Makefile.am
gdbsupport/Makefile.in
gdbsupport/acinclude.m4
gdbsupport/configure
gdbsupport/configure.ac

index 3225befc3dfe0e0be20ec1f78aacca8e3eaecbb8..4a820acf527ed2ec4d907cb9e705ca617ea22e9b 100644 (file)
@@ -1,3 +1,11 @@
+2020-02-11  Simon Marchi  <simon.marchi@efficios.com>
+
+       * acinclude.m4: Include ../gdb/warning.m4.
+       * configure.ac: Use AM_GDB_WARNINGS.
+       * Makefile.am: Set AM_CFLAGS to WARN_CFLAGS and WERROR_CFLAGS.
+       * Makefile.in: Re-generate.
+       * configure: Re-generate.
+
 2020-02-10  Tom de Vries  <tdevries@suse.de>
 
        * environ.c (gdb_environ::set): Cast concat NULL sentinel to char *.
index 4b8a604ce52e2f0a9c5a0e95556cf609d6418bb3..cd7b0adf6b4c00628f6d6aa9eaf0aa26f8214ef0 100644 (file)
@@ -29,6 +29,8 @@ override CXX += $(CXX_DIALECT)
 override CC := $(CXX)
 override CFLAGS := $(CXXFLAGS)
 
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+
 noinst_LIBRARIES = libgdbsupport.a
 
 if SELFTEST
index 31065af2440a1dc3beb35137b62131116e0c9132..91164175bc0462f314e295e7e5711ebf29cbf008 100644 (file)
@@ -124,7 +124,8 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/codeset.m4 \
        $(top_srcdir)/../gdb/ax_cxx_compile_stdcxx.m4 \
        $(top_srcdir)/../gdb/libiberty.m4 \
        $(top_srcdir)/../gdb/selftest.m4 \
-       $(top_srcdir)/../gdb/ptrace.m4 $(top_srcdir)/configure.ac
+       $(top_srcdir)/../gdb/ptrace.m4 $(top_srcdir)/../gdb/warning.m4 \
+       $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
@@ -287,6 +288,8 @@ SHELL = @SHELL@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WERROR_CFLAGS = @WERROR_CFLAGS@
 XGETTEXT = @XGETTEXT@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
@@ -350,6 +353,7 @@ AM_CPPFLAGS = -I$(srcdir)/../include -I$(srcdir)/../gdb \
     -I../gnulib/import -I$(srcdir)/../gnulib/import \
     -I.. -I$(srcdir)/.. $(INCINTL) -I../bfd -I$(srcdir)/../bfd
 
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
 noinst_LIBRARIES = libgdbsupport.a
 @SELFTEST_TRUE@selftest = selftest.c
 libgdbsupport_a_SOURCES = \
index fe08bb36fe0b1d2559b1e0b306034b1c72194461..3598b201b94b882c1da0ef4edfc22d6a1cc1a527 100644 (file)
@@ -5,3 +5,6 @@ m4_include([../gdb/ax_cxx_compile_stdcxx.m4])
 m4_include([../gdb/libiberty.m4])
 m4_include([../gdb/selftest.m4])
 m4_include([../gdb/ptrace.m4])
+
+dnl This gets AM_GDB_WARNINGS.
+m4_include(../gdb/warning.m4)
index cf943e69ef5c45442f14b1095dc6e9ecd1b2ac2b..197749b5d0ca38358c96e2fb7b96911e1ec17974 100755 (executable)
@@ -624,6 +624,8 @@ ac_subst_vars='am__EXEEXT_FALSE
 am__EXEEXT_TRUE
 LTLIBOBJS
 LIBOBJS
+WERROR_CFLAGS
+WARN_CFLAGS
 SELFTEST_FALSE
 SELFTEST_TRUE
 LTLIBIPT
@@ -769,6 +771,9 @@ with_gnu_ld
 enable_rpath
 with_libipt_prefix
 enable_unit_tests
+enable_werror
+enable_build_warnings
+enable_gdb_build_warnings
 '
       ac_precious_vars='build_alias
 host_alias
@@ -1415,6 +1420,11 @@ Optional Features:
   --disable-rpath         do not hardcode runtime library paths
   --enable-unit-tests     Enable the inclusion of unit tests when compiling
                           GDB
+  --enable-werror         treat compile warnings as errors
+  --enable-build-warnings enable build-time compiler warnings if gcc is used
+  --enable-gdb-build-warnings
+                          enable GDB specific build-time compiler warnings if
+                          gcc is used
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -10806,6 +10816,190 @@ _ACEOF
 fi
 
 
+# Detect support warning flags.
+
+# 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.  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
+
+# The options we'll try to enable.
+build_warnings="-Wall -Wpointer-arith \
+-Wno-unused -Wunused-value -Wunused-variable -Wunused-function \
+-Wno-switch -Wno-char-subscripts \
+-Wempty-body -Wunused-but-set-parameter -Wunused-but-set-variable \
+-Wno-sign-compare -Wno-error=maybe-uninitialized \
+-Wno-mismatched-tags \
+-Wno-error=deprecated-register \
+-Wsuggest-override \
+-Wimplicit-fallthrough=3 \
+-Wduplicated-cond \
+-Wshadow=local \
+-Wdeprecated-copy \
+-Wdeprecated-copy-dtor \
+-Wredundant-move \
+-Wmissing-declarations"
+
+case "${host}" in
+  *-*-mingw32*)
+    # Enable -Wno-format by default when using gcc on mingw since many
+    # GCC versions complain about %I64.
+    build_warnings="$build_warnings -Wno-format" ;;
+  *-*-solaris*)
+    # Solaris 11.4 <python2.7/ceval.h> uses #pragma no_inline that GCC
+    # doesn't understand.
+    build_warnings="$build_warnings -Wno-unknown-pragmas"
+    # Solaris 11 <unistd.h> marks vfork deprecated.
+    build_warnings="$build_warnings -Wno-deprecated-declarations" ;;
+  *)
+    # Note that gcc requires -Wformat for -Wformat-nonliteral to work,
+    # but there's a special case for this below.
+    build_warnings="$build_warnings -Wformat-nonliteral" ;;
+esac
+
+# Check whether --enable-build-warnings was given.
+if test "${enable_build_warnings+set}" = set; then :
+  enableval=$enable_build_warnings; 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
+fi
+# Check whether --enable-gdb-build-warnings was given.
+if test "${enable_gdb_build_warnings+set}" = set; then :
+  enableval=$enable_gdb_build_warnings; 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
+fi
+
+# The set of warnings supported by a C++ compiler is not the same as
+# of the C compiler.
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+WARN_CFLAGS=""
+if test "x${build_warnings}" != x -a "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
+       # 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'` ;;
+        -Wformat-nonliteral)
+               # gcc requires -Wformat before -Wformat-nonliteral
+               # will work, so stick them together.
+               w="-Wformat $w"
+               wtest="$w"
+               ;;
+       *)
+               wtest=$w ;;
+       esac
+
+       case $w in
+       -Werr*) WERROR_CFLAGS=-Werror ;;
+       *)
+           # Check whether GCC accepts it.
+           saved_CFLAGS="$CFLAGS"
+           CFLAGS="$CFLAGS -Werror $wtest"
+           saved_CXXFLAGS="$CXXFLAGS"
+           CXXFLAGS="$CXXFLAGS -Werror $wtest"
+           if test "x$w" = "x-Wunused-variable"; then
+             # Check for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38958,
+             # fixed in GCC 4.9.  This test is derived from the gdb
+             # source code that triggered this bug in GCC.
+             cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+struct scoped_restore_base {};
+                 struct scoped_restore_tmpl : public scoped_restore_base {
+                  ~scoped_restore_tmpl() {}
+                };
+int
+main ()
+{
+const scoped_restore_base &b = scoped_restore_tmpl();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  WARN_CFLAGS="${WARN_CFLAGS} $w"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+           else
+             cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  WARN_CFLAGS="${WARN_CFLAGS} $w"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+           fi
+           CFLAGS="$saved_CFLAGS"
+           CXXFLAGS="$saved_CXXFLAGS"
+       esac
+    done
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${WARN_CFLAGS} ${WERROR_CFLAGS}" >&5
+$as_echo "${WARN_CFLAGS} ${WERROR_CFLAGS}" >&6; }
+fi
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
 TARGET_WORD_SIZE=`sed -n 's,#define BFD_ARCH_SIZE \(.*\)$,\1,p' ../bfd/bfd-in3.h`
 
 cat >>confdefs.h <<_ACEOF
index 6002871c969150191faa081e0007035ec7f5d607..401e16f821da462b81d39f9a949b0b419165780b 100644 (file)
@@ -48,6 +48,9 @@ AM_CONDITIONAL(SELFTEST, $enable_unittests)
 # Check the return and argument types of ptrace.
 GDB_AC_PTRACE
 
+# Detect support warning flags.
+AM_GDB_WARNINGS
+
 TARGET_WORD_SIZE=`sed -n 's,#define BFD_ARCH_SIZE \(.*\)$,\1,p' ../bfd/bfd-in3.h`
 AC_DEFINE_UNQUOTED(TARGET_WORD_SIZE, $TARGET_WORD_SIZE,
    [Define to the word size for the target.])