summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <bonzini@gnu.org>2004-08-06 06:44:46 +0000
committerPaolo Bonzini <bonzini@gnu.org>2004-08-06 06:44:46 +0000
commit9e6ce191775d5787be1eb94706f97604d355e48a (patch)
tree00167a9eacd8ea7034da08b46a5fa8730519119b
parent524b06e02c295d755d4272c6ba5c97f6bcfb95a8 (diff)
downloadbinutils-gdb-9e6ce191775d5787be1eb94706f97604d355e48a.tar.gz
2004-08-06 Paolo Bonzini <bonzini@gnu.org>
* Makefile.def (bfd, opcodes, gcc, zlib): Mark as bootstrap module. (bison, byacc, flex, texinfo): Do not mark as bootstrap module. (Dependencies): New section. * Makefile.tpl (Dependencies): Generate from Makefile.def. (configure-target-[+module+]): Depend on maybe-all-gcc (all-prebootstrap): New name of all-bootstrap. Changed throughout. (toplevel profiledbootstrap): Fix dependencies. * Makefile.in: Regenerate.
-rw-r--r--ChangeLog11
-rw-r--r--Makefile.def235
-rw-r--r--Makefile.in596
-rw-r--r--Makefile.tpl241
4 files changed, 853 insertions, 230 deletions
diff --git a/ChangeLog b/ChangeLog
index c9966676945..6098dc2d26d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2004-08-06 Paolo Bonzini <bonzini@gnu.org>
+
+ * Makefile.def (bfd, opcodes, gcc, zlib): Mark as bootstrap module.
+ (bison, byacc, flex, texinfo): Do not mark as bootstrap module.
+ (Dependencies): New section.
+ * Makefile.tpl (Dependencies): Generate from Makefile.def.
+ (configure-target-[+module+]): Depend on maybe-all-gcc
+ (all-prebootstrap): New name of all-bootstrap. Changed throughout.
+ (toplevel profiledbootstrap): Fix dependencies.
+ * Makefile.in: Regenerate.
+
2004-08-03 Mark Mitchell <mark@codesourcery.com>
* configure.in (arm*-*-symbianelf*): Add ${libgcj} and
diff --git a/Makefile.def b/Makefile.def
index b7aa7984cee..f19b2698521 100644
--- a/Makefile.def
+++ b/Makefile.def
@@ -36,11 +36,11 @@ host_modules= { module= ash; };
host_modules= { module= autoconf; };
host_modules= { module= automake; };
host_modules= { module= bash; };
-host_modules= { module= bfd; };
-host_modules= { module= opcodes; };
+host_modules= { module= bfd; bootstrap=true; };
+host_modules= { module= opcodes; bootstrap=true; };
host_modules= { module= binutils; bootstrap=true; };
-host_modules= { module= bison; no_check_cross= true; bootstrap=true; };
-host_modules= { module= byacc; no_check_cross= true; bootstrap=true; };
+host_modules= { module= bison; no_check_cross= true; };
+host_modules= { module= byacc; no_check_cross= true; };
host_modules= { module= bzip2; };
host_modules= { module= dejagnu; };
host_modules= { module= diff; };
@@ -50,9 +50,10 @@ host_modules= { module= fastjar; no_check_cross= true; };
host_modules= { module= fileutils; };
host_modules= { module= findutils; };
host_modules= { module= find; };
-host_modules= { module= flex; no_check_cross= true; bootstrap=true; };
+host_modules= { module= flex; no_check_cross= true; };
host_modules= { module= gas; bootstrap=true; };
-host_modules= { module= gcc; extra_make_flags="$(EXTRA_GCC_FLAGS)"; };
+host_modules= { module= gcc; bootstrap=true;
+ extra_make_flags="$(EXTRA_GCC_FLAGS)"; };
host_modules= { module= gawk; };
host_modules= { module= gettext; };
host_modules= { module= gnuserv; };
@@ -86,7 +87,7 @@ host_modules= { module= shellutils; };
host_modules= { module= sid; };
host_modules= { module= sim; };
host_modules= { module= tar; };
-host_modules= { module= texinfo; no_install= true; bootstrap=true; };
+host_modules= { module= texinfo; no_install= true; };
host_modules= { module= textutils; };
host_modules= { module= time; };
host_modules= { module= uudecode; };
@@ -221,6 +222,226 @@ flags_to_pass = { flag= NM_FOR_TARGET ; };
flags_to_pass = { flag= RANLIB_FOR_TARGET ; };
flags_to_pass = { flag= WINDRES_FOR_TARGET ; };
+// Inter-module dependencies
+
+// Build modules
+dependencies = { module=all-build-bison; on=all-build-texinfo; };
+dependencies = { module=all-build-byacc; on=all-build-texinfo; };
+dependencies = { module=all-build-flex; on=all-build-texinfo; };
+dependencies = { module=all-build-flex; on=all-build-bison; };
+dependencies = { module=all-build-flex; on=all-build-byacc; };
+dependencies = { module=all-build-flex; on=all-build-m4; };
+dependencies = { module=all-build-libiberty; on=all-build-texinfo; };
+dependencies = { module=all-build-m4; on=all-build-texinfo; };
+
+// Host modules specific to gcc.
+dependencies = { module=configure-gcc; on=configure-intl; };
+dependencies = { module=configure-gcc; on=configure-binutils; };
+dependencies = { module=configure-gcc; on=configure-gas; };
+dependencies = { module=configure-gcc; on=configure-ld; };
+dependencies = { module=configure-gcc; on=configure-bison; };
+dependencies = { module=configure-gcc; on=configure-flex; };
+dependencies = { module=all-gcc; on=all-libiberty; hard=true; };
+dependencies = { module=all-gcc; on=all-intl; };
+dependencies = { module=all-gcc; on=all-texinfo; };
+dependencies = { module=all-gcc; on=all-bison; };
+dependencies = { module=all-gcc; on=all-byacc; };
+dependencies = { module=all-gcc; on=all-flex; };
+dependencies = { module=all-gcc; on=all-binutils; };
+dependencies = { module=all-gcc; on=all-gas; };
+dependencies = { module=all-gcc; on=all-ld; };
+dependencies = { module=all-gcc; on=all-zlib; };
+dependencies = { module=all-gcc; on=all-libbanshee; };
+dependencies = { module=all-gcc; on=all-libcpp; hard=true; };
+dependencies = { module=all-gcc; on=all-build-libiberty; };
+
+dependencies = { module=configure-libcpp; on=configure-libiberty; hard=true; };
+dependencies = { module=configure-libcpp; on=configure-intl; };
+dependencies = { module=all-libcpp; on=all-libiberty; hard=true; };
+dependencies = { module=all-libcpp; on=all-intl; };
+
+// Host modules specific to gdb.
+dependencies = { module=configure-gdb; on=configure-itcl; };
+dependencies = { module=configure-gdb; on=configure-tcl; };
+dependencies = { module=configure-gdb; on=configure-tk; };
+dependencies = { module=configure-gdb; on=configure-sim; };
+dependencies = { module=all-gdb; on=all-libiberty; };
+dependencies = { module=all-gdb; on=all-opcodes; };
+dependencies = { module=all-gdb; on=all-bfd; };
+dependencies = { module=all-gdb; on=all-mmalloc; };
+dependencies = { module=all-gdb; on=all-readline; };
+dependencies = { module=all-gdb; on=all-bison; };
+dependencies = { module=all-gdb; on=all-byacc; };
+dependencies = { module=all-gdb; on=all-sim; };
+dependencies = { module=install-gdb; on=install-tcl; };
+dependencies = { module=install-gdb; on=install-tk; };
+dependencies = { module=install-gdb; on=install-itcl; };
+dependencies = { module=install-gdb; on=install-tix; };
+dependencies = { module=install-gdb; on=install-libgui; };
+
+dependencies = { module=configure-libgui; on=configure-tcl; };
+dependencies = { module=configure-libgui; on=configure-tk; };
+dependencies = { module=all-libgui; on=all-tcl; };
+dependencies = { module=all-libgui; on=all-tk; };
+dependencies = { module=all-libgui; on=all-itcl; };
+
+// Host modules specific to binutils.
+dependencies = { module=configure-bfd; on=configure-libiberty; hard=true; };
+dependencies = { module=all-bfd; on=all-libiberty; };
+dependencies = { module=all-bfd; on=all-intl; };
+
+dependencies = { module=all-binutils; on=all-libiberty; };
+dependencies = { module=all-binutils; on=all-opcodes; };
+dependencies = { module=all-binutils; on=all-bfd; };
+dependencies = { module=all-binutils; on=all-flex; };
+dependencies = { module=all-binutils; on=all-bison; };
+dependencies = { module=all-binutils; on=all-byacc; };
+dependencies = { module=all-binutils; on=all-intl; };
+
+// We put install-opcodes before install-binutils because the installed
+// binutils might be on PATH, and they might need the shared opcodes
+// library.
+dependencies = { module=install-binutils; on=install-opcodes; };
+
+// libopcodes depends on libbfd
+dependencies = { module=install-opcodes; on=install-bfd; };
+
+dependencies = { module=all-gas; on=all-libiberty; };
+dependencies = { module=all-gas; on=all-opcodes; };
+dependencies = { module=all-gas; on=all-bfd; };
+dependencies = { module=all-gas; on=all-intl; };
+dependencies = { module=all-gprof; on=all-libiberty; };
+dependencies = { module=all-gprof; on=all-bfd; };
+dependencies = { module=all-gprof; on=all-opcodes; };
+dependencies = { module=all-gprof; on=all-intl; };
+dependencies = { module=all-ld; on=all-libiberty; };
+dependencies = { module=all-ld; on=all-bfd; };
+dependencies = { module=all-ld; on=all-opcodes; };
+dependencies = { module=all-ld; on=all-bison; };
+dependencies = { module=all-ld; on=all-byacc; };
+dependencies = { module=all-ld; on=all-flex; };
+dependencies = { module=all-ld; on=all-intl; };
+
+dependencies = { module=all-opcodes; on=all-bfd; };
+dependencies = { module=all-opcodes; on=all-libiberty; };
+
+// Other host modules in the 'src' repository.
+dependencies = { module=all-dejagnu; on=all-tcl; };
+dependencies = { module=all-dejagnu; on=all-expect; };
+dependencies = { module=all-dejagnu; on=all-tk; };
+dependencies = { module=configure-expect; on=configure-tcl; };
+dependencies = { module=configure-expect; on=configure-tk; };
+dependencies = { module=all-expect; on=all-tcl; };
+dependencies = { module=all-expect; on=all-tk; };
+
+// We put install-tcl before install-itcl because itcl wants to run a
+// program on installation which uses the Tcl libraries.
+dependencies = { module=configure-itcl; on=configure-tcl; };
+dependencies = { module=configure-itcl; on=configure-tk; };
+dependencies = { module=all-itcl; on=all-tcl; };
+dependencies = { module=all-itcl; on=all-tk; };
+dependencies = { module=install-itcl; on=install-tcl; };
+
+dependencies = { module=configure-tk; on=configure-tcl; };
+dependencies = { module=all-tk; on=all-tcl; };
+dependencies = { module=configure-tix; on=configure-tcl; };
+dependencies = { module=configure-tix; on=configure-tk; };
+dependencies = { module=all-tix; on=all-tcl; };
+dependencies = { module=all-tix; on=all-tk; };
+
+dependencies = { module=all-sid; on=all-libiberty; };
+dependencies = { module=all-sid; on=all-bfd; };
+dependencies = { module=all-sid; on=all-opcodes; };
+dependencies = { module=all-sid; on=all-tcl; };
+dependencies = { module=all-sid; on=all-tk; };
+dependencies = { module=install-sid; on=install-tcl; };
+dependencies = { module=install-sid; on=install-tk; };
+
+dependencies = { module=all-sim; on=all-libiberty; };
+dependencies = { module=all-sim; on=all-bfd; };
+dependencies = { module=all-sim; on=all-opcodes; };
+dependencies = { module=all-sim; on=all-readline; };
+dependencies = { module=all-sim; on=configure-gdb; };
+
+// Other host modules.
+dependencies = { module=all-fastjar; on=all-zlib; };
+dependencies = { module=all-fastjar; on=all-texinfo; };
+dependencies = { module=all-fastjar; on=all-libiberty; };
+
+// Warning, these are not well tested.
+dependencies = { module=all-autoconf; on=all-m4; };
+dependencies = { module=all-autoconf; on=all-texinfo; };
+dependencies = { module=all-automake; on=all-m4; };
+dependencies = { module=all-automake; on=all-texinfo; };
+dependencies = { module=all-automake; on=all-autoconf; };
+dependencies = { module=all-bison; on=all-intl; };
+dependencies = { module=all-bison; on=all-texinfo; };
+dependencies = { module=all-diff; on=all-intl; };
+dependencies = { module=all-diff; on=all-texinfo; };
+dependencies = { module=all-fileutils; on=all-intl; };
+dependencies = { module=all-fileutils; on=all-texinfo; };
+dependencies = { module=all-flex; on=all-bison; };
+dependencies = { module=all-flex; on=all-byacc; };
+dependencies = { module=all-flex; on=all-intl; };
+dependencies = { module=all-flex; on=all-m4; };
+dependencies = { module=all-flex; on=all-texinfo; };
+dependencies = { module=all-gzip; on=all-intl; };
+dependencies = { module=all-gzip; on=all-zlib; };
+dependencies = { module=all-gzip; on=all-texinfo; };
+dependencies = { module=all-hello; on=all-intl; };
+dependencies = { module=all-hello; on=all-texinfo; };
+dependencies = { module=all-m4; on=all-intl; };
+dependencies = { module=all-m4; on=all-texinfo; };
+dependencies = { module=all-make; on=all-intl; };
+dependencies = { module=all-make; on=all-texinfo; };
+dependencies = { module=all-patch; on=all-texinfo; };
+dependencies = { module=all-make; on=all-texinfo; };
+dependencies = { module=all-prms; on=all-libiberty; };
+dependencies = { module=all-recode; on=all-texinfo; };
+dependencies = { module=all-sed; on=all-texinfo; };
+dependencies = { module=all-send-pr; on=all-prms; };
+dependencies = { module=all-tar; on=all-texinfo; };
+dependencies = { module=all-uudecode; on=all-texinfo; };
+
+// Target modules. These can also have dependencies on the language
+// environment (e.g. on libstdc++).
+lang_env_dependencies = { module=boehm-gc; };
+lang_env_dependencies = { module=gperf; cxx=true; };
+lang_env_dependencies = { module=libada; };
+lang_env_dependencies = { module=libgfortran; };
+lang_env_dependencies = { module=libffi; };
+lang_env_dependencies = { module=libjava; cxx=true; };
+lang_env_dependencies = { module=libobjc; };
+lang_env_dependencies = { module=libstdc++-v3; };
+lang_env_dependencies = { module=zlib; };
+
+dependencies = { module=configure-target-boehm-gc; on=configure-target-qthreads; };
+dependencies = { module=configure-target-fastjar; on=configure-target-zlib; };
+dependencies = { module=all-target-fastjar; on=all-target-zlib; };
+dependencies = { module=all-target-fastjar; on=all-target-libiberty; };
+dependencies = { module=configure-target-libjava; on=configure-target-zlib; };
+dependencies = { module=configure-target-libjava; on=configure-target-boehm-gc; };
+dependencies = { module=configure-target-libjava; on=configure-target-qthreads; };
+dependencies = { module=configure-target-libjava; on=configure-target-libffi; };
+dependencies = { module=all-target-libjava; on=all-fastjar; };
+dependencies = { module=all-target-libjava; on=all-target-zlib; };
+dependencies = { module=all-target-libjava; on=all-target-boehm-gc; };
+dependencies = { module=all-target-libjava; on=all-target-qthreads; };
+dependencies = { module=all-target-libjava; on=all-target-libffi; };
+dependencies = { module=all-target-libobjc; on=all-target-libiberty; };
+dependencies = { module=all-target-libstdc++-v3; on=all-target-libiberty; };
+
+// Target modules in the 'src' repository.
+lang_env_dependencies = { module=examples; };
+lang_env_dependencies = { module=libtermcap; };
+lang_env_dependencies = { module=rda; };
+lang_env_dependencies = { module=winsup; };
+lang_env_dependencies = { module=qthreads; };
+
+dependencies = { module=all-target-libgloss; on=configure-target-newlib; };
+dependencies = { module=all-target-winsup; on=all-target-libiberty; };
+dependencies = { module=all-target-winsup; on=all-target-libtermcap; };
+
// Toplevel bootstrap
bootstrap_stage = {
id=1 ;
diff --git a/Makefile.in b/Makefile.in
index 1b19b21ea4b..ddeb28a7e3b 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1889,7 +1889,6 @@ install-host-nogcc: \
maybe-install-find \
maybe-install-flex \
maybe-install-gas \
- maybe-install-gcc \
maybe-install-gawk \
maybe-install-gettext \
maybe-install-gnuserv \
@@ -28305,7 +28304,7 @@ maintainer-clean-target-libada:
GCC_STRAP_TARGETS = bootstrap bootstrap-lean bootstrap2 bootstrap2-lean bootstrap3 bootstrap3-lean bootstrap4 bootstrap4-lean bubblestrap quickstrap cleanstrap restrap
.PHONY: $(GCC_STRAP_TARGETS)
-$(GCC_STRAP_TARGETS): all-bootstrap configure-gcc
+$(GCC_STRAP_TARGETS): all-prebootstrap configure-gcc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
@@ -28338,7 +28337,7 @@ $(GCC_STRAP_TARGETS): all-bootstrap configure-gcc
echo "Building runtime libraries"; \
$(MAKE) $(RECURSE_FLAGS_TO_PASS) all
-profiledbootstrap: all-bootstrap configure-gcc
+profiledbootstrap: all-prebootstrap configure-gcc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
@@ -28472,7 +28471,7 @@ objext = .o
# Real targets act phony if they depend on phony targets; this hack
# prevents gratuitous rebuilding of stage 1.
prebootstrap:
- $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-bootstrap
+ $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-prebootstrap
$(STAMP) prebootstrap
# Flags to pass to stage2 and later makes.
@@ -29176,7 +29175,7 @@ stagefeedback-start::
{ find . -type d | sort | sed 's,.*,$(SHELL) '"$$s"'/mkinstalldirs "../gcc/&",' | $(SHELL); } && \
{ find . -name '*.*da' | sed 's,.*,$(LN) -f "&" "../gcc/&",' | $(SHELL); }
-profiledbootstrap: all-bootstrap configure-gcc
+profiledbootstrap: all-prebootstrap configure-gcc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
@@ -29201,127 +29200,518 @@ profiledbootstrap: all-bootstrap configure-gcc
# Dependencies between different modules
# --------------------------------------
+# Generic dependencies for target modules on host stuff, especially gcc
+
+configure-target-libstdc++-v3: maybe-all-gcc
+
+configure-target-libmudflap: 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-boehm-gc: maybe-all-target-newlib maybe-all-target-libgloss
+
+configure-target-gperf: maybe-all-target-newlib maybe-all-target-libgloss
+configure-target-gperf: maybe-all-target-libstdc++-v3
+
+configure-target-libada: maybe-all-target-newlib maybe-all-target-libgloss
+
+configure-target-libgfortran: maybe-all-target-newlib maybe-all-target-libgloss
+
+configure-target-libffi: maybe-all-target-newlib maybe-all-target-libgloss
+
+configure-target-libjava: maybe-all-target-newlib maybe-all-target-libgloss
+configure-target-libjava: maybe-all-target-libstdc++-v3
+
+configure-target-libobjc: maybe-all-target-newlib maybe-all-target-libgloss
+
+configure-target-libstdc++-v3: maybe-all-target-newlib maybe-all-target-libgloss
+
+configure-target-zlib: maybe-all-target-newlib maybe-all-target-libgloss
+
+configure-target-examples: maybe-all-target-newlib maybe-all-target-libgloss
+
+configure-target-libtermcap: maybe-all-target-newlib maybe-all-target-libgloss
+
+configure-target-rda: maybe-all-target-newlib maybe-all-target-libgloss
+
+configure-target-winsup: maybe-all-target-newlib maybe-all-target-libgloss
+
+configure-target-qthreads: maybe-all-target-newlib maybe-all-target-libgloss
+
+
# There are two types of dependencies here: 'hard' dependencies, where one
# module simply won't build without the other; and 'soft' dependencies, where
# if the depended-on module is missing, the depending module will do without
# or find a substitute somewhere (perhaps installed). Soft dependencies
-# are specified by depending on a 'maybe-' target. If you're not sure,
+# are made here to depend on a 'maybe-' target. If you're not sure,
# it's safer to use a soft dependency.
-# Build modules
+
+
+
+
+# With all the machinery above in place, it is pretty easy to generate
+# dependencies. Host dependencies are a bit more complex because we have
+# to check for bootstrap/prebootstrap dependencies. To resolve
+# prebootstrap dependencies, prebootstrap modules are gathered in
+# a hash table.
all-build-bison: maybe-all-build-texinfo
+all-build-byacc: maybe-all-build-texinfo
all-build-flex: maybe-all-build-texinfo
+all-build-flex: maybe-all-build-bison
+all-build-flex: maybe-all-build-byacc
+all-build-flex: maybe-all-build-m4
all-build-libiberty: maybe-all-build-texinfo
-all-build-m4: maybe-all-build-libiberty maybe-all-build-texinfo
-
-# Host modules specific to gcc.
-# GCC needs to identify certain tools.
-# GCC also needs the information exported by the intl configure script.
-configure-gcc: maybe-configure-intl maybe-configure-binutils maybe-configure-gas maybe-configure-ld maybe-configure-bison maybe-configure-flex
-all-gcc: maybe-all-libiberty maybe-all-intl maybe-all-texinfo maybe-all-bison maybe-all-byacc maybe-all-flex maybe-all-binutils maybe-all-gas maybe-all-ld maybe-all-zlib maybe-all-libbanshee maybe-all-libcpp
-configure-libcpp: maybe-configure-libiberty maybe-configure-intl
-all-libcpp: maybe-all-libiberty maybe-all-intl
-# This is a slightly kludgy method of getting dependencies on
-# all-build-libiberty correct; it would be better to build it every time.
+all-build-m4: maybe-all-build-texinfo
+configure-gcc: maybe-configure-intl
+
+configure-stage1-gcc: maybe-configure-stage1-intl
+configure-stage2-gcc: maybe-configure-stage2-intl
+configure-stage3-gcc: maybe-configure-stage3-intl
+configure-stage4-gcc: maybe-configure-stage4-intl
+configure-stageprofile-gcc: maybe-configure-stageprofile-intl
+configure-stagefeedback-gcc: maybe-configure-stagefeedback-intl
+configure-gcc: maybe-configure-binutils
+
+configure-stage1-gcc: maybe-configure-stage1-binutils
+configure-stage2-gcc: maybe-configure-stage2-binutils
+configure-stage3-gcc: maybe-configure-stage3-binutils
+configure-stage4-gcc: maybe-configure-stage4-binutils
+configure-stageprofile-gcc: maybe-configure-stageprofile-binutils
+configure-stagefeedback-gcc: maybe-configure-stagefeedback-binutils
+configure-gcc: maybe-configure-gas
+
+configure-stage1-gcc: maybe-configure-stage1-gas
+configure-stage2-gcc: maybe-configure-stage2-gas
+configure-stage3-gcc: maybe-configure-stage3-gas
+configure-stage4-gcc: maybe-configure-stage4-gas
+configure-stageprofile-gcc: maybe-configure-stageprofile-gas
+configure-stagefeedback-gcc: maybe-configure-stagefeedback-gas
+configure-gcc: maybe-configure-ld
+
+configure-stage1-gcc: maybe-configure-stage1-ld
+configure-stage2-gcc: maybe-configure-stage2-ld
+configure-stage3-gcc: maybe-configure-stage3-ld
+configure-stage4-gcc: maybe-configure-stage4-ld
+configure-stageprofile-gcc: maybe-configure-stageprofile-ld
+configure-stagefeedback-gcc: maybe-configure-stagefeedback-ld
+configure-gcc: maybe-configure-bison
+configure-gcc: maybe-configure-flex
+all-gcc: all-libiberty
+
+all-stage1-gcc: all-stage1-libiberty
+all-stage2-gcc: all-stage2-libiberty
+all-stage3-gcc: all-stage3-libiberty
+all-stage4-gcc: all-stage4-libiberty
+all-stageprofile-gcc: all-stageprofile-libiberty
+all-stagefeedback-gcc: all-stagefeedback-libiberty
+all-gcc: maybe-all-intl
+
+all-stage1-gcc: maybe-all-stage1-intl
+all-stage2-gcc: maybe-all-stage2-intl
+all-stage3-gcc: maybe-all-stage3-intl
+all-stage4-gcc: maybe-all-stage4-intl
+all-stageprofile-gcc: maybe-all-stageprofile-intl
+all-stagefeedback-gcc: maybe-all-stagefeedback-intl
+all-gcc: maybe-all-texinfo
+all-gcc: maybe-all-bison
+all-gcc: maybe-all-byacc
+all-gcc: maybe-all-flex
+all-gcc: maybe-all-binutils
+
+all-stage1-gcc: maybe-all-stage1-binutils
+all-stage2-gcc: maybe-all-stage2-binutils
+all-stage3-gcc: maybe-all-stage3-binutils
+all-stage4-gcc: maybe-all-stage4-binutils
+all-stageprofile-gcc: maybe-all-stageprofile-binutils
+all-stagefeedback-gcc: maybe-all-stagefeedback-binutils
+all-gcc: maybe-all-gas
+
+all-stage1-gcc: maybe-all-stage1-gas
+all-stage2-gcc: maybe-all-stage2-gas
+all-stage3-gcc: maybe-all-stage3-gas
+all-stage4-gcc: maybe-all-stage4-gas
+all-stageprofile-gcc: maybe-all-stageprofile-gas
+all-stagefeedback-gcc: maybe-all-stagefeedback-gas
+all-gcc: maybe-all-ld
+
+all-stage1-gcc: maybe-all-stage1-ld
+all-stage2-gcc: maybe-all-stage2-ld
+all-stage3-gcc: maybe-all-stage3-ld
+all-stage4-gcc: maybe-all-stage4-ld
+all-stageprofile-gcc: maybe-all-stageprofile-ld
+all-stagefeedback-gcc: maybe-all-stagefeedback-ld
+all-gcc: maybe-all-zlib
+
+all-stage1-gcc: maybe-all-stage1-zlib
+all-stage2-gcc: maybe-all-stage2-zlib
+all-stage3-gcc: maybe-all-stage3-zlib
+all-stage4-gcc: maybe-all-stage4-zlib
+all-stageprofile-gcc: maybe-all-stageprofile-zlib
+all-stagefeedback-gcc: maybe-all-stagefeedback-zlib
+all-gcc: maybe-all-libbanshee
+
+all-stage1-gcc: maybe-all-stage1-libbanshee
+all-stage2-gcc: maybe-all-stage2-libbanshee
+all-stage3-gcc: maybe-all-stage3-libbanshee
+all-stage4-gcc: maybe-all-stage4-libbanshee
+all-stageprofile-gcc: maybe-all-stageprofile-libbanshee
+all-stagefeedback-gcc: maybe-all-stagefeedback-libbanshee
+all-gcc: all-libcpp
+
+all-stage1-gcc: all-stage1-libcpp
+all-stage2-gcc: all-stage2-libcpp
+all-stage3-gcc: all-stage3-libcpp
+all-stage4-gcc: all-stage4-libcpp
+all-stageprofile-gcc: all-stageprofile-libcpp
+all-stagefeedback-gcc: all-stagefeedback-libcpp
all-gcc: maybe-all-build-libiberty
-all-bootstrap: maybe-all-binutils maybe-all-bison maybe-all-byacc maybe-all-flex maybe-all-gas maybe-all-intl maybe-all-ld maybe-all-libcpp maybe-all-libbanshee maybe-all-libiberty maybe-all-texinfo maybe-all-zlib
-
-# Host modules specific to gdb.
-# GDB needs to know that the simulator is being built.
-configure-gdb: maybe-configure-itcl maybe-configure-tcl maybe-configure-tk maybe-configure-sim
-GDB_TK = @GDB_TK@
-all-gdb: maybe-all-libiberty maybe-all-opcodes maybe-all-bfd maybe-all-mmalloc maybe-all-readline maybe-all-bison maybe-all-byacc maybe-all-sim $(gdbnlmrequirements) $(GDB_TK)
-install-gdb: maybe-install-tcl maybe-install-tk maybe-install-itcl maybe-install-tix maybe-install-libgui
-configure-libgui: maybe-configure-tcl maybe-configure-tk
-all-libgui: maybe-all-tcl maybe-all-tk maybe-all-itcl
-
-# Host modules specific to binutils.
+configure-libcpp: configure-libiberty
+
+configure-stage1-libcpp: configure-stage1-libiberty
+configure-stage2-libcpp: configure-stage2-libiberty
+configure-stage3-libcpp: configure-stage3-libiberty
+configure-stage4-libcpp: configure-stage4-libiberty
+configure-stageprofile-libcpp: configure-stageprofile-libiberty
+configure-stagefeedback-libcpp: configure-stagefeedback-libiberty
+configure-libcpp: maybe-configure-intl
+
+configure-stage1-libcpp: maybe-configure-stage1-intl
+configure-stage2-libcpp: maybe-configure-stage2-intl
+configure-stage3-libcpp: maybe-configure-stage3-intl
+configure-stage4-libcpp: maybe-configure-stage4-intl
+configure-stageprofile-libcpp: maybe-configure-stageprofile-intl
+configure-stagefeedback-libcpp: maybe-configure-stagefeedback-intl
+all-libcpp: all-libiberty
+
+all-stage1-libcpp: all-stage1-libiberty
+all-stage2-libcpp: all-stage2-libiberty
+all-stage3-libcpp: all-stage3-libiberty
+all-stage4-libcpp: all-stage4-libiberty
+all-stageprofile-libcpp: all-stageprofile-libiberty
+all-stagefeedback-libcpp: all-stagefeedback-libiberty
+all-libcpp: maybe-all-intl
+
+all-stage1-libcpp: maybe-all-stage1-intl
+all-stage2-libcpp: maybe-all-stage2-intl
+all-stage3-libcpp: maybe-all-stage3-intl
+all-stage4-libcpp: maybe-all-stage4-intl
+all-stageprofile-libcpp: maybe-all-stageprofile-intl
+all-stagefeedback-libcpp: maybe-all-stagefeedback-intl
+configure-gdb: maybe-configure-itcl
+configure-gdb: maybe-configure-tcl
+configure-gdb: maybe-configure-tk
+configure-gdb: maybe-configure-sim
+all-gdb: maybe-all-libiberty
+all-gdb: maybe-all-opcodes
+all-gdb: maybe-all-bfd
+all-gdb: maybe-all-mmalloc
+all-gdb: maybe-all-readline
+all-gdb: maybe-all-bison
+all-gdb: maybe-all-byacc
+all-gdb: maybe-all-sim
+install-gdb: maybe-install-tcl
+install-gdb: maybe-install-tk
+install-gdb: maybe-install-itcl
+install-gdb: maybe-install-tix
+install-gdb: maybe-install-libgui
+configure-libgui: maybe-configure-tcl
+configure-libgui: maybe-configure-tk
+all-libgui: maybe-all-tcl
+all-libgui: maybe-all-tk
+all-libgui: maybe-all-itcl
configure-bfd: configure-libiberty
-all-bfd: maybe-all-libiberty maybe-all-intl
-all-binutils: maybe-all-libiberty maybe-all-opcodes maybe-all-bfd maybe-all-flex maybe-all-bison maybe-all-byacc maybe-all-intl
-# We put install-opcodes before install-binutils because the installed
-# binutils might be on PATH, and they might need the shared opcodes
-# library.
+
+configure-stage1-bfd: configure-stage1-libiberty
+configure-stage2-bfd: configure-stage2-libiberty
+configure-stage3-bfd: configure-stage3-libiberty
+configure-stage4-bfd: configure-stage4-libiberty
+configure-stageprofile-bfd: configure-stageprofile-libiberty
+configure-stagefeedback-bfd: configure-stagefeedback-libiberty
+all-bfd: maybe-all-libiberty
+
+all-stage1-bfd: maybe-all-stage1-libiberty
+all-stage2-bfd: maybe-all-stage2-libiberty
+all-stage3-bfd: maybe-all-stage3-libiberty
+all-stage4-bfd: maybe-all-stage4-libiberty
+all-stageprofile-bfd: maybe-all-stageprofile-libiberty
+all-stagefeedback-bfd: maybe-all-stagefeedback-libiberty
+all-bfd: maybe-all-intl
+
+all-stage1-bfd: maybe-all-stage1-intl
+all-stage2-bfd: maybe-all-stage2-intl
+all-stage3-bfd: maybe-all-stage3-intl
+all-stage4-bfd: maybe-all-stage4-intl
+all-stageprofile-bfd: maybe-all-stageprofile-intl
+all-stagefeedback-bfd: maybe-all-stagefeedback-intl
+all-binutils: maybe-all-libiberty
+
+all-stage1-binutils: maybe-all-stage1-libiberty
+all-stage2-binutils: maybe-all-stage2-libiberty
+all-stage3-binutils: maybe-all-stage3-libiberty
+all-stage4-binutils: maybe-all-stage4-libiberty
+all-stageprofile-binutils: maybe-all-stageprofile-libiberty
+all-stagefeedback-binutils: maybe-all-stagefeedback-libiberty
+all-binutils: maybe-all-opcodes
+
+all-stage1-binutils: maybe-all-stage1-opcodes
+all-stage2-binutils: maybe-all-stage2-opcodes
+all-stage3-binutils: maybe-all-stage3-opcodes
+all-stage4-binutils: maybe-all-stage4-opcodes
+all-stageprofile-binutils: maybe-all-stageprofile-opcodes
+all-stagefeedback-binutils: maybe-all-stagefeedback-opcodes
+all-binutils: maybe-all-bfd
+
+all-stage1-binutils: maybe-all-stage1-bfd
+all-stage2-binutils: maybe-all-stage2-bfd
+all-stage3-binutils: maybe-all-stage3-bfd
+all-stage4-binutils: maybe-all-stage4-bfd
+all-stageprofile-binutils: maybe-all-stageprofile-bfd
+all-stagefeedback-binutils: maybe-all-stagefeedback-bfd
+all-binutils: maybe-all-flex
+all-binutils: maybe-all-bison
+all-binutils: maybe-all-byacc
+all-binutils: maybe-all-intl
+
+all-stage1-binutils: maybe-all-stage1-intl
+all-stage2-binutils: maybe-all-stage2-intl
+all-stage3-binutils: maybe-all-stage3-intl
+all-stage4-binutils: maybe-all-stage4-intl
+all-stageprofile-binutils: maybe-all-stageprofile-intl
+all-stagefeedback-binutils: maybe-all-stagefeedback-intl
install-binutils: maybe-install-opcodes
-# libopcodes depends on libbfd
install-opcodes: maybe-install-bfd
-all-gas: maybe-all-libiberty maybe-all-opcodes maybe-all-bfd maybe-all-intl
-all-gprof: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-intl
-all-ld: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-bison maybe-all-byacc maybe-all-flex maybe-all-intl
-all-opcodes: maybe-all-bfd maybe-all-libiberty
-
-# Other host modules in the 'src' repository.
-all-dejagnu: maybe-all-tcl maybe-all-expect maybe-all-tk
-configure-expect: maybe-configure-tcl maybe-configure-tk
-all-expect: maybe-all-tcl maybe-all-tk
-configure-itcl: maybe-configure-tcl maybe-configure-tk
-all-itcl: maybe-all-tcl maybe-all-tk
-# We put install-tcl before install-itcl because itcl wants to run a
-# program on installation which uses the Tcl libraries.
+all-gas: maybe-all-libiberty
+
+all-stage1-gas: maybe-all-stage1-libiberty
+all-stage2-gas: maybe-all-stage2-libiberty
+all-stage3-gas: maybe-all-stage3-libiberty
+all-stage4-gas: maybe-all-stage4-libiberty
+all-stageprofile-gas: maybe-all-stageprofile-libiberty
+all-stagefeedback-gas: maybe-all-stagefeedback-libiberty
+all-gas: maybe-all-opcodes
+
+all-stage1-gas: maybe-all-stage1-opcodes
+all-stage2-gas: maybe-all-stage2-opcodes
+all-stage3-gas: maybe-all-stage3-opcodes
+all-stage4-gas: maybe-all-stage4-opcodes
+all-stageprofile-gas: maybe-all-stageprofile-opcodes
+all-stagefeedback-gas: maybe-all-stagefeedback-opcodes
+all-gas: maybe-all-bfd
+
+all-stage1-gas: maybe-all-stage1-bfd
+all-stage2-gas: maybe-all-stage2-bfd
+all-stage3-gas: maybe-all-stage3-bfd
+all-stage4-gas: maybe-all-stage4-bfd
+all-stageprofile-gas: maybe-all-stageprofile-bfd
+all-stagefeedback-gas: maybe-all-stagefeedback-bfd
+all-gas: maybe-all-intl
+
+all-stage1-gas: maybe-all-stage1-intl
+all-stage2-gas: maybe-all-stage2-intl
+all-stage3-gas: maybe-all-stage3-intl
+all-stage4-gas: maybe-all-stage4-intl
+all-stageprofile-gas: maybe-all-stageprofile-intl
+all-stagefeedback-gas: maybe-all-stagefeedback-intl
+all-gprof: maybe-all-libiberty
+all-gprof: maybe-all-bfd
+all-gprof: maybe-all-opcodes
+all-gprof: maybe-all-intl
+all-ld: maybe-all-libiberty
+
+all-stage1-ld: maybe-all-stage1-libiberty
+all-stage2-ld: maybe-all-stage2-libiberty
+all-stage3-ld: maybe-all-stage3-libiberty
+all-stage4-ld: maybe-all-stage4-libiberty
+all-stageprofile-ld: maybe-all-stageprofile-libiberty
+all-stagefeedback-ld: maybe-all-stagefeedback-libiberty
+all-ld: maybe-all-bfd
+
+all-stage1-ld: maybe-all-stage1-bfd
+all-stage2-ld: maybe-all-stage2-bfd
+all-stage3-ld: maybe-all-stage3-bfd
+all-stage4-ld: maybe-all-stage4-bfd
+all-stageprofile-ld: maybe-all-stageprofile-bfd
+all-stagefeedback-ld: maybe-all-stagefeedback-bfd
+all-ld: maybe-all-opcodes
+
+all-stage1-ld: maybe-all-stage1-opcodes
+all-stage2-ld: maybe-all-stage2-opcodes
+all-stage3-ld: maybe-all-stage3-opcodes
+all-stage4-ld: maybe-all-stage4-opcodes
+all-stageprofile-ld: maybe-all-stageprofile-opcodes
+all-stagefeedback-ld: maybe-all-stagefeedback-opcodes
+all-ld: maybe-all-bison
+all-ld: maybe-all-byacc
+all-ld: maybe-all-flex
+all-ld: maybe-all-intl
+
+all-stage1-ld: maybe-all-stage1-intl
+all-stage2-ld: maybe-all-stage2-intl
+all-stage3-ld: maybe-all-stage3-intl
+all-stage4-ld: maybe-all-stage4-intl
+all-stageprofile-ld: maybe-all-stageprofile-intl
+all-stagefeedback-ld: maybe-all-stagefeedback-intl
+all-opcodes: maybe-all-bfd
+
+all-stage1-opcodes: maybe-all-stage1-bfd
+all-stage2-opcodes: maybe-all-stage2-bfd
+all-stage3-opcodes: maybe-all-stage3-bfd
+all-stage4-opcodes: maybe-all-stage4-bfd
+all-stageprofile-opcodes: maybe-all-stageprofile-bfd
+all-stagefeedback-opcodes: maybe-all-stagefeedback-bfd
+all-opcodes: maybe-all-libiberty
+
+all-stage1-opcodes: maybe-all-stage1-libiberty
+all-stage2-opcodes: maybe-all-stage2-libiberty
+all-stage3-opcodes: maybe-all-stage3-libiberty
+all-stage4-opcodes: maybe-all-stage4-libiberty
+all-stageprofile-opcodes: maybe-all-stageprofile-libiberty
+all-stagefeedback-opcodes: maybe-all-stagefeedback-libiberty
+all-dejagnu: maybe-all-tcl
+all-dejagnu: maybe-all-expect
+all-dejagnu: maybe-all-tk
+configure-expect: maybe-configure-tcl
+configure-expect: maybe-configure-tk
+all-expect: maybe-all-tcl
+all-expect: maybe-all-tk
+configure-itcl: maybe-configure-tcl
+configure-itcl: maybe-configure-tk
+all-itcl: maybe-all-tcl
+all-itcl: maybe-all-tk
install-itcl: maybe-install-tcl
-all-sid: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-tcl maybe-all-tk
-install-sid: maybe-install-tcl maybe-install-tk
-all-sim: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-readline maybe-configure-gdb
configure-tk: maybe-configure-tcl
all-tk: maybe-all-tcl
-configure-tix: maybe-configure-tcl maybe-configure-tk
-all-tix: maybe-all-tcl maybe-all-tk
-all-texinfo: maybe-all-libiberty
-
-# Other host modules. Warning, these are not well tested.
-all-autoconf: maybe-all-m4 maybe-all-texinfo
-all-automake: maybe-all-m4 maybe-all-texinfo
+configure-tix: maybe-configure-tcl
+configure-tix: maybe-configure-tk
+all-tix: maybe-all-tcl
+all-tix: maybe-all-tk
+all-sid: maybe-all-libiberty
+all-sid: maybe-all-bfd
+all-sid: maybe-all-opcodes
+all-sid: maybe-all-tcl
+all-sid: maybe-all-tk
+install-sid: maybe-install-tcl
+install-sid: maybe-install-tk
+all-sim: maybe-all-libiberty
+all-sim: maybe-all-bfd
+all-sim: maybe-all-opcodes
+all-sim: maybe-all-readline
+all-sim: maybe-configure-gdb
+all-fastjar: maybe-all-zlib
+all-fastjar: maybe-all-texinfo
+all-fastjar: maybe-all-libiberty
+all-autoconf: maybe-all-m4
+all-autoconf: maybe-all-texinfo
+all-automake: maybe-all-m4
+all-automake: maybe-all-texinfo
+all-automake: maybe-all-autoconf
+all-bison: maybe-all-intl
all-bison: maybe-all-texinfo
-all-diff: maybe-all-libiberty
-all-fastjar: maybe-all-zlib maybe-all-libiberty
-all-fileutils: maybe-all-libiberty
-all-flex: maybe-all-libiberty maybe-all-bison maybe-all-byacc
-all-gzip: maybe-all-libiberty
-all-hello: maybe-all-libiberty
-all-m4: maybe-all-libiberty maybe-all-texinfo
-all-make: maybe-all-libiberty maybe-all-intl
-all-patch: maybe-all-libiberty
+all-diff: maybe-all-intl
+all-diff: maybe-all-texinfo
+all-fileutils: maybe-all-intl
+all-fileutils: maybe-all-texinfo
+all-flex: maybe-all-bison
+all-flex: maybe-all-byacc
+all-flex: maybe-all-intl
+all-flex: maybe-all-m4
+all-flex: maybe-all-texinfo
+all-gzip: maybe-all-intl
+all-gzip: maybe-all-zlib
+all-gzip: maybe-all-texinfo
+all-hello: maybe-all-intl
+all-hello: maybe-all-texinfo
+all-m4: maybe-all-intl
+all-m4: maybe-all-texinfo
+all-make: maybe-all-intl
+all-make: maybe-all-texinfo
+all-patch: maybe-all-texinfo
+all-make: maybe-all-texinfo
all-prms: maybe-all-libiberty
-all-recode: maybe-all-libiberty
-all-sed: maybe-all-libiberty
+all-recode: maybe-all-texinfo
+all-sed: maybe-all-texinfo
all-send-pr: maybe-all-prms
-all-tar: maybe-all-libiberty
-all-uudecode: maybe-all-libiberty
-
-ALL_GCC = maybe-all-gcc
-ALL_GCC_C = $(ALL_GCC) maybe-all-target-newlib maybe-all-target-libgloss
-ALL_GCC_CXX = $(ALL_GCC_C) maybe-all-target-libstdc++-v3
-
-# Target modules specific to gcc.
-configure-target-boehm-gc: $(ALL_GCC_C) maybe-configure-target-qthreads
+all-tar: maybe-all-texinfo
+all-uudecode: maybe-all-texinfo
+configure-target-boehm-gc: maybe-configure-target-qthreads
configure-target-fastjar: maybe-configure-target-zlib
-all-target-fastjar: maybe-all-target-zlib maybe-all-target-libiberty
-configure-target-libada: $(ALL_GCC_C)
-configure-target-libgfortran: $(ALL_GCC_C)
-configure-target-libffi: $(ALL_GCC_C)
-configure-target-libjava: $(ALL_GCC_C) maybe-configure-target-zlib maybe-configure-target-boehm-gc maybe-configure-target-qthreads maybe-configure-target-libffi
-all-target-libjava: maybe-all-fastjar maybe-all-target-zlib maybe-all-target-boehm-gc maybe-all-target-qthreads maybe-all-target-libffi
-configure-target-libobjc: $(ALL_GCC_C)
+all-target-fastjar: maybe-all-target-zlib
+all-target-fastjar: maybe-all-target-libiberty
+configure-target-libjava: maybe-configure-target-zlib
+configure-target-libjava: maybe-configure-target-boehm-gc
+configure-target-libjava: maybe-configure-target-qthreads
+configure-target-libjava: maybe-configure-target-libffi
+all-target-libjava: maybe-all-fastjar
+all-target-libjava: maybe-all-target-zlib
+all-target-libjava: maybe-all-target-boehm-gc
+all-target-libjava: maybe-all-target-qthreads
+all-target-libjava: maybe-all-target-libffi
all-target-libobjc: maybe-all-target-libiberty
-configure-target-libstdc++-v3: $(ALL_GCC_C)
all-target-libstdc++-v3: maybe-all-target-libiberty
-configure-target-zlib: $(ALL_GCC_C)
-
-# Target modules in the 'src' repository.
-configure-target-examples: $(ALL_GCC_C)
-configure-target-libgloss: $(ALL_GCC)
all-target-libgloss: maybe-configure-target-newlib
-configure-target-libiberty: $(ALL_GCC)
-configure-target-libtermcap: $(ALL_GCC_C)
-configure-target-newlib: $(ALL_GCC)
-configure-target-rda: $(ALL_GCC_C)
-configure-target-winsup: $(ALL_GCC_C)
-all-target-winsup: maybe-all-target-libiberty maybe-all-target-libtermcap
-
-# Other target modules. Warning, these are not well tested.
-configure-target-gperf: $(ALL_GCC_CXX)
-all-target-gperf: maybe-all-target-libiberty maybe-all-target-libstdc++-v3
-configure-target-qthreads: $(ALL_GCC_C)
+all-target-winsup: maybe-all-target-libiberty
+all-target-winsup: maybe-all-target-libtermcap
+
+
+# Now build the prebootstrap dependencies.
+
+all-prebootstrap: maybe-all-bison
+all-prebootstrap: maybe-all-byacc
+all-prebootstrap: maybe-all-flex
+all-prebootstrap: maybe-all-texinfo
+
+# Unless toplevel bootstrap is going, bootstrapped packages are actually
+# prebootstrapped, with the exception of gcc. Another wart that will go
+# away with toplevel bootstrap.
+@if gcc-no-bootstrap
+
+all-prebootstrap: maybe-all-bfd
+all-prebootstrap: maybe-all-opcodes
+all-prebootstrap: maybe-all-binutils
+all-prebootstrap: maybe-all-gas
+all-prebootstrap: maybe-all-intl
+all-prebootstrap: maybe-all-ld
+all-prebootstrap: maybe-all-libcpp
+all-prebootstrap: maybe-all-libbanshee
+all-prebootstrap: maybe-all-libiberty
+all-prebootstrap: maybe-all-zlib
+@endif gcc-no-bootstrap
+
+GDB_TK = @GDB_TK@
+all-gdb: $(gdbnlmrequirements) $(GDB_TK)
# Serialization dependencies. Host configures don't work well in parallel to
# each other, due to contention over config.cache. Target configures and
diff --git a/Makefile.tpl b/Makefile.tpl
index f9c58c119ab..dee4cee887e 100644
--- a/Makefile.tpl
+++ b/Makefile.tpl
@@ -738,8 +738,8 @@ install: installdirs install-host install-target
.PHONY: install-host-nogcc
install-host-nogcc: [+
- FOR host_modules +] \
- maybe-install-[+module+][+
+ FOR host_modules +][+ IF (not (= (get "module") "gcc")) +] \
+ maybe-install-[+module+][+ ENDIF +][+
ENDFOR host_modules +]
.PHONY: install-host
@@ -1196,7 +1196,7 @@ ENDIF raw_cxx +]
GCC_STRAP_TARGETS = bootstrap bootstrap-lean bootstrap2 bootstrap2-lean bootstrap3 bootstrap3-lean bootstrap4 bootstrap4-lean bubblestrap quickstrap cleanstrap restrap
.PHONY: $(GCC_STRAP_TARGETS)
-$(GCC_STRAP_TARGETS): all-bootstrap configure-gcc
+$(GCC_STRAP_TARGETS): all-prebootstrap configure-gcc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
@@ -1229,7 +1229,7 @@ $(GCC_STRAP_TARGETS): all-bootstrap configure-gcc
echo "Building runtime libraries"; \
$(MAKE) $(RECURSE_FLAGS_TO_PASS) all
-profiledbootstrap: all-bootstrap configure-gcc
+profiledbootstrap: all-prebootstrap configure-gcc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
@@ -1363,7 +1363,7 @@ objext = .o
# Real targets act phony if they depend on phony targets; this hack
# prevents gratuitous rebuilding of stage 1.
prebootstrap:
- $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-bootstrap
+ $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-prebootstrap
$(STAMP) prebootstrap
# Flags to pass to stage2 and later makes.
@@ -1534,7 +1534,7 @@ stagefeedback-start::
{ find . -type d | sort | sed 's,.*,$(SHELL) '"$$s"'/mkinstalldirs "../gcc/&",' | $(SHELL); } && \
{ find . -name '*.*da' | sed 's,.*,$(LN) -f "&" "../gcc/&",' | $(SHELL); }
-profiledbootstrap: all-bootstrap configure-gcc
+profiledbootstrap: all-prebootstrap configure-gcc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
@@ -1559,127 +1559,128 @@ profiledbootstrap: all-bootstrap configure-gcc
# Dependencies between different modules
# --------------------------------------
+# Generic dependencies for target modules on host stuff, especially gcc
+[+ FOR target_modules +]
+configure-target-[+module+]: maybe-all-gcc
+[+ ENDFOR target_modules +]
+
+[+ FOR lang_env_dependencies +]
+configure-target-[+module+]: maybe-all-target-newlib maybe-all-target-libgloss
+[+ IF cxx +]configure-target-[+module+]: maybe-all-target-libstdc++-v3
+[+ ENDIF cxx +][+ ENDFOR lang_env_dependencies +]
+
# There are two types of dependencies here: 'hard' dependencies, where one
# module simply won't build without the other; and 'soft' dependencies, where
# if the depended-on module is missing, the depending module will do without
# or find a substitute somewhere (perhaps installed). Soft dependencies
-# are specified by depending on a 'maybe-' target. If you're not sure,
+# are made here to depend on a 'maybe-' target. If you're not sure,
# it's safer to use a soft dependency.
-# Build modules
-all-build-bison: maybe-all-build-texinfo
-all-build-flex: maybe-all-build-texinfo
-all-build-libiberty: maybe-all-build-texinfo
-all-build-m4: maybe-all-build-libiberty maybe-all-build-texinfo
-
-# Host modules specific to gcc.
-# GCC needs to identify certain tools.
-# GCC also needs the information exported by the intl configure script.
-configure-gcc: maybe-configure-intl maybe-configure-binutils maybe-configure-gas maybe-configure-ld maybe-configure-bison maybe-configure-flex
-all-gcc: maybe-all-libiberty maybe-all-intl maybe-all-texinfo maybe-all-bison maybe-all-byacc maybe-all-flex maybe-all-binutils maybe-all-gas maybe-all-ld maybe-all-zlib maybe-all-libbanshee maybe-all-libcpp
-configure-libcpp: maybe-configure-libiberty maybe-configure-intl
-all-libcpp: maybe-all-libiberty maybe-all-intl
-# This is a slightly kludgy method of getting dependencies on
-# all-build-libiberty correct; it would be better to build it every time.
-all-gcc: maybe-all-build-libiberty
-all-bootstrap: [+ FOR host_modules +][+ IF bootstrap +]maybe-all-[+module+] [+ ENDIF bootstrap +][+ ENDFOR host_modules +]
-
-# Host modules specific to gdb.
-# GDB needs to know that the simulator is being built.
-configure-gdb: maybe-configure-itcl maybe-configure-tcl maybe-configure-tk maybe-configure-sim
+[+ ;; These Scheme functions build the bulk of the dependencies.
+ ;; dep-target builds a string like "maybe-all-MODULE_KIND-gcc",
+ ;; where "maybe-" is only included if HARD is true, and all-gcc
+ ;; is taken from VAR-NAME.
+ (define dep-target (lambda (module-kind var-name hard)
+ (string-append
+ (if hard "" "maybe-")
+ (dep-subtarget var-name)
+ module-kind
+ (dep-module var-name)
+ )))
+
+ ;; make-dep builds a dependency from the MODULE and ON AutoGen vars.
+ (define make-dep (lambda (module-kind)
+ (string-append
+ (dep-target module-kind "module" #t) ": "
+ (dep-target module-kind "on" (exist? "hard")))))
+
+ ;; dep-subtarget extracts everything up to the first dash in the given
+ ;; AutoGen variable, for example it extracts "all-" out of "all-gcc".
+ (define dep-subtarget (lambda (var-name)
+ (substring (get var-name) 0 (+ 1 (string-index (get var-name) #\-)))))
+
+ ;; dep-module extracts everything up to the first dash in the given
+ ;; AutoGen variable, for example it extracts "gcc" out of "all-gcc".
+ (define dep-module (lambda (var-name)
+ (substring (get var-name) (+ 1 (string-index (get var-name) #\-)))))
+
+ ;; dep-stage builds a string for the prefix of a bootstrap stage.
+ (define dep-stage (lambda ()
+ (string-append
+ "stage"
+ (get "id")
+ "-")))
+
+ ;; dep-maybe is the same as the AutoGen expression "- hard 'maybe-'"
+ ;; but is written in Scheme.
+ (define dep-maybe (lambda ()
+ (if (exist? "hard") "" "maybe-")))
+
+ ;; dep-kind returns "normal" is the dependency is on an "install" target,
+ ;; or if the LHS module is not bootstrapped. It returns "bootstrap" for
+ ;; configure or build dependencies between bootstrapped modules; it returns
+ ;; "prebootstrap" for configure or build dependencies of bootstrapped
+ ;; modules on a non-bootstrapped modules (e.g. gcc on bison). All this
+ ;; is only necessary for host modules.
+ (define dep-kind (lambda ()
+ (if (or (= (dep-subtarget "on") "install-")
+ (=* (dep-module "on") "build-")
+ (=* (dep-module "on") "target-"))
+ "normal"
+
+ (if (hash-ref boot-modules (dep-module "module"))
+ (if (hash-ref boot-modules (dep-module "on"))
+ "bootstrap"
+ "prebootstrap")
+ "normal"))))
+
+ ;; We now build the hash table that is used by dep-kind.
+ (define boot-modules (make-hash-table 113))
+ (define preboot-modules (make-hash-table 37))
++]
+
+[+ FOR host_modules +][+
+ (if (exist? "bootstrap")
+ (hash-create-handle! boot-modules (get "module") #t))
+ "" +][+ ENDFOR host_modules +]
+
+# With all the machinery above in place, it is pretty easy to generate
+# dependencies. Host dependencies are a bit more complex because we have
+# to check for bootstrap/prebootstrap dependencies. To resolve
+# prebootstrap dependencies, prebootstrap modules are gathered in
+# a hash table.
+[+ FOR dependencies +][+ (make-dep "") +]
+[+ CASE (dep-kind) +][+
+ == "prebootstrap"
+ +][+ (hash-create-handle! preboot-modules (dep-module "on") #t) "" +][+
+ == "bootstrap"
+ +][+ FOR bootstrap_stage +]
+[+ (make-dep (dep-stage)) +][+
+ ENDFOR bootstrap_stage +]
+[+ ESAC +][+
+ENDFOR dependencies +]
+
+# Now build the prebootstrap dependencies.
+[+ FOR host_modules +][+
+ IF (hash-ref preboot-modules (get "module")) +]
+all-prebootstrap: maybe-all-[+module+][+
+ ENDIF +][+
+ENDFOR host_modules +]
+
+# Unless toplevel bootstrap is going, bootstrapped packages are actually
+# prebootstrapped, with the exception of gcc. Another wart that will go
+# away with toplevel bootstrap.
+@if gcc-no-bootstrap
+[+ FOR host_modules +][+
+ IF (and (not (= (get "module") "gcc"))
+ (hash-ref boot-modules (get "module"))) +]
+all-prebootstrap: maybe-all-[+module+][+
+ ENDIF +][+
+ENDFOR host_modules +]
+@endif gcc-no-bootstrap
+
GDB_TK = @GDB_TK@
-all-gdb: maybe-all-libiberty maybe-all-opcodes maybe-all-bfd maybe-all-mmalloc maybe-all-readline maybe-all-bison maybe-all-byacc maybe-all-sim $(gdbnlmrequirements) $(GDB_TK)
-install-gdb: maybe-install-tcl maybe-install-tk maybe-install-itcl maybe-install-tix maybe-install-libgui
-configure-libgui: maybe-configure-tcl maybe-configure-tk
-all-libgui: maybe-all-tcl maybe-all-tk maybe-all-itcl
-
-# Host modules specific to binutils.
-configure-bfd: configure-libiberty
-all-bfd: maybe-all-libiberty maybe-all-intl
-all-binutils: maybe-all-libiberty maybe-all-opcodes maybe-all-bfd maybe-all-flex maybe-all-bison maybe-all-byacc maybe-all-intl
-# We put install-opcodes before install-binutils because the installed
-# binutils might be on PATH, and they might need the shared opcodes
-# library.
-install-binutils: maybe-install-opcodes
-# libopcodes depends on libbfd
-install-opcodes: maybe-install-bfd
-all-gas: maybe-all-libiberty maybe-all-opcodes maybe-all-bfd maybe-all-intl
-all-gprof: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-intl
-all-ld: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-bison maybe-all-byacc maybe-all-flex maybe-all-intl
-all-opcodes: maybe-all-bfd maybe-all-libiberty
-
-# Other host modules in the 'src' repository.
-all-dejagnu: maybe-all-tcl maybe-all-expect maybe-all-tk
-configure-expect: maybe-configure-tcl maybe-configure-tk
-all-expect: maybe-all-tcl maybe-all-tk
-configure-itcl: maybe-configure-tcl maybe-configure-tk
-all-itcl: maybe-all-tcl maybe-all-tk
-# We put install-tcl before install-itcl because itcl wants to run a
-# program on installation which uses the Tcl libraries.
-install-itcl: maybe-install-tcl
-all-sid: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-tcl maybe-all-tk
-install-sid: maybe-install-tcl maybe-install-tk
-all-sim: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-readline maybe-configure-gdb
-configure-tk: maybe-configure-tcl
-all-tk: maybe-all-tcl
-configure-tix: maybe-configure-tcl maybe-configure-tk
-all-tix: maybe-all-tcl maybe-all-tk
-all-texinfo: maybe-all-libiberty
-
-# Other host modules. Warning, these are not well tested.
-all-autoconf: maybe-all-m4 maybe-all-texinfo
-all-automake: maybe-all-m4 maybe-all-texinfo
-all-bison: maybe-all-texinfo
-all-diff: maybe-all-libiberty
-all-fastjar: maybe-all-zlib maybe-all-libiberty
-all-fileutils: maybe-all-libiberty
-all-flex: maybe-all-libiberty maybe-all-bison maybe-all-byacc
-all-gzip: maybe-all-libiberty
-all-hello: maybe-all-libiberty
-all-m4: maybe-all-libiberty maybe-all-texinfo
-all-make: maybe-all-libiberty maybe-all-intl
-all-patch: maybe-all-libiberty
-all-prms: maybe-all-libiberty
-all-recode: maybe-all-libiberty
-all-sed: maybe-all-libiberty
-all-send-pr: maybe-all-prms
-all-tar: maybe-all-libiberty
-all-uudecode: maybe-all-libiberty
-
-ALL_GCC = maybe-all-gcc
-ALL_GCC_C = $(ALL_GCC) maybe-all-target-newlib maybe-all-target-libgloss
-ALL_GCC_CXX = $(ALL_GCC_C) maybe-all-target-libstdc++-v3
-
-# Target modules specific to gcc.
-configure-target-boehm-gc: $(ALL_GCC_C) maybe-configure-target-qthreads
-configure-target-fastjar: maybe-configure-target-zlib
-all-target-fastjar: maybe-all-target-zlib maybe-all-target-libiberty
-configure-target-libada: $(ALL_GCC_C)
-configure-target-libgfortran: $(ALL_GCC_C)
-configure-target-libffi: $(ALL_GCC_C)
-configure-target-libjava: $(ALL_GCC_C) maybe-configure-target-zlib maybe-configure-target-boehm-gc maybe-configure-target-qthreads maybe-configure-target-libffi
-all-target-libjava: maybe-all-fastjar maybe-all-target-zlib maybe-all-target-boehm-gc maybe-all-target-qthreads maybe-all-target-libffi
-configure-target-libobjc: $(ALL_GCC_C)
-all-target-libobjc: maybe-all-target-libiberty
-configure-target-libstdc++-v3: $(ALL_GCC_C)
-all-target-libstdc++-v3: maybe-all-target-libiberty
-configure-target-zlib: $(ALL_GCC_C)
-
-# Target modules in the 'src' repository.
-configure-target-examples: $(ALL_GCC_C)
-configure-target-libgloss: $(ALL_GCC)
-all-target-libgloss: maybe-configure-target-newlib
-configure-target-libiberty: $(ALL_GCC)
-configure-target-libtermcap: $(ALL_GCC_C)
-configure-target-newlib: $(ALL_GCC)
-configure-target-rda: $(ALL_GCC_C)
-configure-target-winsup: $(ALL_GCC_C)
-all-target-winsup: maybe-all-target-libiberty maybe-all-target-libtermcap
-
-# Other target modules. Warning, these are not well tested.
-configure-target-gperf: $(ALL_GCC_CXX)
-all-target-gperf: maybe-all-target-libiberty maybe-all-target-libstdc++-v3
-configure-target-qthreads: $(ALL_GCC_C)
+all-gdb: $(gdbnlmrequirements) $(GDB_TK)
# Serialization dependencies. Host configures don't work well in parallel to
# each other, due to contention over config.cache. Target configures and