diff options
Diffstat (limited to 'utils')
-rw-r--r-- | utils/ghc-in-ghci/inner.ghci | 1 | ||||
-rw-r--r-- | utils/ghc-in-ghci/load-main.ghci | 1 | ||||
-rwxr-xr-x | utils/ghc-in-ghci/run.sh | 36 | ||||
-rw-r--r-- | utils/ghc-in-ghci/settings.ghci | 41 |
4 files changed, 79 insertions, 0 deletions
diff --git a/utils/ghc-in-ghci/inner.ghci b/utils/ghc-in-ghci/inner.ghci new file mode 100644 index 0000000000..72834c96b5 --- /dev/null +++ b/utils/ghc-in-ghci/inner.ghci @@ -0,0 +1 @@ +:set prompt "%s [inner]> " diff --git a/utils/ghc-in-ghci/load-main.ghci b/utils/ghc-in-ghci/load-main.ghci new file mode 100644 index 0000000000..a79855744e --- /dev/null +++ b/utils/ghc-in-ghci/load-main.ghci @@ -0,0 +1 @@ +:load Main diff --git a/utils/ghc-in-ghci/run.sh b/utils/ghc-in-ghci/run.sh new file mode 100755 index 0000000000..2dda647903 --- /dev/null +++ b/utils/ghc-in-ghci/run.sh @@ -0,0 +1,36 @@ +#!/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/run.sh + +# 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/run.sh -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 \ + "$@" diff --git a/utils/ghc-in-ghci/settings.ghci b/utils/ghc-in-ghci/settings.ghci new file mode 100644 index 0000000000..1348274288 --- /dev/null +++ b/utils/ghc-in-ghci/settings.ghci @@ -0,0 +1,41 @@ +: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 -DGHC_LOADED_INTO_GHCI +: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 |