CC = gcc
LD = ld
OPTIONS = -fno-builtin
INCLUDE = "../include"
OFILES = main/main.o mv/mv.o intr/intr.o except/exception.o dev/dev.o graph/graph32.o str/str.o proc/proc.o test/test.o

.c.o:
	$(CC) -c -I$(INCLUDE) $(OPTIONS) -o $*.o $<

.s.o:
	nasm -f elf -o $*.o $<

all: kernel.bin

kernel.bin: $(OFILES)
	$(LD) -okernel.bin -Ttext=0xC0000000 -defsym bss_start=__bss_start -defsym bss_end=_end --oformat=binary -Map kernel.txt $(OFILES)


main/main.o:
	cd main && make all

mv/mv.o:
	cd mv && make all

intr/intr.o:
	cd intr && make all

except/exception.o:
	cd except && make all

dev/dev.o:
	cd dev && make all

graph/graph32.o:
	cd graph && make all

str/str.o:
	cd str && make all

test/test.o:
	cd test && make all

proc/proc.o:
	cd proc && make all

clean:
	cd main && make clean
	cd str && make clean
	cd mv && make clean
	cd graph && make clean
	cd except && make clean
	cd intr && make clean
	cd dev && make clean
	cd proc && make clean
	cd test && make clean
	rm -f	kernel.bin
	rm -f kernel.txt

