init(kernel, kernel.elf)

preset(freestanding)
# This makes debugging hard :(
# preset(optimize)
preset(debug)
preset(32)
preset(warn)
preset(nasm)

archetype(c)
archetype(asm)

depends(sys, $(ROOT)/src/libsys, libsys.a)
depends(initrd, $(ROOT)/boot/initrd, initrd.img)
depends(ata_pio, dri/ata_pio, ata_pio.a)
depends(pci, dri/pci, pci.a)
depends(ide, dri/ide, ide.a)
depends(ext2, dri/fs/ext2, ext2.a)
# AHCI not yet implemented
# depends(ahci, dri/ahci, ahci.a)

TEST ?=
test_defines = $(TEST:%=-DTEST_%)

FS ?= ext2

CFLAGS += -I $(ROOT)/include/kernel $(test_defines) -O0

LDFLAGS += -Tlink.ld -melf_i386
ASMFLAGS += -felf -Fdwarf
QEMUFLAGS = -hda hd0_ext2.img

OBJECTS = 	boot.o \
			main.o \
			descriptor_tables.o \
			io.o \
			vga.o \
			gdt_flush.o \
			idt.o \
			log.o \
			irq.o \
			pic.o \
			timer.o \
			paging.o \
			switch_table.o \
			scan_codes.o \
			kheap.o \
			alloc.o \
			vfs.o \
			multiboot.o \
			vfs_initrd.o \
			syscall.o \
			task.o \
			task_api.o \
			faults.o \
			sync.o \
			lib(ext2) \
			lib(ide) \
			lib(ata_pio) \
			lib(pci) \
			lib(sys)

type(custom_link)

debug-wait: kernel.elf
	qemu-system-i386 -s -S $(QEMUFLAGS) -kernel kernel.elf

debug: kernel.elf
	qemu-system-i386 -s -S $(QEMUFLAGS) -kernel kernel.elf &
	@echo run "target remote localhost:1234" to connect to qemu
	gdb $<
	@pkill qemu-system-i38

hd0_%.img:
	status_log(MKFS, $@)
	@dd bs=4M count=8 if=/dev/zero of=$@
	@$(patsubst hd0_%.img,mkfs.%,$@) $@

qemu: kernel.elf hd0_$(FS).img
	qemu-system-i386 $(QEMUFLAGS) -d cpu_reset -monitor stdio -kernel kernel.elf -no-reboot

qemu-iso: install
	qemu-system-i386 $(QEMUFLAGS) -monitor stdio $(ROOT)/bin/bluejay.iso

scan_codes.c: gen_scan_codes.py scan_codes.tsv 
	python3 $< > $@

mount: hd0_$(FS).img
	status_log(MOUNT, $^ $(ROOT)/mnt)
	@if [ "$(whoami)" = root ]; then echo "DON'T RUN THIS AS ROOT" && exit 1; fi
	@mkdir -p $(ROOT)/mnt
	@mount $^ $(ROOT)/mnt

umount:
	status_log(UMOUNT, $(ROOT)/mnt)
	@umount $(ROOT)/mnt

install: kernel.elf lib(initrd)
	cp kernel.elf $(ROOT)/boot/
	rm -f $(ROOT)/bin/bluejay.iso
	grub-mkrescue -o $(ROOT)/bin/bluejay.iso $(ROOT)

finish
