This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[toplevel PATCH 5/7] Allow `make all-gcc' when bootstrapping


PR25670 is about the inability to do a `make all-gcc' after configuring. It was reported by Gabor Loki and Joern Rennecke. One could say that the bug is not that the build fails, but that it fails after a while. Still, it is quite easy to bring `make all-gcc' back to work.

The stage_current file was looked for unconditionally, even if it does not exist right after configuring the toplevel. This never happens when using the documented targets, but causes a `../configure && make all-stage1-gcc' to fail. A related buglet, that showed up in the same conditions, is that the `r' and `s' variables were not set for targets such as `make all-stage1-gcc'. I believe that this was introduced recently with Dan's fixes for multilibbed bootstrapped target libraries; anyway all these robustness problems are fixed by the first hunks below.

`all-gcc' currently does nothing if we are bootstrapping, on the grounds that the three stages of GCC are built earlier. But alternatively, we can make `all-host' skip packages that were bootstrapped. Similarly, when bootstrapping, a target module need not have a dependency on all-gcc, but only on `stage_last'. This is enough for people to do things like

      make all-target-libffi
      make all-target-libstdc++-v3 STAGE1_LANGUAGES=c,c++

after configuring GCC. This will build the library with a stage1 compiler; it can be a useful shortcut if one suspects a front-end bug, which they want to debug using the stage1 compiler, but they still intend to run a full bootstrap later without reconfiguring.

This patch changes the format of the *-host and *-target rules from

      all-host: \
        all-libiberty \
        all-gcc \
        etc.

to
      all-host: all-libiberty
      all-host: all-gcc
      etc.

This is necessary only for all-host, but I did it for every such rule for the sake of consistency.

Finally, the patch provides an implementation of `make restrap'. This is slightly different from the old build system, as it just removes everything built after stage1 gcc, and start a full build.

I include a snipped version of the Makefile.in diff, since it can help the reviewers.

Ok for mainline?

:ADDPATCH toplevel:

Paolo

2006-01-28  Paolo Bonzini  <bonzini@gnu.org>

        PR bootstrap/25670

        * Makefile.tpl (configure-stage[+id+]-[+prefix+][+module+],
        all-stage[+id+]-[+prefix+][+module+], : Use $(current_stage) instead
        of `cat stage_current`.  Always provide the `r' and `s' variables.
	(clean-stage[+id+]-[+prefix+][+module+]): Likewise, and make it into
	a single shell execution.
        (configure-[+prefix+][+module+], all-[+prefix+][+module+]): For
        bootstrapped modules, make the stage1 module if the build was not
        started yet, else build the current stage.
        (all-host, all-target): Omit bootstrapped modules (if bootstrapping).
        (all-build, all-host, all-target, [+make_target+]-host,
	[+make_target+]-target): Do not use \-continued lines.
        (target modules): Depend on stage_last, not all-gcc, if bootstrapping.
        (current_stage, restrap, stage_last): New.
	* Makefile.in: Regenerate.

Index: Makefile.tpl
===================================================================
--- Makefile.tpl	(revision 110266)
+++ Makefile.tpl	(working copy)
@@ -500,20 +497,20 @@ all:
 	fi
 
 .PHONY: all-build
-all-build: [+
-  FOR build_modules +] \
-    maybe-all-build-[+module+][+
-  ENDFOR build_modules +]
+[+ FOR build_modules +]
+all-build: maybe-all-build-[+module+][+ ENDFOR build_modules +]
+
 .PHONY: all-host
-all-host: [+
-  FOR host_modules +] \
-    maybe-all-[+module+][+
-  ENDFOR host_modules +]
+[+ FOR host_modules +][+ IF bootstrap +]
+@if [+module+]-no-bootstrap[+ ENDIF bootstrap +]
+all-host: maybe-all-[+module+][+ IF bootstrap +]
+@endif [+module+]-no-bootstrap[+ ENDIF bootstrap +][+ ENDFOR host_modules +]
+
 .PHONY: all-target
-all-target: [+
-  FOR target_modules +] \
-    maybe-all-target-[+module+][+
-  ENDFOR target_modules +]
+[+ FOR target_modules +][+ IF bootstrap +]
+@if [+module+]-no-bootstrap[+ ENDIF bootstrap +]
+all-target: maybe-all-target-[+module+][+ IF bootstrap +]
+@endif [+module+]-no-bootstrap[+ ENDIF bootstrap +][+ ENDFOR target_modules +]
 
 # Do a target for all the subdirectories.  A ``make do-X'' will do a
 # ``make X'' in all subdirectories (because, in general, there is a
@@ -530,16 +527,12 @@ do-[+make_target+]:
 
 
 .PHONY: [+make_target+]-host
-[+make_target+]-host: [+
-  FOR host_modules +] \
-    maybe-[+make_target+]-[+module+][+
-  ENDFOR host_modules +]
+[+ FOR host_modules +]
+[+make_target+]-host: maybe-[+make_target+]-[+module+][+ ENDFOR host_modules +]
 
 .PHONY: [+make_target+]-target
-[+make_target+]-target: [+
-  FOR target_modules +] \
-    maybe-[+make_target+]-target-[+module+][+
-  ENDFOR target_modules +]
+[+ FOR target_modules +]
+[+make_target+]-target: maybe-[+make_target+]-target-[+module+][+ ENDFOR target_modules +]
 [+ ENDFOR recursive_targets +]
 
 # Here are the targets which correspond to the do-X targets.
@@ -729,13 +722,17 @@ TAGS: do-TAGS
 maybe-configure-[+prefix+][+module+]:
 @if [+prefix+][+module+]
 maybe-configure-[+prefix+][+module+]: configure-[+prefix+][+module+]
-configure-[+prefix+][+module+]:
-	@[+ IF bootstrap +]test -f stage_last && exit 0; \
-	[+ ELSE bootstrap +]: $(MAKE); $(unstage)
-	@[+ ENDIF bootstrap +][+ IF check_multilibs
-	+]r=`${PWD_COMMAND}`; export r; \
+configure-[+prefix+][+module+]: [+ IF bootstrap +]
+@endif [+prefix+][+module+]
+@if [+prefix+][+module+]-bootstrap
+	@if test -f stage_last; then $(unstage); else $(MAKE) stage1-start; fi
+@endif [+prefix+][+module+]-bootstrap
+@if [+prefix+][+module+][+ ELSE bootstrap +]
+	@: $(MAKE); $(unstage)[+ ENDIF bootstrap +]
+	@r=`${PWD_COMMAND}`; export r; \
 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
-	echo "Checking multilib configuration for [+module+]..."; \
+	[+ IF check_multilibs
+	+]echo "Checking multilib configuration for [+module+]..."; \
 	$(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+] ; \
 	$(CC_FOR_TARGET) --print-multi-lib > [+subdir+]/[+module+]/multilib.tmp 2> /dev/null ; \
 	if test -r [+subdir+]/[+module+]/multilib.out; then \
@@ -747,11 +744,9 @@ configure-[+prefix+][+module+]:
 	  fi; \
 	else \
 	  mv [+subdir+]/[+module+]/multilib.tmp [+subdir+]/[+module+]/multilib.out; \
-	fi
-	@[+ ENDIF check_multilibs +]test ! -f [+subdir+]/[+module+]/Makefile || exit 0; \
+	fi; \
+	[+ ENDIF check_multilibs +]test ! -f [+subdir+]/[+module+]/Makefile || exit 0; \
 	$(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+] ; \
-	r=`${PWD_COMMAND}`; export r; \
-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
 	[+exports+] \
 	echo Configuring in [+subdir+]/[+module+]; \
 	cd "[+subdir+]/[+module+]" || exit 1; \
@@ -775,12 +770,12 @@ maybe-configure-stage[+id+]-[+prefix+][+
 @if [+prefix+][+module+]-bootstrap
 maybe-configure-stage[+id+]-[+prefix+][+module+]: configure-stage[+id+]-[+prefix+][+module+]
 configure-stage[+id+]-[+prefix+][+module+]:
-	@[ `cat stage_current` = stage[+id+] ] || $(MAKE) stage[+id+]-start
+	@[ $(current_stage) = stage[+id+] ] || $(MAKE) stage[+id+]-start
 	@$(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+]
-	[+ IF check_multilibs
-	+]@r=`${PWD_COMMAND}`; export r; \
+	@r=`${PWD_COMMAND}`; export r; \
 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
-	echo "Checking multilib configuration for [+module+]..."; \
+	[+ IF check_multilibs
+	+]echo "Checking multilib configuration for [+module+]..."; \
 	$(CC_FOR_TARGET) --print-multi-lib > [+subdir+]/[+module+]/multilib.tmp 2> /dev/null ; \
 	if test -r [+subdir+]/[+module+]/multilib.out; then \
 	  if cmp -s [+subdir+]/[+module+]/multilib.tmp [+subdir+]/[+module+]/multilib.out; then \
@@ -791,8 +786,8 @@ configure-stage[+id+]-[+prefix+][+module
 	  fi; \
 	else \
 	  mv [+subdir+]/[+module+]/multilib.tmp [+subdir+]/[+module+]/multilib.out; \
-	fi
-	@[+ ENDIF check_multilibs +]test ! -f [+subdir+]/[+module+]/Makefile || exit 0; \
+	fi; \
+	[+ ENDIF check_multilibs +]test ! -f [+subdir+]/[+module+]/Makefile || exit 0; \
 	[+exports+][+ IF prev +] \
 	[+poststage1_exports+][+ ENDIF prev +] \
 	echo Configuring stage [+id+] in [+subdir+]/[+module+] ; \
@@ -820,10 +815,14 @@ maybe-all-[+prefix+][+module+]:
 TARGET-[+prefix+][+module+]=[+
   IF target +][+target+][+ ELSE +]all[+ ENDIF target +]
 maybe-all-[+prefix+][+module+]: all-[+prefix+][+module+]
-all-[+prefix+][+module+]: configure-[+prefix+][+module+]
-	@[+ IF bootstrap +]test -f stage_last && exit 0; \
-	[+ ELSE bootstrap +]: $(MAKE); $(unstage)
-	@[+ ENDIF bootstrap +]r=`${PWD_COMMAND}`; export r; \
+all-[+prefix+][+module+]: configure-[+prefix+][+module+][+ IF bootstrap +]
+@endif [+prefix+][+module+]
+@if [+prefix+][+module+]-bootstrap
+	@if test -f stage_last; then $(unstage); else $(MAKE) stage1-start; fi
+@endif [+prefix+][+module+]-bootstrap
+@if [+prefix+][+module+][+ ELSE bootstrap +]
+	@: $(MAKE); $(unstage)[+ ENDIF bootstrap +]
+	@r=`${PWD_COMMAND}`; export r; \
 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
 	[+exports+] \
 	(cd [+subdir+]/[+module+] && \
@@ -841,7 +840,7 @@ maybe-all-stage[+id+]-[+prefix+][+module
 all-stage[+id+]: all-stage[+id+]-[+prefix+][+module+]
 TARGET-stage[+id+]-[+prefix+][+module+] = $(TARGET-[+prefix+][+module+])
 all-stage[+id+]-[+prefix+][+module+]: configure-stage[+id+]-[+prefix+][+module+]
-	@[ `cat stage_current` = stage[+id+] ] || $(MAKE) stage[+id+]-start
+	@[ $(current_stage) = stage[+id+] ] || $(MAKE) stage[+id+]-start
 	@r=`${PWD_COMMAND}`; export r; \
 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
 	[+exports+][+ IF prev +] \
@@ -857,7 +856,7 @@ clean-stage[+id+]: clean-stage[+id+]-[+p
 clean-stage[+id+]-[+prefix+][+module+]:
 	@[ -f [+subdir+]/[+module+]/Makefile ] || [ -f [+subdir+]/stage[+id+]-[+module+]/Makefile ] \
 	  || exit 0 ; \
-	[ `cat stage_current` = stage[+id+] ] || $(MAKE) stage[+id+]-start
+	[ $(current_stage) = stage[+id+] ] || $(MAKE) stage[+id+]-start; \
 	cd [+subdir+]/[+module+] && \
 	$(MAKE) [+args+] [+ IF prev +] \
 		[+poststage1_args+] [+ ENDIF prev +] \
@@ -1210,10 +1209,12 @@ gcc-no-fixedincludes:
 
 unstage = :
 stage = :
+current_stage = ""
 
 @if gcc-bootstrap
 unstage = [ -f stage_current ] || $(MAKE) `cat stage_last`-start
 stage = if [ -f stage_current ]; then $(MAKE) `cat stage_current`-end || exit 1; else :; fi
+current_stage = "`cat stage_current 2> /dev/null`"
 @endif gcc-bootstrap
 
 .PHONY: unstage stage
@@ -1420,19 +1423,39 @@ stagefeedback-start::
 
 @if gcc-bootstrap
 do-distclean: distclean-stage1
+
+# Provide a GCC build when we're building target libraries.  This does
+# not work as a dependency, just as the minimum necessary to avoid errors.
+stage_last:
+	$(MAKE) $(RECURSE_FLAGS_TO_PASS) stage1-bubble
 @endif gcc-bootstrap
 
+.PHONY: restrap
+restrap:
+	@: $(MAKE); $(stage)
+	rm -rf stage1-$(TARGET_SUBDIR) [+ FOR bootstrap-stage +][+ IF prev
+	  +]stage[+id+] [+ ENDIF prev +][+ ENDFOR bootstrap-stage +]
+	$(MAKE) $(RECURSE_FLAGS_TO_PASS) all
+
 # --------------------------------------
 # Dependencies between different modules
 # --------------------------------------
 
 # Generic dependencies for target modules on host stuff, especially gcc
-[+ FOR target_modules +][+ IF bootstrap +]
-@if gcc-bootstrap[+ FOR bootstrap_stage +]
-configure-stage[+id+]-target-[+module+]: maybe-all-stage[+id+]-gcc[+ ENDFOR +]
-@endif gcc-bootstrap[+ ENDIF bootstrap +]
-configure-target-[+module+]: maybe-all-gcc
-[+ ENDFOR target_modules +]
+@if gcc-bootstrap[+ FOR target_modules +][+ IF bootstrap
+  +][+ FOR bootstrap_stage +]
+configure-stage[+id+]-target-[+module+]: maybe-all-stage[+id+]-gcc[+
+  ENDFOR +][+ ELSE bootstrap +]
+configure-target-[+module+]: stage_last[+
+  ENDIF bootstrap +][+ ENDFOR target_modules +]
+@endif gcc-bootstrap
+
+@if gcc-no-bootstrap[+ FOR target_modules +][+ IF bootstrap
+  +][+ ELSE +]
+configure-target-[+module+]: maybe-all-gcc[+
+  ENDIF bootstrap +][+ ENDFOR target_modules +]
+@endif gcc-no-bootstrap
+
 
 [+ FOR lang_env_dependencies +]
 configure-target-[+module+]: maybe-all-target-newlib maybe-all-target-libgloss
Index: Makefile.in
===================================================================
--- Makefile.in	(revision 110266)
+++ Makefile.in	(working copy)
@@ -659,106 +661,130 @@ all:
 	fi
 
 .PHONY: all-build
-all-build:  \
-    maybe-all-build-libiberty \
-    maybe-all-build-bison \
-    maybe-all-build-byacc \
-    maybe-all-build-flex \
-    maybe-all-build-m4 \
-    maybe-all-build-texinfo \
-    maybe-all-build-fixincludes
+
+all-build: maybe-all-build-libiberty
+all-build: maybe-all-build-bison
+all-build: maybe-all-build-byacc
+all-build: maybe-all-build-flex
+all-build: maybe-all-build-m4
+all-build: maybe-all-build-texinfo
+all-build: maybe-all-build-fixincludes
+
 .PHONY: all-host
-all-host:  \
-    maybe-all-ash \
-    maybe-all-autoconf \
-    maybe-all-automake \
-    maybe-all-bash \
-    maybe-all-bfd \
-    maybe-all-opcodes \
-    maybe-all-binutils \
-    maybe-all-bison \
-    maybe-all-byacc \
-    maybe-all-bzip2 \
-    maybe-all-dejagnu \
-    maybe-all-diff \
-    maybe-all-dosutils \
-    maybe-all-etc \
-    maybe-all-fastjar \
-    maybe-all-fileutils \
-    maybe-all-findutils \
-    maybe-all-find \
-    maybe-all-fixincludes \
-    maybe-all-flex \
-    maybe-all-gas \
-    maybe-all-gcc \
-    maybe-all-gawk \
-    maybe-all-gettext \
-    maybe-all-gnuserv \
-    maybe-all-gprof \
-    maybe-all-gzip \
-    maybe-all-hello \
-    maybe-all-indent \
-    maybe-all-intl \
-    maybe-all-tcl \
-    maybe-all-itcl \
-    maybe-all-ld \
-    maybe-all-libcpp \
-    maybe-all-libdecnumber \
-    maybe-all-libgui \
-    maybe-all-libiberty \
-    maybe-all-libtool \
-    maybe-all-m4 \
-    maybe-all-make \
-    maybe-all-mmalloc \
-    maybe-all-patch \
-    maybe-all-perl \
-    maybe-all-prms \
-    maybe-all-rcs \
-    maybe-all-readline \
-    maybe-all-release \
-    maybe-all-recode \
-    maybe-all-sed \
-    maybe-all-send-pr \
-    maybe-all-shellutils \
-    maybe-all-sid \
-    maybe-all-sim \
-    maybe-all-tar \
-    maybe-all-texinfo \
-    maybe-all-textutils \
-    maybe-all-time \
-    maybe-all-uudecode \
-    maybe-all-wdiff \
-    maybe-all-zip \
-    maybe-all-zlib \
-    maybe-all-gdb \
-    maybe-all-expect \
-    maybe-all-guile \
-    maybe-all-tk \
-    maybe-all-libtermcap \
-    maybe-all-utils \
-    maybe-all-gnattools
+
+all-host: maybe-all-ash
+all-host: maybe-all-autoconf
+all-host: maybe-all-automake
+all-host: maybe-all-bash
+@if bfd-no-bootstrap
+all-host: maybe-all-bfd
+@endif bfd-no-bootstrap
+@if opcodes-no-bootstrap
+all-host: maybe-all-opcodes
+@endif opcodes-no-bootstrap
+@if binutils-no-bootstrap
+all-host: maybe-all-binutils
+@endif binutils-no-bootstrap
+all-host: maybe-all-bison
+all-host: maybe-all-byacc
+all-host: maybe-all-bzip2
+all-host: maybe-all-dejagnu
+all-host: maybe-all-diff
+all-host: maybe-all-dosutils
+all-host: maybe-all-etc
+all-host: maybe-all-fastjar
+all-host: maybe-all-fileutils
+all-host: maybe-all-findutils
+all-host: maybe-all-find
+all-host: maybe-all-fixincludes
+all-host: maybe-all-flex
+@if gas-no-bootstrap
+all-host: maybe-all-gas
+@endif gas-no-bootstrap
+@if gcc-no-bootstrap
+all-host: maybe-all-gcc
+@endif gcc-no-bootstrap
+all-host: maybe-all-gawk
+all-host: maybe-all-gettext
+all-host: maybe-all-gnuserv
+all-host: maybe-all-gprof
+all-host: maybe-all-gzip
+all-host: maybe-all-hello
+all-host: maybe-all-indent
+@if intl-no-bootstrap
+all-host: maybe-all-intl
+@endif intl-no-bootstrap
+all-host: maybe-all-tcl
+all-host: maybe-all-itcl
+@if ld-no-bootstrap
+all-host: maybe-all-ld
+@endif ld-no-bootstrap
+@if libcpp-no-bootstrap
+all-host: maybe-all-libcpp
+@endif libcpp-no-bootstrap
+@if libdecnumber-no-bootstrap
+all-host: maybe-all-libdecnumber
+@endif libdecnumber-no-bootstrap
+all-host: maybe-all-libgui
+@if libiberty-no-bootstrap
+all-host: maybe-all-libiberty
+@endif libiberty-no-bootstrap
+all-host: maybe-all-libtool
+all-host: maybe-all-m4
+all-host: maybe-all-make
+all-host: maybe-all-mmalloc
+all-host: maybe-all-patch
+all-host: maybe-all-perl
+all-host: maybe-all-prms
+all-host: maybe-all-rcs
+all-host: maybe-all-readline
+all-host: maybe-all-release
+all-host: maybe-all-recode
+all-host: maybe-all-sed
+all-host: maybe-all-send-pr
+all-host: maybe-all-shellutils
+all-host: maybe-all-sid
+all-host: maybe-all-sim
+all-host: maybe-all-tar
+all-host: maybe-all-texinfo
+all-host: maybe-all-textutils
+all-host: maybe-all-time
+all-host: maybe-all-uudecode
+all-host: maybe-all-wdiff
+all-host: maybe-all-zip
+@if zlib-no-bootstrap
+all-host: maybe-all-zlib
+@endif zlib-no-bootstrap
+all-host: maybe-all-gdb
+all-host: maybe-all-expect
+all-host: maybe-all-guile
+all-host: maybe-all-tk
+all-host: maybe-all-libtermcap
+all-host: maybe-all-utils
+all-host: maybe-all-gnattools
+
 .PHONY: all-target
-all-target:  \
-    maybe-all-target-libstdc++-v3 \
-    maybe-all-target-libmudflap \
-    maybe-all-target-libssp \
-    maybe-all-target-newlib \
-    maybe-all-target-libgfortran \
-    maybe-all-target-libobjc \
-    maybe-all-target-libtermcap \
-    maybe-all-target-winsup \
-    maybe-all-target-libgloss \
-    maybe-all-target-libiberty \
-    maybe-all-target-gperf \
-    maybe-all-target-examples \
-    maybe-all-target-libffi \
-    maybe-all-target-libjava \
-    maybe-all-target-zlib \
-    maybe-all-target-boehm-gc \
-    maybe-all-target-qthreads \
-    maybe-all-target-rda \
-    maybe-all-target-libada \
-    maybe-all-target-libgomp
+
+all-target: maybe-all-target-libstdc++-v3
+all-target: maybe-all-target-libmudflap
+all-target: maybe-all-target-libssp
+all-target: maybe-all-target-newlib
+all-target: maybe-all-target-libgfortran
+all-target: maybe-all-target-libobjc
+all-target: maybe-all-target-libtermcap
+all-target: maybe-all-target-winsup
+all-target: maybe-all-target-libgloss
+all-target: maybe-all-target-libiberty
+all-target: maybe-all-target-gperf
+all-target: maybe-all-target-examples
+all-target: maybe-all-target-libffi
+all-target: maybe-all-target-libjava
+all-target: maybe-all-target-zlib
+all-target: maybe-all-target-boehm-gc
+all-target: maybe-all-target-qthreads
+all-target: maybe-all-target-rda
+all-target: maybe-all-target-libada
+all-target: maybe-all-target-libgomp
 
 # Do a target for all the subdirectories.  A ``make do-X'' will do a
 # ``make X'' in all subdirectories (because, in general, there is a
@@ -775,98 +801,98 @@ do-info:
 
 
 .PHONY: info-host
-info-host:  \
-    maybe-info-ash \
-    maybe-info-autoconf \
-    maybe-info-automake \
-    maybe-info-bash \
-    maybe-info-bfd \
-    maybe-info-opcodes \
-    maybe-info-binutils \
-    maybe-info-bison \
-    maybe-info-byacc \
-    maybe-info-bzip2 \
-    maybe-info-dejagnu \
-    maybe-info-diff \
-    maybe-info-dosutils \
-    maybe-info-etc \
-    maybe-info-fastjar \
-    maybe-info-fileutils \
-    maybe-info-findutils \
-    maybe-info-find \
-    maybe-info-fixincludes \
-    maybe-info-flex \
-    maybe-info-gas \
-    maybe-info-gcc \
-    maybe-info-gawk \
-    maybe-info-gettext \
-    maybe-info-gnuserv \
-    maybe-info-gprof \
-    maybe-info-gzip \
-    maybe-info-hello \
-    maybe-info-indent \
-    maybe-info-intl \
-    maybe-info-tcl \
-    maybe-info-itcl \
-    maybe-info-ld \
-    maybe-info-libcpp \
-    maybe-info-libdecnumber \
-    maybe-info-libgui \
-    maybe-info-libiberty \
-    maybe-info-libtool \
-    maybe-info-m4 \
-    maybe-info-make \
-    maybe-info-mmalloc \
-    maybe-info-patch \
-    maybe-info-perl \
-    maybe-info-prms \
-    maybe-info-rcs \
-    maybe-info-readline \
-    maybe-info-release \
-    maybe-info-recode \
-    maybe-info-sed \
-    maybe-info-send-pr \
-    maybe-info-shellutils \
-    maybe-info-sid \
-    maybe-info-sim \
-    maybe-info-tar \
-    maybe-info-texinfo \
-    maybe-info-textutils \
-    maybe-info-time \
-    maybe-info-uudecode \
-    maybe-info-wdiff \
-    maybe-info-zip \
-    maybe-info-zlib \
-    maybe-info-gdb \
-    maybe-info-expect \
-    maybe-info-guile \
-    maybe-info-tk \
-    maybe-info-libtermcap \
-    maybe-info-utils \
-    maybe-info-gnattools
+
+info-host: maybe-info-ash
+info-host: maybe-info-autoconf
+info-host: maybe-info-automake
+info-host: maybe-info-bash
+info-host: maybe-info-bfd
+info-host: maybe-info-opcodes
+info-host: maybe-info-binutils
+info-host: maybe-info-bison
+info-host: maybe-info-byacc
+info-host: maybe-info-bzip2
+info-host: maybe-info-dejagnu
+info-host: maybe-info-diff
+info-host: maybe-info-dosutils
+info-host: maybe-info-etc
+info-host: maybe-info-fastjar
+info-host: maybe-info-fileutils
+info-host: maybe-info-findutils
+info-host: maybe-info-find
+info-host: maybe-info-fixincludes
+info-host: maybe-info-flex
+info-host: maybe-info-gas
+info-host: maybe-info-gcc
+info-host: maybe-info-gawk
+info-host: maybe-info-gettext
+info-host: maybe-info-gnuserv
+info-host: maybe-info-gprof
+info-host: maybe-info-gzip
+info-host: maybe-info-hello
+info-host: maybe-info-indent
+info-host: maybe-info-intl
+info-host: maybe-info-tcl
+info-host: maybe-info-itcl
+info-host: maybe-info-ld
+info-host: maybe-info-libcpp
+info-host: maybe-info-libdecnumber
+info-host: maybe-info-libgui
+info-host: maybe-info-libiberty
+info-host: maybe-info-libtool
+info-host: maybe-info-m4
+info-host: maybe-info-make
+info-host: maybe-info-mmalloc
+info-host: maybe-info-patch
+info-host: maybe-info-perl
+info-host: maybe-info-prms
+info-host: maybe-info-rcs
+info-host: maybe-info-readline
+info-host: maybe-info-release
+info-host: maybe-info-recode
+info-host: maybe-info-sed
+info-host: maybe-info-send-pr
+info-host: maybe-info-shellutils
+info-host: maybe-info-sid
+info-host: maybe-info-sim
+info-host: maybe-info-tar
+info-host: maybe-info-texinfo
+info-host: maybe-info-textutils
+info-host: maybe-info-time
+info-host: maybe-info-uudecode
+info-host: maybe-info-wdiff
+info-host: maybe-info-zip
+info-host: maybe-info-zlib
+info-host: maybe-info-gdb
+info-host: maybe-info-expect
+info-host: maybe-info-guile
+info-host: maybe-info-tk
+info-host: maybe-info-libtermcap
+info-host: maybe-info-utils
+info-host: maybe-info-gnattools
 
 .PHONY: info-target
-info-target:  \
-    maybe-info-target-libstdc++-v3 \
-    maybe-info-target-libmudflap \
-    maybe-info-target-libssp \
-    maybe-info-target-newlib \
-    maybe-info-target-libgfortran \
-    maybe-info-target-libobjc \
-    maybe-info-target-libtermcap \
-    maybe-info-target-winsup \
-    maybe-info-target-libgloss \
-    maybe-info-target-libiberty \
-    maybe-info-target-gperf \
-    maybe-info-target-examples \
-    maybe-info-target-libffi \
-    maybe-info-target-libjava \
-    maybe-info-target-zlib \
-    maybe-info-target-boehm-gc \
-    maybe-info-target-qthreads \
-    maybe-info-target-rda \
-    maybe-info-target-libada \
-    maybe-info-target-libgomp
+
+info-target: maybe-info-target-libstdc++-v3
+info-target: maybe-info-target-libmudflap
+info-target: maybe-info-target-libssp
+info-target: maybe-info-target-newlib
+info-target: maybe-info-target-libgfortran
+info-target: maybe-info-target-libobjc
+info-target: maybe-info-target-libtermcap
+info-target: maybe-info-target-winsup
+info-target: maybe-info-target-libgloss
+info-target: maybe-info-target-libiberty
+info-target: maybe-info-target-gperf
+info-target: maybe-info-target-examples
+info-target: maybe-info-target-libffi
+info-target: maybe-info-target-libjava
+info-target: maybe-info-target-zlib
+info-target: maybe-info-target-boehm-gc
+info-target: maybe-info-target-qthreads
+info-target: maybe-info-target-rda
+info-target: maybe-info-target-libada
+info-target: maybe-info-target-libgomp
 
 .PHONY: do-dvi
 do-dvi:
@@ -878,98 +904,98 @@ do-dvi:
 
 
 .PHONY: dvi-host
-dvi-host:  \
-    maybe-dvi-ash \
-    maybe-dvi-autoconf \
-    maybe-dvi-automake \
-    maybe-dvi-bash \
-    maybe-dvi-bfd \
-    maybe-dvi-opcodes \
-    maybe-dvi-binutils \
-    maybe-dvi-bison \
-    maybe-dvi-byacc \
-    maybe-dvi-bzip2 \
-    maybe-dvi-dejagnu \
-    maybe-dvi-diff \
-    maybe-dvi-dosutils \
-    maybe-dvi-etc \
-    maybe-dvi-fastjar \
-    maybe-dvi-fileutils \
-    maybe-dvi-findutils \
-    maybe-dvi-find \
-    maybe-dvi-fixincludes \
-    maybe-dvi-flex \
-    maybe-dvi-gas \
-    maybe-dvi-gcc \
-    maybe-dvi-gawk \
-    maybe-dvi-gettext \
-    maybe-dvi-gnuserv \
-    maybe-dvi-gprof \
-    maybe-dvi-gzip \
-    maybe-dvi-hello \
-    maybe-dvi-indent \
-    maybe-dvi-intl \
-    maybe-dvi-tcl \
-    maybe-dvi-itcl \
-    maybe-dvi-ld \
-    maybe-dvi-libcpp \
-    maybe-dvi-libdecnumber \
-    maybe-dvi-libgui \
-    maybe-dvi-libiberty \
-    maybe-dvi-libtool \
-    maybe-dvi-m4 \
-    maybe-dvi-make \
-    maybe-dvi-mmalloc \
-    maybe-dvi-patch \
-    maybe-dvi-perl \
-    maybe-dvi-prms \
-    maybe-dvi-rcs \
-    maybe-dvi-readline \
-    maybe-dvi-release \
-    maybe-dvi-recode \
-    maybe-dvi-sed \
-    maybe-dvi-send-pr \
-    maybe-dvi-shellutils \
-    maybe-dvi-sid \
-    maybe-dvi-sim \
-    maybe-dvi-tar \
-    maybe-dvi-texinfo \
-    maybe-dvi-textutils \
-    maybe-dvi-time \
-    maybe-dvi-uudecode \
-    maybe-dvi-wdiff \
-    maybe-dvi-zip \
-    maybe-dvi-zlib \
-    maybe-dvi-gdb \
-    maybe-dvi-expect \
-    maybe-dvi-guile \
-    maybe-dvi-tk \
-    maybe-dvi-libtermcap \
-    maybe-dvi-utils \
-    maybe-dvi-gnattools
+
+dvi-host: maybe-dvi-ash
+dvi-host: maybe-dvi-autoconf
+dvi-host: maybe-dvi-automake
+dvi-host: maybe-dvi-bash
+dvi-host: maybe-dvi-bfd
+dvi-host: maybe-dvi-opcodes
+dvi-host: maybe-dvi-binutils
+dvi-host: maybe-dvi-bison
+dvi-host: maybe-dvi-byacc
+dvi-host: maybe-dvi-bzip2
+dvi-host: maybe-dvi-dejagnu
+dvi-host: maybe-dvi-diff
+dvi-host: maybe-dvi-dosutils
+dvi-host: maybe-dvi-etc
+dvi-host: maybe-dvi-fastjar
+dvi-host: maybe-dvi-fileutils
+dvi-host: maybe-dvi-findutils
+dvi-host: maybe-dvi-find
+dvi-host: maybe-dvi-fixincludes
+dvi-host: maybe-dvi-flex
+dvi-host: maybe-dvi-gas
+dvi-host: maybe-dvi-gcc
+dvi-host: maybe-dvi-gawk
+dvi-host: maybe-dvi-gettext
+dvi-host: maybe-dvi-gnuserv
+dvi-host: maybe-dvi-gprof
+dvi-host: maybe-dvi-gzip
+dvi-host: maybe-dvi-hello
+dvi-host: maybe-dvi-indent
+dvi-host: maybe-dvi-intl
+dvi-host: maybe-dvi-tcl
+dvi-host: maybe-dvi-itcl
+dvi-host: maybe-dvi-ld
+dvi-host: maybe-dvi-libcpp
+dvi-host: maybe-dvi-libdecnumber
+dvi-host: maybe-dvi-libgui
+dvi-host: maybe-dvi-libiberty
+dvi-host: maybe-dvi-libtool
+dvi-host: maybe-dvi-m4
+dvi-host: maybe-dvi-make
+dvi-host: maybe-dvi-mmalloc
+dvi-host: maybe-dvi-patch
+dvi-host: maybe-dvi-perl
+dvi-host: maybe-dvi-prms
+dvi-host: maybe-dvi-rcs
+dvi-host: maybe-dvi-readline
+dvi-host: maybe-dvi-release
+dvi-host: maybe-dvi-recode
+dvi-host: maybe-dvi-sed
+dvi-host: maybe-dvi-send-pr
+dvi-host: maybe-dvi-shellutils
+dvi-host: maybe-dvi-sid
+dvi-host: maybe-dvi-sim
+dvi-host: maybe-dvi-tar
+dvi-host: maybe-dvi-texinfo
+dvi-host: maybe-dvi-textutils
+dvi-host: maybe-dvi-time
+dvi-host: maybe-dvi-uudecode
+dvi-host: maybe-dvi-wdiff
+dvi-host: maybe-dvi-zip
+dvi-host: maybe-dvi-zlib
+dvi-host: maybe-dvi-gdb
+dvi-host: maybe-dvi-expect
+dvi-host: maybe-dvi-guile
+dvi-host: maybe-dvi-tk
+dvi-host: maybe-dvi-libtermcap
+dvi-host: maybe-dvi-utils
+dvi-host: maybe-dvi-gnattools
 
 .PHONY: dvi-target
-dvi-target:  \
-    maybe-dvi-target-libstdc++-v3 \
-    maybe-dvi-target-libmudflap \
-    maybe-dvi-target-libssp \
-    maybe-dvi-target-newlib \
-    maybe-dvi-target-libgfortran \
-    maybe-dvi-target-libobjc \
-    maybe-dvi-target-libtermcap \
-    maybe-dvi-target-winsup \
-    maybe-dvi-target-libgloss \
-    maybe-dvi-target-libiberty \
-    maybe-dvi-target-gperf \
-    maybe-dvi-target-examples \
-    maybe-dvi-target-libffi \
-    maybe-dvi-target-libjava \
-    maybe-dvi-target-zlib \
-    maybe-dvi-target-boehm-gc \
-    maybe-dvi-target-qthreads \
-    maybe-dvi-target-rda \
-    maybe-dvi-target-libada \
-    maybe-dvi-target-libgomp
+
+dvi-target: maybe-dvi-target-libstdc++-v3
+dvi-target: maybe-dvi-target-libmudflap
+dvi-target: maybe-dvi-target-libssp
+dvi-target: maybe-dvi-target-newlib
+dvi-target: maybe-dvi-target-libgfortran
+dvi-target: maybe-dvi-target-libobjc
+dvi-target: maybe-dvi-target-libtermcap
+dvi-target: maybe-dvi-target-winsup
+dvi-target: maybe-dvi-target-libgloss
+dvi-target: maybe-dvi-target-libiberty
+dvi-target: maybe-dvi-target-gperf
+dvi-target: maybe-dvi-target-examples
+dvi-target: maybe-dvi-target-libffi
+dvi-target: maybe-dvi-target-libjava
+dvi-target: maybe-dvi-target-zlib
+dvi-target: maybe-dvi-target-boehm-gc
+dvi-target: maybe-dvi-target-qthreads
+dvi-target: maybe-dvi-target-rda
+dvi-target: maybe-dvi-target-libada
+dvi-target: maybe-dvi-target-libgomp
 
 .PHONY: do-html
 do-html:
@@ -2219,12 +2245,12 @@ TAGS: do-TAGS
 maybe-configure-build-libiberty:
 @if build-libiberty
 maybe-configure-build-libiberty: configure-build-libiberty
-configure-build-libiberty:
+configure-build-libiberty: 
 	@: $(MAKE); $(unstage)
-	@test ! -f $(BUILD_SUBDIR)/libiberty/Makefile || exit 0; \
-	$(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/libiberty ; \
-	r=`${PWD_COMMAND}`; export r; \
+	@r=`${PWD_COMMAND}`; export r; \
 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+	test ! -f $(BUILD_SUBDIR)/libiberty/Makefile || exit 0; \
+	$(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/libiberty ; \
 	$(BUILD_EXPORTS) \
 	echo Configuring in $(BUILD_SUBDIR)/libiberty; \
 	cd "$(BUILD_SUBDIR)/libiberty" || exit 1; \
@@ -2267,12 +2293,12 @@ all-build-libiberty: configure-build-lib
 maybe-configure-build-bison:
 @if build-bison
 maybe-configure-build-bison: configure-build-bison
-configure-build-bison:
+configure-build-bison: 
 	@: $(MAKE); $(unstage)
-	@test ! -f $(BUILD_SUBDIR)/bison/Makefile || exit 0; \
-	$(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/bison ; \
-	r=`${PWD_COMMAND}`; export r; \
+	@r=`${PWD_COMMAND}`; export r; \
 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+	test ! -f $(BUILD_SUBDIR)/bison/Makefile || exit 0; \
+	$(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/bison ; \
 	$(BUILD_EXPORTS) \
 	echo Configuring in $(BUILD_SUBDIR)/bison; \
 	cd "$(BUILD_SUBDIR)/bison" || exit 1; \
@@ -3571,12 +3597,12 @@ maintainer-clean-automake: 
 maybe-configure-bash:
 @if bash
 maybe-configure-bash: configure-bash
-configure-bash:
+configure-bash: 
 	@: $(MAKE); $(unstage)
-	@test ! -f $(HOST_SUBDIR)/bash/Makefile || exit 0; \
-	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bash ; \
-	r=`${PWD_COMMAND}`; export r; \
+	@r=`${PWD_COMMAND}`; export r; \
 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+	test ! -f $(HOST_SUBDIR)/bash/Makefile || exit 0; \
+	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bash ; \
 	$(HOST_EXPORTS) \
 	echo Configuring in $(HOST_SUBDIR)/bash; \
 	cd "$(HOST_SUBDIR)/bash" || exit 1; \
@@ -3908,12 +3934,16 @@ maintainer-clean-bash: 
 maybe-configure-bfd:
 @if bfd
 maybe-configure-bfd: configure-bfd
-configure-bfd:
-	@test -f stage_last && exit 0; \
+configure-bfd: 
+@endif bfd
+@if bfd-bootstrap
+	@if test -f stage_last; then $(unstage); else $(MAKE) stage1-start; fi
+@endif bfd-bootstrap
+@if bfd
+	@r=`${PWD_COMMAND}`; export r; \
+	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
 	test ! -f $(HOST_SUBDIR)/bfd/Makefile || exit 0; \
 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \
-	r=`${PWD_COMMAND}`; export r; \
-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
 	$(HOST_EXPORTS) \
 	echo Configuring in $(HOST_SUBDIR)/bfd; \
 	cd "$(HOST_SUBDIR)/bfd" || exit 1; \
@@ -3936,8 +3966,10 @@ maybe-configure-stage1-bfd:
 @if bfd-bootstrap
 maybe-configure-stage1-bfd: configure-stage1-bfd
 configure-stage1-bfd:
-	@[ `cat stage_current` = stage1 ] || $(MAKE) stage1-start
+	@[ $(current_stage) = stage1 ] || $(MAKE) stage1-start
 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd
+	@r=`${PWD_COMMAND}`; export r; \
+	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
 	test ! -f $(HOST_SUBDIR)/bfd/Makefile || exit 0; \
 	$(HOST_EXPORTS) \
 	echo Configuring stage 1 in $(HOST_SUBDIR)/bfd ; \
@@ -3960,8 +3992,10 @@ maybe-configure-stage2-bfd:
 @if bfd-bootstrap
 maybe-configure-stage2-bfd: configure-stage2-bfd
 configure-stage2-bfd:
-	@[ `cat stage_current` = stage2 ] || $(MAKE) stage2-start
+	@[ $(current_stage) = stage2 ] || $(MAKE) stage2-start
 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd
+	@r=`${PWD_COMMAND}`; export r; \
+	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
 	test ! -f $(HOST_SUBDIR)/bfd/Makefile || exit 0; \
 	$(HOST_EXPORTS) \
 	$(POSTSTAGE1_HOST_EXPORTS) \
@@ -4090,8 +4132,12 @@ maybe-all-bfd:
 TARGET-bfd=all
 maybe-all-bfd: all-bfd
 all-bfd: configure-bfd
-	@test -f stage_last && exit 0; \
-	r=`${PWD_COMMAND}`; export r; \
+@endif bfd
+@if bfd-bootstrap
+	@if test -f stage_last; then $(unstage); else $(MAKE) stage1-start; fi
+@endif bfd-bootstrap
+@if bfd
+	@r=`${PWD_COMMAND}`; export r; \
 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
 	$(HOST_EXPORTS) \
 	(cd $(HOST_SUBDIR)/bfd && \
@@ -4109,12 +4155,12 @@ maybe-all-stage1-bfd: all-stage1-bfd
 all-stage1: all-stage1-bfd
 TARGET-stage1-bfd = $(TARGET-bfd)
 all-stage1-bfd: configure-stage1-bfd
-	@[ `cat stage_current` = stage1 ] || $(MAKE) stage1-start
+	@[ $(current_stage) = stage1 ] || $(MAKE) stage1-start
 	@r=`${PWD_COMMAND}`; export r; \
 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
 	$(HOST_EXPORTS) \
 	cd $(HOST_SUBDIR)/bfd && \
-	$(MAKE) $(FLAGS_TO_PASS)  CFLAGS="$(STAGE1_CFLAGS)"  \
+	$(MAKE) $(FLAGS_TO_PASS)  CFLAGS="$(STAGE1_CFLAGS)" LIBCFLAGS="$(STAGE1_CFLAGS)"  \
 		$(TARGET-stage1-bfd)
 
 maybe-clean-stage1-bfd: clean-stage1-bfd
@@ -4122,10 +4168,10 @@ clean-stage1: clean-stage1-bfd
 clean-stage1-bfd:
 	@[ -f $(HOST_SUBDIR)/bfd/Makefile ] || [ -f $(HOST_SUBDIR)/stage1-bfd/Makefile ] \
 	  || exit 0 ; \
-	[ `cat stage_current` = stage1 ] || $(MAKE) stage1-start
+	[ $(current_stage) = stage1 ] || $(MAKE) stage1-start; \
 	cd $(HOST_SUBDIR)/bfd && \
 	$(MAKE) $(FLAGS_TO_PASS)  \
-		CFLAGS="$(STAGE1_CFLAGS)"  clean
+		CFLAGS="$(STAGE1_CFLAGS)" LIBCFLAGS="$(STAGE1_CFLAGS)"  clean
 @endif bfd-bootstrap
 
 
@@ -4138,7 +4184,7 @@ maybe-all-stage2-bfd: all-stage2-bfd
 all-stage2: all-stage2-bfd
 TARGET-stage2-bfd = $(TARGET-bfd)
 all-stage2-bfd: configure-stage2-bfd
-	@[ `cat stage_current` = stage2 ] || $(MAKE) stage2-start
+	@[ $(current_stage) = stage2 ] || $(MAKE) stage2-start
 	@r=`${PWD_COMMAND}`; export r; \
 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
 	$(HOST_EXPORTS) \
@@ -4152,7 +4198,7 @@ clean-stage2: clean-stage2-bfd
 clean-stage2-bfd:
 	@[ -f $(HOST_SUBDIR)/bfd/Makefile ] || [ -f $(HOST_SUBDIR)/stage2-bfd/Makefile ] \
 	  || exit 0 ; \
-	[ `cat stage_current` = stage2 ] || $(MAKE) stage2-start
+	[ $(current_stage) = stage2 ] || $(MAKE) stage2-start; \
 	cd $(HOST_SUBDIR)/bfd && \
 	$(MAKE) $(FLAGS_TO_PASS)  \
 		$(POSTSTAGE1_FLAGS_TO_PASS)  \
@@ -29241,7 +29485,7 @@ maintainer-clean-target-libstdc++-v3: 
 maybe-configure-target-libmudflap:
 @if target-libmudflap
 maybe-configure-target-libmudflap: configure-target-libmudflap
-configure-target-libmudflap:
+configure-target-libmudflap: 
 	@: $(MAKE); $(unstage)
 	@r=`${PWD_COMMAND}`; export r; \
 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
@@ -29257,11 +29501,9 @@ configure-target-libmudflap:
 	  fi; \
 	else \
 	  mv $(TARGET_SUBDIR)/libmudflap/multilib.tmp $(TARGET_SUBDIR)/libmudflap/multilib.out; \
-	fi
-	@test ! -f $(TARGET_SUBDIR)/libmudflap/Makefile || exit 0; \
+	fi; \
+	test ! -f $(TARGET_SUBDIR)/libmudflap/Makefile || exit 0; \
 	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmudflap ; \
-	r=`${PWD_COMMAND}`; export r; \
-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
 	$(NORMAL_TARGET_EXPORTS) \
 	echo Configuring in $(TARGET_SUBDIR)/libmudflap; \
 	cd "$(TARGET_SUBDIR)/libmudflap" || exit 1; \
@@ -36044,10 +36250,12 @@ gcc-no-fixedincludes:
 
 unstage = :
 stage = :
+current_stage = ""
 
 @if gcc-bootstrap
 unstage = [ -f stage_current ] || $(MAKE) `cat stage_last`-start
 stage = if [ -f stage_current ]; then $(MAKE) `cat stage_current`-end || exit 1; else :; fi
+current_stage = "`cat stage_current 2> /dev/null`"
 @endif gcc-bootstrap
 
 .PHONY: unstage stage
@@ -37382,53 +37593,69 @@ stagefeedback-start::
 
 @if gcc-bootstrap
 do-distclean: distclean-stage1
+
+# Provide a GCC build when we're building target libraries.  This does
+# not work as a dependency, just as the minimum necessary to avoid errors.
+stage_last:
+	$(MAKE) $(RECURSE_FLAGS_TO_PASS) stage1-bubble
 @endif gcc-bootstrap
 
+.PHONY: restrap
+restrap:
+	@: $(MAKE); $(stage)
+	rm -rf stage1-$(TARGET_SUBDIR) stage2 stage3 stage4 stageprofile stagefeedback 
+	$(MAKE) $(RECURSE_FLAGS_TO_PASS) all
+
 # --------------------------------------
 # Dependencies between different modules
 # --------------------------------------
 
 # Generic dependencies for target modules on host stuff, especially gcc
+@if gcc-bootstrap
+configure-target-libstdc++-v3: stage_last
+configure-target-libmudflap: stage_last
+configure-target-libssp: stage_last
+configure-target-newlib: stage_last
+configure-target-libgfortran: stage_last
+configure-target-libobjc: stage_last
+configure-target-libtermcap: stage_last
+configure-target-winsup: stage_last
+configure-target-libgloss: stage_last
+configure-target-libiberty: stage_last
+configure-target-gperf: stage_last
+configure-target-examples: stage_last
+configure-target-libffi: stage_last
+configure-target-libjava: stage_last
+configure-target-zlib: stage_last
+configure-target-boehm-gc: stage_last
+configure-target-qthreads: stage_last
+configure-target-rda: stage_last
+configure-target-libada: stage_last
+configure-target-libgomp: stage_last
+@endif gcc-bootstrap
 
+@if gcc-no-bootstrap
 configure-target-libstdc++-v3: maybe-all-gcc
-
 configure-target-libmudflap: maybe-all-gcc
-
 configure-target-libssp: maybe-all-gcc
-
 configure-target-newlib: maybe-all-gcc
-
 configure-target-libgfortran: maybe-all-gcc
-
 configure-target-libobjc: maybe-all-gcc
-
 configure-target-libtermcap: maybe-all-gcc
-
 configure-target-winsup: maybe-all-gcc
-
 configure-target-libgloss: maybe-all-gcc
-
 configure-target-libiberty: maybe-all-gcc
-
 configure-target-gperf: maybe-all-gcc
-
 configure-target-examples: maybe-all-gcc
-
 configure-target-libffi: maybe-all-gcc
-
 configure-target-libjava: maybe-all-gcc
-
 configure-target-zlib: maybe-all-gcc
-
 configure-target-boehm-gc: maybe-all-gcc
-
 configure-target-qthreads: maybe-all-gcc
-
 configure-target-rda: maybe-all-gcc
-
 configure-target-libada: maybe-all-gcc
-
 configure-target-libgomp: maybe-all-gcc
+@endif gcc-no-bootstrap
 
 
 




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]