Skip to main content

Cross-Compilation

Short Names

DCR supports short platform names:

Short NameFull Triple
linuxx86_64-unknown-linux-gnu
macosx86_64-apple-darwin
windowsx86_64-pc-windows-msvc
dcr build --target windows

Full Triples

dcr build --target aarch64-unknown-linux-gnu
dcr build --target x86_64-pc-windows-gnu # mingw
dcr build --target armv7-unknown-linux-gnueabihf

clang --target

When using clang, DCR injects --target=<triple> into CFLAGS.

[build]
compiler = "clang"
target = "aarch64-unknown-linux-gnu"
# Auto: cflags += ["--target=aarch64-unknown-linux-gnu"]

Bare-Metal / Freestanding

For targets containing none, -elf, eabi, or baremetal, DCR automatically:

  1. Disables default flags — no system include paths, no -l libc
  2. Injects -ffreestanding at compile time and -nostdlib -static at link time

You can also enable freestanding mode explicitly:

[build]
freestanding = true
dcr build --target aarch64-none-elf

Target Directory

By default, the compilation output directories are structured as follows:

  • Linux and BSD: Always output to target/<triple>/<profile>/ (using host triple if no target is specified).
  • macOS and Windows (without target): Output to target/<profile>/.
  • macOS and Windows (with explicit target): Output to target/<triple>/<profile>/.