# # *** MAIN MAKE *** # ASM := nasm ROOT_DIR ?= $(CUR_DIR) SRC_DIR := $(ROOT_DIR)src BUILD_DIR := $(ROOT_DIR)build SRC_KERNEL_DIR := $(SRC_DIR)/kernel SRC_LOADER_DIR := $(SRC_DIR)/bootldr # # KERNEL # .PHONY: kernel kernel: always kernel.bin kernel.bin: $(MAKE) -C $(SRC_KERNEL_DIR) # # BOOTLOADER # .PHONY: bootldr stage1 stage2 bootldr: always stage1 stage2 stage1: $(BUILD_DIR)/bootloader.bin stage2: $(BUILD_DIR)/stage2.bin $(BUILD_DIR)/bootloader.bin: $(MAKE) -C $(SRC_LOADER_DIR)/1 $(BUILD_DIR)/stage2.bin: $(MAKE) -C $(SRC_LOADER_DIR)/2 # # FLOPPY # .PHONY: floppy floppy: $(BUILD_DIR)/floppy.img $(BUILD_DIR)/floppy.img: kernel bootldr dd if=/dev/zero of=$(BUILD_DIR)/floppy.img bs=512 count=2880 mkfs.fat -F 12 -n "" $(BUILD_DIR)/floppy.img dd if=$(BUILD_DIR)/bootloader.bin of=$(BUILD_DIR)/floppy.img conv=notrunc mmd -i $(BUILD_DIR)/floppy.img "::kernel" mcopy -i $(BUILD_DIR)/floppy.img $(BUILD_DIR)/kernel.bin "::kernel/kernel.bin" mcopy -i $(BUILD_DIR)/floppy.img $(BUILD_DIR)/stage2.bin "::stage2.bin" # # BUILD CONTROl # .PHONY: all run always clean all: floppy run: all qemu-system-i386 -fda $(BUILD_DIR)/floppy.img always: mkdir -p $(BUILD_DIR) .PHONY: clean clean: rm -rf $(BUILD_DIR)