[PATCH] gdb: Respect CXXFLAGS when building with C++ compiler

Pedro Alves
2016-01-20T11:07:09Z

Currently, even when built with --enable-build-with-cxx, gdb uses
CFLAGS instead of CXXFLAGS. This commit fixes it.

CXXFLAGS set in the environment when configure was run is now honored
in the generated gdb/Makefile, and you can also override CXXFLAGS in
the command like at make time, with the usual 'make CXXFLAGS="..."'

Objects built with a C compiler (e.g., gnulib) still honor CFLAGS
instead.

gdb/ChangeLog:
2016-01-20 Pedro Alves <palves@redhat.com>

* Makefile.in (COMPILER_CFLAGS): New.
(CXXFLAGS): Get it from configure.
(INTERNAL_CFLAGS_BASE, INTERNAL_LDFLAGS): Use COMPILER_CFLAGS
instead of CFLAGS.
* build-with-cxx.m4 (GDB_AC_BUILD_WITH_CXX): Set and AC_SUBST
COMPILER_CFLAGS.
* configure: Regenerate.

gdb/gdbserver/ChangeLog:
2016-01-20 Pedro Alves <palves@redhat.com>

* Makefile.in (COMPILER_CFLAGS, CXXFLAGS): New.
(INTERNAL_CFLAGS_BASE, INTERNAL_LDFLAGS): Use COMPILER_CFLAGS
instead of CFLAGS.
* configure: Regenerate.
---
gdb/Makefile.in | 18 +++++++++---------
gdb/build-with-cxx.m4 | 3 +++
gdb/configure | 4 ++++
gdb/gdbserver/Makefile.in | 7 +++++--
gdb/gdbserver/configure | 4 ++++
5 files changed, 25 insertions(+), 11 deletions(-)

diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 895ece6..5e8eb9a 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -81,6 +81,8 @@ CATALOGS = @CATALOGS@

# The name of the compiler to use.
COMPILER = @COMPILER@
+# Set to CFLAGS or CXXFLAGS, depending on compiler/language.
+COMPILER_CFLAGS = @COMPILER_CFLAGS@

# If you are compiling with GCC, make sure that either 1) You have the
# fixed include files where GCC can reach them, or 2) You use the
@@ -551,9 +553,10 @@ GLOBAL_CFLAGS = $(MH_CFLAGS)

PROFILE_CFLAGS = @PROFILE_CFLAGS@

-# CFLAGS is specifically reserved for setting from the command line
-# when running make. I.E. "make CFLAGS=-Wmissing-prototypes".
+# These are specifically reserved for setting from the command line
+# when running make. I.E.: "make CFLAGS=-Wmissing-prototypes".
CFLAGS = @CFLAGS@
+CXXFLAGS = @CXXFLAGS@

# Set by configure, for e.g. expat. Python installations are such that
# C headers are included using their basename (for example, we #include
@@ -563,14 +566,9 @@ CFLAGS = @CFLAGS@
# a bit the consequences by putting the Python includes last in the list.
INTERNAL_CPPFLAGS = @CPPFLAGS@ @GUILE_CPPFLAGS@ @PYTHON_CPPFLAGS@

-# Need to pass this to testsuite for "make check". Probably should be
-# consistent with top-level Makefile.in and gdb/testsuite/Makefile.in
-# so "make check" has the same result no matter where it is run.
-CXXFLAGS = -g -O
-
# INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros.
INTERNAL_CFLAGS_BASE = \
- $(CFLAGS) $(GLOBAL_CFLAGS) $(PROFILE_CFLAGS) \
+ $(COMPILER_CFLAGS) $(GLOBAL_CFLAGS) $(PROFILE_CFLAGS) \
$(GDB_CFLAGS) $(OPCODES_CFLAGS) $(READLINE_CFLAGS) $(ZLIBINC) \
$(BFD_CFLAGS) $(INCLUDE_CFLAGS) $(LIBDECNUMBER_CFLAGS) \
$(INTL_CFLAGS) $(INCGNU) $(ENABLE_CFLAGS) $(INTERNAL_CPPFLAGS)
@@ -585,7 +583,9 @@ LDFLAGS = @LDFLAGS@
# I think it's perfectly reasonable for a user to set -pg in CFLAGS
# and have it work; that's why CFLAGS is here.
# PROFILE_CFLAGS is _not_ included, however, because we use monstartup.
-INTERNAL_LDFLAGS = $(CFLAGS) $(GLOBAL_CFLAGS) $(MH_LDFLAGS) $(LDFLAGS) $(CONFIG_LDFLAGS)
+INTERNAL_LDFLAGS = \
+ $(COMPILER_CFLAGS) $(GLOBAL_CFLAGS) $(MH_LDFLAGS) \
+ $(LDFLAGS) $(CONFIG_LDFLAGS)

# If your system is missing alloca(), or, more likely, it's there but
# it doesn't work, then refer to libiberty.
diff --git a/gdb/build-with-cxx.m4 b/gdb/build-with-cxx.m4
index d282092..6eb9143 100644
--- a/gdb/build-with-cxx.m4
+++ b/gdb/build-with-cxx.m4
@@ -33,8 +33,11 @@ AC_DEFUN([GDB_AC_BUILD_WITH_CXX],

if test "$enable_build_with_cxx" = "yes"; then
COMPILER='$(CXX)'
+ COMPILER_CFLAGS='$(CXXFLAGS)'
else
COMPILER='$(CC)'
+ COMPILER_CFLAGS='$(CFLAGS)'
fi
AC_SUBST(COMPILER)
+ AC_SUBST(COMPILER_CFLAGS)
])
diff --git a/gdb/configure b/gdb/configure
index 56deb9c..34d6539 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -731,6 +731,7 @@ MAKE
CCDEPMODE
DEPDIR
am__leading_dot
+COMPILER_CFLAGS
COMPILER
INSTALL_STRIP_PROGRAM
STRIP
@@ -5015,12 +5016,15 @@ fi

if test "$enable_build_with_cxx" = "yes"; then
COMPILER='$(CXX)'
+ COMPILER_CFLAGS='$(CXXFLAGS)'
else
COMPILER='$(CC)'
+ COMPILER_CFLAGS='$(CFLAGS)'
fi

+
# Dependency checking.
rm -rf .tst 2>/dev/null
mkdir .tst 2>/dev/null
diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
index 4719e48..f9b9dbe 100644
--- a/gdb/gdbserver/Makefile.in
+++ b/gdb/gdbserver/Makefile.in
@@ -51,6 +51,8 @@ RANLIB = @RANLIB@

# The name of the compiler to use.
COMPILER = @COMPILER@
+# Set to CFLAGS or CXXFLAGS, depending on compiler/language.
+COMPILER_CFLAGS = @COMPILER_CFLAGS@

CC = @CC@
CXX = @CXX@
@@ -129,13 +131,14 @@ WERROR_CFLAGS = @WERROR_CFLAGS@
WARN_CFLAGS_NO_FORMAT = `echo " $(WARN_CFLAGS) " \
| sed "s/ -Wformat-nonliteral / -Wno-format-nonliteral /g"`

-# CFLAGS is specifically reserved for setting from the command line
+# These are specifically reserved for setting from the command line
# when running make. I.E. "make CFLAGS=-Wmissing-prototypes".
CFLAGS = @CFLAGS@
+CXXFLAGS = @CXXFLAGS@
CPPFLAGS = @CPPFLAGS@

# INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros.
-INTERNAL_CFLAGS_BASE = ${CFLAGS} ${GLOBAL_CFLAGS} \
+INTERNAL_CFLAGS_BASE = ${COMPILER_CFLAGS} ${GLOBAL_CFLAGS} \
${PROFILE_CFLAGS} ${INCLUDE_CFLAGS} ${CPPFLAGS}
INTERNAL_WARN_CFLAGS = ${INTERNAL_CFLAGS_BASE} $(WARN_CFLAGS)
INTERNAL_CFLAGS = ${INTERNAL_WARN_CFLAGS} $(WERROR_CFLAGS) -DGDBSERVER
diff --git a/gdb/gdbserver/configure b/gdb/gdbserver/configure
index 84630ad..2748eb8 100755
--- a/gdb/gdbserver/configure
+++ b/gdb/gdbserver/configure
@@ -615,6 +615,7 @@ DEPDIR
am__leading_dot
host_noncanonical
target_noncanonical
+COMPILER_CFLAGS
COMPILER
RANLIB
AR
@@ -4834,12 +4835,15 @@ fi

if test "$enable_build_with_cxx" = "yes"; then
COMPILER='$(CXX)'
+ COMPILER_CFLAGS='$(CXXFLAGS)'
else
COMPILER='$(CC)'
+ COMPILER_CFLAGS='$(CFLAGS)'
fi

+
# Set the 'development' global.
. $srcdir/../../bfd/development.sh

--
1.9.3