2025-05-23 05:18:12 +00:00
|
|
|
# Makefile
|
|
|
|
|
|
|
|
|
|
#Some definitions
|
|
|
|
|
SRC_DIR = src
|
|
|
|
|
BUILD_DIR = build
|
2025-05-26 21:46:55 +00:00
|
|
|
|
2025-05-26 21:42:00 +00:00
|
|
|
LOADER_DIR = module_bootloader
|
2025-05-26 21:46:55 +00:00
|
|
|
LOADER_IMG = uOS.iso
|
2025-05-23 05:18:12 +00:00
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
2025-05-26 21:42:00 +00:00
|
|
|
KERNEL_IMG = $(BUILD_DIR)/ukern.elf
|
2025-05-23 05:18:12 +00:00
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
2025-05-26 21:42:00 +00:00
|
|
|
iso: all
|
|
|
|
|
mv $(KERNEL_IMG) $(LOADER_DIR)/src/boot/; \
|
|
|
|
|
cd $(LOADER_DIR); \
|
|
|
|
|
make all; \
|
|
|
|
|
cd ..; \
|
2025-05-26 21:46:55 +00:00
|
|
|
mv $(LOADER_DIR)/build/$(LOADER_IMG) $(BUILD_DIR)/
|
|
|
|
|
|
|
|
|
|
run_iso: iso
|
|
|
|
|
$(QEMU) -cdrom $(BUILD_DIR)/$(LOADER_IMG)
|
2025-05-26 21:42:00 +00:00
|
|
|
|
2025-05-23 05:18:12 +00:00
|
|
|
clean:
|
2025-05-26 21:42:00 +00:00
|
|
|
rm -rf $(BUILD_DIR)/*
|
2025-05-23 05:18:12 +00:00
|
|
|
|