Makefile 787 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. target := aarch64-unknown-none
  2. mode := release
  3. kernel := target/$(target)/$(mode)/aarch64
  4. sysroot := $(shell rustc --print sysroot)
  5. objdump := $(shell find $(sysroot) -name llvm-objdump) --arch-name=aarch64
  6. objcopy := $(shell find $(sysroot) -name llvm-objcopy)
  7. BUILD_ARGS += --target $(target)
  8. ifeq ($(mode), release)
  9. BUILD_ARGS += --release
  10. endif
  11. .PHONY: kernel clean qemu run env
  12. env:
  13. rustup component add llvm-tools-preview rustfmt
  14. rustup target add $(target)
  15. kernel:
  16. cargo build $(BUILD_ARGS)
  17. asm: kernel
  18. $(objdump) -d $(kernel) | less
  19. sym: kernel
  20. $(objdump) -t $(kernel) | less
  21. header: kernel
  22. $(objdump) -x $(kernel) | less
  23. clean:
  24. cargo clean
  25. qemu: kernel
  26. qemu-system-aarch64 \
  27. -machine virt \
  28. -cpu max \
  29. -serial mon:stdio \
  30. -kernel $(kernel)
  31. run: qemu