GDK= ../../
CC= $(GDK)bin/gcc
OBJC= $(GDK)bin/objcopy
ASMZ80= $(GDK)bin/asmz80
BINTOC= $(GDK)bin/bintoc
NM= $(GDK)bin/nm
NM2WCH= $(GDK)bin/nm2wch
FIX64K= $(GDK)bin/64kfix
OUTPUT= module
RESOL=bin

SRC_S = header.s
SRC_C = $(wildcard *.c)
SRC_LIB_C = $(wildcard $(GDK)lib/*.c)


LINKOBJ = $(SRC_S:.s=.o)
LINKOBJ += $(SRC_C:.c=.o)
LINKOBJ += $(SRC_LIB_C:.c=.o)

OBJ2 = emulation.s



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

all: $(OUTPUT).$(RESOL) emulation


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


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


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

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

emulation:
	$(CC) -T rom.ld -nostdlib -c emulation.s -o emulation.o
	$(OBJC) -O binary emulation.o emulation.bin


clean:
	$(RM) *.o
	$(RM) *.out
	$(RM) *.wch
	$(RM) *.nm
	$(RM) ../lib/*.o
