Adds Rules for IntegerGmp
[hadrian.git] / README.md
1 Shaking up GHC
2 ==============
3
4 As part of my 6-month research secondment to Microsoft Research in Cambridge
5 I am taking up the challenge of migrating the current [GHC][ghc] build system
6 based on standard `make` into a new and (hopefully) better one based on
7 [Shake][shake]. If you are curious about the project you can find more details
8 on the [wiki page][ghc-shake-wiki] and in this [blog post][shake-blog-post].
9
10 This is supposed to go into the `shake-build` directory of the GHC source tree.
11
12 [Join us on #shaking-up-ghc on Freenode](irc://chat.freenode.net/#shaking-up-ghc)
13
14 Trying it
15 ---------
16
17 Please see the [Preparation][ghc-preparation] on the haskell wiki
18 for general preparation. The preparation steps for the `shake` build system are
19 identical to those for the `make` build system. This means that you don't need
20 to adjust anything if you are already familiar with building ghc using the `make`
21 build system.
22
23 ### Linux / Mac OS X
24
25 ```bash
26 git clone git://git.haskell.org/ghc
27 cd ghc
28 git submodule update --init
29 git clone git://github.com/snowleopard/shaking-up-ghc shake-build
30 ./boot
31 ./configure
32 # or if you want to use clang (e.g. building on OS X)
33 ./configure --with-gcc=$(which clang) # See #26
34
35 ```
36
37 Now you have a couple of options:
38
39 - `./shake-build/build.sh` to run the script directly. You'll need to have
40   `shake` installed globally.
41 - `./shake-build/build.cabal.sh` to install the build system in a Cabal sandbox
42   and then run it.
43
44
45
46 ### Windows
47
48 ```bash
49 git clone --recursive git://git.haskell.org/ghc.git
50 cd ghc
51 git clone git://github.com/snowleopard/shaking-up-ghc shake-build
52 ./boot
53 ./configure --enable-tarballs-autodownload
54 shake-build/build.bat
55 ```
56 Also see the [Building GHC on Windows guide][ghc-windows-building-guide].
57
58 ### Resetting the build
59
60 To reset the new build system run the build script with `-B` flag. This will force Shake to rerun all rules, even if the results of the previous build are still in the GHC tree. This is a temporary solution; we are working on a proper reset functionality (see [#32](https://github.com/snowleopard/shaking-up-ghc/issues/32)).
61
62
63 How to contribute
64 -----------------
65
66 The best way to contribute is to try the new build system, report the issues
67 you found, and attempt to fix them. Please note the codebase is very unstable
68 at present and we expect a lot of further refactoring. Before attempting to
69 fix any issue do make sure no one else is already working on it. The
70 documentation is currently non-existent, but we will start addressing this
71 once the codebase stabilises.
72
73
74 [ghc-shake-wiki]: https://ghc.haskell.org/trac/ghc/wiki/Building/Shake
75 [ghc-preparation]: https://ghc.haskell.org/trac/ghc/wiki/Building/Preparation
76 [ghc-windows-building-guide]: https://ghc.haskell.org/trac/ghc/wiki/Building/Preparation/Windows
77 [ghc]: https://en.wikipedia.org/wiki/Glasgow_Haskell_Compiler
78 [shake-blog-post]: https://blogs.ncl.ac.uk/andreymokhov/shaking-up-ghc
79 [shake]: https://github.com/ndmitchell/shake/blob/master/README.md