Skip to content

Cross-compilation & Embedded Targets

AceUnit is tested extensively with:

  • GCC 13 on x86_64 across: c90, c99, c11, c17, c2x, gnu90, gnu99, gnu11, gnu17, gnu2x
  • GCC 12 as cross-compiler, targeting: aarch64-linux-gnu, alpha-linux-gnu, arm-linux-gnueabi, hppa-linux-gnu, mips64-linux-gnuabi64, mips-linux-gnu, powerpc64le-linux-gnu, powerpc64-linux-gnu, powerpc-linux-gnu, riscv64-linux-gnu, s390x-linux-gnu
  • Clang 17/18 on macOS AArch64 and Linux x86_64

Planned: GCC for hppa64, i686, m68k, mips, sh4, sparc64; Clang for aarch64, arm, avr, hexagon, mips, mips64, thumb, wasm32, wasm64.

Also designed to work with embedded/commercial toolchains: Keil ARMCC (ARM7, Cortex-M0/M3, SC000/100/300), Keil C51/C251 (8051, 80251), Keil C166 (Infineon C16x, ST10), Samsung ucc (Calm16, SecuCalm), Open64.

aarch64-linux-gnu · alpha-linux-gnu · amd64-unknown-openbsd7.2 · arm-linux-gnueabi · hppa-linux-gnu · m68k-amigaos · mips64-linux-gnuabi64 · mips-linux-gnu · powerpc64le-linux-gnu · powerpc64-linux-gnu · powerpc-linux-gnu · riscv64-linux-gnu · s390x-linux-gnu · x86-dos (via bcc, tested under dosbox) · x86_64-unknown-linux-gnu · x86_64-apple-darwin · x86_64-unknown-freebsd13.1 · x86_64-unknown-haiku · x86_64-unknown-netbsd9.0

Cross-compiling for multiple targets in parallel

Section titled “Cross-compiling for multiple targets in parallel”

The Makefile under aceunit/lib is reusable from other directories — see test/cross-hosted/ for worked examples. This is the pattern to use if you need to build and test AceUnit against several cross-compilers at once.

AceUnit’s SetJmpRunner works in freestanding environments as long as <setjmp.h> is available — not guaranteed by the C standard for freestanding, but present on most real-world embedded toolchains.