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:
# We want package-data.mk for show
endif
-# We don't haddock base3-compat, as it has the same package name as base
-libraries/base3-compat_dist-install_DO_HADDOCK = NO
-
# We don't haddock the bootstrapping libraries
libraries/hpc_dist-boot_DO_HADDOCK = NO
libraries/Cabal_dist-boot_DO_HADDOCK = NO
$(eval $(call addPackage,haskell98))
$(eval $(call addPackage,hpc))
$(eval $(call addPackage,pretty))
-$(eval $(call addPackage,syb))
$(eval $(call addPackage,template-haskell))
-$(eval $(call addPackage,base3-compat))
$(eval $(call addPackage,Cabal))
$(eval $(call addPackage,binary))
$(eval $(call addPackage,bin-package-db))
$(GHC_GENAPPLY_DIR)
endif
+ifneq "$(HADDOCK_DOCS)" "NO"
BUILD_DIRS += \
utils/haddock \
utils/haddock/doc
+endif
ifneq "$(CLEANING)" "YES"
BUILD_DIRS += \
# XXX Hack; remove this
$(foreach pkg,$(PACKAGES_STAGE2),$(eval libraries/$(pkg)_dist-install_HC_OPTS += -Wwarn))
-# XXX we configure packages with the bootstrapping compiler (for
-# dependency reasons, see the phase ordering), which doesn't
-# necessarily support all the extensions we need, and Cabal filters
-# out the ones it thinks aren't supported.
-libraries/base3-compat_dist-install_HC_OPTS += -XPackageImports
-
# A useful pseudo-target
.PHONY: stage1_libs
stage1_libs : $(ALL_STAGE1_LIBS)
$(INSTALLED_GHC_PKG_REAL) \
$(DESTDIR)$(topdir) \
libraries/$p dist-install \
- '$(DESTDIR)' '$(prefix)' '$(ghclibdir)' '$(docdir)/html/libraries' &&) true
+ '$(DESTDIR)' '$(prefix)' '$(ghclibdir)' '$(docdir)/html/libraries' \
+ $(RelocatableBuild) &&) true
"$(GHC_CABAL_INPLACE)" install \
$(INSTALLED_GHC_REAL) \
$(INSTALLED_GHC_PKG_REAL) \
$(DESTDIR)$(topdir) \
compiler stage2 \
- '$(DESTDIR)' '$(prefix)' '$(ghclibdir)' '$(docdir)/html/libraries'
+ '$(DESTDIR)' '$(prefix)' '$(ghclibdir)' '$(docdir)/html/libraries' \
+ $(RelocatableBuild)
# -----------------------------------------------------------------------------
# Binary distributions
# mk/project.mk gets an absolute path, so we manually include it in
# the bindist with a relative path
-BIN_DIST_MK = $(BIN_DIST_NAME)/bindist.mk
+BIN_DIST_MK = $(BIN_DIST_PREP_DIR)/bindist.mk
-binary-dist:
- "$(RM)" $(RM_OPTS) -r $(BIN_DIST_NAME)
- mkdir $(BIN_DIST_NAME)
- 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_NAME)/; done
+unix-binary-dist-prep:
+ "$(RM)" $(RM_OPTS) -r bindistprep/*
+ 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_NAME)/configure.ac
- cd $(BIN_DIST_NAME) && 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
- "$(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:
- "$(RM)" $(RM_OPTS) -r $(BIN_DIST_NAME)
- $(MAKE) prefix=$(BIN_DIST_DIR) install
- "$(TAR)" cf - $(BIN_DIST_NAME) | bzip2 -c > $(BIN_DIST_TAR_BZ2)
+windows-binary-dist-prep:
+ "$(RM)" $(RM_OPTS) -r bindistprep/*
+ $(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