+SUBDIRS = gmp includes compat utils driver docs rts libraries compiler libraries/Cabal/doc
+
+# Sanity check that all the boot libraries are in the tree, to catch
+# failure to run darcs-all.
+check-packages :
+ @ds=`cat libraries/boot-packages`;\
+ for d in $$ds; do \
+ if test ! -d libraries/$$d; then \
+ echo "Looks like you're missing libraries/$$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-packages
+ $(MAKE) -C utils mostlyclean
+ $(MAKE) -C utils/mkdependC boot
+ @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 libraries boot
+ $(MAKE) -C libraries all
+
+# 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-packages
+ $(MAKE) -C utils mostlyclean
+ $(MAKE) -C utils stage=2
+ $(MAKE) -C compiler boot stage=2
+ $(MAKE) -C compiler stage=2
+ $(RM) -f libraries/ifBuildable/ifBuildable
+ $(MAKE) -C libraries stage=2 ifBuildable/ifBuildable
+ $(RM) -f libraries/installPackage/installPackage
+ $(MAKE) -C libraries stage=2 installPackage/installPackage
+
+
+stage3 : check-packages
+ $(MAKE) -C compiler boot stage=3
+ $(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 compiler/gcc-lib
+ mkdir compiler/gcc-lib
+ cp $(LD) compiler/gcc-lib
+ touch $@
+
+clean ::
+ $(RM) -r compiler/gcc-lib
+ $(RM) -f inplace-gcc-lib
+endif
+endif
+
+all :: bootstrap