CC ?= gcc
CFLAGS ?=
LDFLAGS ?=
LDLIBS ?= -lSDL2

SUFFIXES ?= .c .o
.SUFFIXES: $(SUFFIXES) .

PROG = casio_asm_interpreter
OBJS = decoder.o decoderImp.o executer.o executerImp.o linker.o main.o mmu.o proc.o segments.o segmentsFile.o stack.o
LINK = ../common/*.o

all: $(PROG)

$(PROG): $(OBJS)
	$(CC) $(CFLAGS) $(LDFLAGS) $(LDLIBS) -o $(PROG) $(OBJS) $(LINK)

.c.o:
	$(CC) $(CFLAGS) -c $*.c

clean: 
	rm -f *.o
	rm -f $(PROG)
	rm -f $(PROG).exe

cleanrun: clean run

run: all
	./$(PROG)

deps:
	(cd ../data && make)
	(cd ../common && make clean && make)

test: deps clean all
	./$(PROG) ../test/test.bin
