Shake
shakebuild.com
What it is
Shake is an open-source Haskell library for writing build systems, positioned as an alternative to make, Ant, and SCons. Build rules can discover dependencies after earlier rules run, including dependencies revealed by generated files. Supported dependency inputs include files, file existence, environment variables, directory contents, and user-defined values. Shake provides parallel and multicore builds, resource constraints, build caching, and avoids rebuilding outputs when dependency changes do not alter results. Profiling reports can include plots, tables, graphs, and explanations of what built and why. It reports estimated completion time and percentage complete, with progress information usable in continuous-integration systems such as Team City. Shake can execute Ninja files for integration with CMake and Meson, and can build projects using mixed languages, including C/C++, Docker, JavaScript, HTML, and CSS. Build definitions are Haskell programs, although the manual targets readers without prior Haskell knowledge. Shake runs on Linux, macOS, and Windows and is licensed under BSD. Installation uses Haskell Stack followed by `stack install shake`.
Spec sheet
- Purpose
- Shake is a Haskell library for writing build systems as an alternative to tools such as make, Ant, and Scons.Read 9 Oct 2026 · shakebuild.com
- Audience
- Shake is aimed at developers running and writing build systems, especially for large projects that need expressive rules, robust builds, and profiling.Read 9 Oct 2026 · shakebuild.com
- Integrations
- Shake can execute Ninja files, allowing integration with CMake and Meson.Read 9 Oct 2026 · shakebuild.com
- Support
- Users can ask questions through the mailing list or Stack Overflow, and report bugs through GitHub issues.Read 9 Oct 2026 · shakebuild.com
- License
- Shake is an open source project under the BSD license.Read 9 Oct 2026 · shakebuild.com
- Build performance
- Shake supports parallel builds and is designed for fast execution when nothing has changed.Read 9 Oct 2026 · shakebuild.com
- 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.Read 9 Oct 2026 · shakebuild.com
- Dependency types
- Shake supports dependencies on files, file existence, environment variables, directory contents, and user-defined inputs.Read 9 Oct 2026 · shakebuild.com
- Diagnostics
- Shake can generate profiling reports with plots, tables, graphs, and information about what built and why.Read 9 Oct 2026 · shakebuild.com
- Dynamic dependencies
- Build rules can discover additional dependencies after earlier rules run, such as by examining generated files.Read 9 Oct 2026 · shakebuild.com
- Installation
- The site’s getting-started instructions say to install Haskell Stack and then run `stack install shake`.Read 9 Oct 2026 · shakebuild.com
- 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.Read 9 Oct 2026 · shakebuild.com
- Languages
- Shake build systems are Haskell programs, though the manual is designed for readers without prior Haskell knowledge.Read 9 Oct 2026 · shakebuild.com
- Limitations
- Shake build systems are written in Haskell, Shake may not be installed by default, and it provides no default build rules.Read 9 Oct 2026 · shakebuild.com
- Notable limitation
- Shake does not provide default build rules, so users must express their build rules themselves.Read 9 Oct 2026 · shakebuild.com
- Performance
- Shake supports multicore parallelism, resource constraints, and avoids rebuilding results when dependencies rebuild without changing.Read 9 Oct 2026 · shakebuild.com
- 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.Read 9 Oct 2026 · shakebuild.com
- Progress estimates
- Shake reports estimated completion time and percentage complete using recorded rule execution times and machine-load predictions.Read 9 Oct 2026 · shakebuild.com
- What it is
- Shake is a Haskell library for writing build systems, designed as a replacement for make.Read 9 Oct 2026 · shakebuild.com
- Who it serves
- Shake primarily benefits developers who run build systems and developers who write them.Read 9 Oct 2026 · shakebuild.com
Plans and prices
Strong points and limits
Strong points
- Dynamic dependency discovery
- Parallel builds with resource constraints
- Profiling reports explain build work
- Ninja, CMake, and Meson integration
- Open source under BSD license
Limits
- Build systems must be written in Haskell
- No default build rules are provided
- Requires Haskell Stack installation
Who it suits
Shake is for developers who write or run build systems, particularly on large projects needing expressive rules, parallel execution, caching, and profiling. It also fits teams integrating Ninja, CMake, Meson, or continuous-integration progress reporting.
Verdict
Shake offers programmable build orchestration with dynamic dependencies, caching, diagnostics, and multicore execution. Its Haskell-based model and requirement to define every rule are central considerations before adoption.
Where Specifiction places it
- Build Automation Software#18 of 427.8