Skip to content

Commit

Permalink
Run test for the 65C02 code generator / runtime too.
Browse files Browse the repository at this point in the history
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
  • Loading branch information
oliverschmidt committed Mar 19, 2017
1 parent ff9b77b commit 4a6bca0
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 23 deletions.
27 changes: 14 additions & 13 deletions test/misc/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ else
DEL = $(RM) $1
endif

CC65FLAGS = -t sim6502
SIM65FLAGS = -x 200000000

CL65 := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65)
Expand All @@ -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)

Expand All @@ -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))
Expand Down
11 changes: 6 additions & 5 deletions test/ref/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ else
DEL = $(RM) $1
endif

CC65FLAGS = -t sim6502
SIM65FLAGS = -x 200000000

CL65 := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65)
Expand All @@ -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)

Expand Down Expand Up @@ -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))
Expand Down
18 changes: 13 additions & 5 deletions test/val/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ else
DEL = $(RM) $1
endif

CC65FLAGS = -t sim6502
SIM65FLAGS = -x 200000000

CL65 := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65)
Expand All @@ -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)

Expand All @@ -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))
Expand Down

0 comments on commit 4a6bca0

Please sign in to comment.