* src/pic/pcode.c (addpCode2pBlock,LinkFlow,pBlockRemoveUnusedLabels):
[fw/sdcc] / src / regression / Makefile
1 # Regression testing Makefile for Pic Port of SDCC
2 #
3 # note that this regression suite was started before
4 # the one in sdcc/regression. The regression suite in
5 # sdcc/regression is better suited for testing mature
6 # ports.
7 #
8 # GPL'd
9 #
10 # T. Scott Dattalo scott@dattalo.com
11 #
12 # This makefile provides a means by which the output
13 # of the SDCC Compiler can be tested. This version
14 # is unique to the PIC (as in Microchip PIC) port.
15 # As such it requires the following software:
16 #
17 #  gpasm version 0.11.1 (or greater)
18 #  gpsim version 0.20.7 (or greater)
19 #
20 # Usage:
21 #
22 # make
23 #  - without any options the whole regression test is
24 #    performed. The results are placed into a log file
25 #    (defined by $LOGFILE).
26 #
27 # make asm
28 #  - Creates .asm files by compiling the .c files
29 #
30 # make cod
31 #  - Creates .cod files by assembling the .asm files
32 #    (.cod files are symbolic files compatible with
33 #    MPASM, Microchip's assembler)
34 #
35 # make stc
36 #  - Creates .stc files which are script files for
37 #    gpsim.
38 #
39 # make clean
40 #  - removes all of the intermediate files created
41 #
42 # make cleancod
43 # make cleanasm
44 # make cleanstc
45 # make cleano
46 #  - removes either the .stc, .asm, .cod or .o files
47
48 # verboseness
49 #Q ?= # be verbose
50 Q ?= @ # be quiet
51
52 CC = sdcc
53 LINKER = gplink
54 TARGETPIC = 16f877
55 CFLAGS = -Wl,--map -I ../../device/include/pic -L ../../device/lib/pic/bin -mpic14 -pp$(TARGETPIC) -Wl,-q --no-pcode-opt
56
57 .SUFFIXES: .asm .c .cod .stc
58
59 # Results of the test are placed here:
60 LOGFILE = test.log
61
62 # Script file for creating gpsim scripts
63 CREATESTC = create_stc
64
65 # Script file for invoking gpsim
66 SIMULATE = simulate
67
68 # List the C files to be test here:
69 SRC = add.c \
70       add2.c \
71       add3.c \
72       add4.c \
73       and1.c \
74       and2.c \
75       arrays.c \
76       b.c \
77       bank1.c \
78       bool1.c \
79       bool2.c \
80       bool3.c \
81       call1.c \
82       compare.c \
83       compare10.c \
84       compare2.c \
85       compare3.c \
86       compare4.c \
87       compare5.c \
88       compare6.c \
89       compare7.c \
90       compare8.c \
91       compare9.c \
92       configword.c \
93       empty.c \
94       for.c \
95       inline.c \
96       mult1.c \
97       nestfor.c \
98       or1.c \
99       pointer1.c \
100       ptrarg.c \
101       ptrfunc.c \
102       rotate1.c \
103       rotate2.c \
104       rotate3.c \
105       rotate4.c \
106       rotate5.c \
107       rotate6.c \
108       rotate7.c \
109       string1.c \
110       struct1.c \
111       sub.c \
112       sub2.c \
113       switch1.c \
114       while.c \
115       xor.c
116
117 COD := $(patsubst %.c, %.cod, $(SRC))
118 ASM := $(patsubst %.c, %.asm, $(SRC))
119 O   := $(patsubst %.c, %.o,   $(SRC))
120 P   := $(patsubst %.c, %.p,   $(SRC))
121 STC := $(patsubst %.c, %.stc, $(SRC))
122 HEX := $(patsubst %.c, %.hex, $(SRC))
123 LST := $(patsubst %.c, %.lst, $(SRC))
124 MAP := $(patsubst %.c, %.map, $(SRC))
125
126 all:    test
127
128
129 # The cod files are generated by sdcc
130 .c.cod:
131         $(Q)-$(CC) $(CFLAGS) $*.c
132
133 # The .stc files are script files for gpsim
134 .cod.stc:
135         $(Q)-./$(CREATESTC) $*.cod $*.stc
136         $(Q)-./$(SIMULATE) $*.stc $(LOGFILE)
137
138 # this will also make .stc files
139 #%.stc : %.cod
140 #       ./create_stc $^ $@
141
142 # now for the dependencies
143
144 cod : $(COD)
145
146 o : $(O)
147
148 asm : $(ASM)
149
150 stc : $(STC)
151         echo $(STC)
152
153 test:   $(STC)
154         $(Q)echo "Done - Results are in $(LOGFILE)"
155
156 cleancod:
157         files="$(COD)" ; \
158         for f in $$files ; do \
159           if [ -f $$f ]; then rm $$f; fi \
160         done ; \
161
162 cleano:
163         files="$(O)" ; \
164         for f in $$files ; do \
165           if [ -f $$f ]; then rm $$f; fi \
166         done ; \
167
168 cleanp:
169         files="$(P)" ; \
170         for f in $$files ; do \
171           if [ -f $$f ]; then rm $$f; fi \
172         done ; \
173
174 cleanasm:
175         files="$(ASM)" ; \
176         for f in $$files ; do \
177           if [ -f $$f ]; then rm $$f; fi \
178         done ; \
179
180 cleanstc:
181         files="$(STC)" ; \
182         for f in $$files ; do \
183           if [ -f $$f ]; then rm $$f; fi \
184         done ; \
185
186 cleanhex:
187         files="$(HEX)" ; \
188         for f in $$files ; do \
189           if [ -f $$f ]; then rm $$f; fi \
190         done ; \
191
192 cleanlst:
193         files="$(LST)" ; \
194         for f in $$files ; do \
195           if [ -f $$f ]; then rm $$f; fi \
196         done ; \
197
198 cleanmap:
199         files="$(MAP)" ; \
200         for f in $$files ; do \
201           if [ -f $$f ]; then rm $$f; fi \
202         done ; \
203
204 clean: cleancod cleanasm cleanstc cleano cleanp cleanhex cleanlst cleanmap
205         if [ -f "$(LOGFILE)" ]; then rm $(LOGFILE); fi