- Notifications
You must be signed in to change notification settings - Fork12
leahneukirchen/redo-c
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
redo-c is an implementation of the redo build system (designed byDaniel J. Bernstein) in portable C with zero external dependencies.
Please refer to the documentation forredo in Python,or thetutorial by Jonathan de Boyne Pollardfor usage instructions.
Without arguments,
redo
behaves likeredo all
..do
files always are executed in their directory, arguments arerelative paths.Standard output of
.do
files is only captured as build product ifredo -s
is used, or the environment variableREDO_STDOUT
is set to 1.Else, standard output is simply displayed.Non-executable
.do
files are run with/bin/sh -e
.redo -x
can be utilized to use/bin/sh -e -x
instead, fordebugging.do
files or verbose builds.Executable
.do
files are simply executed, and should have a shebang line.When a target makes no output, no target file is created. The targetis considered always out of date.
default.do
files are checked in all parent directories up to/
.Parallel builds can be started with
redo -j N
(orJOBS=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
ctime
andin case it differs, a SHA2 hash of the contents.Dependencies are tracked in
.dep.BASENAME
files all over the tree.This is an implementation detail.Builds can be started from every directory and should yield same results.
redo -f
will consider all targets outdated and force a rebuild.redo -k
will keep going if a target failed to build.
To the extent possible under law, Leah Neukirchenleah@vuxu.orghas waived all copyright and related or neighboring rights to this work.
About
An implementation of the redo build system in portable C with zero dependencies
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Contributors4
Uh oh!
There was an error while loading.Please reload this page.