OSNAME=os
BOOTOBJ=boot.o graphic.o hankaku.o

ASRC=./src/asm
CSRC=./src/c
FSRC=./src/font
OBJ=./obj
LS=./ls
TOOL=./tool
TMP=$(CSRC)/tmp

IMG=$(OSNAME).img
OSSYS=$(OBJ)/$(OSNAME).sys
IPL=$(OBJ)/ipl.bin

BINOPT=-nostdlib -Wl,--oformat=binary
QEMUOPT=-m 32 -localtime -vga std -fda

$(IMG) : $(OSSYS) $(IPL)
	mformat -f 1440 -C -B $(IPL) -i $(IMG) ::
	mcopy $(OSSYS) -i $(IMG) ::

$(OSSYS) : $(ASRC)/head.s $(ASRC)/func.s $(OBJ)/*.o $(FSRC)/hankaku.txt
	gcc $(ASRC)/head.s -nostdlib -T$(LS)/head.ls -o $(OBJ)/head.bin
	$(TOOL)/mkfont $(FSRC)/hankaku.txt -o $(CSRC)/hankaku.c
	$(TOOL)/mkobj $(CSRC)/*.c
	as $(ASRC)/func.s -o $(OBJ)/func.o
	ld -o $(OBJ)/boot.bin --script=$(LS)/boot.ls $(OBJ)/*.o
	cat $(OBJ)/head.bin $(OBJ)/boot.bin > $(OSSYS)

$(OBJ)/%.o : $(CSRC)/%.c
	gcc $(CSRC)/$*.c -I$(CSRC)/include $(BINOPT) -c -o $(OBJ)/$*.o

$(IPL) : $(ASRC)/ipl.s
	gcc $(ASRC)/ipl.s -nostdlib -T$(LS)/ipl.ls -o $(IPL)

run		: $(IMG)
	qemu $(QEMUOPT) $(IMG)
debug	: $(IMG)
	qemu -s -S $(QEMUOPT) $(IMG) -redir tcp:5555:127.0.0.1:1234 &
img		:;	make $(IMG)
clean	:;	rm $(OBJ)/*
