-# Order is important! It's e.g. necessary to descend into include/
-# before the rest to have a config.h, etc.
-#
-# If we're booting from .hc files, swap the order
-# we descend into subdirs - to boot utils must be before driver.
-#
-.PHONY: stage1 stage2 stage3 bootstrap bootstrap2 bootstrap3
-
-# We can't 'make boot' in libraries until stage1 is built
-ifeq "$(BootingFromHc)" "YES"
-SUBDIRS_BUILD = includes compiler docs utils driver
-else
-SUBDIRS_BUILD = includes utils driver docs compiler libraries/Cabal/doc
-endif
-
-SUBDIRS = gmp libffi includes utils driver docs rts compiler ghc libraries libraries/Cabal/doc
-
-check-all: check-tools check-packages
-
-check-tools:
- @:
-ifeq "$(HADDOCK_DOCS)" "YES"
-ifeq "$(HADDOCK)" ""
- echo "Couldn't find haddock" >&2
- exit 1
-endif
-endif
-
-# Sanity check that all the boot libraries are in the tree, to catch
-# failure to run darcs-all.
-check-packages :
- @ds=`grep "^[^# ][^ ]* *[^ ][^ ]*$$" packages | sed "s/ .*//"`;\
- for d in $$ds; do \
- if test ! -d $$d; then \
- echo "Looks like you're missing $$d,"; \
- echo "maybe you haven't done './darcs-all get'?"; \
- exit 1; \
- fi \
- done
- @if test ! -f libraries/base/configure; then \
- echo "Looks like you're missing base's configure script."; \
- echo "Did you run 'sh boot' at the top level?"; \
- exit 1; \
- fi
-
-ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
-ifneq "$(WhatGccIsCalled)" ""
-GCC_LIB_DEP = stamp.inplace-gcc-lib
-endif
-endif
-
-stage1 : $(GCC_LIB_DEP) check-all
- $(MAKE) -C libraries boot
- $(MAKE) -C gmp all
- $(MAKE) -C libffi all
- $(MAKE) -C utils/mkdependC boot
- $(MAKE) -C utils with-bootstrapping-compiler
- @case '${MFLAGS}' in *-[ik]*) x_on_err=0;; *-r*[ik]*) x_on_err=0;; *) x_on_err=1;; esac; \
- for i in $(SUBDIRS_BUILD); do \
- echo "------------------------------------------------------------------------"; \
- echo "== $(MAKE) boot $(MFLAGS);"; \
- echo " in $(shell pwd)/$$i"; \
- echo "------------------------------------------------------------------------"; \
- $(MAKE) --no-print-directory -C $$i $(MFLAGS) boot; \
- if [ $$? -eq 0 -o $$x_on_err -eq 0 ] ; then true; else exit 1; fi; \
- done; \
- for i in $(SUBDIRS_BUILD); do \
- echo "------------------------------------------------------------------------"; \
- echo "== $(MAKE) all $(MFLAGS);"; \
- echo " in $(shell pwd)/$$i"; \
- echo "------------------------------------------------------------------------"; \
- $(MAKE) --no-print-directory -C $$i $(MFLAGS) all; \
- if [ $$? -eq 0 -o $$x_on_err -eq 0 ] ; then true; else exit 1; fi; \
- done
- $(MAKE) -C rts boot
- $(MAKE) -C rts
- $(MAKE) -C libraries all
- $(MAKE) -C utils with-stage-1
-
-# When making distributions (i.e., whether with binary-dist or using the
-# vanilla install target to create an installer package), we can have problems
-# if some things (e.g. ghc-pkg) are compiled with the bootstrapping compiler
-# and some (e.g. the stage 2 compiler) with the stage1 compiler. See #1860 for
-# an example. Thus, we explicitly build a second version with the stage 1
-# compiler of all utils that get installed and of all extra support binaries
-# includes in binary dists.
-stage2 : check-all
- $(MAKE) -C compiler stage=2 boot
- $(MAKE) -C compiler stage=2
-ifeq "$(HADDOCK_DOCS)" "YES"
- $(MAKE) -C compiler stage=2 doc
-endif
-
-stage3 : check-all
- $(MAKE) -C compiler stage=3 boot
- $(MAKE) -C compiler stage=3
-
-bootstrap : bootstrap2
-
-bootstrap2 : stage1
- $(MAKE) stage2
-
-bootstrap3 : bootstrap2
- $(MAKE) stage3
-
-ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
-ifneq "$(WhatGccIsCalled)" ""
-all :: stamp.inplace-gcc-lib
-
-.PHONY: stamp.inplace-gcc-lib
-
-# This is a hack to make Cabal able to find ld when we run tests with
-# the inplace ghc. We should probably install all the gcc stuff in our
-# tree somewhere, and then have install copy it from there rather than
-# from the filesystem.
-stamp.inplace-gcc-lib:
- $(RM) -r ghc/gcc-lib
- mkdir ghc/gcc-lib
- cp $(LD) ghc/gcc-lib
- touch $@
-
-clean ::
- $(RM) -r ghc/gcc-lib
- $(RM) -f inplace-gcc-lib
-endif
-endif
-
-all :: bootstrap
-