Build and develop
Build with AROS-NX
Configure an integrated product build, choose a target, and inspect the resulting PC boot evidence.
Start with the installed tools, the host prerequisites, and an AROS-NX checkout. The checkout supplies source compatibility and compiler selection; the tools supply the CMake engine.
Select source and compiler
Section titled “Select source and compiler”aros source init ~/Source/AROS-NX \ --upstream https://github.com/metaneutrons/AROS-NX.gitcd ~/Source/AROS-NXaros infoaros toolchain listaros setup --preset pc-x86_64aros toolchain verify --preset pc-x86_64For a tested source revision, pass its exact commit with --ref; this leaves
HEAD detached. The tools’ current test pin is in
contracts/aros-source-v1.toml.
aros build --preset pc-x86_64The build materializes its engine in build/pc-x86_64/cmake-engine,
configures the generated graph, and invokes Ninja. It verifies the six required
build helpers before configuring.
Useful variations:
aros build --preset pc-x86_64 --target kernel-exec --jobs 8aros build --preset pc-x86_64 --debugaros build --preset pc-x86_64 --offline --require-fetch-checksumsA named target must exist in that source’s generated graph. Strict fetch policy can stop on upstream recipes that have no checksum declarations; it does not fill them in.
--engine-dir DIR is an explicit developer override. The ordinary build
uses the engine embedded in the tools, even if the source checkout contains
another CMake directory.
The default build follows MetaMake’s AROS dependency closure. A source tree
may declare alternative modules with the same runtime name: only the selected
provider writes that SYS path. Unselected alternatives remain explicit targets
with private outputs under gen/manual-modules/. Two selected providers for
one runtime path are a configuration error, not a last-writer-wins choice.
Check a PC boot
Section titled “Check a PC boot”Install qemu-system-x86_64 first, then run:
aros test --preset pc-x86_64 --timeout 20Each invocation retains a private evidence directory under
build/pc-x86_64/boot-check. The result is based on positive milestones,
serial failures and exception evidence, not simply on QEMU’s exit status.
--packages includes built packages; otherwise those modules are not tested.
The checker expects the PC bootstrap/kernel layout and uses the x86 emulator. Use board workflows and actual UART evidence for physical targets.
Create a BIOS-bootable PC ISO
Section titled “Create a BIOS-bootable PC ISO”Install xorriso and run from a clean AROS checkout:
CMAKE_BUILD_PARALLEL_LEVEL=4 AROS_LLVMPIPE_RUNTIME_PROBE=0 \ aros build --preset pc-x86_64 --target boot-iso --jobs 4 --compiler-cache offThe boot-iso target depends on the native AROS SYS producer and the
audited GRUB host assets. It stages their output, verifies the required
bootstrap and kernel modules, records the complete staged tree in
build/pc-x86_64/media-build-receipt.json, and verifies the El Torito catalog
before publishing build/pc-x86_64/aros-x86_64-pc.iso. A successful build
does not establish that the ISO boots. UEFI boot is not claimed.
Test the generated ISO through BIOS/GRUB rather than the direct-kernel loader:
aros test --preset pc-x86_64 --iso build/pc-x86_64/aros-x86_64-pc.iso \ --timeout 45 --memory 1024 --evidence build/pc-x86_64/iso-checkThe CLI boots a verified, read-only ISO snapshot and retains its digest and
serial/exception logs. ISO mode rejects --packages and
--module; without --iso, aros test remains the direct-kernel check.
The fresh native build and QEMU user-mode boot were qualified on macOS ARM64;
see the exact inputs and ISO evidence.
For the separate experimental GLSL/JIT proof, see
native llvmpipe development.
Rebuild or synchronize
Section titled “Rebuild or synchronize”Ordinary build reuses the configured build directory.
build --clean --preset pc-x86_64 removes it first, including retained
evidence. aros clean --preset pc-x86_64 only cleans that preset;
aros clean --all removes the whole checkout build tree. Add --dry-run to
either form to inspect the exact directory first.
For source updates, follow source synchronization. It requires a clean tree, including ignored build outputs.