Quick `make` guide for GHC ========================== For a "Getting Started" guide, see: https://ghc.haskell.org/trac/ghc/wiki/Building/QuickStart https://ghc.haskell.org/trac/ghc/wiki/Building/Using https://ghc.haskell.org/trac/ghc/wiki/Building/StandardTargets 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 ; make` Builds everything in the given directory. - cd ; make help Shows the targets available in - make install - make install-strip Installs GHC, libraries and tools under $(prefix). The install-strip variant strips executable files while installing them. - make sdist - make binary-dist Builds a source or binary distribution respectively - `make show VALUE=` - `make show! VALUE=` Show the value of make variable . The show! variant works right after ./configure (it skips reading package-data.mk files). - 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=` - `make show! VALUE=` Show the value of make variable . The show! variant works right after ./configure (it skips reading package-data.mk files). - `make ` Bring a particular file up to date, e.g. make dist/build/Module.o The name is relative to the current directory