# We can't 'make boot' in libraries until stage1 is built
ifeq "$(BootingFromHc)" "YES"
-SUBDIRS_BUILD = gmp libffi includes rts compat compiler docs utils driver
+SUBDIRS_BUILD = includes compiler docs utils driver
else
-SUBDIRS_BUILD = gmp libffi includes compat utils driver docs compiler rts libraries/Cabal/doc
+SUBDIRS_BUILD = includes utils driver docs compiler libraries/Cabal/doc
endif
-SUBDIRS = gmp libffi includes compat utils driver docs rts libraries compiler libraries/Cabal/doc
+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=`cat libraries/boot-packages`;\
+ @ds=`grep "^[^# ][^ ]* *[^ ][^ ]*$$" packages | sed "s/ .*//"`;\
for d in $$ds; do \
- if test ! -d libraries/$$d; then \
- echo "Looks like you're missing libraries/$$d,"; \
+ if test ! -d $$d; then \
+ echo "Looks like you're missing $$d,"; \
echo "maybe you haven't done './darcs-all get'?"; \
exit 1; \
fi \
endif
endif
-stage1 : $(GCC_LIB_DEP) check-packages
- $(MAKE) -C utils mostlyclean
+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 "------------------------------------------------------------------------"; \
$(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 ghc stage=1 boot
+ $(MAKE) -C ghc stage=1
+ $(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
# 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
+stage2 : check-all
+ $(MAKE) -C compiler stage=2 boot
$(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
-
+ifeq "$(HADDOCK_DOCS)" "YES"
+ $(MAKE) -C compiler stage=2 doc
+endif
+ $(MAKE) -C ghc stage=2 boot
+ $(MAKE) -C ghc stage=2
-stage3 : check-packages
- $(MAKE) -C compiler boot stage=3
+stage3 : check-all
+ $(MAKE) -C compiler stage=3 boot
$(MAKE) -C compiler stage=3
+ $(MAKE) -C ghc stage=3 boot
+ $(MAKE) -C ghc stage=3
bootstrap : bootstrap2
# 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
+ $(RM) -r ghc/gcc-lib
+ mkdir ghc/gcc-lib
+ cp $(LD) ghc/gcc-lib
touch $@
clean ::
- $(RM) -r compiler/gcc-lib
+ $(RM) -r ghc/gcc-lib
$(RM) -f inplace-gcc-lib
endif
endif
echo 'include $$(TOP)/mk/package.mk' > $(BIN_DIST_DIR)/mk/target.mk
echo 'include $$(TOP)/mk/install.mk' >> $(BIN_DIST_DIR)/mk/target.mk
echo 'include $$(TOP)/mk/recurse.mk' >> $(BIN_DIST_DIR)/mk/target.mk
- echo '' > $(BIN_DIST_DIR)/mk/compat.mk
cp mk/package.mk $(BIN_DIST_DIR)/mk/
cp mk/install.mk $(BIN_DIST_DIR)/mk/
cp mk/recurse.mk $(BIN_DIST_DIR)/mk/
SRC_DIST_FILES += \
configure.ac config.guess config.sub configure \
aclocal.m4 README ANNOUNCE HACKING LICENSE Makefile install-sh \
- ghc.spec.in extra-gcc-opts.in VERSION boot
+ ghc.spec.in ghc.spec extra-gcc-opts.in VERSION boot
# -----------------------------------------------------------------------------
# Source distributions
$(LN_S) . ghc-$(ProjectVersion)
$(FIND) ghc-$(ProjectVersion)/compiler \
ghc-$(ProjectVersion)/utils \
- ghc-$(ProjectVersion)/compat \
ghc-$(ProjectVersion)/libraries -follow \
\( -name "*.hc" -o -name "*_hsc.[ch]" -o -name "*_stub.[ch]" \) -print > hc-files-to-go
for f in `$(FIND) ghc-$(ProjectVersion)/compiler ghc-$(ProjectVersion)/utils ghc-$(ProjectVersion)/libraries -name "*.hsc" -follow -print` ""; do \
CLEAN_FILES += hc-files-to-go *-hc.tar.gz
DIST_CLEAN_FILES += config.cache config.status mk/config.h mk/stamp-h \
- ghc.spec docs/users_guide/ug-book.xml extra-gcc-opts
+ docs/users_guide/ug-book.xml extra-gcc-opts
# don't clean config.mk: it's needed when cleaning stuff later on
LATE_DIST_CLEAN_FILES += mk/config.mk