Development
Source
The public repository is github.com/serjective/aburi.
The local source tree used to prepare this site content is ~/Downloads/compilers/aburi.
Build Workflow
Use an explicit LLVM 18 path when configuring:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -DLLVM_DIR=/path/to/llvm-18/lib/cmake/llvm -DABURI_BUILD_PUBLIC_TESTS=ON
cmake --build build
ctest --test-dir build -R public_tests_runtime --output-on-failure
Testing
The public smoke suite lives under public_tests/. The harness compiles each sample with aburi, runs the output program, and expects the success exit code 67.
For targeted debugging, use:
./build/aburi input.c -E
./build/aburi input.c --emit-llvm -o out.ll
./build/aburi input.c -S -o out.s
./build/aburi input.c -c -o out.o
Architecture
The main subsystems are:
-
main.cpp: driver setup and command-line behavior. -
preprocessor.*: includes, conditional compilation, macro expansion, and tokenization. -
parser/,collect/, andast/: parsing, semantic analysis, scope/type handling, and AST ownership. -
constexpr/: compile-time expression evaluation. -
ast2llvm/andabi/: LLVM IR lowering, ABI policy, mangling, vtables, exceptions, and target-specific layout.