FOSS-VG/doc/build_system.md

69 lines
1.9 KiB
Markdown

# FOSS-VG Build System
Yeah, I was annoyed at make. Sorry. -BodgeMaster
## Aliases
The shell environment provided in the project's base directory contains
aliases that can be invoked from anywhere.
This is useful if you, for example, `cd src/lib` and want to do a quick
rebuild, you can just run `build` and it will take care of switching
directories back and forth.
Where necessary, the "aliases" are shell functions instead of literal aliases
to accommodate for inline environment variables.
Provided aliases:
- `setup_project` runs `scripts/setup_project.sh`
- `build` runs `scripts/build.sh`
- `run_tests` runs `scripts/test.sh` (we can't alias `test` because that's an
actual POSIX command and it would break a lot of things)
- `clean` runs `scripts/clean.sh`
- `clean_dependencies` runs `scripts/clean_dependencies.sh`
## setup_project
Cleans the project and its dependencies first, ensuring the project is in
a known state, then downloads and extracts dependencies.
This will probably do more in the future (for example compile dependencies
that need to be compiled).
# build
Builds the project. This will compile all the things in `src/` except for
what is in `src/test/`.
Checks for endianness if endianness header is missing.
Builds the endianness check if that is missing as well.
Accepted environment variables:
- `CXX`: override the default compiler
- `CXXFLAGS`: override the default compiler flags, must at least specify
the C++ version
- `SINGLE`: if set to `yes`, causes the build script to run in
single-threaded mode
# test / run_tests
Builds and runs the unit tests.
Accepted environment variables:
- `CXX`: override the default compiler
- `CXXFLAGS`: override the default compiler flags, must at least specify
the C++ version
# clean
Removes and re-creates `bin/`. Also removes the endianness header and
the endianness check binary.
# clean_dependencies
Removes and re-creates `dependencies/`.