Skip to content
A lua interface / front-end to the reggae meta-build system
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


A lua interface / front-end to [the reggae meta-build system](


luarocks install --local reggae

Set the LUA_PATH environment variable to point to the installation path (e.g. ~/.luarocks/share/lua/5.3/?.lua).

Add to your PATH variable so that the reggae binary can find reggae_json_build.lua (e.g. export PATH=$PATH:~/.luarocks/share/lua/5.3).


This package makes available a few classes and functions that allow the user to write build descriptions in Javacript using node-js. It is essentially the same API as the D version but in Lua syntax. A simple C build could be written like this:

local reggae = require('reggae')
local main_obj = reggae.Target('main.o', 'gcc -I$project/src -c $in -o $out', reggae.Target('src/main.c'))
local maths_obj = reggae.Target('maths.o', 'gcc -c $in -o $out', reggae.Target('src/maths.c'))
local app = reggae.Target('myapp', 'gcc -o $out $in', {main_obj, maths_obj})
return {bld = reggae.Build(app)}

This should be contained in a file named reggaefile.lua in the project's root directory. Running the reggae D binary on that directory will produce a build with the requested backend (ninja, make, etc.)

Most builds will probably not resort to low-level primitives as above. A better way to describe that C build would be:

local reggae = require('reggae')
local objs = reggae.object_files({flags = '-I$project/src', src_dirs = {'src'}})
local app = link({exe_name = 'app', dependencies = objs})
exports.bld = reggae.Build(app)

Please consult the reggae documentation for more details.

You can’t perform that action at this time.