Ghost uses the x86_64-ghost cross-toolchain. Run commands from the repository
root. Docker provides the toolchain and host dependencies:
git submodule update --init
./docker-build-toolchain-image.sh
The script opens the ghost-toolchain-64 container with the checkout mounted at
/ghost/source. Inside it, build the system:
./build.sh --ci
The bootable image is target/ghost.iso. Reuse the container for later builds:
docker exec -w /ghost/source ghost-toolchain-64 bash -lc './build.sh --ci --kernel'
docker exec -w /ghost/source ghost-toolchain-64 bash -lc './build.sh --ci --apps editor'
--ci stops on failures; component output is in its ghost-build.log.
Use --libapi, --libc or --kernel for those components, and --pack to
refresh the ISO from existing artifacts. --apps and --apps-clean consume all
remaining arguments as application names, so place them last.
After ƒenster header/layout changes, clean ƒenster and rebuild its consumers;
its Makefiles do not track header dependencies. A build with --apps-clean
cleans the named applications before compiling them.
For a native toolchain, use toolchain.sh. Override TOOLCHAIN_BASE and TARGET
in variables.sh, using variables.sh.template as the starting point.
Third-party recipes use --host=x86_64-ghost and install under /system in the
sysroot; see Porting software.
Documentation
From the repository root:
./documentation/build.sh