]> git.sur5r.net Git - cc65/blob - test/ref/Makefile
Merge branch 'master' of https://github.com/cc65/cc65 into c1p
[cc65] / test / ref / Makefile
1
2 # makefile for the regression tests that generate output which has to be
3 # compared with reference output
4
5 ifneq ($(shell echo),)
6   CMD_EXE := 1
7 endif
8
9 CC65FLAGS := -t sim6502
10 SIM65FLAGS := -x 200000000
11
12 CL65 := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65)
13 SIM65 := $(if $(wildcard ../../bin/sim65*),../../bin/sim65,sim65)
14
15 ifdef CMD_EXE
16 RM := del /f
17 else
18 RM := rm -f
19 endif
20
21 WORKDIR := ../../testwrk
22
23 DIFF := $(WORKDIR)/bdiff
24
25 CFLAGS := -O2 -Wall -W -Wextra -fwrapv -fno-strict-overflow
26
27 .PHONY: all clean
28
29 SOURCES := $(wildcard *.c)
30 REFS := $(SOURCES:%.c=$(WORKDIR)/%.ref)
31 TESTS := $(foreach option,. .o. .os. .osi. .osir. .oi. .oir. .or.,$(SOURCES:%.c=$(WORKDIR)/%$(option)prg))
32
33 all: $(REFS) $(TESTS)
34
35 $(WORKDIR)/%.ref: %.c
36         $(CC) $(CFLAGS) $< -o $(WORKDIR)/$*.host
37         $(WORKDIR)/$*.host > $@
38
39 $(WORKDIR)/%.prg: %.c $(WORKDIR)/%.ref
40         $(CL65) $(CC65FLAGS) $< -o $@
41         $(SIM65) $(SIM65FLAGS) $@ > $(WORKDIR)/$*.out
42         $(DIFF) $(WORKDIR)/$*.out $(WORKDIR)/$*.ref
43
44 $(WORKDIR)/%.o.prg: %.c $(WORKDIR)/%.ref
45         $(CL65) -O $(CC65FLAGS) $< -o $@
46         $(SIM65) $(SIM65FLAGS) $@ > $(WORKDIR)/$*.out
47         $(DIFF) $(WORKDIR)/$*.out $(WORKDIR)/$*.ref
48
49 $(WORKDIR)/%.os.prg: %.c $(WORKDIR)/%.ref
50         $(CL65) -Os $(CC65FLAGS) $< -o $@
51         $(SIM65) $(SIM65FLAGS) $@ > $(WORKDIR)/$*.out
52         $(DIFF) $(WORKDIR)/$*.out $(WORKDIR)/$*.ref
53
54 $(WORKDIR)/%.osi.prg: %.c $(WORKDIR)/%.ref
55         $(CL65) -Osi $(CC65FLAGS) $< -o $@
56         $(SIM65) $(SIM65FLAGS) $@ > $(WORKDIR)/$*.out
57         $(DIFF) $(WORKDIR)/$*.out $(WORKDIR)/$*.ref
58
59 $(WORKDIR)/%.osir.prg: %.c $(WORKDIR)/%.ref
60         $(CL65) -Osir $(CC65FLAGS) $< -o $@
61         $(SIM65) $(SIM65FLAGS) $@ > $(WORKDIR)/$*.out
62         $(DIFF) $(WORKDIR)/$*.out $(WORKDIR)/$*.ref
63
64 $(WORKDIR)/%.oi.prg: %.c $(WORKDIR)/%.ref
65         $(CL65) -Oi $(CC65FLAGS) $< -o $@
66         $(SIM65) $(SIM65FLAGS) $@ > $(WORKDIR)/$*.out
67         $(DIFF) $(WORKDIR)/$*.out $(WORKDIR)/$*.ref
68
69 $(WORKDIR)/%.oir.prg: %.c $(WORKDIR)/%.ref
70         $(CL65) -Oir $(CC65FLAGS) $< -o $@
71         $(SIM65) $(SIM65FLAGS) $@ > $(WORKDIR)/$*.out
72         $(DIFF) $(WORKDIR)/$*.out $(WORKDIR)/$*.ref
73
74 $(WORKDIR)/%.or.prg: %.c $(WORKDIR)/%.ref
75         $(CL65) -Or $(CC65FLAGS) $< -o $@
76         $(SIM65) $(SIM65FLAGS) $@ > $(WORKDIR)/$*.out
77         $(DIFF) $(WORKDIR)/$*.out $(WORKDIR)/$*.ref
78
79 clean:
80         @$(RM) $(TESTS)
81         @$(RM) $(SOURCES:.c=.o)
82         @$(RM) $(SOURCES:%.c=$(WORKDIR)/%.out)
83         @$(RM) $(SOURCES:%.c=$(WORKDIR)/%.ref)
84         @$(RM) $(SOURCES:%.c=$(WORKDIR)/%.host)