redo-bc is an implementation of the redo build system (designed by Daniel J. Bernstein) in betterC (variant without GC of D Programming Language). This work based on work redo-c by by Christian Neukirchen (from https://github.com/leahneukirchen/redo-c) and uses the original documentation from this project, almost unchanged.
Please refer to the documentation for redo in Python, or the tutorial by Jonathan de Boyne Pollard for usage instructions.
Notes about the redo-bc implementation of redo
.dofiles always are executed in their directory, arguments are relative paths.
Standard output of
.dofiles is only captured as build product if
redo -sis used, or the environment variable
REDO_STDOUTis set to 1. Else, standard output is simply displayed.
.dofiles are run with
redo -xcan be utilized to use
/bin/sh -e -xinstead, for debugging
.dofiles or verbose builds.
.dofiles are simply executed, and should have a shebang line.
When a target makes no output, no target file is created. The target is considered always out of date.
default.dofiles are checked in all parent directories up to
Parallel builds can be started with
redo -j N(or
JOBS=N redo), this uses a job broker similar to but not compatible with GNU make.
To detect whether a file has changed, we first compare
ctimeand in case it differs, a SHA2 hash of the contents.
Dependencies are tracked in
.dep.BASENAMEfiles all over the tree. This is an implementation detail.
Builds can be started from every directory and should yield same results.
redo -fwill consider all targets outdated and force a rebuild.
redo -kwill keep going if a target failed to build.
Currently, is very experimental software and needed to be revised by you.
To the extent possible under law, Leah Neukirchen firstname.lastname@example.org has waived all copyright and related or neighboring rights to this work.
I, aquaratixc, continuing the work of this kind person, also waive copyright and related rights.