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

-E

Preprocess only. Expands includes and macros and prints transformed source.

-fsyntax-only

Run preprocessing, parsing, and semantic collection without emitting output.

--emit-llvm

Emit human-readable LLVM IR.

-S

Emit target assembly.

-c

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:

  • -fexceptions and -fno-exceptions

  • -fexception-runtime=llvm, gcc, or custom

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