HEADERS :=
LDLIBS := $(LDEXTRALIBS)
TARGET_ARCH := -march=native

MODULES := jforth z80
EXECUTABLE := jforth

CC := gcc
PYTHON := python

# Set this to e.g. '-O2' for production, '-O0 -g' for debugging
CCDBGFLAGS := -O2 -flto
CFLAGS := -march=native $(CCDBGFLAGS) -std=c11 -Wall -Werror $(HEADERS) $(CCUSERFLAGS)
LDFLAGS  := -march=native $(CCDBGFLAGS) $(LDUSERFLAGS)

all: $(EXECUTABLE)

#%.o: %.c
#	$(CC) $(CFLAGS) ($CPPFLAGS) $(TARGET_ARCH) $< -o $@

depend:
	$(CC) $(CCMFLAGS) $(HEADERS) -MM $(MODULES:%=%.c) > .depend

-include .depend

$(EXECUTABLE): $(MODULES:%=%.o)
	$(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@

check: $(EXECUTABLE)
	$(PYTHON) JAForth.py tests/test-compliance.4th tests/test-compliance.ja.tap > tests/test-compliance.ja.out
	./$(EXECUTABLE) < tests/test-compliance.4th tests/test-compliance.j.tap > tests/test-compliance.j.out
	cmp tests/test-compliance.ja.tap tests/test-compliance.j.tap
	cmp tests/test-compliance.ja.out tests/test-compliance.j.out

clean:
	rm -f $(MODULES:%=%.o) $(EXECUTABLE)

distclean: clean
	rm -f .depend

.PHONY: all depend clean distclean check
