# Port specification for compiling on the host machines version of gcc
-SDCC = gcc
-SDCCFLAGS = -Wall
+SDCC = $(shell ( sh -c "gcc --version" 2>&1 ) > /dev/null && echo gcc || echo cc)
+SDCCFLAGS = -DPORT_HOST=1 -Wall -fsigned-char -fpack-struct -DREENTRANT= -I$(top_builddir) -I$(top_srcdir)
EXEEXT = .bin
+OBJEXT = .o
+INC_DIR = .
+
+# otherwise `make` deletes testfwk.o and `make -j` will fail
+.PRECIOUS: $(PORT_CASES_DIR)/%$(OBJEXT)
# Required extras
-EXTRAS = fwk/lib/testfwk$(OBJEXT) ports/$(PORT)/support$(OBJEXT)
+EXTRAS = $(PORT_CASES_DIR)/testfwk$(OBJEXT) $(PORT_CASES_DIR)/support$(OBJEXT)
%.out: %$(EXEEXT)
- mkdir -p `dirname $@`
+ mkdir -p $(dir $@)
-$< > $@
- -grep -n FAIL $@ /dev/null || true
+ -grep -n FAIL $@ /dev/null || true
%$(EXEEXT): %$(OBJEXT) $(EXTRAS)
- $(SDCC) $(SDCCFLAGS) -o $@ $< $(EXTRAS)
+ $(SDCC) $(SDCCFLAGS) -o $@ $< $(EXTRAS) -lm
+
+%$(OBJEXT): %.c
+ $(SDCC) $(SDCCFLAGS) -c $< -o $@
-%$(OBJEXT): %.c fwk/include/*.h
+$(PORT_CASES_DIR)/%$(OBJEXT): $(PORTS_DIR)/$(PORT)/%.c
$(SDCC) $(SDCCFLAGS) -c $< -o $@
+
+$(PORT_CASES_DIR)/%$(OBJEXT): fwk/lib/%.c
+ $(SDCC) $(SDCCFLAGS) -c $< -o $@
+
+_clean: