.PHONY: check fmt clippy test kani build all image run ci kernel-fmt kernel-clippy kernel-test RISCV_TARGET = riscv64gc-unknown-none-elf KERNEL_BIN = target/$(RISCV_TARGET)/release/adapter-riscv KERNEL_CRATES = -p types -p domain -p kernel -p platform all: check fmt clippy test # Gate for kernel work: formatting, lints, unit tests, Kani proofs, RISC-V build. ci: kernel-fmt kernel-clippy kernel-test kani build kernel-fmt: cargo fmt $(KERNEL_CRATES) -p adapter-riscv -- --check kernel-clippy: cargo clippy $(KERNEL_CRATES) --all-targets -- -D warnings cargo clippy -p adapter-riscv --target $(RISCV_TARGET) --no-deps -- -D warnings kernel-test: cargo test $(KERNEL_CRATES) check: cargo check --workspace fmt: cargo fmt --all -- --check clippy: cargo clippy --workspace -- -D warnings test: cargo test --workspace # CBMC can eat all RAM and take the desktop down with it; cap each run. KANI = systemd-run --user --scope -q -p MemoryMax=12G -p MemorySwapMax=0 cargo kani kani-types: $(KANI) -p types kani-domain: $(KANI) -p domain kani-kernel: $(KANI) -p kernel kani: kani-types kani-domain kani-kernel build: cargo build --target $(RISCV_TARGET) --release \ -p adapter-riscv -p init -p echo -p snake \ -p display-qemu -p input-qemu -p storage-qemu \ -p log-server -p permission-manager -p session-server image: build scripts/make-disk-image.sh run: build qemu-system-riscv64 -machine virt -nographic -bios default \ -kernel $(KERNEL_BIN) run-disk: image qemu-system-riscv64 -machine virt -nographic -bios default \ -kernel $(KERNEL_BIN) \ -drive file=boot.img,if=none,format=raw,id=hd0 \ -device virtio-blk-device,drive=hd0 run-gui: image qemu-system-riscv64 -machine virt -bios default \ -kernel $(KERNEL_BIN) \ -drive file=boot.img,if=none,format=raw,id=hd0 \ -device virtio-blk-device,drive=hd0 \ -device virtio-gpu-device \ -device virtio-keyboard-device \ -serial stdio