Combine treatment of vanialla/GADT data decls, and fix assert failure
[ghc-hetmet.git] / ghc.mk
diff --git a/ghc.mk b/ghc.mk
index 719949b..9dba678 100644 (file)
--- a/ghc.mk
+++ b/ghc.mk
 
 default : all
 
+# Catch make if it runs away into an infinite loop
+ifeq      "$(MAKE_RESTARTS)" ""
+else ifeq "$(MAKE_RESTARTS)" "1"
+else ifeq "$(MAKE_RESTARTS)" "2"
+else
+$(error Make has restarted itself $(MAKE_RESTARTS) times; is there a makefile bug?)
+endif
+
 # Just bring makefiles up to date:
 .PHONY: just-makefiles
 just-makefiles:
@@ -795,6 +803,9 @@ INSTALLED_GHC_REAL=$(DESTDIR)$(bindir)/ghc.exe
 INSTALLED_GHC_PKG_REAL=$(DESTDIR)$(bindir)/ghc-pkg.exe
 endif
 
+INSTALLED_PACKAGES = $(filter-out haskeline mtl terminfo,$(PACKAGES))
+HIDDEN_PACKAGES = binary
+
 install_packages: install_libexecs
 install_packages: libffi/package.conf.install rts/package.conf.install
        $(INSTALL_DIR) $(DESTDIR)$(topdir)
@@ -802,7 +813,7 @@ install_packages: libffi/package.conf.install rts/package.conf.install
        $(INSTALL_DIR) $(INSTALLED_PACKAGE_CONF)
        "$(INSTALLED_GHC_PKG_REAL)" --force --global-conf $(INSTALLED_PACKAGE_CONF) update libffi/package.conf.install
        "$(INSTALLED_GHC_PKG_REAL)" --force --global-conf $(INSTALLED_PACKAGE_CONF) update rts/package.conf.install
-       $(foreach p, $(PACKAGES) $(PACKAGES_STAGE2),\
+       $(foreach p, $(INSTALLED_PACKAGES) $(PACKAGES_STAGE2),\
            "$(GHC_CABAL_INPLACE)" install \
                 $(INSTALLED_GHC_REAL) \
                 $(INSTALLED_GHC_PKG_REAL) \
@@ -810,6 +821,9 @@ install_packages: libffi/package.conf.install rts/package.conf.install
                 libraries/$p dist-install \
                 '$(DESTDIR)' '$(prefix)' '$(ghclibdir)' '$(docdir)/html/libraries' \
                 $(RelocatableBuild) &&) true
+       $(foreach p, $(HIDDEN_PACKAGES),\
+           $(INSTALLED_GHC_PKG_REAL) --global-conf $(INSTALLED_PACKAGE_CONF) \
+                                     hide $p &&) true
        "$(GHC_CABAL_INPLACE)" install \
                 $(INSTALLED_GHC_REAL) \
                 $(INSTALLED_GHC_PKG_REAL) \
@@ -865,28 +879,28 @@ endif
 # mk/project.mk gets an absolute path, so we manually include it in
 # the bindist with a relative path
 
-BIN_DIST_MK = $(BIN_DIST_DIR)/bindist.mk
+BIN_DIST_MK = $(BIN_DIST_PREP_DIR)/bindist.mk
 
 unix-binary-dist-prep:
        "$(RM)" $(RM_OPTS) -r bindistprep/*
-       mkdir $(BIN_DIST_DIR)
-       set -e; for i in LICENSE compiler ghc rts libraries utils docs libffi includes driver mk rules Makefile aclocal.m4 config.sub config.guess install-sh extra-gcc-opts.in ghc.mk inplace; do ln -s ../../$$i $(BIN_DIST_DIR)/; done
+       mkdir $(BIN_DIST_PREP_DIR)
+       set -e; for i in LICENSE compiler ghc rts libraries utils docs libffi includes driver mk rules Makefile aclocal.m4 config.sub config.guess install-sh extra-gcc-opts.in ghc.mk inplace; do ln -s ../../$$i $(BIN_DIST_PREP_DIR)/; done
        echo "HADDOCK_DOCS       = $(HADDOCK_DOCS)"       >> $(BIN_DIST_MK)
        echo "LATEX_DOCS         = $(LATEX_DOCS)"         >> $(BIN_DIST_MK)
        echo "BUILD_DOCBOOK_HTML = $(BUILD_DOCBOOK_HTML)" >> $(BIN_DIST_MK)
        echo "BUILD_DOCBOOK_PS   = $(BUILD_DOCBOOK_PS)"   >> $(BIN_DIST_MK)
        echo "BUILD_DOCBOOK_PDF  = $(BUILD_DOCBOOK_PDF)"  >> $(BIN_DIST_MK)
-       ln -s ../../distrib/configure-bin.ac $(BIN_DIST_DIR)/configure.ac
-       cd $(BIN_DIST_DIR) && autoreconf
-       "$(RM)" $(RM_OPTS) $(BIN_DIST_TAR)
+       ln -s ../../distrib/configure-bin.ac $(BIN_DIST_PREP_DIR)/configure.ac
+       cd $(BIN_DIST_PREP_DIR) && autoreconf
+       "$(RM)" $(RM_OPTS) $(BIN_DIST_PREP_TAR)
 # 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
-       cd bindistprep && "$(TAR)" hcf - -T $(BIN_DIST_LIST) | bzip2 -c > $(BIN_DIST_TAR_BZ2)
+       cd bindistprep && "$(TAR)" hcf - -T ../$(BIN_DIST_LIST) | bzip2 -c > ../$(BIN_DIST_PREP_TAR_BZ2)
 
 windows-binary-dist-prep:
        "$(RM)" $(RM_OPTS) -r bindistprep/*
-       $(MAKE) prefix=$(BIN_DIST_DIR) install
-       "$(TAR)" cf - $(BIN_DIST_NAME) | bzip2 -c > $(BIN_DIST_TAR_BZ2)
+       $(MAKE) prefix=$(TOP)/$(BIN_DIST_PREP_DIR) install
+       cd bindistprep && "$(TAR)" cf - $(BIN_DIST_NAME) | bzip2 -c > ../$(BIN_DIST_PREP_TAR_BZ2)
 
 windows-installer:
        "$(ISCC)" /O. /F$(WINDOWS_INSTALLER_BASE) - < distrib/ghc.iss
@@ -967,6 +981,8 @@ sdist-prep :
        cd $(SRC_DIST_DIR) && for i in $(SRC_DIST_DIRS); do mkdir $$i; ( cd $$i && lndir $(TOP)/$$i ); done
        cd $(SRC_DIST_DIR) && for i in $(SRC_DIST_FILES); do $(LN_S) $(TOP)/$$i .; done
        cd $(SRC_DIST_DIR) && $(MAKE) distclean
+       rm -rf $(SRC_DIST_DIR)/libraries/tarballs/
+       rm -rf $(SRC_DIST_DIR)/libraries/stamp/
        cd $(SRC_DIST_DIR) && if test -f $(TOP)/libraries/haskell-src/dist/build/Language/Haskell/Parser.hs; then "$(CP)" $(TOP)/libraries/haskell-src/dist/build/Language/Haskell/Parser.hs libraries/haskell-src/Language/Haskell/ ; mv libraries/haskell-src/Language/Haskell/Parser.ly libraries/haskell-src/Language/Haskell/Parser.ly.source ; fi
        cd $(SRC_DIST_DIR) && $(call sdist_file,compiler,stage2,cmm,CmmLex,x)
        cd $(SRC_DIST_DIR) && $(call sdist_file,compiler,stage2,cmm,CmmParse,y)