include objfiles.mk

CFLAGS = -O2 -I ../include -fno-builtin -nostdinc -Wall
ASMFLAGS = -i ../include/asm/ -f elf32

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

obj/%.o: ../kernel/entry/x86_16/%.asm
	nasm $(ASMFLAGS) -o $@ $<

obj/%.o: ../kernel/console/x86_32/%.asm
	nasm $(ASMFLAGS) -o $@ $<

obj/%.o: ../klib/x86_16/%.asm
	nasm $(ASMFLAGS) -o $@ $<

obj/%.o: ../klib/x86_32/%.asm
	nasm $(ASMFLAGS) -o $@ $<

obj/%.o: ../klib/console/%.c
	$(CC) $(CFLAGS) -c -o $@ $<

obj/%.o: ../kernel/stack/%.asm
	nasm $(ASMFLAGS) -o $@ $<

obj/%.o: ../kernel/idt/%.asm
	nasm $(ASMFLAGS) -o $@ $<

.asm.o:
	nasm $(ASMFLAGS) -o $@ $<
	

install: KERNEL.MNT
	mount -o loop test.img test 
	rm -f test/KERNEL.MNT
	cp KERNEL.MNT test
	umount test

KERNEL.MNT: $(OBJS)
	ld -M -Tlink.ld $(OBJS) -o KERNEL.MNT > kernel.map

asm: csrc/dbg_video.s csrc/hello.s


csrc/dbg_video.s: csrc/dbg_video.c
	(cd csrc; $(CC) -S $(CFLAGS) dbg_video.c)

start/start.o: start/start.asm
	(cd start; nasm -felf32 start.asm)

csrc/dbg_video.o: csrc/dbg_video.c
	(cd csrc; $(CC) $(CFLAGS) -c dbg_video.c)

clean:
	rm -f KERNEL.MNT $(OBJS) csrc/*.s *.map
