From 4a6bca0b560ae2c1a7cfe3b14f75ee38094b9b76 Mon Sep 17 00:00:00 2001 From: Oliver Schmidt Date: Sun, 19 Mar 2017 20:07:19 +0100 Subject: [PATCH] Run test for the 65C02 code generator / runtime too. Now that sim65's 65C02 support is actually functional we can run test for the 65C02 support in the compiler and the runtime. We learn the hard way this is a good idea as there are tests failing when built with optimizations for the 65C02: - val/compare7 - val/compare8 - val/compare9 - val/compare10 - val/or1 --- test/misc/Makefile | 27 ++++++++++++++------------- test/ref/Makefile | 11 ++++++----- test/val/Makefile | 18 +++++++++++++----- 3 files changed, 33 insertions(+), 23 deletions(-) diff --git a/test/misc/Makefile b/test/misc/Makefile index 6512a9fd9..06ee2a84f 100644 --- a/test/misc/Makefile +++ b/test/misc/Makefile @@ -20,7 +20,6 @@ else DEL = $(RM) $1 endif -CC65FLAGS = -t sim6502 SIM65FLAGS = -x 200000000 CL65 := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65) @@ -38,7 +37,8 @@ CFLAGS = -O2 .PHONY: all clean SOURCES := $(wildcard *.c) -TESTS = $(foreach option,$(OPTIONS),$(SOURCES:%.c=$(WORKDIR)/%.$(option).prg)) +TESTS = $(foreach option,$(OPTIONS),$(SOURCES:%.c=$(WORKDIR)/%.$(option).6502.prg)) +TESTS += $(foreach option,$(OPTIONS),$(SOURCES:%.c=$(WORKDIR)/%.$(option).65c02.prg)) all: $(TESTS) @@ -51,34 +51,35 @@ $(DIFF): ../bdiff.c | $(WORKDIR) define PRG_template # should compile, but then hangs in an endless loop -$(WORKDIR)/endless.$1.prg: endless.c | $(WORKDIR) - $(CL65) $(CC65FLAGS) -$1 -o $$@ $$< +$(WORKDIR)/endless.$1.$2.prg: endless.c | $(WORKDIR) + $(CL65) -t sim$2 -$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 $$@ $$< +$(WORKDIR)/limits.$1.$2.prg: limits.c $(DIFF) + $(CL65) -t sim$2 -$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) +$(WORKDIR)/fields.$1.$2.prg: fields.c | $(WORKDIR) @echo "FIXME: " $$@ "currently will fail." - $(CL65) $(CC65FLAGS) -$1 -o $$@ $$< + $(CL65) -t sim$2 -$1 -o $$@ $$< -$(SIM65) $(SIM65FLAGS) $$@ -$(WORKDIR)/sitest.$1.prg: sitest.c | $(WORKDIR) +$(WORKDIR)/sitest.$1.$2.prg: sitest.c | $(WORKDIR) @echo "FIXME: " $$@ "currently will fail." - -$(CL65) $(CC65FLAGS) -$1 -o $$@ $$< + -$(CL65) -t sim$2 -$1 -o $$@ $$< # -$(SIM65) $(SIM65FLAGS) $$@ -$(WORKDIR)/cc65141011.$1.prg: cc65141011.c | $(WORKDIR) +$(WORKDIR)/cc65141011.$1.$2.prg: cc65141011.c | $(WORKDIR) @echo "FIXME: " $$@ "currently can fail." - $(CL65) $(CC65FLAGS) -$1 -o $$@ $$< + $(CL65) -t sim$2 -$1 -o $$@ $$< -$(SIM65) $(SIM65FLAGS) $$@ endef # PRG_template -$(foreach option,$(OPTIONS),$(eval $(call PRG_template,$(option)))) +$(foreach option,$(OPTIONS),$(eval $(call PRG_template,$(option),6502))) +$(foreach option,$(OPTIONS),$(eval $(call PRG_template,$(option),65c02))) clean: @$(call RMDIR,$(WORKDIR)) diff --git a/test/ref/Makefile b/test/ref/Makefile index 7bd10cf14..55c859af1 100644 --- a/test/ref/Makefile +++ b/test/ref/Makefile @@ -19,7 +19,6 @@ else DEL = $(RM) $1 endif -CC65FLAGS = -t sim6502 SIM65FLAGS = -x 200000000 CL65 := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65) @@ -38,7 +37,8 @@ CFLAGS = -O2 -Wall -W -Wextra -funsigned-char -fwrapv -fno-strict-overflow SOURCES := $(wildcard *.c) REFS = $(SOURCES:%.c=$(WORKDIR)/%.ref) -TESTS = $(foreach option,$(OPTIONS),$(SOURCES:%.c=$(WORKDIR)/%.$(option).prg)) +TESTS = $(foreach option,$(OPTIONS),$(SOURCES:%.c=$(WORKDIR)/%.$(option).6502.prg)) +TESTS += $(foreach option,$(OPTIONS),$(SOURCES:%.c=$(WORKDIR)/%.$(option).65c02.prg)) all: $(REFS) $(TESTS) @@ -70,14 +70,15 @@ $(WORKDIR)/yaccdbg.%.prg: yacc.c define PRG_template -$(WORKDIR)/%.$1.prg: %.c $(WORKDIR)/%.ref $(DIFF) - $(CL65) $$(CC65FLAGS) -$1 -o $$@ $$< +$(WORKDIR)/%.$1.$2.prg: %.c $(WORKDIR)/%.ref $(DIFF) + $(CL65) -t sim$2 $$(CC65FLAGS) -$1 -o $$@ $$< $(SIM65) $(SIM65FLAGS) $$@ > $(WORKDIR)/$$*.out $(DIFF) $(WORKDIR)/$$*.out $(WORKDIR)/$$*.ref endef # PRG_template -$(foreach option,$(OPTIONS),$(eval $(call PRG_template,$(option)))) +$(foreach option,$(OPTIONS),$(eval $(call PRG_template,$(option),6502))) +$(foreach option,$(OPTIONS),$(eval $(call PRG_template,$(option),65c02))) clean: @$(call RMDIR,$(WORKDIR)) diff --git a/test/val/Makefile b/test/val/Makefile index 8a07045ee..425d8ace6 100644 --- a/test/val/Makefile +++ b/test/val/Makefile @@ -14,7 +14,6 @@ else DEL = $(RM) $1 endif -CC65FLAGS = -t sim6502 SIM65FLAGS = -x 200000000 CL65 := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65) @@ -27,7 +26,15 @@ OPTIONS = g O Os Osi Osir Oi Oir Or .PHONY: all clean SOURCES := $(wildcard *.c) -TESTS = $(foreach option,$(OPTIONS),$(SOURCES:%.c=$(WORKDIR)/%.$(option).prg)) +TESTS := $(foreach option,$(OPTIONS),$(SOURCES:%.c=$(WORKDIR)/%.$(option).6502.prg)) +TESTS += $(foreach option,$(OPTIONS),$(SOURCES:%.c=$(WORKDIR)/%.$(option).65c02.prg)) + +# FIXME: These tests fail when built with optimizations for the 65c02 +TESTS := $(filter-out $(WORKDIR)/compare7.O%.65c02.prg,$(TESTS)) +TESTS := $(filter-out $(WORKDIR)/compare8.O%.65c02.prg,$(TESTS)) +TESTS := $(filter-out $(WORKDIR)/compare9.O%.65c02.prg,$(TESTS)) +TESTS := $(filter-out $(WORKDIR)/compare10.O%.65c02.prg,$(TESTS)) +TESTS := $(filter-out $(WORKDIR)/or1.O%.65c02.prg,$(TESTS)) all: $(TESTS) @@ -46,13 +53,14 @@ $(WORKDIR)/cq84.%.prg: CC65FLAGS += -Wc --all-cdecl define PRG_template -$(WORKDIR)/%.$1.prg: %.c | $(WORKDIR) - $(CL65) $$(CC65FLAGS) -$1 -o $$@ $$< +$(WORKDIR)/%.$1.$2.prg: %.c | $(WORKDIR) + $(CL65) -t sim$2 $$(CC65FLAGS) -$1 -o $$@ $$< $(SIM65) $(SIM65FLAGS) $$@ endef # PRG_template -$(foreach option,$(OPTIONS),$(eval $(call PRG_template,$(option)))) +$(foreach option,$(OPTIONS),$(eval $(call PRG_template,$(option),6502))) +$(foreach option,$(OPTIONS),$(eval $(call PRG_template,$(option),65c02))) clean: @$(call RMDIR,$(WORKDIR)) -- 2.39.5