Crates.io | boltbuild |
lib.rs | boltbuild |
version | 0.1.0 |
source | src |
created_at | 2024-11-24 23:08:09.301447 |
updated_at | 2024-11-24 23:08:09.301447 |
description | BoltBuild is a programmable build system. |
homepage | https://github.com/motor-dev/Motor |
repository | https://github.com/motor-dev/Motor |
max_upload_size | |
id | 1459715 |
size | 383,238 |
BoltBuild is a programmable build system that is designed to be fast and reliable.
It performs the steps usually done by a combination of cmake
, ninja
, autotools
, and configure
.
It is designed to build C/C++ projects, but its design is flexible enough to be used for other languages as well.
BoltBuild uses Lua as its configuration language, which allows for a high degree of flexibility. The core of BoltBuild provides a set of functions that can be used to define build steps. The build steps are implemented in Lua
A command is a script that is executed by BoltBuild. Each command can:
When a command has finished executing, tasks that have been defined by the command are executed in parallel. Tasks are responsible for running the actual build steps, such as compiling source files, linking libraries, etc.
Running commands can often be skipped, as BoltBuild will cache the results of each command. If BoltBuild determines that the script does not need to be executed, it will instead load all side effects from the cache. This allows for fast incremental builds. But the priority is on correctness, so BoltBuild will verify that the environment is entirely identical before loading from the cache. In particular, a command will be rerun if any of the following are true:
If none of the above are true, BoltBuild will load the command from the cache and start to execute tasks.
Each task is also cached, so if a task has already been run, it will not be run again unless the task has changed. The task is considered to have changed if any of the following are true: