# 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/`.