124 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Makefile
		
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Makefile
		
	
	
	
| _default:
 | |
|     @just --list
 | |
| 
 | |
| # Update all dependencies
 | |
| deps-up:
 | |
|     cargo update
 | |
| 
 | |
| # 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 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 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 run chainboot in QEMU with GDB port enabled
 | |
| qemu-cb-gdb:
 | |
|     # Connect to it via chainofcommand to load an actual kernel
 | |
|     cargo make qemu-cb-gdb
 | |
| 
 | |
| # 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-device
 | |
|     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 lint tasks
 | |
| lint: clippy fmt-check
 | |
| 
 | |
| # Run CI tasks
 | |
| ci: clean build test lint
 |