From: Simon Marlow Date: Thu, 5 Nov 2009 16:03:21 +0000 (+0000) Subject: Fix some more build bugs exposed by the addition of the ghc dependency to dph X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=a075bccf8a21c3b98640b4f72a0ab7084c9b0882 Fix some more build bugs exposed by the addition of the ghc dependency to dph See comments for details. --- diff --git a/ghc.mk b/ghc.mk index d352d5c..2408049 100644 --- a/ghc.mk +++ b/ghc.mk @@ -525,7 +525,7 @@ endif ifneq "$(CLEANING)" "YES" BUILD_DIRS += \ - $(patsubst %, libraries/%, $(PACKAGES) $(PACKAGES_STAGE2)) + $(patsubst %, libraries/%, $(PACKAGES)) endif ifneq "$(BootingFromHc)" "YES" @@ -549,6 +549,12 @@ BUILD_DIRS += \ $(GHC_TOUCHY_DIR) endif +ifneq "$(CLEANING)" "YES" +# After compiler/, because these packages depend on it +BUILD_DIRS += \ + $(patsubst %, libraries/%, $(PACKAGES_STAGE2)) +endif + # XXX libraries/% must come before any programs built with stage1, see # Note [lib-depends]. @@ -685,6 +691,15 @@ libraries/bin-package-db/dist-boot/build/Distribution/InstalledPackageInfo/Binar $(foreach pkg,$(BOOT_PKGS),$(eval libraries/$(pkg)_dist-boot_HC_OPTS += $$(GhcBootLibHcOpts))) +# Make sure we have all the GHCi libs by the time we've built +# ghc-stage2. DPH includes a bit of Template Haskell which needs the +# GHCI libs, and we don't have a better way to express that dependency. +# +GHCI_LIBS = $(foreach lib,$(PACKAGES),$(libraries/$(lib)_dist-install_GHCI_LIB)) \ + $(compiler_stage2_GHCI_LIB) + +ghc/stage2/build/tmp/$(ghc_stage2_PROG) : $(GHCI_LIBS) + endif # ----------------------------------------------------------------------------- diff --git a/rules/build-package-way.mk b/rules/build-package-way.mk index f7480aa..e674b7a 100644 --- a/rules/build-package-way.mk +++ b/rules/build-package-way.mk @@ -26,6 +26,15 @@ $(call hs-objs,$1,$2,$3) $1_$2_$3_LIB = $1/$2/build/libHS$$($1_PACKAGE)-$$($1_$2_VERSION)$$($3_libsuf) $$($1_PACKAGE)-$($1_$2_VERSION)_$2_$3_LIB = $$($1_$2_$3_LIB) +# hack: the DEPS_LIBS mechanism assumes that the distdirs for packges +# that depend on each other are the same, but that is not the case for +# ghc where we use stage1/stage2 rather than dist/dist-install. +# Really we should use a consistent scheme for distdirs, but in the +# meantime we work around it by defining ghc-_dist-install_way_LIB: +ifeq "$$($1_PACKAGE) $2" "ghc stage2" +$$($1_PACKAGE)-$($1_$2_VERSION)_dist-install_$3_LIB = $$($1_$2_$3_LIB) +endif + # All the .a/.so library file dependencies for this library $1_$2_$3_DEPS_LIBS=$$(foreach dep,$$($1_$2_DEPS),$$($$(dep)_$2_$3_LIB))