6 stable releases

2.3.0 Oct 11, 2020
2.2.1 Aug 11, 2019
2.1.0 Jul 22, 2019
2.0.1 Jul 21, 2019

30 downloads per month

MIT license

570 lines


Bonnibel (pb for short) builds Ninja build files for a set of modules. Bonnibel is a thin wrapper around Tera templates defining both modules to be built and the targets to build them for. This allows expressive power in using Ninja's simple but otherwise very powerful build definition language.

For example, Bonnibel was created for jsix, where I needed the ability to build tools for my local native environment, use those tools to make output files used by other build stages, and build the bootloader, kernel and user-space applications all with different compiler and linker options. Complicating things even more, several libraries need to be built and used by applications on multiple target environments.


If you have Rust and cargo installed, then you can cargo install bonnibel. Otherwise, please see the latest prebuilt release.


Justin C. Miller <justin@devjustinian.com>
Bonnibel, the jsix OS build tool


    -h, --help         Prints help information
    -V, --version      Prints version information
    -v, --verbosity    Pass many times for more log output

    -d, --dir <build_dir>       The build directory to use (default "build")
    -f, --file <config_file>    The modules file to read from (default "modules.yaml")

    build       Run the build via Ninja
    generate    Regenerate the build files
    help        Prints this message or the help of the given subcommand(s)
    init        Initialize the build directory and options
    sync        Synchronize external packages


~892K SLoC