summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac5
-rw-r--r--mk/config.mk.in2
-rw-r--r--rules/distdir-way-opts.mk8
3 files changed, 14 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index 533ea297e9..378578a50b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -162,6 +162,11 @@ FP_COMPARE_VERSIONS([$GhcVersion],[-gt],[7.7],
CMM_SINK_BOOTSTRAP_IS_NEEDED=NO)
AC_SUBST(CMM_SINK_BOOTSTRAP_IS_NEEDED)
+FP_COMPARE_VERSIONS([$GhcVersion],[-lt],[7.9],
+ SUPPORTS_PACKAGE_KEY=NO,
+ SUPPORTS_PACKAGE_KEY=YES)
+AC_SUBST(SUPPORTS_PACKAGE_KEY)
+
# GHC is passed to Cabal, so we need a native path
if test "${WithGhc}" != ""
then
diff --git a/mk/config.mk.in b/mk/config.mk.in
index d26684e8d1..c210cd3b4f 100644
--- a/mk/config.mk.in
+++ b/mk/config.mk.in
@@ -484,6 +484,8 @@ GHC_PACKAGE_DB_FLAG = @GHC_PACKAGE_DB_FLAG@
CMM_SINK_BOOTSTRAP_IS_NEEDED = @CMM_SINK_BOOTSTRAP_IS_NEEDED@
+SUPPORTS_PACKAGE_KEY = @SUPPORTS_PACKAGE_KEY@
+
#-----------------------------------------------------------------------------
# C compiler
#
diff --git a/rules/distdir-way-opts.mk b/rules/distdir-way-opts.mk
index 898485c0ca..0a6d84e951 100644
--- a/rules/distdir-way-opts.mk
+++ b/rules/distdir-way-opts.mk
@@ -81,9 +81,15 @@ define distdir-way-opts # args: $1 = dir, $2 = distdir, $3 = way, $4 = stage
# $1_$2_$3_MOST_HC_OPTS is also passed to C compilations when we use
# GHC as the C compiler.
+ifeq "$(SUPPORTS_PACKAGE_KEY)" "NO"
+ifeq "$4" "0"
+$4_USE_PACKAGE_KEY=NO
+endif
+endif
+
# ToDo: It would be more accurate to version test this against what version of
# GHC we're using to see if it understands package-key
-ifeq "$4" "0"
+ifeq "$($4_USE_PACKAGE_KEY)" "NO"
$1_$2_$4_DEP_OPTS = \
$$(foreach pkg,$$($1_$2_DEPS),-package $$(pkg))
$4_THIS_PACKAGE_KEY = -package-name