# Makefile for the remaining tests that need special care in one way or another ifneq ($(shell echo),) CMD_EXE = 1 endif ifdef CMD_EXE S = $(subst /,\,/) NOT = - # Hack EXE = .exe MKDIR = mkdir $(subst /,\,$1) RMDIR = -rmdir /s /q $(subst /,\,$1) DEL = del /f $(subst /,\,$1) else S = / NOT = ! EXE = MKDIR = mkdir -p $1 RMDIR = $(RM) -r $1 DEL = $(RM) $1 endif CC65FLAGS = -t sim6502 SIM65FLAGS = -x 200000000 CL65 := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65) SIM65 := $(if $(wildcard ../../bin/sim65*),..$S..$Sbin$Ssim65,sim65) WORKDIR = ..$S..$Stestwrk$Smisc OPTIONS = g O Os Osi Osir Oi Oir Or DIFF = $(WORKDIR)$Sbdiff$(EXE) CC = gcc CFLAGS = -O2 .PHONY: all clean SOURCES := $(wildcard *.c) TESTS = $(foreach option,$(OPTIONS),$(SOURCES:%.c=$(WORKDIR)/%.$(option).prg)) all: $(TESTS) $(WORKDIR): $(call MKDIR,$(WORKDIR)) $(DIFF): ../bdiff.c | $(WORKDIR) $(CC) $(CFLAGS) -o $@ $< define PRG_template # should compile, but then hangs in an endless loop $(WORKDIR)/endless.$1.prg: endless.c | $(WORKDIR) $(CL65) $(CC65FLAGS) -$1 -o $$@ $$< $(NOT) $(SIM65) $(SIM65FLAGS) $$@ # these need reference data that can't be generated by a host-compiled program, # in a useful way $(WORKDIR)/limits.$1.prg: limits.c $(DIFF) $(CL65) $(CC65FLAGS) -$1 -o $$@ $$< $(SIM65) $(SIM65FLAGS) $$@ > $(WORKDIR)/limits.$1.out $(DIFF) $(WORKDIR)/limits.$1.out limits.ref # the rest are tests that fail currently for one reason or another $(WORKDIR)/fields.$1.prg: fields.c | $(WORKDIR) @echo "FIXME: " $$@ "currently will fail." $(CL65) $(CC65FLAGS) -$1 -o $$@ $$< -$(SIM65) $(SIM65FLAGS) $$@ $(WORKDIR)/sitest.$1.prg: sitest.c | $(WORKDIR) @echo "FIXME: " $$@ "currently will fail." -$(CL65) $(CC65FLAGS) -$1 -o $$@ $$< # -$(SIM65) $(SIM65FLAGS) $$@ $(WORKDIR)/cc65141011.$1.prg: cc65141011.c | $(WORKDIR) @echo "FIXME: " $$@ "currently can fail." $(CL65) $(CC65FLAGS) -$1 -o $$@ $$< -$(SIM65) $(SIM65FLAGS) $$@ endef # PRG_template $(foreach option,$(OPTIONS),$(eval $(call PRG_template,$(option)))) clean: @$(call RMDIR,$(WORKDIR)) @$(call DEL,$(SOURCES:.c=.o))