ASM=nasm SRC_DIR=src BUILD_DIR=build .PHONY: all floppy_image kernel bootloader clean always # # Floppy image # * use dd to create 1.44MB blank image file # * apply FAT12 filesystem to image # * copy 512 byte bootloader binary to image using dd (overwriting first sector) # * copy kernel binary to filesystem # + this step wtill fail if bootloader binary does not contain proper FAT12 headers # floppy_image: $(BUILD_DIR)/main_floppy.img $(BUILD_DIR)/main_floppy.img: bootloader kernel dd if=/dev/zero of=$(BUILD_DIR)/main_floppy.img bs=512 count=2880 mkfs.fat -F 12 -n "WEESLOS" $(BUILD_DIR)/main_floppy.img dd if=$(BUILD_DIR)/bootloader.bin of=$(BUILD_DIR)/main_floppy.img conv=notrunc mcopy -i $(BUILD_DIR)/main_floppy.img $(BUILD_DIR)/kernel.bin "::kernel.bin" # # Bootloader # bootloader: $(BUILD_DIR)/bootloader.bin $(BUILD_DIR)/bootloader.bin: always $(ASM) $(SRC_DIR)/bootloader/boot.asm -f bin -o $(BUILD_DIR)/bootloader.bin # # Kernel # kernel: $(BUILD_DIR)/kernel.bin $(BUILD_DIR)/kernel.bin: always $(ASM) $(SRC_DIR)/kernel/main.asm -f bin -o $(BUILD_DIR)/kernel.bin # # Always # always: mkdir -p $(BUILD_DIR) # # Clean # clean: rm -rf $(BUILD_DIR)/*