diff options
Diffstat (limited to 'src/regression/Makefile')
| -rw-r--r-- | src/regression/Makefile | 226 |
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 |
