Newer
Older
.PHONY: check-target-[+module+] maybe-check-target-[+module+]
maybe-check-target-[+module+]:
@if target-[+module+]
maybe-check-target-[+module+]: check-target-[+module+]
[+ IF no_check +]
# Dummy target for uncheckable module.
check-target-[+module+]:
[+ ELSE check +]
check-target-[+module+]:
Daniel Jacobowitz
committed
@: $(MAKE); $(unstage)
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \[+
IF raw_cxx +]
$(RAW_CXX_TARGET_EXPORTS) \[+
ELSE normal_cxx +]
$(NORMAL_TARGET_EXPORTS) \[+
ENDIF raw_cxx +]
(cd $(TARGET_SUBDIR)/[+module+] && \
$(MAKE) $(TARGET_FLAGS_TO_PASS) [+
IF raw_cxx
+] 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' [+
ENDIF raw_cxx
Paolo Bonzini
committed
+] [+extra_make_flags+] check)
@endif target-[+module+]
.PHONY: install-target-[+module+] maybe-install-target-[+module+]
maybe-install-target-[+module+]:
@if target-[+module+]
maybe-install-target-[+module+]: install-target-[+module+]
[+ IF no_install +]
# Dummy target for uninstallable.
install-target-[+module+]:
[+ ELSE install +]
install-target-[+module+]: installdirs
Daniel Jacobowitz
committed
@: $(MAKE); $(unstage)
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \[+
IF raw_cxx +]
$(RAW_CXX_TARGET_EXPORTS) \[+
ELSE normal_cxx +]
$(NORMAL_TARGET_EXPORTS) \[+
ENDIF raw_cxx +]
Paolo Bonzini
committed
$(MAKE) $(TARGET_FLAGS_TO_PASS) [+extra_make_flags+] install)
@endif target-[+module+]
Nathanael Nerode
committed
# Other targets (info, dvi, etc.)
[+ FOR recursive_targets +]
.PHONY: maybe-[+make_target+]-target-[+module+] [+make_target+]-target-[+module+]
maybe-[+make_target+]-target-[+module+]:
@if target-[+module+]
maybe-[+make_target+]-target-[+module+]: [+make_target+]-target-[+module+]
Nathanael Nerode
committed
[+ IF (match-value? = "missing" (get "make_target") ) +]
# [+module+] doesn't support [+make_target+].
[+make_target+]-target-[+module+]:
[+ ELSE +]
[+make_target+]-target-[+module+]: [+
FOR depend +]\
[+depend+]-target-[+module+] [+
ENDFOR depend +]
Daniel Jacobowitz
committed
@: $(MAKE); $(unstage)
Nathanael Nerode
committed
@[ -f $(TARGET_SUBDIR)/[+module+]/Makefile ] || exit 0 ; \
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \[+
IF raw_cxx +]
$(RAW_CXX_TARGET_EXPORTS) \[+
ELSE normal_cxx +]
$(NORMAL_TARGET_EXPORTS) \[+
ENDIF raw_cxx +]
Nathanael Nerode
committed
echo "Doing [+make_target+] in $(TARGET_SUBDIR)/[+module+]" ; \
for flag in $(EXTRA_TARGET_FLAGS); do \
eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
done; \
(cd $(TARGET_SUBDIR)/[+module+] && \
$(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
"RANLIB=$${RANLIB}" \
"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
Paolo Bonzini
committed
[+extra_make_flags+] [+make_target+]) \
Nathanael Nerode
committed
|| exit 1
[+ ENDIF +]
@endif target-[+module+]
Nathanael Nerode
committed
[+ ENDFOR recursive_targets +]
# ----------
# GCC module
# ----------
# GCC has some more recursive targets, which trigger the old
# (but still current, until the toplevel bootstrap project
# is finished) compiler bootstrapping rules.
Phil Edwards
committed
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-prebootstrap configure-gcc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
Paolo Bonzini
committed
$(HOST_EXPORTS) \
$(RPATH_ENVVAR)=`echo "$(TARGET_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,:[ :]*,:,g;s,^[ :]*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); \
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
msg="Comparing stage3 and stage4 of the compiler"; \
compare=compare3-lean ;; \
*bootstrap4 ) \
msg="Comparing stage3 and stage4 of the compiler"; \
compare=compare3 ;; \
*-lean ) \
msg="Comparing stage2 and stage3 of the compiler"; \
compare=compare-lean ;; \
* ) \
msg="Comparing stage2 and stage3 of the compiler"; \
compare=compare ;; \
Paolo Bonzini
committed
$(HOST_EXPORTS) \
echo "$$msg"; \
cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) $$compare
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}` ; export s; \
$(MAKE) $(RECURSE_FLAGS_TO_PASS) all
profiledbootstrap: all-prebootstrap configure-gcc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
Paolo Bonzini
committed
$(HOST_EXPORTS) \
$(RPATH_ENVVAR)=`echo "$(TARGET_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,:[ :]*,:,g;s,^[ :]*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); \
John David Anglin
committed
echo "Bootstrapping training compiler"; \
cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) stageprofile_build
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
Paolo Bonzini
committed
$(HOST_EXPORTS) \
echo "Building feedback based compiler"; \
cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) stagefeedback_build
John David Anglin
committed
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}` ; export s; \
echo "Building runtime libraries"; \
$(MAKE) $(RECURSE_FLAGS_TO_PASS) all
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
Paolo Bonzini
committed
$(HOST_EXPORTS) \
echo "Building the C and C++ compiler"; \
cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) LANGUAGES="c c++"
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}` ; export s; \
$(MAKE) $(RECURSE_FLAGS_TO_PASS) LANGUAGES="c c++" all
.PHONY: check-gcc-c++
check-gcc-c++:
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
Paolo Bonzini
committed
$(HOST_EXPORTS) \
(cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-c++); \
fi
.PHONY: check-c++
Matt Kraai
committed
check-c++: check-target-libstdc++-v3 check-gcc-c++
# Install the gcc headers files, but not the fixed include files,
# which Cygnus is not allowed to distribute. This rule is very
# dependent on the workings of the gcc Makefile.in.
.PHONY: gcc-no-fixedincludes
gcc-no-fixedincludes:
@if [ -f ./gcc/Makefile ]; then \
rm -rf gcc/tmp-include; \
mv gcc/include gcc/tmp-include 2>/dev/null; \
mkdir gcc/include; \
cp $(srcdir)/gcc/gsyslimits.h gcc/include/syslimits.h; \
touch gcc/stmp-fixinc gcc/include/fixed; \
rm -f gcc/stmp-headers gcc/stmp-int-hdrs; \
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}` ; export s; \
Paolo Bonzini
committed
$(HOST_EXPORTS) \
$(MAKE) $(GCC_FLAGS_TO_PASS) install); \
rm -rf gcc/include; \
mv gcc/tmp-include gcc/include 2>/dev/null; \
else true; fi
Nathanael Nerode
committed
# ---------------------
# GCC bootstrap support
# ---------------------
# We track the current stage (the one in 'gcc') in the stage_current file.
# stage_last instead tracks the stage that was built last. These targets
# are dummy when toplevel bootstrap is not active.
# While making host and target tools, symlinks to the final stage must be
Daniel Jacobowitz
committed
# there, so $(unstage) should be run at various points. To avoid excessive
# recursive invocations of make, we "inline" them using a variable. These
# must be referenced as ": $(MAKE) ; $(unstage)" rather than "$(unstage)"
# to avoid warnings from the GNU Make job server.
unstage = :
stage = :
unstage = [ -f stage_current ] || $(MAKE) `cat stage_last`-start
stage = if [ -f stage_current ]; then $(MAKE) `cat stage_current`-end || exit 1; else :; fi
.PHONY: unstage stage
unstage:
Daniel Jacobowitz
committed
@: $(MAKE); $(unstage)
Daniel Jacobowitz
committed
@: $(MAKE); $(stage)
Paolo Bonzini
committed
# Disable commands for lean bootstrap.
LEAN = false
# We name the build directories for the various stages "stage1-gcc",
# "stage2-gcc","stage3-gcc", etc.
# Since the 'compare' process will fail (on debugging information) if any
# directory names are different, we need to link the gcc directory for
Daniel Jacobowitz
committed
# the previous stage to a constant name ('prev-gcc'), and to make the name of
# the build directories constant as well. For the latter, we use naked names
# like 'gcc', because the scripts in that directory assume it. We use
# mv on platforms where symlinks to directories do not work or are not
# reliable.
# 'touch' doesn't work right on some platforms.
STAMP = echo timestamp >
# Only build the C compiler for stage1, because that is the only one that
# we can guarantee will build with the native compiler, and also it is the
# only thing useful for building stage2. STAGE1_CFLAGS (via CFLAGS),
# MAKEINFO and MAKEINFOFLAGS are explicitly passed here to make them
# overrideable (for a bootstrap build stage1 also builds gcc.info).
STAGE1_CFLAGS=@stage1_cflags@
STAGE1_LANGUAGES=@stage1_languages@
# We only want to compare .o files, so set this!
objext = .o
# Flags to pass to stage2 and later makes.
POSTSTAGE1_FLAGS_TO_PASS = \
CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \
STAGE_PREFIX=$$r/prev-gcc/ \
CFLAGS="$(BOOT_CFLAGS)" \
LDFLAGS="$(BOOT_LDFLAGS)" \
Nathanael Nerode
committed
ADAC="\$$(CC)"
# For stage 1:
# * We force-disable intermodule optimizations, even if
# --enable-intermodule was passed, since the installed compiler probably
# can't handle them. Luckily, autoconf always respects
# the last argument when conflicting --enable arguments are passed.
# * Likewise, we force-disable coverage flags, since the installed compiler
# probably has never heard of them.
# * We build only C (and possibly Ada).
[+ FOR bootstrap-stage +]
.PHONY: stage[+id+]-start stage[+id+]-end
Daniel Jacobowitz
committed
@: $(MAKE); $(stage); \
echo stage[+id+] > stage_current ; \
echo stage[+id+] > stage_last; \
Daniel Jacobowitz
committed
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)[+
FOR host_modules +][+ IF bootstrap +]
@cd $(HOST_SUBDIR); [ -d stage[+id+]-[+module+] ] || \
mkdir stage[+id+]-[+module+]; \
Paolo Bonzini
committed
mv stage[+id+]-[+module+] [+module+] [+ IF prev +] ; \
mv stage[+prev+]-[+module+] prev-[+module+] || test -f stage[+prev+]-lean [+ ENDIF prev +]
Daniel Jacobowitz
committed
@endif [+ module +][+ ENDIF bootstrap +][+ ENDFOR host_modules +]
@[ -d stage[+id+]-$(TARGET_SUBDIR) ] || \
mkdir stage[+id+]-$(TARGET_SUBDIR); \
Paolo Bonzini
committed
mv stage[+id+]-$(TARGET_SUBDIR) $(TARGET_SUBDIR) [+ IF prev +] ; \
mv stage[+prev+]-$(TARGET_SUBDIR) prev-$(TARGET_SUBDIR) || test -f stage[+prev+]-lean [+ ENDIF prev +]
Paolo Bonzini
committed
stage[+id+]-end:: [+ FOR host_modules +][+ IF bootstrap +]
Paolo Bonzini
committed
@if test -d $(HOST_SUBDIR)/[+module+] ; then \
cd $(HOST_SUBDIR); mv [+module+] stage[+id+]-[+module+] [+ IF prev +]; \
mv prev-[+module+] stage[+prev+]-[+module+] ; : [+ ENDIF prev +] ; \
Daniel Jacobowitz
committed
fi
@endif [+ module +][+ ENDIF bootstrap +][+ ENDFOR host_modules +]
@if test -d $(TARGET_SUBDIR) ; then \
Paolo Bonzini
committed
mv $(TARGET_SUBDIR) stage[+id+]-$(TARGET_SUBDIR) [+ IF prev +] ; \
mv prev-$(TARGET_SUBDIR) stage[+prev+]-$(TARGET_SUBDIR) ; : [+ ENDIF prev +] ; \
Daniel Jacobowitz
committed
fi
Paolo Bonzini
committed
rm -f stage_current
Daniel Jacobowitz
committed
# Bubble a bugfix through all the stages up to stage [+id+]. They are
# remade, but not reconfigured. The next stage (if any) will not be
# reconfigured as well.
Paolo Bonzini
committed
stage[+id+]-bubble:: [+ IF prev +]stage[+prev+]-bubble[+ ENDIF +]
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
if test -f stage[+id+]-lean [+
IF prev +]|| test -f stage[+prev+]-lean [+ ENDIF prev +] ; then \
echo Skipping rebuild of stage[+id+] ; \
else \
Paolo Bonzini
committed
$(MAKE) stage[+id+]-start; \[+IF lean +]
if $(LEAN); then \
rm -rf stage[+lean+]-* ; \
$(STAMP) stage[+lean+]-lean ; \
fi; \[+ ENDIF lean +]
$(MAKE) $(RECURSE_FLAGS_TO_PASS) all-stage[+id+]; \
Paolo Bonzini
committed
fi[+ IF compare-target +]
$(MAKE) $(RECURSE_FLAGS_TO_PASS) [+compare-target+][+ ENDIF compare-target +]
.PHONY: all-stage[+id+] clean-stage[+id+]
do-clean: clean-stage[+id+]
# FIXME: Will not need to be conditional when toplevel bootstrap is the
# only possibility, but now it conflicts with no-bootstrap rules
@if gcc-bootstrap
[+ IF compare-target +]
[+compare-target+]:
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
if test -f stage[+prev+]-lean; then \
echo Cannot compare object files as stage [+prev+] was deleted. ; \
exit 0 ; \
fi; \
Daniel Jacobowitz
committed
: $(MAKE); $(stage); \
rm -f .bad_compare ; \
cd stage[+id+]-gcc; \
files=`find . -name "*$(objext)" -print` ; \
cd .. ; \
for file in $${files} ; do \
f1=$$r/stage[+prev+]-gcc/$$file; f2=$$r/stage[+id+]-gcc/$$file; \
@do_compare@ > /dev/null 2>&1; \
if test $$? -eq 1; then \
case $$file in \
./cc*-checksum$(objext) | ./libgcc/* ) \
echo warning: $$file differs ;; \
*) \
echo $$file differs >> .bad_compare ;; \
esac ; \
fi ; \
done ; \
if [ -f .bad_compare ]; then \
echo "Bootstrap comparison failure!"; \
cat .bad_compare; \
exit 1; \
else \
true; \
fi ; \
$(STAMP) [+compare-target+][+ IF prev +]
Paolo Bonzini
committed
if $(LEAN); then \
rm -rf stage[+prev+]-*; \
$(STAMP) stage[+prev+]-lean; \
fi[+ ENDIF prev +]
[+ ENDIF compare-target +]
[+ IF bootstrap-target +]
Paolo Bonzini
committed
.PHONY: [+bootstrap-target+] [+bootstrap-target+]-lean
Paolo Bonzini
committed
[+bootstrap-target+]:
echo stage[+id+] > stage_final
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(MAKE) $(RECURSE_FLAGS_TO_PASS) stage[+id+]-bubble
Daniel Jacobowitz
committed
@: $(MAKE); $(unstage)
Paolo Bonzini
committed
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target
Paolo Bonzini
committed
[+bootstrap-target+]-lean:
echo stage[+id+] > stage_final
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(MAKE) $(RECURSE_FLAGS_TO_PASS) LEAN=: stage[+id+]-bubble
@: $(MAKE); $(unstage)
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target
[+ ENDIF bootstrap-target +]
# Rules to wipe a stage and all the following ones, also used for cleanstrap
[+ IF prev +]distclean-stage[+prev+]:: distclean-stage[+id+] [+ ENDIF prev +]
Daniel Jacobowitz
committed
@: $(MAKE); $(stage)
rm -rf stage[+id+]-* [+
IF compare-target +][+compare-target+] [+ ENDIF compare-target +]
[+ IF cleanstrap-target +]
.PHONY: [+cleanstrap-target+]
[+cleanstrap-target+]: distclean [+bootstrap-target+]
[+ ENDIF cleanstrap-target +]
[+ ENDFOR bootstrap-stage +]
stageprofile-end::
$(MAKE) distclean-stagefeedback
stagefeedback-start::
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
for i in prev-*; do \
j=`echo $$i | sed s/^prev-//` ; \
cd $$r/$$i && \
{ find . -type d | sort | sed 's,.*,$(SHELL) '"$$s"'/mkinstalldirs "../'$$j'/&",' | $(SHELL) ; } && \
{ find . -name '*.*da' | sed 's,.*,$(LN) -f "&" "../'$$j'/&",' | $(SHELL) ; } ; \
done
Paolo Bonzini
committed
@if gcc-bootstrap
do-distclean: distclean-stage1
@endif gcc-bootstrap
# --------------------------------------
# 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 +]
[+ 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 made here to depend on a 'maybe-' target. If you're not sure,
# it's safer to use a soft dependency.
[+ ;; 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 on-kind)
(string-append
(dep-target module-kind "module" #t) ": "
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
;; 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-")))
Matt Kraai
committed
;; dep-kind returns "normal" if the dependency is on an "install" target,
;; or if either 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 build module (e.g. all-gcc on all-build-bison). All this
;; is only necessary for host modules.
(define dep-kind (lambda ()
(if (and (hash-ref boot-modules (dep-module "module"))
(=* (dep-module "on") "build-"))
"prebootstrap"
Matt Kraai
committed
(not (hash-ref boot-modules (dep-module "module")))
(not (hash-ref boot-modules (dep-module "on"))))
;; We now build the hash table that is used by dep-kind.
(define boot-modules (make-hash-table 113))
+]
[+ FOR host_modules +][+
(if (exist? "bootstrap")
(hash-create-handle! boot-modules (get "module") #t))
"" +][+ ENDFOR host_modules +]
[+ FOR target_modules +][+
(if (exist? "bootstrap")
(hash-create-handle! boot-modules (string-append "target-" (get "module")) #t))
"" +][+ ENDFOR target_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"
+][+ FOR bootstrap_stage +]
[+ (make-dep (dep-stage) "") +][+
ENDFOR bootstrap_stage +]
all-prebootstrap: [+ (dep-target "" "on" (exist? "hard")) +]
[+ == "bootstrap"
+][+ FOR bootstrap_stage +]
[+ (make-dep (dep-stage) (dep-stage)) +][+
ENDFOR bootstrap_stage +]
[+ ESAC +][+
ENDFOR dependencies +]
# Non-toplevel bootstrap rules must depend on several packages, to be built
# before gcc. Another wart that will go away, hopefully soon.
@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
CONFIGURE_GDB_TK = @CONFIGURE_GDB_TK@
GDB_TK = @GDB_TK@
INSTALL_GDB_TK = @INSTALL_GDB_TK@
configure-gdb: $(CONFIGURE_GDB_TK)
all-gdb: $(gdbnlmrequirements) $(GDB_TK)
install-gdb: $(INSTALL_GDB_TK)
# Serialization dependencies. Host configures don't work well in parallel to
# each other, due to contention over config.cache. Target configures and
# build configures are similar.
@serialization_dependencies@
# --------------------------------
# Regenerating top level configury
# --------------------------------
# Rebuilding Makefile.in, using autogen.
$(srcdir)/Makefile.in: @MAINT@ $(srcdir)/Makefile.tpl $(srcdir)/Makefile.def
cd $(srcdir) && $(AUTOGEN) Makefile.def
Makefile: $(srcdir)/Makefile.in config.status
CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
CONFIG_SHELL="$(SHELL)" $(SHELL) ./config.status --recheck
$(srcdir)/configure: @MAINT@ $(srcdir)/configure.in $(srcdir)/config/acx.m4
cd $(srcdir) && $(AUTOCONF)
# ------------------------------
# Special directives to GNU Make
# ------------------------------
# Don't pass command-line variables to submakes.
.NOEXPORT:
MAKEOVERRIDES=