OBJ := $(shell cat OBJ)
CC = gcc
LD = ld
INCLUDES = -Idrivers/include -Ikernel/include -Ilibc/include
CFLAGS = -std=gnu99 -ffreestanding -fno-stack-protector -nostdlib -Wall -Wextra -m32 $(INCLUDES) -g

AS = as
ASFLAGS=-march=i686 --32

all: kappa.bin

test: iso
	qemu-system-i386 kappa.iso

iso: kappa.bin
	mkdir -p isodir
	mkdir -p isodir/boot
	cp kappa.bin isodir/efi.img
	cp kappa.bin isodir/boot/kappa.bin
	mkdir -p isodir/boot/grub
	cp cdrom/grub.cfg isodir/boot/grub
	grub-mkrescue -o kappa.iso isodir

kappa.bin: $(OBJ) $(SOURCES) Makefile
	$(LD) -T kernel/linker.ld -o kappa.bin -melf_i386 $(OBJ)

%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@

%.o: %.S
	$(AS) $(ASFLAGS) -c $< -o $@

clean:
	rm -f $(OBJ) kappa.iso kappa.bin
	rm -rf isodir
