X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc.mk;h=1618cd82376de87ada892f8359774031a0d6e3dd;hb=40954fdc884baddffcb88d2b69ced83e7ef305ee;hp=291d71465a0efd19ca63f946fde08a62c9629192;hpb=207a5772ef67c3b26ea3fb9b8beb20d9b3c40368;p=ghc-hetmet.git diff --git a/ghc.mk b/ghc.mk index 291d714..1618cd8 100644 --- a/ghc.mk +++ b/ghc.mk @@ -85,6 +85,14 @@ 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: @@ -124,6 +132,8 @@ $(error Please run ./configure first) endif endif +include mk/ways.mk + # (Optional) build-specific configuration include mk/custom-settings.mk @@ -163,9 +173,6 @@ NO_INCLUDE_DEPS = YES # 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 @@ -318,9 +325,7 @@ $(eval $(call addPackage,extensible-exceptions)) $(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)) @@ -496,9 +501,11 @@ BUILD_DIRS += \ $(GHC_GENAPPLY_DIR) endif +ifneq "$(HADDOCK_DOCS)" "NO" BUILD_DIRS += \ utils/haddock \ utils/haddock/doc +endif ifneq "$(CLEANING)" "YES" BUILD_DIRS += \ @@ -591,12 +598,6 @@ $(foreach pkg,$(PACKAGES) $(PACKAGES_STAGE2),$(eval libraries/$(pkg)_dist-instal # 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) @@ -606,6 +607,8 @@ libraries/index.html: $(ALL_HADDOCK_FILES) cd libraries && sh gen_contents_index --inplace $(eval $(call all-target,library_doc_index,libraries/index.html)) INSTALL_LIBRARY_DOCS += libraries/*.html libraries/*.gif libraries/*.css libraries/*.js +CLEAN_FILES += libraries/doc-index* libraries/haddock*.css \ + libraries/haddock*.js libraries/index*.html libraries/*.gif endif ifeq "$(CHECK_PACKAGES)" "YES" @@ -796,7 +799,7 @@ ifeq "$(Windows)" "NO" INSTALLED_GHC_REAL=$(DESTDIR)$(ghclibexecdir)/ghc-stage2 INSTALLED_GHC_PKG_REAL=$(DESTDIR)$(ghclibexecdir)/ghc-pkg else -INSTALLED_GHC_REAL=$(DESTDIR)$(bindir)/ghc-stage2.exe +INSTALLED_GHC_REAL=$(DESTDIR)$(bindir)/ghc.exe INSTALLED_GHC_PKG_REAL=$(DESTDIR)$(bindir)/ghc-pkg.exe endif @@ -813,13 +816,15 @@ install_packages: libffi/package.conf.install rts/package.conf.install $(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 @@ -868,28 +873,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_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=$(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