PATCH (for top-level): in-src configuration (still) broken

Loren James Rittle rittle@latour.rsch.comm.mot.com
Tue Dec 9 11:45:00 GMT 2003


Hey Phil (directed at you since we last bantered about it---and I'd
still claim that you are somewhat on the hook to help me resolve it ;-),

Background: The ref5 tester has been down for ~3 months (only known
tester bootstrapping mainline with ./configure; breakage out of sight,
breakage out of mind).  It is now back in action.  Now that dailies
have been running, I see that in-src building is still broken (or
fixed then broken again)...  Checking e-mail records, I see some
exchanges on the matter occurred at the end of August---right when
said tester went dead but we never reached a conclusion as to the best
fix.  The failure is the dreaded:

gmake[4]: *** No rule to make target `[...]/gcc-build-ref5-1208-in/\
i386-unknown-freebsd5.2/libstdc++-v3/../gcc/gthr.h',\
needed by `i386-unknown-freebsd5.2/bits/gthr.h

This is the most robust patch I found to fix our problem.  I say: "too
bad" to those people that want the staging for vanity's sake; now that
we dictate GNU make, it is time to reap some real benefits.  Any
comments from fellow libstdc++-v3 maintainers before I ask the global
build machinery maintainers to approve/rework/reject it?  Enforcing this
policy at top-level might also allow us to unhack numerous other
special cases in target-only libraries.  Wouldn't that be special...

Full bootstrap w/ ./configure on i386-*-freebsd5.2 (first since auto- upgrade)
Full library rebuild w/ $srcdir/configure on i386-*-freebsd4.9

Of course, check and install (in libstdc++-v3) as well in both cases
with no regression.

Regards,
Loren

	* Makefile.def (target_modules) [libstdc++-v3]: Do not stage.
	* Makefile.tpl (configure-target-[+module+]): Support no_stage.
	* Makefile: Rebuilt.

Index: Makefile.def
===================================================================
RCS file: /cvs/gcc/gcc/Makefile.def,v
retrieving revision 1.10
diff -c -r1.10 Makefile.def
*** Makefile.def	23 Jun 2003 20:34:26 -0000	1.10
--- Makefile.def	9 Dec 2003 07:40:05 -0000
***************
*** 96,102 ****
                  missing=maintainer-clean; };
  host_modules= { module= utils; no_check=true; };
  
! target_modules = { module= libstdc++-v3; raw_cxx=true; };
  target_modules = { module= newlib; };
  target_modules = { module= libf2c; };
  target_modules = { module= libobjc; };
--- 96,102 ----
                  missing=maintainer-clean; };
  host_modules= { module= utils; no_check=true; };
  
! target_modules = { module= libstdc++-v3; raw_cxx=true; no_stage=true; };
  target_modules = { module= newlib; };
  target_modules = { module= libf2c; };
  target_modules = { module= libobjc; };
Index: Makefile.tpl
===================================================================
RCS file: /cvs/gcc/gcc/Makefile.tpl,v
retrieving revision 1.76
diff -c -r1.76 Makefile.tpl
*** Makefile.tpl	21 Nov 2003 00:39:03 -0000	1.76
--- Makefile.tpl	9 Dec 2003 07:40:05 -0000
***************
*** 983,989 ****
  	      .) topdir="../$(srcdir)" ;; \
  	      *) topdir="../../$(srcdir)" ;; \
  	    esac ;; \
! 	esac; \
  	if [ "$(srcdir)" = "." ] ; then \
  	  if [ "$(TARGET_SUBDIR)" != "." ] ; then \
  	    if $(SHELL) $$s/symlink-tree $${topdir}/[+module+] "no-such-file" ; then \
--- 983,990 ----
  	      .) topdir="../$(srcdir)" ;; \
  	      *) topdir="../../$(srcdir)" ;; \
  	    esac ;; \
! 	esac; \[+
! IF no_stage +][+ ELSE stage +]
  	if [ "$(srcdir)" = "." ] ; then \
  	  if [ "$(TARGET_SUBDIR)" != "." ] ; then \
  	    if $(SHELL) $$s/symlink-tree $${topdir}/[+module+] "no-such-file" ; then \
***************
*** 1004,1013 ****
  	  fi; \
  	  srcdiroption="--srcdir=."; \
  	  libsrcdir="."; \
! 	else \
  	  srcdiroption="--srcdir=$${topdir}/[+module+]"; \
! 	  libsrcdir="$$s/[+module+]"; \
! 	fi; \
  	rm -f no-such-file || : ; \
  	CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
  	  $(TARGET_CONFIGARGS) $${srcdiroption} \
--- 1005,1017 ----
  	  fi; \
  	  srcdiroption="--srcdir=."; \
  	  libsrcdir="."; \
! 	else \[+
! ENDIF no_stage +]
  	  srcdiroption="--srcdir=$${topdir}/[+module+]"; \
! 	  libsrcdir="$$s/[+module+]"; \[+
! IF no_stage +][+ ELSE stage +]
! 	fi; \[+
! ENDIF no_stage +]
  	rm -f no-such-file || : ; \
  	CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
  	  $(TARGET_CONFIGARGS) $${srcdiroption} \



More information about the Libstdc++ mailing list