Freedom251 › Build Automation Software
Shake

What Shake is
Shake is a Haskell library for writing build systems as an alternative to tools such as make, Ant, and Scons. Build rules can discover further dependencies after earlier rules run, including by examining generated files. Shake supports dependencies on files, file existence, environment variables, directory contents, and user-defined inputs. It can run builds in parallel, apply resource constraints, and avoid rebuilding results when dependencies change but their outputs do not. Profiling reports provide plots, tables, graphs, and explanations of what built and why. Shake can also estimate completion time and percentage complete, with progress information that can be integrated with continuous integration systems such as Team City. It can execute Ninja files, enabling integration with CMake and Meson, and can build projects in mixed languages. Build systems themselves are written in Haskell, although the manual is intended for readers without prior Haskell knowledge. Shake is open source under the BSD license and is listed for Linux, macOS, and Windows. Installation instructions call for Haskell Stack followed by `stack install shake`.
Who it suits
Shake is for developers who run or write build systems, particularly on large projects that need expressive rules, parallel builds, and profiling. It can build projects combining languages, but the build definitions are Haskell programs.
What it does well
- Rules can discover dependencies dynamically.
- Supports parallel builds and resource constraints.
- Profiling reports show what built and why.
- Can execute Ninja files for CMake and Meson integration.
- Open source under the BSD license.
What to know first
- Build systems must be written in Haskell.
- Shake does not provide default build rules.
- Haskell Stack may need to be installed first.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| Shake | Open source under the BSD license · install with Haskell Stack | Free |
As shakebuild.com lists them, read 9 Oct 2026. The maker's own page has the final word.
Getting started
- Open the Shake website and its getting-started instructions.
- Install Haskell Stack.
- Run `stack install shake`.
- Write the build rules for your project in Haskell.
Verdict
Shake offers flexible dependency rules, build progress estimates, and profiling for developers building or maintaining build systems. Its Haskell requirement and lack of default rules are important to account for when adopting it.
Questions
How much does Shake cost?
The Shake plan is free. Shake is open source under the BSD license.
Which operating systems does Shake support?
Shake is listed for Linux, macOS, and Windows.
Do I need to write build rules?
Yes. Shake does not provide default build rules, so users must define them.
What language are Shake build systems written in?
They are Haskell programs. The manual is designed for readers without prior Haskell knowledge.
Can Shake build projects written in languages other than Haskell?
Yes. Shake can build projects in any combination of languages; Haskell is the language used to write the build system.
How do I install Shake?
The getting-started instructions say to install Haskell Stack and then run `stack install shake`.
Facts from Shake's own pages
- Audience
- Shake is aimed at developers running and writing build systems, especially for large projects that need expressive rules, robust builds, and profiling. · shakebuild.com, 9 Oct 2026
- Build performance
- Shake supports parallel builds and is designed for fast execution when nothing has changed. · shakebuild.com, 9 Oct 2026
- Completion estimates
- Shake can report estimated completion time and percentage complete, and its progress information can be integrated with continuous integration systems such as Team City. · shakebuild.com, 9 Oct 2026
- Dependency types
- Shake supports dependencies on files, file existence, environment variables, directory contents, and user-defined inputs. · shakebuild.com, 9 Oct 2026
- Diagnostics
- Shake can generate profiling reports with plots, tables, graphs, and information about what built and why. · shakebuild.com, 9 Oct 2026
- Dynamic dependencies
- Build rules can discover additional dependencies after earlier rules run, such as by examining generated files. · shakebuild.com, 9 Oct 2026
- Installation
- The site’s getting-started instructions say to install Haskell Stack and then run `stack install shake`. · shakebuild.com, 9 Oct 2026
- Integrations
- Shake can execute Ninja files, allowing integration with CMake and Meson. · shakebuild.com, 9 Oct 2026
- Languages
- Shake build systems are Haskell programs, though the manual is designed for readers without prior Haskell knowledge. · shakebuild.com, 9 Oct 2026
- Language support
- Shake can build projects in any combination of languages and is often used for C/C++, Docker, and JavaScript, HTML, and CSS projects. · shakebuild.com, 9 Oct 2026
- License
- Shake is an open source project under the BSD license. · shakebuild.com, 9 Oct 2026
- Limitations
- Shake build systems are written in Haskell, Shake may not be installed by default, and it provides no default build rules. · shakebuild.com, 9 Oct 2026
- Notable limitation
- Shake does not provide default build rules, so users must express their build rules themselves. · shakebuild.com, 9 Oct 2026
- Performance
- Shake supports multicore parallelism, resource constraints, and avoids rebuilding results when dependencies rebuild without changing. · shakebuild.com, 9 Oct 2026
- Platform details
- Shake can display progress information in the title bar on Windows, Linux, and Mac; Windows 7 and 8 can also show it in the taskbar. · shakebuild.com, 9 Oct 2026
- Progress estimates
- Shake reports estimated completion time and percentage complete using recorded rule execution times and machine-load predictions. · shakebuild.com, 9 Oct 2026
- Purpose
- Shake is a Haskell library for writing build systems as an alternative to tools such as make, Ant, and Scons. · shakebuild.com, 9 Oct 2026
- Support
- Users can ask questions through the mailing list or Stack Overflow, and report bugs through GitHub issues. · shakebuild.com, 9 Oct 2026
- What it is
- Shake is a Haskell library for writing build systems, designed as a replacement for make. · shakebuild.com, 9 Oct 2026
- Who it serves
- Shake primarily benefits developers who run build systems and developers who write them. · shakebuild.com, 9 Oct 2026
Where Shake stands on Freedom251
- Build Automation Software#28 of 42