[commit: ghc] master: Make bootstrapping more robust (525a304)
git at git.haskell.org
git at git.haskell.org
Tue Feb 16 22:13:16 UTC 2016
Repository : ssh://git@git.haskell.org/ghc
On branch : master
Link : http://ghc.haskell.org/trac/ghc/changeset/525a304f8c010ce73f1456e507aca668eb4917ac/ghc
>---------------------------------------------------------------
commit 525a304f8c010ce73f1456e507aca668eb4917ac
Author: Herbert Valerio Riedel <hvr at gnu.org>
Date: Tue Feb 16 22:41:29 2016 +0100
Make bootstrapping more robust
Starting with GHC 8.0 we rely on GHC's native cabal macro generation.
As a side-effect, this limits the packages in scope when compiling
`ghc-cabal` for all bootstrapping GHCs.
Reviewers: ezyang, austin, thomie, bgamari
Reviewed By: thomie, bgamari
Differential Revision: https://phabricator.haskell.org/D1897
GHC Trac Issues: #11413
>---------------------------------------------------------------
525a304f8c010ce73f1456e507aca668eb4917ac
utils/ghc-cabal/cabal_macros_boot.h | 4 +++-
utils/ghc-cabal/ghc.mk | 16 ++++++++++++++++
2 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/utils/ghc-cabal/cabal_macros_boot.h b/utils/ghc-cabal/cabal_macros_boot.h
index a2da63a..3b130e8 100644
--- a/utils/ghc-cabal/cabal_macros_boot.h
+++ b/utils/ghc-cabal/cabal_macros_boot.h
@@ -1,6 +1,8 @@
/* defines a few MIN_VERSION_...() macros used by some of the bootstrap packages */
-#if __GLASGOW_HASKELL__ >= 711
+#if __GLASGOW_HASKELL__ >= 800
+/* macros are generated accurately by GHC on the fly */
+#elif __GLASGOW_HASKELL__ >= 711
/* package base-4.9.0.0 */
# define MIN_VERSION_base(major1,major2,minor) (\
(major1) < 4 || \
diff --git a/utils/ghc-cabal/ghc.mk b/utils/ghc-cabal/ghc.mk
index 49a2ba3..c06a011 100644
--- a/utils/ghc-cabal/ghc.mk
+++ b/utils/ghc-cabal/ghc.mk
@@ -18,6 +18,20 @@ CABAL_DOTTED_VERSION := $(shell grep "^version:" libraries/Cabal/Cabal/Cabal.cab
CABAL_VERSION := $(subst .,$(comma),$(CABAL_DOTTED_VERSION))
CABAL_CONSTRAINT := --constraint="Cabal == $(CABAL_DOTTED_VERSION)"
+# Starting with GHC 8.0 we make use of GHC's native ability to
+# generate MIN_VERSION_<pkgname>() CPP macros (rather than relying on
+# the fragile `cabal_macros_boot.h` hack). The generation of those
+# macros is triggered by `-hide-all-packages`, so we have to explicitly
+# enumerate all packages we need in scope. In order to simplify the logic,
+# we pass `-hide-all-packages` also to GHCs < 8, and we include
+# `cabal_macros_boot.h` also for GHC >= 8 (in which case it becomes a
+# dummy include that doesn't contribute any macro definitions).
+ifeq "$(Windows_Host)" "YES"
+CABAL_BUILD_DEPS := base array time containers bytestring deepseq process pretty directory Win32
+else
+CABAL_BUILD_DEPS := base array time containers bytestring deepseq process pretty directory unix
+endif
+
ghc-cabal_DIST_BINARY_NAME = ghc-cabal$(exeext0)
ghc-cabal_DIST_BINARY = utils/ghc-cabal/dist/build/tmp/$(ghc-cabal_DIST_BINARY_NAME)
ghc-cabal_INPLACE = inplace/bin/$(ghc-cabal_DIST_BINARY_NAME)
@@ -34,6 +48,8 @@ $(ghc-cabal_DIST_BINARY): utils/ghc-cabal/Main.hs $(TOUCH_DEP) | $$(dir $$@)/. b
"$(GHC)" $(SRC_HC_OPTS) \
$(addprefix -optc, $(SRC_CC_OPTS) $(CONF_CC_OPTS_STAGE0)) \
$(addprefix -optl, $(SRC_LD_OPTS) $(CONF_LD_OPTS_STAGE0)) \
+ -hide-all-packages \
+ $(addprefix -package , $(CABAL_BUILD_DEPS)) \
--make utils/ghc-cabal/Main.hs -o $@ \
-no-user-$(GHC_PACKAGE_DB_FLAG) \
-Wall -fno-warn-unused-imports -fno-warn-warnings-deprecations \
More information about the ghc-commits
mailing list