summaryrefslogtreecommitdiff
path: root/rules
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2017-03-15 09:28:10 -0400
committerBen Gamari <ben@smart-cactus.org>2017-03-15 13:36:59 -0400
commita7be163196f452530b61cbb526631db946d20e8b (patch)
tree3dca75311a0de017f978be0ee0a682573f6d016f /rules
parent899fb8808da875ef191da367de4ff35d079124e1 (diff)
downloadhaskell-a7be163196f452530b61cbb526631db946d20e8b.tar.gz
Always build GHCi libs
Since the introduction of -split-sections, using GHCi with the RTS linker is really slow: ``` $ time (echo :quit | ./inplace/bin/ghc-stage2 --interactive -fexternal-interpreter) GHCi, version 8.1.20170304: http://www.haskell.org/ghc/ :? for help Prelude> Leaving GHCi. real 0m3.793s ``` (when we use `-fexternal-interpreter` it uses the RTS linker by default, you can make it use the system linker by adding `-dynamic`) Building the GHCi libs doesn't take much time or space in the GHC build, but makes things much quicker for people using the RTS linker: ``` $ time (echo :quit | ./inplace/bin/ghc-stage2 --interactive -fexternal-interpreter) GHCi, version 8.1.20170304: http://www.haskell.org/ghc/ :? for help Prelude> Leaving GHCi. real 0m0.285s ``` So I propose that we build and ship them unconditionally. Test Plan: validate, perf tests above Reviewers: bgamari, austin, niteria, erikd, Phyx Reviewed By: bgamari Subscribers: rwbarton, thomie, snowleopard Differential Revision: https://phabricator.haskell.org/D3298
Diffstat (limited to 'rules')
-rw-r--r--rules/build-package-data.mk6
-rw-r--r--rules/build-package-way.mk4
2 files changed, 4 insertions, 6 deletions
diff --git a/rules/build-package-data.mk b/rules/build-package-data.mk
index 8f3a8e7c71..a20afbca3f 100644
--- a/rules/build-package-data.mk
+++ b/rules/build-package-data.mk
@@ -32,11 +32,13 @@ endif
$1_$2_CONFIGURE_OPTS += --disable-library-for-ghci
ifeq "$$(filter v,$$($1_$2_WAYS))" "v"
$1_$2_CONFIGURE_OPTS += --enable-library-vanilla
+# Build the GHCi lib even if GHCi is dynamic (and therefore won't use
+# these by default), because they will be used by
+# (a) ghci -fexternal-interpreter
+# (b) statically-linked binaries that use the GHC package
ifeq "$$(GhcWithInterpreter)" "YES"
-ifneq "$$(DYNAMIC_GHC_PROGRAMS)" "YES"
$1_$2_CONFIGURE_OPTS += --enable-library-for-ghci
endif
-endif
else
$1_$2_CONFIGURE_OPTS += --disable-library-vanilla
endif
diff --git a/rules/build-package-way.mk b/rules/build-package-way.mk
index 8f61a355eb..f230ef5a5c 100644
--- a/rules/build-package-way.mk
+++ b/rules/build-package-way.mk
@@ -143,9 +143,6 @@ endif
endif
# Build the GHCi library
-ifeq "$$(DYNAMIC_GHC_PROGRAMS)" "YES"
-$1_$2_GHCI_LIB = $$($1_$2_dyn_LIB)
-else
ifeq "$3" "v"
$1_$2_GHCI_LIB = $1/$2/build/HS$$($1_$2_COMPONENT_ID).$$($3_osuf)
ifeq "$$($1_$2_BUILD_GHCI_LIB)" "YES"
@@ -164,7 +161,6 @@ $(call all-target,$1_$2,$$($1_$2_GHCI_LIB))
endif
endif # "$$($1_$2_BUILD_GHCI_LIB)" "YES"
endif # "$3" "v"
-endif # "$$(DYNAMIC_GHC_PROGRAMS)" "YES"
$(call profEnd, build-package-way($1,$2,$3))
endef # build-package-way