| 1 | The Glasgow Haskell Compiler |
|---|
| 2 | ============================ |
|---|
| 3 | |
|---|
| 4 | This is the source tree for GHC, a compiler and interactive |
|---|
| 5 | environment for the Haskell functional programming language. |
|---|
| 6 | |
|---|
| 7 | For more information, visit GHC's web site: |
|---|
| 8 | |
|---|
| 9 | http://www.haskell.org/ghc/ |
|---|
| 10 | |
|---|
| 11 | Information for developers of GHC can be found here: |
|---|
| 12 | |
|---|
| 13 | http://hackage.haskell.org/trac/ghc/ |
|---|
| 14 | |
|---|
| 15 | |
|---|
| 16 | Getting the Source |
|---|
| 17 | ================== |
|---|
| 18 | |
|---|
| 19 | There are two ways to get a source tree: |
|---|
| 20 | |
|---|
| 21 | 1. Download source tarballs |
|---|
| 22 | --------------------------- |
|---|
| 23 | |
|---|
| 24 | Download the GHC source distribution: |
|---|
| 25 | |
|---|
| 26 | ghc-<version>-src.tar.bz2 |
|---|
| 27 | |
|---|
| 28 | which contains GHC itself and the "boot" libraries. |
|---|
| 29 | |
|---|
| 30 | 2. Check out the source code from git |
|---|
| 31 | ------------------------------------- |
|---|
| 32 | |
|---|
| 33 | First get the GHC git repository: |
|---|
| 34 | |
|---|
| 35 | $ git clone http://darcs.haskell.org/ghc.git/ |
|---|
| 36 | |
|---|
| 37 | Then run the sync-all script in that repository |
|---|
| 38 | to get the other repositories: |
|---|
| 39 | |
|---|
| 40 | $ cd ghc |
|---|
| 41 | $ ./sync-all get |
|---|
| 42 | |
|---|
| 43 | This checks out the "boot" packages. |
|---|
| 44 | |
|---|
| 45 | |
|---|
| 46 | Building & Installing |
|---|
| 47 | ===================== |
|---|
| 48 | |
|---|
| 49 | For full information on building GHC, see the GHC Building Guide [3]. |
|---|
| 50 | Here follows a summary - if you get into trouble, the Building Guide |
|---|
| 51 | has all the answers. |
|---|
| 52 | |
|---|
| 53 | Before building GHC you may need to install some other tools and |
|---|
| 54 | libraries. See "Setting up your system for building GHC" [8]. |
|---|
| 55 | |
|---|
| 56 | NB. in particular you need GHC installed in order to build GHC, |
|---|
| 57 | because the compiler is itself written in Haskell. For instructions |
|---|
| 58 | on how to port GHC to a new platform, see the Building Guide [3]. |
|---|
| 59 | |
|---|
| 60 | For building library documentation, you'll need Haddock [6]. To build |
|---|
| 61 | the compiler documentation, you need a good DocBook XML toolchain and |
|---|
| 62 | dblatex. |
|---|
| 63 | |
|---|
| 64 | Quick start: the following gives you a default build: |
|---|
| 65 | |
|---|
| 66 | $ perl boot |
|---|
| 67 | $ ./configure |
|---|
| 68 | $ make |
|---|
| 69 | $ make install |
|---|
| 70 | |
|---|
| 71 | The "perl boot" step is only necessary if this is a tree checked out |
|---|
| 72 | from git. For source distributions downloaded from GHC's web site, |
|---|
| 73 | this step has already been performed. |
|---|
| 74 | |
|---|
| 75 | These steps give you the default build, which includes everything |
|---|
| 76 | optimised and built in various ways (eg. profiling libs are built). |
|---|
| 77 | It can take a long time. To customise the build, see the file HACKING. |
|---|
| 78 | |
|---|
| 79 | Once you have a build you need to keep it going. You need to keep all |
|---|
| 80 | repos in sync with the sync-all script [7]. To get the latest changes: |
|---|
| 81 | |
|---|
| 82 | $ ./sync-all pull |
|---|
| 83 | $ ./sync-all get |
|---|
| 84 | |
|---|
| 85 | |
|---|
| 86 | References |
|---|
| 87 | ========== |
|---|
| 88 | |
|---|
| 89 | [1] http://www.haskell.org/ghc/ GHC Home Page |
|---|
| 90 | [2] http://hackage.haskell.org/trac/ghc GHC Developer's Wiki |
|---|
| 91 | [3] http://hackage.haskell.org/trac/ghc/wiki/Building Building Guide |
|---|
| 92 | [4] http://www.haskell.org/happy/ Happy |
|---|
| 93 | [5] http://www.haskell.org/alex/ Alex |
|---|
| 94 | [6] http://www.haskell.org/haddock/ Haddock |
|---|
| 95 | [7] http://hackage.haskell.org/trac/ghc/wiki/Building/SyncAll |
|---|
| 96 | [8] http://hackage.haskell.org/trac/ghc/wiki/Building/Preparation |
|---|
| 97 | |
|---|
| 98 | |
|---|
| 99 | Contributors |
|---|
| 100 | ============ |
|---|
| 101 | |
|---|
| 102 | Please see |
|---|
| 103 | |
|---|
| 104 | http://www.haskell.org/ghc/contributors.html |
|---|