X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=ghc.mk;h=de304119b85e5609f5524787693dff5ae0d31c93;hp=3348d47b535b8c887ef8bbe509d85f2a86ca0f5d;hb=5de363ca9ebdb7d85e3c353c1cffdf0a1c11128e;hpb=b6fa4b36c7b0c38f36d79b2a74f1575fa0bee052 diff --git a/ghc.mk b/ghc.mk index 3348d47..de30411 100644 --- a/ghc.mk +++ b/ghc.mk @@ -285,7 +285,9 @@ include rules/bindist.mk # Packages # -------------------------------- -# Subsets of packages +# Properties of packages +# These lists say "if this package is built, here's a property it has" +# They do not say "this package will be built"; see $(PACKAGES_xx) for that # Packages that are built but not installed INTREE_ONLY_PACKAGES := haskeline mtl terminfo utf8-string xhtml @@ -295,7 +297,7 @@ INTREE_ONLY_PACKAGES := haskeline mtl terminfo utf8-string xhtml # packages. STAGE2_PACKAGES := dph/dph-base dph/dph-prim-interface dph/dph-prim-seq \ dph/dph-common dph/dph-prim-par dph/dph-par dph/dph-seq \ - vector + vector primitive # Packages that are built by stage0, in addition to stage1. These # packages are dependencies of GHC, that we do not assume the stage0 @@ -305,11 +307,24 @@ STAGE2_PACKAGES := dph/dph-base dph/dph-prim-interface dph/dph-prim-seq \ # so we don't have to include it below. STAGE0_PACKAGES = Cabal hpc extensible-exceptions binary bin-package-db -# -------------------------------- -# Building the lists of packages +# These packages are installed, but are installed hidden +# Why install them at all? Because the 'ghc' package depends on them +HIDDEN_PACKAGES = binary -# We need to build two lists: -# +# $(EXTRA_PACKAGES) is another classification, of packages built but +# not installed +# It is set in rules/extra-package.mk, +# by $(call extra-packages) a little further down +# this ghc.mk + + +# -------------------------------- +# Packages to build +# The lists of packages that we *actually* going to build in each stage: +# +# $(STAGE0_PACKAGE) does double duty; it really is the list of packages +# we build the bootstrap compiler in stage 0 +# # $(PACKAGES) A list of directories relative to libraries/ containing # packages that will be built by stage1, in dependency # order. @@ -752,6 +767,17 @@ ifeq "$(UseArchivesForGhci)" "NO" ghc/stage2/build/tmp/$(ghc_stage2_PROG) : $(GHCI_LIBS) endif +ifeq "$(UseArchivesForGhci)" "YES" +GHCI_lib_way = v +else +GHCI_lib_way = GHCI +endif + +# Deps for TH uses in libraries +$(foreach way, $(GhcLibWays),$(eval \ +libraries/vector/dist-install/build/Data/Vector/Fusion/Stream/Monadic.$($(way)_osuf): \ + $(libraries/primitive_dist-install_$(GHCI_lib_way)_LIB) \ + )) endif # ----------------------------------------------------------------------------- @@ -897,28 +923,22 @@ INSTALLED_GHC_REAL=$(DESTDIR)$(bindir)/ghc.exe INSTALLED_GHC_PKG_REAL=$(DESTDIR)$(bindir)/ghc-pkg.exe endif -INSTALLED_PACKAGES := $(filter-out $(INTREE_ONLY_PACKAGES),$(PACKAGES)) +INSTALLED_PKG_DIRS := $(addprefix libraries/,$(PACKAGES)) \ + compiler \ + $(addprefix libraries/,$(PACKAGES_STAGE2)) ifeq "$(InstallExtraPackages)" "NO" -INSTALLED_PACKAGES := $(filter-out $(EXTRA_PACKAGES), $(INSTALLED_PACKAGES)) +INSTALLED_PKG_DIRS := $(filter-out $(addprefix libraries/,$(EXTRA_PACKAGES)),\ + $(INSTALLED_PKG_DIRS)) endif +INSTALLED_PKG_DIRS := $(filter-out $(addprefix libraries/,$(INTREE_ONLY_PACKAGES)),\ + $(INSTALLED_PKG_DIRS)) -HIDDEN_PACKAGES = binary - -define set_INSTALL_DISTDIR -# $1 = libraries/base, $2 = dist-install -# => -# INSTALL_DISTDIR_libraries/base = dist-install -INSTALL_DISTDIR_$1 = $2 -endef - -$(eval $(foreach p,$(INSTALLED_PACKAGES) $(PACKAGES_STAGE2),\ -$(call set_INSTALL_DISTDIR,libraries/$p,dist-install))) +# Set the INSTALL_DISTDIR_p for each package; compiler is special +$(foreach p,$(filter-out compiler,$(INSTALLED_PKG_DIRS)),\ + $(eval INSTALL_DISTDIR_$p = dist-install)) INSTALL_DISTDIR_compiler = stage2 -ALL_INSTALLED_PACKAGES = $(addprefix libraries/,$(INSTALLED_PACKAGES)) \ - compiler \ - $(addprefix libraries/,$(PACKAGES_STAGE2)) - +# Now we can do the installation install_packages: install_libexecs install_packages: libffi/package.conf.install rts/package.conf.install $(INSTALL_DIR) "$(DESTDIR)$(topdir)" @@ -926,7 +946,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, $(ALL_INSTALLED_PACKAGES), \ + $(foreach p, $(INSTALLED_PKG_DIRS), \ $(call make-command, \ "$(GHC_CABAL_INPLACE)" install \ "$(INSTALLED_GHC_REAL)" \