Command-Line Usage
Basic Usage
The executable is aburi. It is designed to feel familiar to GCC and Clang users.
aburi main.c -o my_program
Compilation Modes
Aburi can stop at several stages of the pipeline:
| Option | Behavior |
|---|---|
|
Preprocess only. Expands includes and macros and prints transformed source. |
|
Run preprocessing, parsing, and semantic collection without emitting output. |
|
Emit human-readable LLVM IR. |
|
Emit target assembly. |
|
Compile to an object file without linking. |
Language Options
Use -x to force language mode:
aburi -x c input.txt -c -o input.o
aburi -x c++ input.txt -c -o input.o
Use -std=<standard> to choose a standard:
aburi -std=c11 program.c -o program
aburi -std=c++20 program.cpp -o program
For C header discovery, `-stdlib=<family>` accepts `auto`, `libc, or `libstdc`. On macOS, `auto` currently resolves toward `libc.
ABI and Runtime Flags
Useful advanced flags include:
-
-fexceptionsand-fno-exceptions -
-fexception-runtime=llvm,gcc, orcustom -
-fc++-abi=<abi> -
-fabi-version=<version> -
-mms-bitfields -
--ast-memory-report
Clang Compatibility Persona
Some build systems expect a compiler that identifies like Clang. Use:
aburi --driver-mode=clang ...
You can also invoke the executable through a symlink named clang, clang++, or aburi-clang to trigger compatibility behavior.
Passthrough Behavior
For files the frontend does not recognize, such as assembly or Objective-C files, Aburi can delegate to the system compiler while preserving relevant driver and linker flags.