Clean up Windows script
[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
13
14
15
16 Trying it
17 ---------
18
19 ### Linux
20
21 ```bash
22 git clone git://git.haskell.org/ghc
23 cd ghc
24 git submodule update --init
25 git clone git://github.com/snowleopard/shaking-up-ghc shake-build
26 ./boot
27 ./configure
28 ```
29
30 Now you have a couple of options:
31
32 - `./shake-build/build.sh` to run the script directly. You'll need to have
33   `shake` installed globally.
34 - `./shake-build/build.cabal.sh` to install the build system in a Cabal sandbox
35   and then run it.
36
37
38
39 ### Windows
40
41 ```bash
42 git clone --recursive git://git.haskell.org/ghc.git
43 cd ghc
44 git clone git://github.com/snowleopard/shaking-up-ghc shake-build
45 ./boot
46 ./configure --enable-tarballs-autodownload
47 shake-build/build.bat
48 ```
49 Also see the [Building GHC on Windows guide][ghc-windows-building-guide].
50
51 ### Mac OS X
52
53 ```bash
54 git clone git://git.haskell.org/ghc
55 cd ghc
56 git submodule update --init
57 git clone git://github.com/snowleopard/shaking-up-ghc shake-build
58 ./boot
59 ./configure --with-gcc=$(which clang) # See #26
60 ./shake-build/build.sh includes/ghcautoconf.h # See #48
61 ./shake-build/build.sh includes/ghcplatform.h # See #48
62 cp utils/hsc2hs/template-hsc.h inplace/lib/template-hsc.h # See #44
63 ./shake-build/build.sh
64 ```
65
66 See the Linux section for running in a Cabal sandbox.
67
68 ### Resetting the build
69
70 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)).
71
72
73 How to contribute
74 -----------------
75
76 The best way to contribute is to try the new build system, report the issues
77 you found, and attempt to fix them. Please note the codebase is very unstable
78 at present and we expect a lot of further refactoring. Before attempting to
79 fix any issue do make sure no one else is already working on it. The
80 documentation is currently non-existent, but we will start addressing this
81 once the codebase stabilises.
82
83
84
85
86
87 [ghc-shake-wiki]: https://ghc.haskell.org/trac/ghc/wiki/Building/Shake
88 [ghc-windows-building-guide]: https://ghc.haskell.org/trac/ghc/wiki/Building/Preparation/Windows
89 [ghc]: https://en.wikipedia.org/wiki/Glasgow_Haskell_Compiler
90 [shake-blog-post]: https://blogs.ncl.ac.uk/andreymokhov/shaking-up-ghc
91 [shake]: https://github.com/ndmitchell/shake/blob/master/README.md