OBJS = boot.o kernel.o vga.o gdt.o idt.o interrupt.o pic.o keyboard.o shell.o string.o kmalloc.o timer.o paging.o frame.o task.o exec.o ata.o

kernel.elf: $(OBJS) linker.ld
	ld.lld -m elf_i386 -T linker.ld -o kernel.elf $(OBJS)

%.o: %.c
	clang --target=i386-elf -ffreestanding -fno-stack-protector -fno-pic -Wall -Wextra -c $< -o $@

%.o: %.s
	clang --target=i386-elf -c $< -o $@

debug: kernel.elf
	qemu-system-i386 -kernel kernel.elf -d int,cpu_reset -no-reboot

clean:
	rm -f *.o kernel.elf

.PHONY: run debug clean



run: kernel.elf disk.img
	qemu-system-i386 -kernel kernel.elf -drive file=disk.img,format=raw,if=ide

disk.img: hello.bin
	python3 mkdisk.py hello.bin