Reinstate the driver/ghc directory, to create a versioned GHC program
[ghc-hetmet.git] / Makefile
index 157fd31..d73c304 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -72,23 +72,14 @@ 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
+SUBDIRS = gmp libffi includes utils docs rts compiler ghc driver 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
+check-all: check-packages
 
 # 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/ .*//"`;\
+       @ds=`grep "^[^# ][^ ]*  *[^ ][^ ]*  *[^ ][^ ]*$$" packages | sed "s/ .*//"`;\
        for d in $$ds; do \
          if test ! -d $$d; then \
             echo "Looks like you're missing $$d,"; \
@@ -131,12 +122,9 @@ stage1 : $(GCC_LIB_DEP) check-all
          $(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 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
@@ -148,17 +136,15 @@ stage1 : $(GCC_LIB_DEP) check-all
 stage2 : check-all
        $(MAKE) -C compiler stage=2 boot
        $(MAKE) -C compiler stage=2
+       $(MAKE) -C utils with-stage-2
 ifeq "$(HADDOCK_DOCS)" "YES"
-       $(MAKE) -C compiler stage=2 doc
+       $(MAKE) -C libraries doc
+       $(MAKE) -C compiler  doc stage=2
 endif
-       $(MAKE) -C ghc      stage=2 boot
-       $(MAKE) -C ghc      stage=2
 
 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
 
@@ -290,7 +276,7 @@ install-docs ::
 
 binary-dist::
        -rm -rf $(BIN_DIST_DIR)
-       -$(RM) $(BIN_DIST_TARBALL)
+       -$(RM) $(BIN_DIST_TAR_BZ2)
 
 ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
 
@@ -305,6 +291,14 @@ binary-dist::
        $(MKDIRHIER) $(BIN_DIST_DIR)/icons
        cp distrib/hsicon.ico $(BIN_DIST_DIR)/icons
 
+# Tar up the distribution and build a manifest
+binary-dist :: tar-binary-dist
+
+.PHONY: tar-binary-dist
+tar-binary-dist:
+       ( cd $(BIN_DIST_TOPDIR_ABS); tar cf - $(BIN_DIST_NAME) | bzip2 > $(BIN_DIST_TAR_BZ2) )
+       ( cd $(BIN_DIST_TOPDIR_ABS); bunzip2 -c $(BIN_DIST_TAR_BZ2) | tar tf - | sed "s/^ghc-$(ProjectVersion)/fptools/" | sort >$(FPTOOLS_TOP_ABS)/bin-manifest-$(ProjectVersion) )
+
 else
 
 .PHONY: binary-dist
@@ -388,6 +382,7 @@ endif
        echo "XSLTPROC = $(XSLTPROC)"                     >> $(BIN_DIST_VARFILE)
        echo "TARGETPLATFORM = $(TARGETPLATFORM)"         >> $(BIN_DIST_VARFILE)
        echo "HADDOCK_DOCS = $(HADDOCK_DOCS)"             >> $(BIN_DIST_VARFILE)
+       echo "LATEX_DOCS = $(LATEX_DOCS)"                 >> $(BIN_DIST_VARFILE)
        echo "INTEGER_LIBRARY = $(INTEGER_LIBRARY)"       >> $(BIN_DIST_VARFILE)
        cat distrib/Makefile-bin-vars.in                  >> $(BIN_DIST_VARFILE)
 
@@ -395,22 +390,15 @@ endif
 
        $(RM) -f $(BIN_DIST_NAME)
        ln -s . $(BIN_DIST_NAME)
-       tar cf $(BIN_DIST_TAR) -T $(BIN_DIST_LIST)
+# h means "follow symlinks", e.g. if aclocal.m4 is a symlink to a source
+# tree then we want to include the real file, not a symlink to it
+       tar hcf $(BIN_DIST_TAR) -T $(BIN_DIST_LIST)
        cd $(BIN_DIST_PREP_DIR) && tar rf $(BIN_DIST_TAR) $(BIN_DIST_NAME)
        bzip2 < $(BIN_DIST_TAR) > $(BIN_DIST_TAR_BZ2)
        tar tf $(BIN_DIST_TAR) | sort > bin-manifest-$(ProjectVersion)
 endif
 
-# XXX Presumably we still need to do this for Windows?
-## Tar up the distribution and build a manifest
-#binary-dist :: tar-binary-dist
-#
-#.PHONY: tar-binary-dist
-#tar-binary-dist:
-#      ( cd $(BIN_DIST_TOPDIR_ABS); tar cf - $(BIN_DIST_NAME) | bzip2 >$(BIN_DIST_TARBALL) )
-#      ( cd $(BIN_DIST_TOPDIR_ABS); bunzip2 -c $(BIN_DIST_TARBALL) | tar tf - | sed "s/^ghc-$(ProjectVersion)/fptools/" | sort >$(FPTOOLS_TOP_ABS)/bin-manifest-$(ProjectVersion) )
-
-PUBLISH_FILES = $(BIN_DIST_TARBALL)
+PUBLISH_FILES = $(BIN_DIST_TAR_BZ2)
 
 # Upload the distribution and documentation
 ifneq "$(ISCC)" ""
@@ -473,7 +461,7 @@ binary-dist::
 
 ifeq "$(darwin_TARGET_OS)" "1"
 
-.PHONY: framework-pkg, framework-binary-dist
+.PHONY: framework-pkg framework-binary-dist
 
 framework-pkg:
        $(MAKE) -C distrib/MacOS framework-pkg
@@ -576,7 +564,7 @@ hc-file-bundle :
             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 \
-            if test "x$$f" != "x" && test -e `echo "$$f" | sed 's/hsc$$/hs/g'`; then \
+            if test "x$$f" != "x" && test -f `echo "$$f" | sed 's/hsc$$/hs/g'`; then \
                echo `echo "$$f" | sed 's/hsc$$/hs/g' ` >> hc-files-to-go ; \
             fi; \
        done;
@@ -601,7 +589,7 @@ DIST_CLEAN_FILES += config.cache config.status mk/config.h mk/stamp-h \
        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 
+LATE_DIST_CLEAN_FILES += mk/config.mk mk/are-validating.mk
 
 # VERSION is shipped in a source dist
 MAINTAINER_CLEAN_FILES += VERSION