turtle-build 0.2.1

The Ninja build system clone written in Rust
turtle-build-0.2.1 is not a library.
Visit the last successful build: turtle-build-0.5.15

Turtle

GitHub Action crates.io License

Clone of the Ninja build system written in Rust

Goals

  • Naive but safe (no unsafe) reimplementation of the Ninja build system in Rust
  • Improved frontend support (WIP)
    • Full output from build rules and no output from Turtle by default
    • More customizable build/rule/progress/error output

Turtle 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! 😄

Install

cargo install turtle-build

Usage

turtle

For more information, see turtle --help.

Compatibility

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.)

Syntax

  • build statement
    • Explicit outputs
    • Explicit inputs
    • Implicit outputs
    • Implicit inputs
    • Order-only inputs
    • phony rule
  • rule statement
  • default statement
  • include statement
  • subninja statement
  • pool statement
  • Global variables
  • Build-local variables
  • in and out special variable

Command line arguments

  • -f custom build file option
  • -j job limit option
  • -k keep-going option
  • -C change-directory option

Others

  • Circular build dependency detection
  • Circular build file dependency detection
  • builddir special variable
  • Dynamic dependencies
    • Implicit inputs
    • Implicit outputs
    • Circular build dependency detection
  • C/C++ header dependencies
    • depfile option
    • deps option
  • Windows support

Similar projects

License

Dual-licensed under MIT and Apache 2.0.