# Compiler and flags CC = gcc CXX = g++ AS = nasm LD = ld CFLAGS = -g -Wall CXXFLAGS = -g -Wall LDFLAGS = -T linker.ld # Source files BOOT_SOURCE_FILES = src/boot/boot.asm src/boot/linker.ld GRUB_SOURCE_FILES = src/boot/grub/grub.cfg src/boot/grub/menu.lst DRIVERS_SOURCE_FILES = src/drivers/audio/audio.c src/drivers/audio/audio.h \ src/drivers/bus/eisa.c src/drivers/bus/eisa.h \ src/drivers/bus/isa.c src/drivers/bus/isa.h \ src/drivers/bus/mca.c src/drivers/bus/mca.h \ src/drivers/bus/pci.c src/drivers/bus/pci.h \ src/drivers/bus/vesa.c src/drivers/bus/vesa.h \ src/drivers/display/display.c src/drivers/display/display.h \ src/drivers/io/io.c src/drivers/io/io.h \ src/drivers/keyboard/keyboard.c src/drivers/keyboard/keyboard.h \ src/drivers/screen/screen.c src/drivers/screen/screen.h \ src/drivers/tty/tty.c src/drivers/tty/tty.h KERNEL_SOURCE_FILES = src/kernel/arch/x86/include/memory.h \ src/kernel/arch/x86/include/types.h \ src/kernel/arch/x86/memory/memory.c \ src/kernel/arch/x86/gdt.c \ src/kernel/arch/x86/idt.c src/kernel/arch/x86/idt.h \ src/kernel/arch/x86/isr.c src/kernel/arch/x86/isr.h \ src/kernel/kernel.c src/kernel/kernel.h \ src/kernel/linker.ld src/kernel/print.c # Object files BOOT_OBJECT_FILES = $(patsubst %.asm, %.o, $(filter %.asm, $(BOOT_SOURCE_FILES))) KERNEL_OBJECT_FILES = $(patsubst %.c, %.o, $(filter %.c, $(KERNEL_SOURCE_FILES))) # Executable ClassicOS: $(BOOT_OBJECT_FILES) $(KERNEL_OBJECT_FILES) $(LD) $(LDFLAGS) -o $@ $^ # Assembly files %.o: %.asm $(AS) -f elf32 -o $@ $< # C files %.o: %.c $(CC) $(CFLAGS) -c -o $@ $< # Clean clean: rm -f $(BOOT_OBJECT_FILES) $(KERNEL_OBJECT_FILES) ClassicOS