Add a free ACM download link for the paper
[hadrian.git] / README.md
index b25e31a..0684380 100644 (file)
--- a/README.md
+++ b/README.md
@@ -7,7 +7,8 @@ Hadrian is a new build system for the [Glasgow Haskell Compiler][ghc]. It is bas
 on [Shake][shake] and we hope that it will soon replace the current
 [Make-based build system][make]. If you are curious about the rationale behind the
 project and the architecture of the build system you can find more details in
-this [Haskell Symposium 2016 paper][paper] and this [Haskell eXchange 2016 talk][talk].
+this [Haskell Symposium 2016 paper](https://dl.acm.org/authorize?N41275) and this
+[Haskell eXchange 2016 talk][talk].
 
 The new build system can work side-by-side with the existing build system. Note, there is
 some interaction between them: they put (some) build results in the same directories,
@@ -16,34 +17,35 @@ e.g. the resulting GHC is `inplace/bin/ghc-stage2`.
 Your first build
 ----------------
 
-Beware, the build system is in the alpha development phase. Things are shaky and often
+Beware, the build system is in the alpha development phase. Things are shaky and sometimes
 break; there are numerous [known issues][issues]. Not afraid? Then put on the helmet and
-follow these steps:
+run the following command from root of the GHC tree:
 
-* If you have never built GHC before, start with the [preparation guide][ghc-preparation].
+```
+hadrian/build.sh -j
+```
 
-* Hadrian is written in Haskell and depends on the following
-packages: `ansi-terminal extra mtl quickcheck shake`.
+or on Windows:
 
-* Get the sources. It is important for the build system to be in the `hadrian` directory
-of the GHC source tree:
+```
+hadrian/build.bat -j
+```
 
-    ```bash
-    git clone --recursive git://git.haskell.org/ghc.git
-    cd ghc
-    git clone git://github.com/snowleopard/hadrian
-    ```
+Here flag `-j` enables parallelism and is optional. We will further refer to the build script
+simply as `build`. Note that Hadrian can also run the `boot` and `configure` scripts
+automatically if you pass the flag `--configure`, or simply `-c`. See the overview of
+command line flags below.
+
+Notes:
+
+* If the default build script doesn't work, you might want to give a try to another one, e.g. based
+on Cabal sandboxes (`build.cabal.*`), Stack (`build.stack.*`) or the global package database
+(`build.global-db.*`). Also see [instructions for building GHC on Windows using Stack][windows-build].
 
-* Build GHC using `hadrian/build.sh` or `hadrian/build.bat` (on Windows) instead
-of `make`. You might want to enable parallelism with `-j`. We will further refer to the
-build script simply as `build`. Note that Hadrian runs the `boot` and `configure`
-scripts automatically when needed. Use `--skip-configure` to suppress this behaviour
-(see overview of command line flags below).
+* Hadrian is written in Haskell and depends on `shake` (plus a few packages that `shake` depends on),
+`ansi-terminal`, `mtl`, `quickcheck`, and GHC core libraries.
 
-* If the default build script doesn't work, you might want to give a try to a more
-specific one based on Cabal sandboxes (`build.cabal.sh`), Stack (`build.stack.bat`)
-or the global package database (`build.global-db.sh`). Also
-see [instructions for building GHC on Windows using Stack][windows-build]. 
+* If you have never built GHC before, start with the [preparation guide][ghc-preparation].
 
 Using the build system
 ----------------------
@@ -54,6 +56,17 @@ are placed into `_build` and `inplace` directories.
 
 In addition to standard Shake flags (try `--help`), the build system
 currently supports several others:
+
+* `--configure` or `-c`: use this flag to run the `boot` and `configure` scripts
+automatically, so that you don't have to remember to run them manually as you normally
+do when using Make (typically only in the first build):
+    ```bash
+    ./boot
+    ./configure # On Windows run ./configure --enable-tarballs-autodownload
+    ```
+    Beware that with this flag Hadrian may do network I/O on Windows to download necessary
+    tarballs, which may sometimes be undesirable.
+
 * `--flavour=FLAVOUR`: choose a build flavour. The following settings are currently supported:
 `default`, `quick`, `quickest`, `perf`, `prof`, `devel1` and `devel2`. As an example, the
 `quickest` flavour adds `-O0` flag to all GHC invocations and builds libraries only in the
@@ -66,8 +79,6 @@ on a feature that affects both Stage1 and Stage2 compilers, but may lead to inco
 build results. To unfreeze Stage1 GHC simply drop the `--freeze1` flag and Hadrian will
 rebuild all out-of-date files.
 
-* `--haddock`: build Haddock documentation.
-
 * `--integer-simple`: build GHC using the `integer-simple` integer library (instead
 of `integer-gmp`).
 
@@ -80,17 +91,6 @@ colours).
 settings: `none`, `brief` (one line per build command; this is the default setting),
 `normal` (typically a box per build command), and `unicorn` (when `normal` just won't do).
 
-* `--skip-configure`: use this flag to suppress the default behaviour of Hadrian that
-runs the `boot` and `configure` scripts automatically when needed, so that you don't have
-to remember to run them manually. With `--skip-configure` you will need to manually run:
-    ```bash
-    ./boot
-    ./configure # On Windows run ./configure --enable-tarballs-autodownload
-    ```
-    as you normally do when using `make`. Beware, by default Hadrian may do network I/O on
-Windows to download necessary tarballs, which may sometimes be undesirable; `--skip-configure`
-is your friend in such cases.
-
 * `--split-objects`: generate split objects, which are switched off by default. Due to
 a GHC [bug][ghc-split-objs-bug], you need a full clean rebuild when using this flag.
 
@@ -109,13 +109,19 @@ use `hadrian/UserSettings.hs` for the same purpose, see [documentation](doc/user
 * `build -B` forces Shake to rerun all rules, even if the previous build results are
 are still up-to-date.
 
+#### Documentation
+
+To build GHC documentation, run `build docs`. Note that finer-grain documentation
+targets (e.g. building only HTML documentation or only the GHC User's Guide)
+are currently not supported.
+
 #### Source distribution
 
-To build a GHC source distribution tarball, run Hadrian with the `sdist-ghc` target.
+To build a GHC source distribution tarball, run `build sdist-ghc`.
 
 #### Installation
 
-To build and install GHC artifacts, run the `install` target.
+To build and install GHC artifacts, run `build install`.
 
 By default, GHC will be installed to the specified _prefix_ path on your system,
 relative to the root of the file system. For example on UNIX, GHC will be installed
@@ -174,7 +180,6 @@ enjoy the project.
 [ghc]: https://en.wikipedia.org/wiki/Glasgow_Haskell_Compiler
 [shake]: https://github.com/ndmitchell/shake
 [make]: https://ghc.haskell.org/trac/ghc/wiki/Building/Architecture
-[paper]: https://www.staff.ncl.ac.uk/andrey.mokhov/Hadrian.pdf
 [talk]: https://skillsmatter.com/skillscasts/8722-meet-hadrian-a-new-build-system-for-ghc
 [issues]: https://github.com/snowleopard/hadrian/issues
 [ghc-preparation]: https://ghc.haskell.org/trac/ghc/wiki/Building/Preparation