On 25.01.2012 06:26, Benjamin Kosnik wrote:


this breaks builds configured with --enable-libstdcxx-debug.

confirmed

  Tried
the following (not yet working) fix.

OK. The attached is closer, but still not quite there.

one step further, to avoid the endless recursion in the install-debug target. unsure if that is the right approach. the install now works, but the debug library is now built in the install step, not in the build step.

  Matthias
Index: src/Makefile.am
===================================================================
--- src/Makefile.am     (revision 183514)
+++ src/Makefile.am     (working copy)
@@ -172,13 +172,23 @@
 # 1 debug library
 # 2 supra-convenience library
 if GLIBCXX_BUILD_DEBUG
-all-local: libstdc++convenience.la build_debug
-install-data-local: install_debug
+STAMP_DEBUG = build-debug
+STAMP_INSTALL_DEBUG = install-debug
+CLEAN_DEBUG = debug
 else
-all-local: libstdc++convenience.la
-install-data-local:
+STAMP_DEBUG =
+STAMP_INSTALL_DEBUG =
+CLEAN_DEBUG =
 endif
 
+all-local-once: libstdc++convenience.la $(STAMP_DEBUG)
+install-data-local-once: $(STAMP_INSTALL_DEBUG)
+
+all-local: all-local-once
+install-data-local: install-data-local-once
+clean-local:
+       rm -rf libstdc++convenience.la stamp* $(CLEAN_DEBUG)
+
 # Make a non-installed convenience library, so that --disable-static
 # may work.
 libstdc++convenience.la: $(toolexeclib_LTLIBRARIES)
@@ -188,13 +198,13 @@
        fi; \
        echo `date` > stamp-libstdc++convenience;
 
-debugdir = debug
-
-# Build a set of debug objects here.
+# Build a debug variant.
 # Take care to fix all possibly-relative paths.
+debugdir = ${glibcxx_builddir}/src/debug
 stamp-debug:
        if test ! -d ${debugdir}; then \
          mkdir -p ${debugdir}; \
+         for d in $(SUBDIRS); do mkdir -p  ${debugdir}/$$d; done; \
          (cd ${debugdir}; \
          sed -e 's/top_builddir = \.\./top_builddir = ..\/../' \
              -e 's/top_build_prefix = \.\./top_build_prefix = ..\/../' \
@@ -202,16 +212,27 @@
              -e 's/VPATH = \.\./VPATH = ..\/../' \
              -e 's/glibcxx_basedir = \.\./glibcxx_basedir = ..\/../' \
              -e 's/MKDIR_P = \.\./MKDIR_P = ..\/../' \
-             -e 's/all-local: build_debug/all-local:/' \
-             -e 's/install-data-local: install_debug/install-data-local:/' \
-         < ../Makefile > Makefile) ; \
+             -e 's/all-local: all-local-once/all-local:/' \
+             -e 's/install-data-local: 
install-data-local-once/install-data-local:/' \
+         < ../Makefile > Makefile ; \
+         for d in . $(SUBDIRS); do \
+         sed -e 's/top_builddir = \.\./top_builddir = ..\/../' \
+             -e 's/top_build_prefix = \.\./top_build_prefix = ..\/../' \
+             -e 's/srcdir = \.\./srcdir = ..\/../' \
+             -e 's/VPATH = \.\./VPATH = ..\/../' \
+             -e 's/glibcxx_basedir = \.\./glibcxx_basedir = ..\/../' \
+             -e 's/MKDIR_P = \.\./MKDIR_P = ..\/../' \
+         < ../$$d/Makefile > $$d/Makefile ; \
+         done) ; \
        fi; \
        echo `date` > stamp-debug;
 
-build_debug: stamp-debug
-       (cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' all)
+build-debug: stamp-debug
+       (cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' libstdc++.la)
 
-# Install debug library here.
-install_debug:
-       (cd ${debugdir} && $(MAKE) \
-       toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
+# Install debug library.
+install-debug: stamp-debug
+       (if [ $$(basename $(CURDIR)) != debug ]; then \
+         cd ${debugdir} && $(MAKE) \
+         toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install; \
+       fi)

Reply via email to