|Version 9 (modified by igloo, 8 years ago) (diff)|
GHC Source Tree Roadmap
The top level of a GHC source tree looks like this:
The GNU autoconf machinery:
The Build System
- Top-level Makefile; make by itself does a full 2-stage bootstrap of GHC, there are also targets for building source and binary distributions. GHC requires GNU make.
- The guts of the build system itself.
- A library of compatibility code used when bootstrapping GHC using an older version of GHC. For example, we compile up the version of Cabal from libraries/Cabal and include it in libcompat, this means that the GHC source code can assume the most recent version of Cabal.
- The Compiler itself: all Haskell code. This is actually a library; see ghc/ for the compiler binary.
- Historically this contained the Perl script known as the GHC "driver"; in GHC 5.00 the driver was rewritten in Haskell and incorporated into GHC itself when we added GHCi and --make. This directory still contains the mangler and the splitter? Perl scripts, and a couple of wrappers used to invoke GHC on Windows. Also the package database constructed during a GHC build is stored in here.
- The actual compiler binary. This is just a thin wrapper around the library in compiler/.
- The libraries that are built and distributed with GHC.
- Header files for the Runtime System and for compiling Haskell via C.
- GHC documentation.
- Some quickcheck tests for the compiler (may go away).
- Various utility programs, either used during the build itself or distributed with GHC.
These two are optional, available as separate darcs repositories:
- a script for operating on the collection of darcs repositories that makes up the GHC source tree (see Building/GettingTheSources).
- miscellany for building distributions.
- RPM spec file
- InstallShield, WindowsInstaller
- Windows installer bits