flags	:=	-f elf
cflags	:=	-Wall -O0 -ffreestanding -nostdlib -Wno-stack-protector
cflags	+=		-m16 -I./include -march=i386 -std=gnu23 -fno-unit-at-a-time
ldflags	:=	--script=kernel.ld
cobjs	:=  kernel.o
xobjs	:=	xkernel.o pf.o

NASMENV="-i include"
export NASMENV

.PHONY: clean run

all: loader.img

loader.img: loader.o kernel.img
	ld --script=loader.ld $< -o $@
	chmod -x $@
	truncate -s "%512" $@

loader.o: loader.asm
	nasm $(flags) $<

kernel.img: $(xobjs) $(cobjs)
	ld $(ldflags) $^ -o $@
	chmod -x $@
	truncate -s "%512" $@

xkernel.o: xkernel.asm
	nasm $(flags) $<

pf.o: pf.asm
	nasm $(flags) $<

kernel.o: kernel.c
	cc $(cflags) -c $<

clean:
	rm -f *.o *.img

run: clean loader.img
	qemu-system-i386 -nographic -hda loader.img -hdb kernel.img -m 16M
