This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libstdc++/53579] libstdc++ configure atomicity tests use CXXFLAGS instead of CXXFLAGS_FOR_TARGET
- From: "bkoz at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 07 Aug 2012 20:53:26 +0000
- Subject: [Bug libstdc++/53579] libstdc++ configure atomicity tests use CXXFLAGS instead of CXXFLAGS_FOR_TARGET
- Auto-submitted: auto-generated
- References: <bug-53579-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53579
Benjamin Kosnik <bkoz at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |bkoz at gcc dot gnu.org
--- Comment #1 from Benjamin Kosnik <bkoz at gcc dot gnu.org> 2012-08-07 20:53:26 UTC ---
Some notes.
src/Makefile.am does not export CXXFLAGS_FOR_TARGET, only CFLAGS_FOR_TARGET.
The problem is that configure CXXFLAGS ends up being different than build
CXXFLAGS. And configure flags don't play with CXXFLAGS_FOR_TARGET (but build
flags do.)
gcc/Makefile.in has the pass down for target libs:
EXTRA_TARGET_FLAGS = \
'AR=$$(AR_FOR_TARGET)' \
'AS=$(COMPILER_AS_FOR_TARGET)' \
'CC=$$(CC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
'CFLAGS=$$(CFLAGS_FOR_TARGET)' \
'CXX=$$(CXX_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET)' \
This is what is expected and needed for build, but for configure the situation
is not working in an equivalent manner.
config/mt-gnu:
CXXFLAGS_FOR_TARGET = $(CXXFLAGS) -D_GNU_SOURCE
configure.ac:
if test "x$CXXFLAGS_FOR_TARGET" = x; then
CXXFLAGS_FOR_TARGET=$CXXFLAGS
case " $CXXFLAGS " in
*" -O2 "*) ;;
*) CXXFLAGS_FOR_TARGET="-O2 $CXXFLAGS_FOR_TARGET" ;;
esac
case " $CXXFLAGS " in
*" -g "* | *" -g3 "*) ;;
*) CXXFLAGS_FOR_TARGET="-g $CXXFLAGS_FOR_TARGET" ;;
esac
fi
AC_SUBST(CXXFLAGS_FOR_TARGET)
ie, CXXFLAGS_FOR_TARGET is what should be used, not CXXFLAGS
There are a lot of C++ configure tests in libstdc++ (and other target libs!)
that use CXXFLAGS assuming it's the real thing used to build the library. Not
just atomicity. A consistent solution would be nice here.
Possible solutions:
1) Setup GLIBCXX_CONFIGURE to export GLIBCXX_CXXFLAGS, which is then used
consistently during configure only, and incorporates CXXFLAGS_FOR_TARGET.
(Makefiles still use CXXFLAGS).
2) use CFLAGS_FOR_TARGET in libstdc++ config
3) like one, but have something like CXXFLAGS_EXTRA_FOR_TARGET which (unlike
CXXFLAGS_FOR_TARGET) is not supposed to replace CXXFLAGS, but instead is always
added to CXXFLAGS, not substituted for it.