Cross-compilation & Embedded Targets
Compilers
Section titled “Compilers”AceUnit is tested extensively with:
- GCC 13 on
x86_64across: 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.
Tested targets (hosted environments)
Section titled “Tested targets (hosted environments)”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.
Freestanding environments
Section titled “Freestanding environments”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.