Commit 13d40ff6 authored by Michael Sloan's avatar Michael Sloan Committed by Ben Gamari

Add a script for running a ghci that can load and run ghc

Add scripts and .ghci files for loading GHC into GHCi

Major credit to Csongor Kiss who wrote nearly all of settings.ghci

Some small modifications to GHC are needed to make this work, and this
diff depends on [D4986]( being

Test Plan:
Manual for now. I have some thoughts on how to run the entire testsuite

Reviewers: alpmestan, mpickering, goldfire, bgamari, erikd

Reviewed By: alpmestan

Subscribers: rwbarton, thomie, carter

Differential Revision:
parent 25e1ea99
--command utils/ghc-in-ghci/
--reload compiler
--reload ghc
--reload includes
--restart utils/ghc-in-ghci/
--restart utils/ghc-in-ghci/load-main.ghci
--restart utils/ghc-in-ghci/settings.ghci
:set prompt "%s [inner]> "
#!/bin/sh -xe
# Runs ghc-stage2 with GHCi settings that allow GHC to be loaded and run in the
# interpreter. Options provided on the command-line will be passed directly to
# the GHCi invocation.
# Note that this script is intended to be run from the root of the GHC repo,
# like this:
# ./utils/ghc-in-ghci/
# This is substantially faster than doing an actual compile, and so can aid in
# tighter development iterations. It can be made even faster by specifying "-jN"
# for parallelism. Typically choosing an N value close to the number of logical
# CPU cores you have leads to faster loads. Here's how to specify -j:
# ./utils/ghc-in-ghci/ -j4
# The script will also run `:load Main`, to load GHC's main module. After that,
# running `main` will run an inner GHCi, because there is a default `:set args
# --interactive ...`. To override this, use `:set args ...` or `:main ...`.
# If you don't want to wait for `:load Main`, since you want to load some other
# module, then you can use `Ctrl+C` to cancel the initial load.
export _GHC_TOP_DIR=./inplace/lib
exec ./inplace/bin/ghc-stage2 \
--interactive \
-ghci-script ./utils/ghc-in-ghci/settings.ghci \
-ghci-script ./utils/ghc-in-ghci/load-main.ghci \
-odir ./ghci-tmp \
-hidir ./ghci-tmp \
+RTS -A128m -RTS \
:set -icompiler/backpack
:set -icompiler/basicTypes
:set -icompiler/cmm
:set -icompiler/codeGen
:set -icompiler/coreSyn
:set -icompiler/deSugar
:set -icompiler/ghci
:set -icompiler/hsSyn
:set -icompiler/iface
:set -icompiler/llvmGen
:set -icompiler/main
:set -icompiler/nativeGen
:set -icompiler/parser
:set -icompiler/prelude
:set -icompiler/profiling
:set -icompiler/rename
:set -icompiler/simplCore
:set -icompiler/simplStg
:set -icompiler/specialise
:set -icompiler/stgSyn
:set -icompiler/stranal
:set -icompiler/typecheck
:set -icompiler/types
:set -icompiler/utils
:set -icompiler/vectorise
:set -ighc
:set -Icompiler
:set -Icompiler/stage2
:set -Icompiler/stage2/build
:set -icompiler/stage2/build
:set -Iincludes
:set -Iincludes/dist-derivedconstants/header
:set -package=ghc-boot-th
:set -DSTAGE=2
:set -DGHCI
:set -XNoImplicitPrelude
-- Setup args so that running "main" will run ghci and set the prompt to
-- indicate that it is an inner ghci.
:set args --interactive -ghci-script utils/ghc-in-ghci/inner.ghci
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment