Closes: #24 [via git-merge-pr]
|1 year ago|
|README.md||1 year ago|
|all.do||7 years ago|
|bootstrap.sh||1 year ago|
|links.do||7 years ago|
|redo-sources||1 year ago|
|redo-targets||1 year ago|
|redo.c||1 year ago|
|redo.do||7 years ago|
redo-c is an implementation of the redo build system (designed by Daniel J. Bernstein) in portable C with zero external dependencies.
Notes about the redo-c 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.
To the extent possible under law, Leah Neukirchen firstname.lastname@example.org has waived all copyright and related or neighboring rights to this work.