Makefile 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. $(QEMU_ARGS) \
  32. -machine virt \
  33. -cpu max \
  34. -serial chardev:char0 \
  35. -kernel $(kernel_bin) \
  36. -global virtio-mmio.force-legacy=false \
  37. -nic none \
  38. -drive file=$(img),if=none,format=raw,id=x0 \
  39. -device virtio-blk-device,drive=x0 \
  40. -device virtio-gpu-device \
  41. -device virtio-serial,id=virtio-serial0 \
  42. -chardev stdio,id=char0,mux=on \
  43. -device virtconsole,chardev=char0
  44. qemu-pci: $(kernel_bin) $(img)
  45. qemu-system-aarch64 \
  46. -machine virt \
  47. -cpu max \
  48. -serial chardev:char0 \
  49. -kernel $(kernel_bin) \
  50. -nic none \
  51. -drive file=$(img),if=none,format=raw,id=x0 \
  52. -device virtio-blk-pci,drive=x0 \
  53. -device virtio-gpu-pci \
  54. -device virtio-serial,id=virtio-serial0 \
  55. -chardev stdio,id=char0,mux=on \
  56. -device virtconsole,chardev=char0
  57. $(img):
  58. dd if=/dev/zero of=$@ bs=512 count=32
  59. run: qemu