Clone of the Ninja build system written in Rust
unsafe
) and fast implementation of the Ninja build system in RustTurtle is originally written for the Pen programming language. Therefore, we support only dynamic dependencies but not C/C++ header dependencies currently. Your contribution is welcome! 😄
sh
cargo install turtle-build
sh
turtle
For more information, see turtle --help
.
Turtle aims to support full syntax of the Ninja build files. It also supports basic command line arguments but is not going to implement all the original options (e.g. -t
option.)
build
statement
phony
rulerule
statementdefault
statementinclude
statementsubninja
statementpool
statementin
and out
special variable-f
custom build file option-j
job limit option-k
keep-going option-C
change-directory optionbuilddir
special variabledepfile
optiondeps
optionSomething different from the traditional build systems and notable in Turtle is that it solves parallel builds similar to parallel graph reduction naturally, where you modify graph structures in parallel and reduce it into a solution, thanks to an ecosystem of futures and stackless coroutines in Rust.
Here is how parallel builds work in Turtle:
Currently, Turtle uses a topological sort algorithm only to detect dependency cycles but not for execution of build graphs.
Turtle is powered by the following neat projects and others!
Dual-licensed under MIT and Apache 2.0.