Version 10 (modified by igloo, 9 years ago) (diff)


Useful workflows and makefile targets

This is intended as a short summary of how to do common tasks. See also Building/Using, although that may not be fully up to date.

Build or clean everything

Do these things in the $(TOP) directory.

  • make. This should make everything: the support utilities, stage1 compiler, libraries, and stage2 compiler.

The build system does not track cross-package dependencies, so it's possible that you could recompile one library, but another dependent library isn't recompiled, and you get link errors.

  • make clean, make distclean: various levels of cleanery.

Clean and rebuild just the compiler

Do these things in the $(TOP)/compiler directory.

  • make clean stage=2, make boot stage=2, make stage=2. This cleans, boots and builds the stage 2 compiler. You can do the same for the other stages. Note the first command is rarely necessary, and you normally don't need the second one either.

Build libraries

Do these things in $(TOP)/libraries directory.

  • Build all libraries
  • Build just one library
  • Clean all libraries
  • Clean just one library

Do you do the selective work in libraries/ or in libraries/haskell98/ (say)?

Disabling a library you don't want to build. (Mess with SUBDIRS?)