summaryrefslogtreecommitdiff
path: root/src/regression/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'src/regression/Makefile')
-rw-r--r--src/regression/Makefile226
1 files changed, 226 insertions, 0 deletions
diff --git a/src/regression/Makefile b/src/regression/Makefile
new file mode 100644
index 0000000..26a7ff3
--- /dev/null
+++ b/src/regression/Makefile
@@ -0,0 +1,226 @@
+# Regression testing Makefile for Pic Port of SDCC
+#
+# note that this regression suite was started before
+# the one in sdcc/regression. The regression suite in
+# sdcc/regression is better suited for testing mature
+# ports.
+#
+# GPL'd
+#
+# T. Scott Dattalo scott@dattalo.com
+#
+# This makefile provides a means by which the output
+# of the SDCC Compiler can be tested. This version
+# is unique to the PIC (as in Microchip PIC) port.
+# As such it requires the following software:
+#
+# gpasm version 0.11.1 (or greater)
+# gpsim version 0.20.7 (or greater)
+#
+# Usage:
+#
+# make
+# - without any options the whole regression test is
+# performed. The results are placed into a log file
+# (defined by $LOGFILE).
+#
+# make asm
+# - Creates .asm files by compiling the .c files
+#
+# make cod
+# - Creates .cod files by assembling the .asm files
+# (.cod files are symbolic files compatible with
+# MPASM, Microchip's assembler)
+#
+# make stc
+# - Creates .stc files which are script files for
+# gpsim.
+#
+# make clean
+# - removes all of the intermediate files created
+#
+# make cleancod
+# make cleanasm
+# make cleanstc
+# make cleano
+# - removes either the .stc, .asm, .cod or .o files
+
+# verboseness
+#Q ?= # be verbose
+Q ?= @ # be quiet
+
+SDCC_SRC=../..
+SDCC_BIN=../..
+
+CC = $(SDCC_BIN)/bin/sdcc
+LINKER = gplink
+USE_PIC16 ?= 0
+ifeq ($(strip $(filter 1 yes,$(USE_PIC16))),)
+TARGETPIC = 16f877
+#TARGETPIC = 16f84
+CFLAGS = -mpic14 -p$(TARGETPIC)
+DIR = pic14
+else
+TARGETPIC = 18f452
+CFLAGS = -mpic16 -p$(TARGETPIC)
+DIR = pic16
+endif
+CFLAGS += -Wl,-q --no-warn-non-free
+CFLAGS += -Wl,--map
+CFLAGS += -I $(SDCC_SRC)/device/include/$(DIR) -I $(SDCC_SRC)/device/non-free/include/$(DIR)
+CFLAGS += -L $(SDCC_BIN)/device/lib/build/$(DIR) -L $(SDCC_BIN)/device/non-free/lib/build/$(DIR)
+#CFLAGS += --no-pcode-opt
+#CFLAGS += -V
+
+.SUFFIXES: .asm .c .cod .stc
+.NOTPARALLEL:
+
+# Results of the test are placed here:
+LOGFILE = test.log
+
+# Script file for creating gpsim scripts
+CREATESTC = create_stc
+
+# Script file for invoking gpsim
+SIMULATE = simulate
+
+# List the C files to be test here:
+SRC = add.c \
+ add2.c \
+ add3.c \
+ add4.c \
+ and1.c \
+ and2.c \
+ arrays.c \
+ b.c \
+ bank1.c \
+ bool1.c \
+ bool2.c \
+ bool3.c \
+ call1.c \
+ compare.c \
+ compare10.c \
+ compare2.c \
+ compare3.c \
+ compare4.c \
+ compare5.c \
+ compare6.c \
+ compare7.c \
+ compare8.c \
+ compare9.c \
+ configword.c \
+ empty.c \
+ for.c \
+ init0.c \
+ inline.c \
+ mult1.c \
+ nestfor.c \
+ or1.c \
+ pcodeopt.c \
+ pointer1.c \
+ ptrarg.c \
+ ptrfunc.c \
+ rotate1.c \
+ rotate2.c \
+ rotate3.c \
+ rotate4.c \
+ rotate5.c \
+ rotate6.c \
+ rotate7.c \
+ string1.c \
+ struct1.c \
+ sub.c \
+ sub2.c \
+ switch1.c \
+ while.c \
+ xor.c
+
+COD := $(patsubst %.c, %.cod, $(SRC))
+ASM := $(patsubst %.c, %.asm, $(SRC))
+O := $(patsubst %.c, %.o, $(SRC))
+P := $(patsubst %.c, %.p, $(SRC))
+STC := $(patsubst %.c, %.stc, $(SRC))
+HEX := $(patsubst %.c, %.hex, $(SRC))
+LST := $(patsubst %.c, %.lst, $(SRC))
+MAP := $(patsubst %.c, %.map, $(SRC))
+
+all: test
+
+
+# The cod files are generated by sdcc
+.c.cod:
+ $(Q)-$(CC) $(CFLAGS) $*.c
+
+# The .stc files are script files for gpsim
+.cod.stc:
+ $(Q)-./$(CREATESTC) $*.cod $*.stc
+ $(Q)-./$(SIMULATE) $*.stc $(LOGFILE)
+
+# this will also make .stc files
+#%.stc : %.cod
+# ./create_stc $^ $@
+
+# now for the dependencies
+
+cod : $(COD)
+
+o : $(O)
+
+asm : $(ASM)
+
+stc : $(STC)
+ echo $(STC)
+
+test: $(STC)
+ $(Q)echo "Done - Results are in $(LOGFILE)"
+
+cleancod:
+ files="$(COD)" ; \
+ for f in $$files ; do \
+ if [ -f $$f ]; then rm $$f; fi \
+ done ; \
+
+cleano:
+ files="$(O)" ; \
+ for f in $$files ; do \
+ if [ -f $$f ]; then rm $$f; fi \
+ done ; \
+
+cleanp:
+ files="$(P)" ; \
+ for f in $$files ; do \
+ if [ -f $$f ]; then rm $$f; fi \
+ done ; \
+
+cleanasm:
+ files="$(ASM)" ; \
+ for f in $$files ; do \
+ if [ -f $$f ]; then rm $$f; fi \
+ done ; \
+
+cleanstc:
+ files="$(STC)" ; \
+ for f in $$files ; do \
+ if [ -f $$f ]; then rm $$f; fi \
+ done ; \
+
+cleanhex:
+ files="$(HEX)" ; \
+ for f in $$files ; do \
+ if [ -f $$f ]; then rm $$f; fi \
+ done ; \
+
+cleanlst:
+ files="$(LST)" ; \
+ for f in $$files ; do \
+ if [ -f $$f ]; then rm $$f; fi \
+ done ; \
+
+cleanmap:
+ files="$(MAP)" ; \
+ for f in $$files ; do \
+ if [ -f $$f ]; then rm $$f; fi \
+ done ; \
+
+clean: cleancod cleanasm cleanstc cleano cleanp cleanhex cleanlst cleanmap
+ if [ -f "$(LOGFILE)" ]; then rm $(LOGFILE); fi