HELP
BUM accepts a list of words using the following grammar:
$ bum
BUM Lean 4 build tool
invoke = bum | bum list
| bum lean-path | bum gitignore
list = [] | command [options] list
command = app (zero|n2o|nitro) | dep
| olean [recur] [force] | compile [force]
| clean [recur] | start
Where:
- (a|…) represents a or …
- [a|…] represents a or … or nothing
CONFIG FILE
BUM configuration file consists of lines in the folowwing form: {key,value}.
In the configuration file should be following keys:
app, build, files.
Also there can be following optional definitions:
deps, src-dir, deps-dir and cpp-libs.
This is configuration file for
NITRO sample
application:
{app, NITRO}.
{build, lib}.
{deps, [{n2o, {git, "https://github.com/o89/n2o"}}]}.
{files, [NITRO/Tags.lean, NITRO/Elements.lean, NITRO/JavaScript.lean,
NITRO/Proto.lean, NITRO/Default.lean]}.
Known definitions:
- app is the name of the application, which should be a string.
- build represents the application build type: exec or lib (which can be used as a dependency).
- deps-dir is the place where BUM stores dependencies for the current application.
- src-dir is the path to be added to sources (files parameter).
- files is a list of source files. Each source can be .cpp or .lean file.
- deps is the list of tuples: {name, {source, url}} or {name, local}. source can be git or github.
- cpp-libs is an optional list that contains C/C++ library names that will be linked with the application in the following way: each string from this list will be added to C++ compiler as -lname.
APP
Create a predefined sample application.
BUM has three built-in sample applications:
zero,
n2o and
nitro:
$ bum app zero
Cloning into '.'...
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (10/10), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 10 (delta 0), reused 10 (delta 0), pack-reused 0
Unpacking objects: 100% (10/10), done.
OK
DEP
Recusively download application dependencies.
$ bum dep
==> downloading n2o (of sample-n2o)
Cloning into 'deps/n2o'...
remote: Enumerating objects: 144, done.
remote: Counting objects: 100% (144/144), done.
remote: Compressing objects: 100% (91/91), done.
remote: Total 566 (delta 59), reused 116 (delta 39), pack-reused 422
Receiving objects: 100% (566/566), 114.28 KiB | 436.00 KiB/s, done.
Resolving deltas: 100% (219/219), done.
==> dependency: n2o
OK
COMPILE
Recusively compile application dependencies (that have not yet been compiled) and application. force option turns off checking of last write time.
START
Start application if its build type is exec and it is compiled.
CLEAN
Remove all .olean, .cpp (if they are generated from .lean files) and .o files from current project and all project dependencies if clean was called with the recur option.
OLEAN
Generate .olean files. This is useful when the project is, for example, a mathematical library. recur option behaves in the same way as in the clean command. force behaves as in compile.