Fix Haddock errors.
[ghc-hetmet.git] / Makefile
index b89257f..e2f24a2 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -67,12 +67,23 @@ include $(TOP)/mk/boilerplate.mk
 
 # We can't 'make boot' in libraries until stage1 is built
 ifeq "$(BootingFromHc)" "YES"
-SUBDIRS_BUILD = gmp includes rts compat compiler docs utils driver
+SUBDIRS_BUILD = includes compiler docs utils driver
 else
-SUBDIRS_BUILD = gmp includes compat utils driver docs compiler rts libraries/Cabal/doc
+SUBDIRS_BUILD = includes utils driver docs compiler libraries/Cabal/doc
 endif
 
-SUBDIRS = gmp 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.
@@ -97,8 +108,12 @@ GCC_LIB_DEP = stamp.inplace-gcc-lib
 endif
 endif
 
-stage1 : $(GCC_LIB_DEP) check-packages
+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 "------------------------------------------------------------------------"; \
@@ -116,16 +131,31 @@ stage1 : $(GCC_LIB_DEP) check-packages
          $(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
-
-stage2 : check-packages
-       $(MAKE) -C compiler boot stage=2
+       $(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
+       $(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
 
@@ -259,21 +289,6 @@ binary-dist::
        -rm -rf $(BIN_DIST_DIR)
        -$(RM) $(BIN_DIST_TARBALL)
 
-# When making bindists, 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 rebuild the utils with stage 1 here. This is a bit unpleasant,
-# as binary-dist really shouldn't actually build anything, but it works.
-# We need to do the same for utilities used during library package installation.
-binary-dist::
-       $(MAKE) -C utils clean
-       $(MAKE) -C utils UseStage1=YES boot
-       $(MAKE) -C utils UseStage1=YES
-       $(RM) -f libraries/ifBuildable/ifBuildable
-       $(MAKE) -C libraries UseStage1=YES ifBuildable/ifBuildable
-       $(RM) -f libraries/installPackage/installPackage
-       $(MAKE) -C libraries UseStage1=YES installPackage/installPackage
-
 ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
 
 binary-dist::
@@ -317,7 +332,6 @@ binary-dist-pre::
        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/
@@ -353,7 +367,7 @@ binary-dist::
        echo "HaveLibGmp = $(HaveLibGmp)"                            >> $(VARFILE)
        echo "GhcLibsWithUnix = $(GhcLibsWithUnix)"                  >> $(VARFILE)
        echo "GhcWithInterpreter = $(GhcWithInterpreter)"            >> $(VARFILE)
-       echo "GhcHasReadline = $(GhcHasReadline)"                    >> $(VARFILE)
+       echo "GhcHasEditline = $(GhcHasEditline)"                    >> $(VARFILE)
        echo "BootingFromHc = $(BootingFromHc)"                      >> $(VARFILE)
        echo "XMLDocWays = $(XMLDocWays)"                            >> $(VARFILE)
        # We won't actually use xsltproc, but we need to know if it's "" or not
@@ -474,7 +488,7 @@ SRC_DIST_DIRS += mk docs distrib bindisttest $(filter-out docs distrib libraries
 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
@@ -538,7 +552,6 @@ hc-file-bundle :
        $(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 \
@@ -564,7 +577,7 @@ hc-file-bundle :
 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