X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc.mk;h=199e07ae9eb682b5a14eed8c1509a67c666ef2cd;hb=6e9db31207f1bdc5fe2310d2e91664640a21c679;hp=5a1864e7d169d537b16aac4181add4efac468d4d;hpb=8ca5375714268a61d2549b02204bb44745cb4cbf;p=ghc-hetmet.git diff --git a/ghc.mk b/ghc.mk index 5a1864e..199e07a 100644 --- a/ghc.mk +++ b/ghc.mk @@ -101,6 +101,10 @@ endif just-makefiles: @: +ifneq "$(CLEANING)" "YES" +CLEANING = NO +endif + # ----------------------------------------------------------------------------- # Misc GNU make utils @@ -147,6 +151,11 @@ endif endif # ----------------------------------------------------------------------------- +# Utility definitions + +include rules/make-command.mk + +# ----------------------------------------------------------------------------- # Macros for standard targets include rules/all-target.mk @@ -270,6 +279,7 @@ include rules/build-package.mk include rules/build-package-way.mk include rules/haddock.mk include rules/tags-package.mk +include rules/extra-packages.mk # ----------------------------------------------------------------------------- # Registering hand-written package descriptions (used in libffi and rts) @@ -289,20 +299,33 @@ include rules/bindist.mk # ----------------------------------------------------------------------------- # Building libraries -define addPackage # args: $1 = package, $2 = condition - ifneq "$2" "" +define addPackageGeneral +# args: $1 = PACKAGES variable, $2 = package, $3 = condition + ifeq "$3" "" + $1 += $2 + else ifeq "$$(CLEANING)" "YES" - PACKAGES += $1 + $1 += $2 else - ifeq $2 - PACKAGES += $1 + ifeq $3 + $1 += $2 endif endif - else - PACKAGES += $1 endif endef +define addPackage # args: $1 = package, $2 = condition +$(call addPackageGeneral,PACKAGES,$1,$2) +endef + +define addPackage2 # args: $1 = package, $2 = condition +$(call addPackageGeneral,PACKAGES_STAGE2,$1,$2) +endef + +INTREE_ONLY_PACKAGES := haskeline mtl terminfo utf8-string xhtml + +$(foreach p,$(INTREE_ONLY_PACKAGES),$(eval libraries/$p_dist-install_HADDOCK_ME = NO)) + $(eval $(call addPackage,ghc-prim)) ifeq "$(CLEANING)" "YES" $(eval $(call addPackage,integer-gmp)) @@ -342,17 +365,10 @@ $(eval $(call addPackage,terminfo,($$(Windows),NO))) $(eval $(call addPackage,haskeline)) -$(foreach pkg,$(EXTRA_PACKAGES),$(eval $(call addPackage,$(pkg)))) +$(eval $(call extra-packages)) + +# ------------------------------------------------------- -ifneq "$(BootingFromHc)" "YES" -PACKAGES_STAGE2 += \ - dph/dph-base \ - dph/dph-prim-interface \ - dph/dph-prim-seq \ - dph/dph-prim-par \ - dph/dph-seq \ - dph/dph-par -endif # We assume that the stage0 compiler has a suitable bytestring package, # so we don't have to include it below. @@ -490,8 +506,6 @@ libraries/ghc-prim_dist-install_EXTRA_HADDOCK_SRCS = libraries/ghc-prim/dist-ins # # The rest : libraries/*/dist-install, compiler/stage2, ghc/stage2 -BUILD_DIRS = - ifneq "$(BINDIST)" "YES" BUILD_DIRS += \ $(GHC_MKDIRHIER_DIR) @@ -520,6 +534,7 @@ BUILD_DIRS += \ driver \ driver/ghci \ driver/ghc \ + driver/haddock \ libffi \ includes \ rts @@ -540,11 +555,6 @@ BUILD_DIRS += \ $(patsubst %, libraries/%, $(PACKAGES)) endif -ifneq "$(BootingFromHc)" "YES" -BUILD_DIRS += \ - libraries/dph -endif - ifeq "$(INTEGER_LIBRARY)" "integer-gmp" BUILD_DIRS += libraries/integer-gmp/gmp endif @@ -563,6 +573,11 @@ BUILD_DIRS += \ $(GHC_TOUCHY_DIR) endif +ifneq "$(BINDIST)" "YES" +BUILD_DIRS += \ + utils/mkUserGuidePart +endif + BUILD_DIRS += utils/count_lines BUILD_DIRS += utils/compare_sizes @@ -597,6 +612,7 @@ utils/ghctags_dist_DISABLE = YES utils/hpc_dist_DISABLE = YES utils/hsc2hs_dist-install_DISABLE = YES utils/ghc-pkg_dist-install_DISABLE = YES +utils/mkUserGuidePart_dist_DISABLE = YES utils/compare_sizes_dist_DISABLE = YES compiler_stage2_DISABLE = YES compiler_stage3_DISABLE = YES @@ -868,7 +884,7 @@ INSTALLED_GHC_REAL=$(DESTDIR)$(bindir)/ghc.exe INSTALLED_GHC_PKG_REAL=$(DESTDIR)$(bindir)/ghc-pkg.exe endif -INSTALLED_PACKAGES := $(filter-out haskeline mtl terminfo utf8-string xhtml,$(PACKAGES)) +INSTALLED_PACKAGES := $(filter-out $(INTREE_ONLY_PACKAGES),$(PACKAGES)) ifeq "$(InstallExtraPackages)" "NO" INSTALLED_PACKAGES := $(filter-out $(EXTRA_PACKAGES), $(INSTALLED_PACKAGES)) endif @@ -897,18 +913,23 @@ 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, $(ALL_INSTALLED_PACKAGES),\ - "$(GHC_CABAL_INPLACE)" install \ - "$(INSTALLED_GHC_REAL)" \ - "$(INSTALLED_GHC_PKG_REAL)" \ - "$(STRIP_CMD)" \ - "$(DESTDIR)$(topdir)" \ - $p $(INSTALL_DISTDIR_$p) \ - '$(DESTDIR)' '$(prefix)' '$(ghclibdir)' '$(docdir)/html/libraries' \ - $(RelocatableBuild) &&) true - $(foreach p, $(HIDDEN_PACKAGES),\ - "$(INSTALLED_GHC_PKG_REAL)" --global-conf "$(INSTALLED_PACKAGE_CONF)" \ - hide $p &&) true + $(foreach p, $(ALL_INSTALLED_PACKAGES), \ + $(call make-command, \ + "$(GHC_CABAL_INPLACE)" install \ + "$(INSTALLED_GHC_REAL)" \ + "$(INSTALLED_GHC_PKG_REAL)" \ + "$(STRIP_CMD)" \ + "$(DESTDIR)$(topdir)" \ + $p $(INSTALL_DISTDIR_$p) \ + '$(DESTDIR)' \ + '$(prefix)' \ + '$(ghclibdir)' \ + '$(docdir)/html/libraries' \ + $(RelocatableBuild))) + $(foreach p, $(HIDDEN_PACKAGES), \ + $(call make-command, \ + "$(INSTALLED_GHC_PKG_REAL)" \ + --global-conf "$(INSTALLED_PACKAGE_CONF)" hide $p)) # ----------------------------------------------------------------------------- # Binary distributions @@ -923,6 +944,7 @@ $(eval $(call bindist,.,\ INSTALL \ configure config.sub config.guess install-sh \ extra-gcc-opts.in \ + packages \ Makefile \ mk/config.mk.in \ $(INPLACE_BIN)/mkdirhier \ @@ -959,6 +981,9 @@ $(eval $(call bindist,.,\ libraries/gen_contents_index \ libraries/prologue.txt \ libraries/dph/LICENSE \ + libraries/dph/ghc-packages \ + libraries/dph/ghc-packages2 \ + libraries/dph/ghc-stage2-package \ )) endif # mk/project.mk gets an absolute path, so we manually include it in @@ -969,7 +994,7 @@ BIN_DIST_MK = $(BIN_DIST_PREP_DIR)/bindist.mk unix-binary-dist-prep: "$(RM)" $(RM_OPTS_REC) bindistprep/ "$(MKDIRHIER)" $(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 distrib/configure.ac distrib/README distrib/INSTALL; do ln -s ../../$$i $(BIN_DIST_PREP_DIR)/; done + set -e; for i in packages 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 distrib/configure.ac distrib/README distrib/INSTALL; 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)