# Makefile #Some definitions SRC_DIR = src BUILD_DIR = build LOADER_DIR = module_bootloader LOADER_NAME = uOS.iso LOADER_IMG = $(BUILD_DIR)/$(LOADER_NAME) KERNEL_MAIN = $(SRC_DIR)/main.c KERNEL_MAIN_OBJ = $(BUILD_DIR)/main.o ENTRY_ASM = $(SRC_DIR)/start.s ENTRY_ASM_OBJ = $(BUILD_DIR)/start.o LINKING_RECIPE = $(SRC_DIR)/linker.ld KERNEL_IMG = $(BUILD_DIR)/ukern.elf QEMU = qemu-system-i386 GCC = i686-elf-gcc #Actual recipe all: $(KERNEL_IMG) $(BUILD_DIR): mkdir -p $(BUILD_DIR) $(KERNEL_MAIN_OBJ): $(GCC) -std=gnu99 -ffreestanding -g -c $(KERNEL_MAIN) -o $(BUILD_DIR)/main.o $(ENTRY_ASM_OBJ): $(GCC) -std=gnu99 -ffreestanding -g -c $(ENTRY_ASM) -o $(ENTRY_ASM_OBJ) #now kith (link) $(KERNEL_IMG): $(KERNEL_MAIN_OBJ) $(ENTRY_ASM_OBJ) $(GCC) -ffreestanding -nostdlib -g -T $(LINKING_RECIPE) $(ENTRY_ASM_OBJ) $(KERNEL_MAIN_OBJ) -o $(KERNEL_IMG) -lgcc run: all $(QEMU) -kernel $(KERNEL_IMG) $(LOADER_IMG): $(KERNEL_IMG) cp $(KERNEL_IMG) $(LOADER_DIR)/src/boot/; \ cd $(LOADER_DIR); \ make all; \ cd ..; \ cp $(LOADER_DIR)/$(LOADER_IMG) $(BUILD_DIR)/ iso: $(LOADER_IMG) run_iso: iso $(QEMU) -cdrom $(LOADER_IMG) clean: rm -rf $(BUILD_DIR)/*