X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=ghc.mk;h=de304119b85e5609f5524787693dff5ae0d31c93;hp=8fb95d0689f52aa269bfb5429663d74caccd383b;hb=afd6da0d938747f45b16c8d6eb5d786e59a21218;hpb=a613254621412c595207bcc5681e0f2a3e5ce7d0 diff --git a/ghc.mk b/ghc.mk index 8fb95d0..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. @@ -485,6 +500,23 @@ $(error Unknown integer library: $(INTEGER_LIBRARY)) endif endif +# ---------------------------------------------- +# Checking packages with 'cabal check' + +ifeq "$(CHECK_PACKAGES)" "YES" +all: check_packages +endif + +# These packages don't pass the Cabal checks because hs-source-dirs +# points outside the source directory. This isn't a real problem in +# these cases, so we just skip checking them. +# NB. these must come before we include the ghc.mk files below, because +# they disable the relevant rules. +CHECKED_libraries/dph/dph-seq = YES +CHECKED_libraries/dph/dph-par = YES +# In compiler's case, include-dirs points outside of the source tree +CHECKED_compiler = YES + # ----------------------------------------------------------------------------- # Include build instructions from all subdirs @@ -655,21 +687,6 @@ $(foreach pkg,$(PACKAGES) $(PACKAGES_STAGE2),$(eval libraries/$(pkg)_dist-instal # Add $(GhcBootLibHcOpts) to all stage0 package builds $(foreach pkg,$(STAGE0_PACKAGES),$(eval libraries/$(pkg)_dist-boot_HC_OPTS += $$(GhcBootLibHcOpts))) -# ---------------------------------------------- -# Checking packages with 'cabal check' - -ifeq "$(CHECK_PACKAGES)" "YES" -all: check_packages -endif - -# These packages don't pass the Cabal checks because hs-source-dirs -# points outside the source directory. This isn't a real problem in -# these cases, so we just skip checking them. -CHECKED_libraries/dph/dph-seq = YES -CHECKED_libraries/dph/dph-par = YES -# In compiler's case, include-dirs points outside of the source tree -CHECKED_compiler = YES - # ----------------------------------------------- # Haddock-related bits @@ -750,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 # ----------------------------------------------------------------------------- @@ -895,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)" @@ -924,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)" \