MAKEHELP.md 1.86 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
Quick `make` guide for GHC
==========================

For a "Getting Started" guide, see:

  http://ghc.haskell.org/trac/ghc/wiki/Building/Hacking

Common commands:

  - `make`

    Builds everything: ghc stages 1 and 2, all libraries and tools.

  - `make -j2`

    Parallel build: runs up to 2 commands at a time.

  - `cd <dir>; make`

    Builds everything in the given directory.

  - cd <dir>; make help

    Shows the targets available in <dir>

  - make install

    Installs GHC, libraries and tools under $(prefix)

  - make sdist
  - make binary-dist

    Builds a source or binary distribution respectively

  - `make show VALUE=<var>`

    Displays the value of make variable <var>

39 40 41 42 43
  - `make show! VALUE=<var>`

    Same as `make show`, but works right after ./configure (it skips reading
    package-data.mk files).

44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
  - make clean
  - make distclean
  - make maintainer-clean

    Various levels of cleaning: "clean" restores the tree to the
    state after "./configure", "distclean" restores to the state
    after "perl boot", and maintainer-clean restores the tree to the
    completely clean checked-out state.

Using `make` in subdirectories
==============================

  - `make`

    Builds everything in this directory (including dependencies elsewhere
    in the tree, if necessary)

  - `make fast`

    The same as 'make', but omits some phases and does not
    recalculate dependencies.  Useful for saving time if you are sure
    the rest of the tree is up to date.

  - `make clean`
  - `make distclean`
  - `make maintainer-clean`

    Clean just this directory

  - `make html`
  - `make pdf`
  - `make ps`

    Make documentation in this directory (if any)

  - `make show VALUE=var`

    Show the value of $(var)

  - `make <file>`

    Bring a particular file up to date, e.g. make dist/build/Module.o
    The name <file> is relative to the current directory