guides
Cross-Compilation
Building for aarch64 targets from x86_64 workstations.
Cross-Compilation
Building for aarch64 targets from x86_64 workstations.
Available Targets
| Target | Platform | GPU |
|---|---|---|
weyl-cross.grace | aarch64-linux | sm_90a (Grace Hopper) |
weyl-cross.jetson | aarch64-linux | sm_87 (Jetson Orin) |
weyl-cross.aarch64 | aarch64-linux | none |
weyl-cross.x86-64 | x86_64-linux | sm_120 (Blackwell) |
Usage
# Build for Grace Hopperpkgs.weyl-cross.grace.mkDerivation { name = "my-grace-app"; src = ./src;}
# Build for Jetson Orinpkgs.weyl-cross.jetson.mkDerivation { name = "my-jetson-app"; src = ./src;}How It Works
Cross-compilation uses:
pkgsCross.aarch64-multiplatformfor the target toolchain- CUDA cross-compilation flags for GPU code
- The weyl-stdenv flags for debuggability
Distributed Builds
For faster cross-compilation, configure remote builders:
nix.buildMachines = [{ hostName = "grace-builder"; system = "aarch64-linux"; maxJobs = 32; supportedFeatures = [ "nixos-test" "big-parallel" ];}];
nix.distributedBuilds = true;Native vs Cross
When possible, build natively on target hardware. Cross-compilation is for:
- CI pipelines running on x86_64
- Development iteration before hardware access
- Building firmware/bootloaders
For production inference workloads, build on the target architecture.