summaryrefslogtreecommitdiff
path: root/hadrian/README.md
diff options
context:
space:
mode:
authorAlp Mestanogullari <alpmestan@gmail.com>2018-12-11 13:10:03 -0500
committerBen Gamari <ben@smart-cactus.org>2018-12-11 13:10:04 -0500
commit7491cedb20d15a54e905205c51aea72a13ac73aa (patch)
treee6fe0373831f9eccd6aad2c2823a26486551b118 /hadrian/README.md
parent066d3989a45003d2caaf96fab90ec30b55a647ee (diff)
downloadhaskell-7491cedb20d15a54e905205c51aea72a13ac73aa.tar.gz
Hadrian: simple targets for building libraries and executables
This patch introduces (phony) build targets of the form (1) stage<N>:<lib>:<name> (e.g: stage1:lib:Cabal) (2) stage<N>:<exe>:<name> (e.g: stage2:exe:ghc-bin) where (1) builds the given library with the stage N compiler and (2) builds the given executable with the stage N-1 compiler. This patch may be generating too many such targets but it's a first stab that we can refine. This fixes #15949. Test Plan: hadrian/build.sh stage1:exe:ghc-bin Reviewers: bgamari, snowleopard Reviewed By: bgamari Subscribers: rwbarton, carter GHC Trac Issues: #15949 Differential Revision: https://phabricator.haskell.org/D5434
Diffstat (limited to 'hadrian/README.md')
-rw-r--r--hadrian/README.md30
1 files changed, 30 insertions, 0 deletions
diff --git a/hadrian/README.md b/hadrian/README.md
index b88d08dd47..7bd5fa8a34 100644
--- a/hadrian/README.md
+++ b/hadrian/README.md
@@ -110,6 +110,36 @@ by Shake oracles.
The Make-based build system uses `mk/build.mk` to specify user build settings. We
use `hadrian/UserSettings.hs` for the same purpose, see [documentation](doc/user-settings.md).
+#### Building libraries and executables
+
+You can build a specific library or executable for a given stage by doing
+`build stage<N>:<lib|exe>:<package name>`. Examples:
+
+``` sh
+# build the stage 1 GHC compiler (the executable), the binary will be placed
+# under _build/stage0/bin/ghc (because it is built by the stage0 compiler).
+build stage1:exe:ghc-bin
+
+# build the stage 2 GHC compiler, the binary will be placed under
+# _build/stage1/bin/ghc (because it is built by the stage1 compiler).
+build stage2:exe:ghc-bin
+
+# build the ghc library with the boot compiler, and register it
+# in the package database under _build/stage0/lib.
+build stage0:lib:ghc
+
+# build the Cabal library with the stage 1 compiler and register it
+# in the package database under _build/stage1/lib.
+
+# build the text library with the stage 2 compiler and register it
+# in the package database under _build/stage2/lib.
+build stage2:lib:text
+
+# build the stage 2 haddock executable and place the program under
+# _build/stage1/haddock.
+build stage2:exe:haddock
+```
+
#### Clean and full rebuild
* `build clean` removes all build artefacts.