112 lines
2.5 KiB
Makefile
112 lines
2.5 KiB
Makefile
_default:
|
|
@just --list
|
|
|
|
# Build default hw kernel and run chainofcommand to boot this kernel onto the board
|
|
boot: chainofcommand
|
|
cargo make chainboot
|
|
|
|
# Build and run kernel in QEMU with serial port emulation
|
|
zellij:
|
|
cargo make zellij-nucleus
|
|
zellij --layout-path emulation/layout.zellij
|
|
|
|
# Build and run chainboot in QEMU with serial port emulation
|
|
zellij-cb:
|
|
# Connect to it via chainofcommand to load an actual kernel
|
|
# TODO: actually run chainofcommand in a zellij session too
|
|
cargo make zellij-cb
|
|
zellij --layout-path emulation/layout.zellij
|
|
|
|
# Build chainofcommand serial loader
|
|
chainofcommand:
|
|
cd bin/chainofcommand
|
|
cargo make build
|
|
|
|
# Build and run kernel in QEMU
|
|
qemu:
|
|
cargo make qemu
|
|
|
|
# Build and run kernel in QEMU with GDB port enabled
|
|
qemu-gdb:
|
|
cargo make qemu-gdb
|
|
|
|
# Build and run chainboot in QEMU
|
|
qemu-cb:
|
|
# Connect to it via chainofcommand to load an actual kernel
|
|
cargo make qemu-cb
|
|
|
|
# Build and write kernel to an SD Card
|
|
device:
|
|
cargo make sdcard
|
|
|
|
# Build and write kernel to an SD Card, then eject the SD Card volume
|
|
device-eject:
|
|
cargo make sdeject
|
|
|
|
# Build and write chainboot to an SD Card, then eject the SD Card volume
|
|
cb-eject:
|
|
cd bin/chainboot
|
|
cargo make cb-eject
|
|
|
|
# Build default hw kernel
|
|
build:
|
|
cargo make build
|
|
cargo make kernel-binary
|
|
|
|
# Clean project
|
|
clean:
|
|
cargo make clean
|
|
|
|
# Run clippy checks
|
|
clippy:
|
|
# TODO: use cargo-hack
|
|
cargo make clippy
|
|
env CLIPPY_FEATURES=noserial cargo make clippy
|
|
env CLIPPY_FEATURES=qemu cargo make clippy
|
|
env CLIPPY_FEATURES=noserial,qemu cargo make clippy
|
|
env CLIPPY_FEATURES=jtag cargo make clippy
|
|
env CLIPPY_FEATURES=noserial,jtag cargo make clippy
|
|
|
|
# Run tests in QEMU
|
|
test:
|
|
cargo make test
|
|
|
|
alias disasm := hopper
|
|
|
|
# Build and disassemble kernel
|
|
hopper:
|
|
cargo make hopper
|
|
|
|
alias ocd := openocd
|
|
|
|
# Start openocd (by default connected via JTAG to a target device)
|
|
openocd:
|
|
cargo make openocd
|
|
|
|
# Build and run kernel in GDB using openocd or QEMU as target (gdb port 5555)
|
|
gdb:
|
|
cargo make gdb
|
|
|
|
# Build and run chainboot in GDB using openocd or QEMU as target (gdb port 5555)
|
|
gdb-cb:
|
|
cargo make gdb-cb
|
|
|
|
# Build and print all symbols in the kernel
|
|
nm:
|
|
cargo make nm
|
|
|
|
# Check formatting
|
|
fmt-check:
|
|
cargo fmt -- --check
|
|
|
|
# Run `cargo expand` on nucleus
|
|
expand:
|
|
cargo make expand -- nucleus
|
|
|
|
# Generate and open documentation
|
|
doc:
|
|
cargo make docs-flow
|
|
|
|
# Run CI tasks
|
|
ci: clean build test clippy fmt-check
|