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

#368 in Build Utils

MIT license

26KB
570 lines

Bonnibel

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.

Install

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

Usage

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

USAGE:
    pb [FLAGS] [OPTIONS] <SUBCOMMAND>

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

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

SUBCOMMANDS:
    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

Dependencies

~38–52MB
~1M SLoC