A meta build system with multiple language frontends (D, Python, Ruby, JavaScript, Lua) and backend generators (make, ninja, tup, custom).
Reggae is a meta build system that provides a unified API for describing software builds in multiple programming languages (D, Python, Ruby, JavaScript, Lua) and generates build files for various backends like Ninja, Make, Tup, or its own binary backend. It solves the problem of being locked into a single build description language or engine by separating the frontend language from the backend executor.
Developers working on multi-language projects, especially those using D, C, or C++, who want a more expressive and flexible build system than traditional tools like Make or CMake.
Reggae offers unparalleled flexibility by allowing developers to write build logic in a familiar programming language while supporting multiple high-performance build backends, eliminating the need to learn proprietary build languages or commit to a single build engine.
Build system in D, Python, Ruby, Javascript or Lua
Allows writing build descriptions in D, Python, Ruby, JavaScript, or Lua using declarative APIs, making it accessible to developers with different language preferences, as shown in the frontend examples.
Generates build systems for Make, Ninja, Tup, or a custom binary backend, enabling users to choose the most efficient tool without rewriting build logic, per the philosophy of separating description from engine.
Can export standalone build systems with the --export option, so end-users don't need Reggae installed, facilitating portability and ease of distribution, similar to autotools.
Handles header and module dependencies for C, C++, and D automatically, reducing manual configuration and potential errors, as highlighted in the features list.
Not all features are available for all backends; for example, the tup backend lacks dub support, and executable D commands are only in the binary backend, leading to a fragmented experience as noted in the README.
Builds in scripting languages cannot detect changes in imported files and lack access to advanced features like the binary backend or dub rules, which limits functionality compared to the D frontend, as admitted in the limitations section.
Requires a D compiler to build itself and has a multi-step bootstrap process, which can be cumbersome compared to single-command installations of other build systems, adding initial setup overhead.
reggae is an open-source alternative to the following products:
Package and build management system for D
Scons has built-in support for building D projects, thanks to Russel Winder
A universal build system to build your software at the push of a button
XMake is a crossplatform build system, that incorporated the D language and also has support for DUB repositories
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.