The shake package

Shake is a Haskell library for writing build systems - designed as a
replacement for make. See Development.Shake for an introduction,
including an example. Further examples are included in the Cabal tarball,
under the Examples directory. The homepage contains links to a user
manual, an academic paper and further information:
https://github.com/ndmitchell/shake

To use Shake the user writes a Haskell program
that imports Development.Shake, defines some build rules, and calls
the Development.Shake.shakeArgs function. Thanks to do notation and infix
operators, a simple Shake build system
is not too dissimilar from a simple Makefile. However, as build systems
get more complex, Shake is able to take advantage of the excellent
abstraction facilities offered by Haskell and easily support much larger
projects. The Shake library provides all the standard features available in other
build systems, including automatic parallelism and minimal rebuilds.
Shake also provides more accurate dependency tracking, including seamless
support for generated files, and dependencies on system information
(e.g. compiler version).

Downloads

Maintainer's Corner

Readme for shake

Readme for shake-0.13.2

Shake

Shake is a tool for writing build systems - an alternative to make, Scons, Ant etc. Shake has been used commercially for over five years, running thousands of builds per day.

Documentation

Why use Shake? Shake lets you write large robust build systems, which deal properly with generated source files and run quickly. If you are writing a custom build system of any moderate size (more than a few rules) you should use Shake. The advantages over other build systems are detailed in the document Why choose Shake?.

How do I use Shake? Shake is a Haskell library that you use to define your rules. The Shake manual provides a walk through of a small but realistic example, assuming no Haskell knowledge.