Makefile 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. target := aarch64-unknown-none
  2. mode := release
  3. kernel := target/$(target)/$(mode)/aarch64
  4. kernel_bin := target/$(target)/$(mode)/aarch64.bin
  5. img := target/$(target)/$(mode)/img
  6. sysroot := $(shell rustc --print sysroot)
  7. objdump := $(shell find $(sysroot) -name llvm-objdump) --arch-name=aarch64
  8. objcopy := $(shell find $(sysroot) -name llvm-objcopy)
  9. BUILD_ARGS += --target $(target)
  10. ifeq ($(mode), release)
  11. BUILD_ARGS += --release
  12. endif
  13. .PHONY: kernel clean qemu run env
  14. env:
  15. rustup component add llvm-tools-preview rustfmt
  16. rustup target add $(target)
  17. kernel:
  18. cargo build $(BUILD_ARGS)
  19. $(kernel_bin): kernel
  20. aarch64-linux-gnu-objcopy -O binary $(kernel) $(kernel_bin)
  21. asm: kernel
  22. $(objdump) -d $(kernel) | less
  23. sym: kernel
  24. $(objdump) -t $(kernel) | less
  25. header: kernel
  26. $(objdump) -x $(kernel) | less
  27. clean:
  28. cargo clean
  29. qemu: $(kernel_bin) $(img)
  30. qemu-system-aarch64 \
  31. -machine virt \
  32. -cpu max \
  33. -serial mon:stdio \
  34. -kernel $(kernel_bin) \
  35. -global virtio-mmio.force-legacy=false \
  36. -drive file=$(img),if=none,format=raw,id=x0 \
  37. -device virtio-blk-device,drive=x0 \
  38. -device virtio-gpu-device
  39. $(img):
  40. dd if=/dev/zero of=$@ bs=512 count=32
  41. run: qemu