Makefile 664 B

123456789101112131415161718192021222324252627282930313233343536
  1. BUILD_DIR=build
  2. MBR_NAME=$(BUILD_DIR)/mbr.bin
  3. BOOT_IMAGE_NAME=$(BUILD_DIR)/boot.img
  4. BOOT_SOURCE=src/boot.s
  5. AS=as
  6. CC=gcc
  7. DD=dd
  8. LD=ld
  9. $(BOOT_IMAGE_NAME): $(MBR_NAME)
  10. $(DD) if=$(MBR_NAME) of=$(BOOT_IMAGE_NAME)
  11. $(DD) if=/dev/zero of=$(BOOT_IMAGE_NAME) seek=1 bs=512 count=2879
  12. $(MBR_NAME): $(BUILD_DIR)/boot.o
  13. $(LD) -t ldscript.ld $(BUILD_DIR)/boot.o -o $(MBR_NAME) --oformat=binary
  14. $(BUILD_DIR)/boot.o: $(BOOT_SOURCE)
  15. $(AS) $< -o $@
  16. %.o: %.s
  17. $(AS) $< -o $(BUILD_DIR)/$@
  18. %.o: %.c
  19. $(CC) -c $< -o $(BUILD_DIR)/$@
  20. .PHONY: run
  21. run: $(BOOT_IMAGE_NAME)
  22. -bochs -f bochs.conf
  23. .PHONY: clean
  24. clean:
  25. -rm $(BUILD_DIR)/*.o
  26. -rm $(MBR_NAME)
  27. -rm $(BOOT_IMAGE_NAME)