FOSS-VG/doc/build_system.md

1.9 KiB

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