Compile-time directives

Changing rules and behaviors with compile-time directives

There are a number of compile-time options exposed in CMakeLists.txt in the repo root. See these for a canonical list. Due to how much history has built up over time, your best bet is to review the sources to see what these do.

BTECH_ENABLE_HARDENING defaults to ON. It applies Clang’s equivalents of the C-relevant GCC -fhardened protections to first-party MUX and BTech code, and builds executables with PIE, RELRO, and immediate symbol binding. Set the environment variable to OFF when invoking just or pass -DBTECH_ENABLE_HARDENING=OFF to CMake to disable this baseline for a specialized build.