GDK= E:/MDKit/
CC= $(GDK)bin/gcc
OBJC= $(GDK)bin/objcopy
ASMZ80= $(GDK)bin/asmz80
BINTOC= $(GDK)bin/bintoc
NM= $(GDK)bin/nm
NM2WCH= $(GDK)bin/nm2wch
OUTPUT= game_menu
RESOL=bin
PATH=$(GDK)bin/
RM=C:/cygwin/bin/rm
OUTPUT_PATH= ../bin/

SRC_C= $(wildcard *.c)
SRC_S= $(wildcard *.s)
SRC_SZ80= $(wildcard *.s80)


OBJ= $(SRC_SZ80:.s80=.o)
OBJ+= $(SRC_C:.c=.o)
OBJ+= $(SRC_S:.s=.o)

LINKOBJ= sega.o \
        $(GDK)lib/base.o \
        $(GDK)lib/tools.o \
        $(GDK)lib/vdp.o \
        $(GDK)lib/font.o \
        $(GDK)lib/vdp_bg.o \
        $(GDK)lib/vdp_dma.o \
        $(GDK)lib/vdp_pal.o \
        $(GDK)lib/vdp_spr.o \
        $(GDK)lib/vdp_tile.o \
        $(GDK)lib/joy.o \
        $(GDK)lib/timer.o \
		$(GDK)lib/psg.o \
		$(GDK)lib/z80_ctrl.o \
		$(GDK)lib/ym2612.o \
        $(OBJ)

INCS= -I$(GDK)include
FLAGS= $(OPTION) -m68000 -Wall -O1 -fomit-frame-pointer $(INCS)
FLAGSZ80= -c -i -x1 -x2 -x3 -z -lnul

all: $(OUTPUT).$(RESOL)


$(OUTPUT).$(RESOL): $(OUTPUT).out
	$(NM) -n -S -t x $(OUTPUT).out >$(OUTPUT).nm
	$(NM2WCH) $(OUTPUT).nm $(OUTPUT).wch
	$(OBJC) --pad-to 65536 -O binary $(OUTPUT).out $(OUTPUT_PATH)$(OUTPUT).$(RESOL)

$(OUTPUT).out: $(OBJ)
	$(CC) -T $(GDK)bin/md.ld -nostdlib $(LINKOBJ) $(GDK)bin/libgcc.a -o $(OUTPUT).out


%.o80: %.s80
	$(ASMZ80) $(FLAGSZ80) -o$@ $<

%.c: %.o80
	$(BINTOC) $<

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

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

clean:
	$(RM) *.o
	$(RM) $(OUTPUT_PATH)$(OUTPUT).$(RESOL)
	$(RM) *.out
	$(RM) *.wch
	$(RM) *.nm
