* Do not remove *.ree files

+ support for *.cfg file to allow for flexibility in tests
This commit is contained in:
pierre 2000-04-12 08:50:06 +00:00
parent 1bb13781e0
commit 20089b7a4b
2 changed files with 213 additions and 217 deletions

View File

@ -14,9 +14,9 @@ defaultrule: info
override PATH:=$(subst \,/,$(PATH)) override PATH:=$(subst \,/,$(PATH))
# Search for PWD and determine also if we are under linux # Search for PWD and determine also if we are under linux
PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(subst ;, ,$(PATH))))) PWD=$(strip $(wildcard $(addsuffix /pwd.exe,$(subst ;, ,$(PATH)))))
ifeq ($(PWD),) ifeq ($(PWD),)
PWD:=$(strip $(wildcard $(addsuffix /pwd,$(subst :, ,$(PATH))))) PWD=$(strip $(wildcard $(addsuffix /pwd,$(subst :, ,$(PATH)))))
ifeq ($(PWD),) ifeq ($(PWD),)
nopwd: nopwd:
@echo You need the GNU utils package to use this Makefile! @echo You need the GNU utils package to use this Makefile!
@ -52,105 +52,47 @@ else
EXEEXT=.exe EXEEXT=.exe
endif endif
# The path which is searched separated by spaces # The path which is search separated by spaces
ifdef inlinux ifdef inlinux
SEARCHPATH=$(subst :, ,$(PATH)) SEARCHPATH=$(subst :, ,$(PATH))
else else
SEARCHPATH=$(subst ;, ,$(PATH)) SEARCHPATH=$(subst ;, ,$(PATH))
endif endif
# Base dir
ifdef PWD
BASEDIR:=$(shell $(PWD))
else
BASEDIR=.
endif
##################################################################### #####################################################################
# FPC version/target Detection # FPC version/target Detection
##################################################################### #####################################################################
# What compiler to use ? # What compiler to use ?
ifndef FPC ifndef FPC
# Compatibility with old makefiles
ifdef PP
FPC=$(PP)
else
ifdef inOS2 ifdef inOS2
FPC=ppos2 export FPC=ppos2$(EXEEXT)
else else
FPC=ppc386 export FPC=ppc386$(EXEEXT)
endif endif
endif endif
endif
override FPC:=$(subst $(EXEEXT),,$(FPC))
override FPC:=$(subst \,/,$(FPC))$(EXEEXT)
# Target OS # Target OS
ifndef OS_TARGET ifndef OS_TARGET
OS_TARGET:=$(shell $(FPC) -iTO) export OS_TARGET=$(shell $(FPC) -iTO)
endif endif
# Source OS # Source OS
ifndef OS_SOURCE ifndef OS_SOURCE
OS_SOURCE:=$(shell $(FPC) -iSO) export OS_SOURCE=$(shell $(FPC) -iSO)
endif endif
# Target CPU # FPC_CPU
ifndef CPU_TARGET ifndef FPC_CPU
CPU_TARGET:=$(shell $(FPC) -iTP) export FPC_CPU=$(shell $(FPC) -iTP)
endif
# Source CPU
ifndef CPU_SOURCE
CPU_SOURCE:=$(shell $(FPC) -iSP)
endif endif
# FPC version # FPC version
ifndef FPC_VERSION ifndef FPC_VERSION
FPC_VERSION:=$(shell $(FPC) -iV) export FPC_VERSION=$(shell $(FPC) -iV)
endif endif
export FPC OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FPC_VERSION
#####################################################################
# FPCDIR Setting
#####################################################################
# Test FPCDIR to look if the RTL dir exists
ifdef FPCDIR
override FPCDIR:=$(subst \,/,$(FPCDIR))
ifeq ($(wildcard $(FPCDIR)/rtl),)
ifeq ($(wildcard $(FPCDIR)/units),)
override FPCDIR=wrong
endif
endif
else
override FPCDIR=wrong
endif
# Detect FPCDIR
ifeq ($(FPCDIR),wrong)
ifdef inlinux
override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
ifeq ($(wildcard $(FPCDIR)/units),)
override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
endif
else
override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
override FPCDIR:=$(FPCDIR)/..
ifeq ($(wildcard $(FPCDIR)/rtl),)
ifeq ($(wildcard $(FPCDIR)/units),)
override FPCDIR:=$(FPCDIR)/..
ifeq ($(wildcard $(FPCDIR)/rtl),)
ifeq ($(wildcard $(FPCDIR)/units),)
override FPCDIR=c:/pp
endif
endif
endif
endif
endif
endif
##################################################################### #####################################################################
# User Settings # User Settings
@ -192,8 +134,7 @@ ASMEXT=.s
SMARTEXT=.sl SMARTEXT=.sl
STATICLIBEXT=.a STATICLIBEXT=.a
SHAREDLIBEXT=.so SHAREDLIBEXT=.so
RSTEXT=.rst PACKAGESUFFIX=
FPCMADE=fpcmade
# Go32v1 # Go32v1
ifeq ($(OS_TARGET),go32v1) ifeq ($(OS_TARGET),go32v1)
@ -203,17 +144,17 @@ ASMEXT=.s1
SMARTEXT=.sl1 SMARTEXT=.sl1
STATICLIBEXT=.a1 STATICLIBEXT=.a1
SHAREDLIBEXT=.so1 SHAREDLIBEXT=.so1
FPCMADE=fpcmade.v1 PACKAGESUFFIX=v1
endif endif
# Go32v2 # Go32v2
ifeq ($(OS_TARGET),go32v2) ifeq ($(OS_TARGET),go32v2)
FPCMADE=fpcmade.dos PACKAGESUFFIX=go32
endif endif
# Linux # Linux
ifeq ($(OS_TARGET),linux) ifeq ($(OS_TARGET),linux)
FPCMADE=fpcmade.lnx PACKAGESUFFIX=linux
endif endif
# Win32 # Win32
@ -224,7 +165,7 @@ ASMEXT=.sw
SMARTEXT=.slw SMARTEXT=.slw
STATICLIBEXT=.aw STATICLIBEXT=.aw
SHAREDLIBEXT=.dll SHAREDLIBEXT=.dll
FPCMADE=fpcmade.w32 PACKAGESUFFIX=win32
endif endif
# OS/2 # OS/2
@ -235,7 +176,7 @@ OEXT=.oo2
SMARTEXT=.so SMARTEXT=.so
STATICLIBEXT=.ao2 STATICLIBEXT=.ao2
SHAREDLIBEXT=.dll SHAREDLIBEXT=.dll
FPCMADE=fpcmade.os2 PACKAGESUFFIX=os2
endif endif
# library prefix # library prefix
@ -267,55 +208,30 @@ endif
# Default Directories # Default Directories
##################################################################### #####################################################################
# Base dir
ifdef PWD
BASEDIR:=$(shell $(PWD))
else
BASEDIR=.
endif
# set the prefix directory where to install everything # set the prefix directory where to install everything
ifndef PREFIXINSTALLDIR ifndef PREFIXINSTALLDIR
ifdef inlinux ifdef inlinux
PREFIXINSTALLDIR=/usr export PREFIXINSTALLDIR=/usr
else else
PREFIXINSTALLDIR=/pp export PREFIXINSTALLDIR=/pp
endif endif
endif endif
export PREFIXINSTALLDIR
# Where to place the resulting zip files
ifndef DESTZIPDIR
DESTZIPDIR:=$(BASEDIR)
endif
export DESTZIPDIR
#####################################################################
# Redirection
#####################################################################
ifndef REDIRFILE
REDIRFILE=log
endif
ifdef REDIR
ifndef inlinux
override FPC=redir -eo $(FPC)
endif
# set the verbosity to max
override FPCOPT+=-va
override REDIR:= >> $(REDIRFILE)
endif
#####################################################################
# Standard rules
#####################################################################
#####################################################################
# Local Makefile
#####################################################################
ifneq ($(wildcard fpcmake.loc),)
include fpcmake.loc
endif
##################################################################### #####################################################################
# Users rules # Users rules
##################################################################### #####################################################################
# For linux by default no graph tests # For linux by default no graph tests
ifdef inlinux ifdef inlinux
NOGRAPH=1 NOGRAPH=1
@ -355,7 +271,7 @@ ifndef inlinux
else else
getret $(COMMAND) > $(FILE).log 2>$(FILE).log getret $(COMMAND) > $(FILE).log 2>$(FILE).log
cp retcode $(FILE).$(RESEXT) cp retcode $(FILE).$(RESEXT)
# @echo "Return code of $(FILE) is $(cat retcode)" # @echo "Return code of $(FILE) is $(cat retcode)"
endif endif
@ -405,9 +321,25 @@ endif
ifdef REEFILE ifdef REEFILE
ifeq ($(wildcard $(REEFILE)*),$(REEFILE)) ifeq ($(wildcard $(REEFILE)*),$(REEFILE))
EXPECTEDRETVAL:=$(strip $(shell cat $(REEFILE))) export EXPECTEDRETVAL:=$(strip $(shell cat $(REEFILE)))
else else
EXPECTEDRETVAL=0 export EXPECTEDRETVAL=0
endif
endif
ifdef FILE
ifneq ($(CFGFILE),$(FILE).cfg)
ifneq ($(wildcard $(FILE).cfg),)
export CFGFILE:=$(FILE).cfg
export COMPILEROPT:=$(filter-out COMPILEROPT=,$(shell grep COMPILEROPT= $(CFGFILE)))
export RUNARGS:=$(filter-out RUNARGS=,$(shell grep RUNARGS= $(CFGFILE)))
export POSTPROCESS:=$(filter-out POSTPROCESS=,$(shell grep POSTPROCESS= $(CFGFILE)))
else
CFGFILE=
COMPILEROPT=
RUNARGS=
POSTPROCESS=
endif
endif endif
endif endif
@ -454,11 +386,26 @@ testexec:
@echo "Testing $(FILE)$(EXEEXT)" @echo "Testing $(FILE)$(EXEEXT)"
ifdef NOREDIR ifdef NOREDIR
getret $(FILE)$(EXEEXT) getret $(FILE)$(EXEEXT)
@echo CFGFILE is $(CFGFILE)
ifdef POSTPROCESS
echo Running post process
-$(POSTPROCESS)
endif
else else
ifndef inlinux ifndef inlinux
redir -e $(FILE).elg -o $(FILE).elg getret $(FILE)$(EXEEXT) redir -e $(FILE).elg -o $(FILE).elg getret $(FILE)$(EXEEXT) $(RUNARGS)
@echo CFGFILE is $(CFGFILE)
ifdef POSTPROCESS
@echo Running post process
-redir -ea $(FILE).elg -oa $(FILE).elg $(POSTPROCESS)
endif
else else
getret $(FILE)$(EXEEXT) > $(FILE).elg 2>$(FILE).elg getret $(FILE)$(EXEEXT) $(RUNARGS) > $(FILE).elg 2>$(FILE).elg
@echo CFGFILE is $(CFGFILE)
ifdef POSTPROCESS
echo Running post process
-$(POSTPROCESS) >> $(FILE).elg 2>> $(FILE).elg
endif
endif endif
endif endif
cp -f retcode $(FILE).exc cp -f retcode $(FILE).exc
@ -509,6 +456,14 @@ ifndef LOG
export LOG:=log export LOG:=log
endif endif
listcfg :
@echo CFGFILE is "$(CFGFILE)"
@echo COMPILEROPT is "$(COMPILEROPT)"
@echo RUNARGS is "$(RUNARGS)"
@echo EXPECTEDRETVAL is "$(EXPECTEDRETVAL)"
@echo POSTPROCESS is "$(POSTPROCESS)"
ifdef FILE ifdef FILE
OPTFILE=$(wildcard $(FILE).opt) OPTFILE=$(wildcard $(FILE).opt)
endif endif
@ -522,7 +477,7 @@ FILE=ts/ts00001.pp
endif endif
testone : testone :
$(MAKE) getreturncode 'COMMAND=$(FPC) $(OPT) $(FILE).pp' 'RESEXT=$(RESEXT)' 'FILE=$(FILE)' $(MAKE) getreturncode 'COMMAND=$(FPC) $(OPT) $(COMPILEROPT) $(FILE).pp' 'RESEXT=$(RESEXT)' 'FILE=$(FILE)'
%.res : %.pp %.res : %.pp
@ -635,7 +590,8 @@ tbsexec300to399 : $(patsubst %.pp,%.elg,$(filter-out $(graphlst),$(wildcard tbs/
alltisexec: $(patsubst %.pp,%.eli,$(filter-out $(graphlst),$(wildcard tis/tis*.pp))) alltisexec: $(patsubst %.pp,%.eli,$(filter-out $(graphlst),$(wildcard tis/tis*.pp)))
clean: clean:
-rm -f $(addsuffix /*.re*,$(DIRS)) -rm -f $(addsuffix /*.ref,$(DIRS))
-rm -f $(addsuffix /*.res,$(DIRS))
-rm -f $(addsuffix /*$(PPUEXT),$(DIRS)) -rm -f $(addsuffix /*$(PPUEXT),$(DIRS))
-rm -f $(addsuffix /*$(OEXT),$(DIRS)) -rm -f $(addsuffix /*$(OEXT),$(DIRS))
-rm -f $(addsuffix /*.log,$(DIRS)) -rm -f $(addsuffix /*.log,$(DIRS))
@ -660,4 +616,4 @@ info :
@echo run \'make allexec\' to test also if the executables @echo run \'make allexec\' to test also if the executables
@echo created behave like the should @echo created behave like the should
@echo run \'make tesiexec\' to test executables @echo run \'make tesiexec\' to test executables
@echo that require interactive mode @echo that require interactive mode

View File

@ -40,16 +40,16 @@ setdate :
.PHONY : setdate .PHONY : setdate
getret$(EXEEXT) : getret.pp getret$(EXEEXT) : getret.pp
$(FPC) getret $(FPC) getret
getreturncode : getret$(EXEEXT) getreturncode : getret$(EXEEXT)
ifndef inlinux ifndef inlinux
redir -ea $(FILE).log -oa $(FILE).log getret $(COMMAND) redir -ea $(FILE).log -oa $(FILE).log getret $(COMMAND)
cp retcode $(FILE).$(RESEXT) cp retcode $(FILE).$(RESEXT)
else else
getret $(COMMAND) > $(FILE).log 2>$(FILE).log getret $(COMMAND) > $(FILE).log 2>$(FILE).log
cp retcode $(FILE).$(RESEXT) cp retcode $(FILE).$(RESEXT)
# @echo "Return code of $(FILE) is $(cat retcode)" # @echo "Return code of $(FILE) is $(cat retcode)"
endif endif
@ -70,21 +70,21 @@ endif
ifeq ($(RETVAL),0) ifeq ($(RETVAL),0)
testsuccess: testsuccess:
@echo "Test for $(FILE) success (compiles)" @echo "Test for $(FILE) success (compiles)"
@echo "Test for $(FILE) success (compiles)" >>$(LOG) @echo "Test for $(FILE) success (compiles)" >>$(LOG)
else else
testsuccess: testsuccess:
@echo "Test for $(FILE) fails (does not compile) error $(RETVAL)" @echo "Test for $(FILE) fails (does not compile) error $(RETVAL)"
@echo "Test for $(FILE) fails (does not compile) error $(RETVAL)" >> $(LOG) @echo "Test for $(FILE) fails (does not compile) error $(RETVAL)" >> $(LOG)
ifdef LONGLOG ifdef LONGLOG
@echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" >> $(LONGLOG) @echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" >> $(LONGLOG)
@echo "Test for $(FILE) fails (does not compile) error $(RETVAL)" >> $(LONGLOG) @echo "Test for $(FILE) fails (does not compile) error $(RETVAL)" >> $(LONGLOG)
@echo "" >> $(LONGLOG) @echo "" >> $(LONGLOG)
cat $(FILE).log >> $(LONGLOG) cat $(FILE).log >> $(LONGLOG)
@echo "" >> $(LONGLOG) @echo "" >> $(LONGLOG)
endif endif
@echo $(FILE) does not compile >> ts_fail @echo $(FILE) does not compile >> ts_fail
@echo $(FILE) does not compile error $(RETVAL) >> faillist @echo $(FILE) does not compile error $(RETVAL) >> faillist
endif endif
ifdef EXCFILE ifdef EXCFILE
@ -99,100 +99,131 @@ endif
ifdef REEFILE ifdef REEFILE
ifeq ($(wildcard $(REEFILE)*),$(REEFILE)) ifeq ($(wildcard $(REEFILE)*),$(REEFILE))
EXPECTEDRETVAL:=$(strip $(shell cat $(REEFILE))) export EXPECTEDRETVAL:=$(strip $(shell cat $(REEFILE)))
else else
EXPECTEDRETVAL=0 export EXPECTEDRETVAL=0
endif
endif
ifdef FILE
ifneq ($(CFGFILE),$(FILE).cfg)
ifneq ($(wildcard $(FILE).cfg),)
export CFGFILE:=$(FILE).cfg
export COMPILEROPT:=$(filter-out COMPILEROPT=,$(shell grep COMPILEROPT= $(CFGFILE)))
export RUNARGS:=$(filter-out RUNARGS=,$(shell grep RUNARGS= $(CFGFILE)))
export POSTPROCESS:=$(filter-out POSTPROCESS=,$(shell grep POSTPROCESS= $(CFGFILE)))
else
CFGFILE=
COMPILEROPT=
RUNARGS=
POSTPROCESS=
endif
endif endif
endif endif
ifeq ($(EXERETVAL),$(EXPECTEDRETVAL)) ifeq ($(EXERETVAL),$(EXPECTEDRETVAL))
ifeq ($(EXPECTEDRETVAL),0) ifeq ($(EXPECTEDRETVAL),0)
testexecsuccess: testexecsuccess:
@echo "Test for exec $(FILE) success (runs without error)" @echo "Test for exec $(FILE) success (runs without error)"
@echo "Test for $(FILE) success (runs without error)" >> $(LOG) @echo "Test for $(FILE) success (runs without error)" >> $(LOG)
else else
testexecsuccess: testexecsuccess:
@echo "Test for exec $(FILE) success (gives correct error $(EXERETVAL))" @echo "Test for exec $(FILE) success (gives correct error $(EXERETVAL))"
@echo "Test for $(FILE) success (gives correct error $(EXERETVAL))" >> $(LOG) @echo "Test for $(FILE) success (gives correct error $(EXERETVAL))" >> $(LOG)
endif endif
else else
ifeq ($(EXPECTEDRETVAL),0) ifeq ($(EXPECTEDRETVAL),0)
testexecsuccess: testexecsuccess:
@echo "Test for exec $(FILE) fails exec error $(EXERETVAL)" @echo "Test for exec $(FILE) fails exec error $(EXERETVAL)"
@echo "Test for exec $(FILE) fails exec error $(EXERETVAL)" >> $(LOG) @echo "Test for exec $(FILE) fails exec error $(EXERETVAL)" >> $(LOG)
@echo "Running $(FILE) fails with error $(EXERETVAL)" >> faillist @echo "Running $(FILE) fails with error $(EXERETVAL)" >> faillist
ifdef LONGLOG ifdef LONGLOG
@echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" >> $(LONGLOG) @echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" >> $(LONGLOG)
@echo "Test for exec $(FILE) fails exec error $(EXERETVAL)" >> $(LONGLOG) @echo "Test for exec $(FILE) fails exec error $(EXERETVAL)" >> $(LONGLOG)
@echo "" >> $(LONGLOG) @echo "" >> $(LONGLOG)
cat $(FILE).elg >> $(LONGLOG) cat $(FILE).elg >> $(LONGLOG)
@echo $(FILE) >> ex_fail @echo $(FILE) >> ex_fail
endif endif
else else
testexecsuccess: testexecsuccess:
@echo "Test for exec $(FILE) fails exec error $(EXERETVAL) ($(EXPECTEDRETVAL) expected)" @echo "Test for exec $(FILE) fails exec error $(EXERETVAL) ($(EXPECTEDRETVAL) expected)"
@echo "Test for exec $(FILE) fails exec error $(EXERETVAL) ($(EXPECTEDRETVAL) expected)" >> $(LOG) @echo "Test for exec $(FILE) fails exec error $(EXERETVAL) ($(EXPECTEDRETVAL) expected)" >> $(LOG)
@echo "Running $(FILE) fails with error $(EXERETVAL) ($(EXPECTEDRETVAL) expected)" >> faillist @echo "Running $(FILE) fails with error $(EXERETVAL) ($(EXPECTEDRETVAL) expected)" >> faillist
ifdef LONGLOG ifdef LONGLOG
@echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" >> $(LONGLOG) @echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" >> $(LONGLOG)
@echo "Test for exec $(FILE) fails exec error $(EXERETVAL) ($(EXPECTEDRETVAL) expected)" >> $(LONGLOG) @echo "Test for exec $(FILE) fails exec error $(EXERETVAL) ($(EXPECTEDRETVAL) expected)" >> $(LONGLOG)
@echo "" >> $(LONGLOG) @echo "" >> $(LONGLOG)
cat $(FILE).elg >> $(LONGLOG) cat $(FILE).elg >> $(LONGLOG)
@echo $(FILE) >> ex_fail @echo $(FILE) >> ex_fail
endif endif
endif endif
endif endif
ifeq ($(wildcard $(FILE)$(EXEEXT)),$(FILE)$(EXEEXT)) ifeq ($(wildcard $(FILE)$(EXEEXT)),$(FILE)$(EXEEXT))
testexec: testexec:
@echo "Testing $(FILE)$(EXEEXT)" @echo "Testing $(FILE)$(EXEEXT)"
ifdef NOREDIR ifdef NOREDIR
getret $(FILE)$(EXEEXT) getret $(FILE)$(EXEEXT)
@echo CFGFILE is $(CFGFILE)
ifdef POSTPROCESS
echo Running post process
-$(POSTPROCESS)
endif
else else
ifndef inlinux ifndef inlinux
redir -e $(FILE).elg -o $(FILE).elg getret $(FILE)$(EXEEXT) redir -e $(FILE).elg -o $(FILE).elg getret $(FILE)$(EXEEXT) $(RUNARGS)
@echo CFGFILE is $(CFGFILE)
ifdef POSTPROCESS
@echo Running post process
-redir -ea $(FILE).elg -oa $(FILE).elg $(POSTPROCESS)
endif
else else
getret $(FILE)$(EXEEXT) > $(FILE).elg 2>$(FILE).elg getret $(FILE)$(EXEEXT) $(RUNARGS) > $(FILE).elg 2>$(FILE).elg
@echo CFGFILE is $(CFGFILE)
ifdef POSTPROCESS
echo Running post process
-$(POSTPROCESS) >> $(FILE).elg 2>> $(FILE).elg
endif endif
endif endif
cp -f retcode $(FILE).exc endif
$(MAKE) testexecsuccess 'FILE=$(FILE)' 'EXCFILE=$(FILE).exc' 'REEFILE=$(FILE).ree' cp -f retcode $(FILE).exc
$(MAKE) testexecsuccess 'FILE=$(FILE)' 'EXCFILE=$(FILE).exc' 'REEFILE=$(FILE).ree'
else else
testexec: testexec:
ifeq ($(wildcard $(FILE)$(PPUEXT)),$(FILE)$(PPUEXT)) ifeq ($(wildcard $(FILE)$(PPUEXT)),$(FILE)$(PPUEXT))
@echo "file is a unit $(FILE)$(PPUEXT)" @echo "file is a unit $(FILE)$(PPUEXT)"
@echo "unit" > $(FILE).elg @echo "unit" > $(FILE).elg
else else
ifeq ($(wildcard $(FILE).dll),$(FILE).dll) ifeq ($(wildcard $(FILE).dll),$(FILE).dll)
@echo "file is a DLL $(FILE)$(PPUEXT)" @echo "file is a DLL $(FILE)$(PPUEXT)"
@echo "DLL" > $(FILE).elg @echo "DLL" > $(FILE).elg
else else
@echo "No exefile $(FILE)$(EXEEXT)" @echo "No exefile $(FILE)$(EXEEXT)"
ifdef LONGLOG ifdef LONGLOG
@echo "No exefile $(FILE)$(EXEEXT) was generated" >> $(LONGLOG) @echo "No exefile $(FILE)$(EXEEXT) was generated" >> $(LONGLOG)
endif endif
endif endif
endif endif
endif endif
test_exc : test_exc :
@echo $(wildcard $(FILE).exc*) @echo $(wildcard $(FILE).exc*)
@echo xx$(wildcard $(EXCFILE)*)xx xx$(EXCFILE)xx @echo xx$(wildcard $(EXCFILE)*)xx xx$(EXCFILE)xx
cat $(FILE).exc cat $(FILE).exc
ifneq ($(RETVAL),0) ifneq ($(RETVAL),0)
testfail: testfail:
@echo "Test for $(FILE) success (does not compile) error $(RETVAL)" @echo "Test for $(FILE) success (does not compile) error $(RETVAL)"
@echo "Test for $(FILE) success (does not compile) error $(RETVAL)" >> $(LOG) @echo "Test for $(FILE) success (does not compile) error $(RETVAL)" >> $(LOG)
else else
testfail: testfail:
@echo "Test for $(FILE) fails (does compile and should not)" @echo "Test for $(FILE) fails (does compile and should not)"
@echo "Test for $(FILE) fails (does compile and should not)" >> $(LOG) @echo "Test for $(FILE) fails (does compile and should not)" >> $(LOG)
ifdef LONGLOG ifdef LONGLOG
@echo "Test for $(FILE) fails (does compile and should not)" >> $(LONGLOG) @echo "Test for $(FILE) fails (does compile and should not)" >> $(LONGLOG)
endif endif
@echo $(FILE) >> tf_fail @echo $(FILE) >> tf_fail
@echo $(FILE) compiles >> faillist @echo $(FILE) compiles >> faillist
endif endif
ifndef LONGLOG ifndef LONGLOG
@ -203,6 +234,14 @@ ifndef LOG
export LOG:=log export LOG:=log
endif endif
listcfg :
@echo CFGFILE is "$(CFGFILE)"
@echo COMPILEROPT is "$(COMPILEROPT)"
@echo RUNARGS is "$(RUNARGS)"
@echo EXPECTEDRETVAL is "$(EXPECTEDRETVAL)"
@echo POSTPROCESS is "$(POSTPROCESS)"
ifdef FILE ifdef FILE
OPTFILE=$(wildcard $(FILE).opt) OPTFILE=$(wildcard $(FILE).opt)
endif endif
@ -216,26 +255,26 @@ FILE=ts/ts00001.pp
endif endif
testone : testone :
$(MAKE) getreturncode 'COMMAND=$(FPC) $(OPT) $(FILE).pp' 'RESEXT=$(RESEXT)' 'FILE=$(FILE)' $(MAKE) getreturncode 'COMMAND=$(FPC) $(OPT) $(COMPILEROPT) $(FILE).pp' 'RESEXT=$(RESEXT)' 'FILE=$(FILE)'
%.res : %.pp %.res : %.pp
$(MAKE) testone 'FILE=$*' 'RESEXT=res' $(MAKE) testone 'FILE=$*' 'RESEXT=res'
$(MAKE) testsuccess 'FILE=$*' 'RESFILE=$*.res' $(MAKE) testsuccess 'FILE=$*' 'RESFILE=$*.res'
%.ref : %.pp %.ref : %.pp
$(MAKE) testone 'FILE=$*' 'RESEXT=ref' $(MAKE) testone 'FILE=$*' 'RESEXT=ref'
$(MAKE) testfail 'FILE=$*' 'RESFILE=$*.ref' $(MAKE) testfail 'FILE=$*' 'RESFILE=$*.ref'
# exec log files # exec log files
# creates two files # creates two files
# *.elg log file # *.elg log file
# *.exc exicode of program # *.exc exicode of program
%.elg : %.res %.elg : %.res
$(MAKE) testexec 'FILE=$*' $(MAKE) testexec 'FILE=$*'
%.eli : %.res %.eli : %.res
$(MAKE) testexec 'FILE=$*' 'NOREDIR=YES' $(MAKE) testexec 'FILE=$*' 'NOREDIR=YES'
allts : $(patsubst %.pp,%.res,$(filter-out $(graphlst),$(wildcard ts/ts*.pp))) allts : $(patsubst %.pp,%.res,$(filter-out $(graphlst),$(wildcard ts/ts*.pp)))
@ -284,31 +323,31 @@ endif
endif endif
clean_fail : clean_fail :
-rm -f $(addsuffix .res,$(TS_FAIL_LIST)) -rm -f $(addsuffix .res,$(TS_FAIL_LIST))
-rm -f $(addsuffix .ref,$(TF_FAIL_LIST)) -rm -f $(addsuffix .ref,$(TF_FAIL_LIST))
-rm -f $(addsuffix .res,$(EXEC_FAIL_LIST)) -rm -f $(addsuffix .res,$(EXEC_FAIL_LIST))
-rm -f $(addsuffix .elg,$(EXEC_FAIL_LIST)) -rm -f $(addsuffix .elg,$(EXEC_FAIL_LIST))
# Test all failure of last time # Test all failure of last time
# don't forget to try to run them again # don't forget to try to run them again
again : again :
$(MAKE) internal_again LOG=again.log LONGLOG=again.llg $(MAKE) internal_again LOG=again.log LONGLOG=again.llg
internal_again : clean_fail $(addsuffix .res,$(TS_FAIL_LIST)) \ internal_again : clean_fail $(addsuffix .res,$(TS_FAIL_LIST)) \
$(addsuffix .ref,$(TF_FAIL_LIST)) \ $(addsuffix .ref,$(TF_FAIL_LIST)) \
$(addsuffix .elg,$(EXEC_FAIL_LIST) $(TS_FAIL_LIST)) $(addsuffix .elg,$(EXEC_FAIL_LIST) $(TS_FAIL_LIST))
grep fails $(LOG) grep fails $(LOG)
all_compilations : allts alltbs allwebtbs alltf alltbf allwebtbf allto alltest alltesi alltis all_compilations : allts alltbs allwebtbs alltf alltbf allwebtbf allto alltest alltesi alltis
grep fails $(LOG) grep fails $(LOG)
allexec : alltsexec alltbsexec allwebtbsexec alltestexec allexec : alltsexec alltbsexec allwebtbsexec alltestexec
grep fails $(LOG) grep fails $(LOG)
alltestexec: $(patsubst %.pp,%.elg,$(wildcard test/test*.pp)) alltestexec: $(patsubst %.pp,%.elg,$(wildcard test/test*.pp))
allfails : allfails :
grep fails $(LOG) > fails.log grep fails $(LOG) > fails.log
# these test are interactive # these test are interactive
# no redirection !!! # no redirection !!!
@ -329,29 +368,30 @@ tbsexec300to399 : $(patsubst %.pp,%.elg,$(filter-out $(graphlst),$(wildcard tbs/
alltisexec: $(patsubst %.pp,%.eli,$(filter-out $(graphlst),$(wildcard tis/tis*.pp))) alltisexec: $(patsubst %.pp,%.eli,$(filter-out $(graphlst),$(wildcard tis/tis*.pp)))
clean: clean:
-rm -f $(addsuffix /*.re*,$(DIRS)) -rm -f $(addsuffix /*.ref,$(DIRS))
-rm -f $(addsuffix /*.res,$(DIRS))
-rm -f $(addsuffix /*$(PPUEXT),$(DIRS)) -rm -f $(addsuffix /*$(PPUEXT),$(DIRS))
-rm -f $(addsuffix /*$(OEXT),$(DIRS)) -rm -f $(addsuffix /*$(OEXT),$(DIRS))
-rm -f $(addsuffix /*.log,$(DIRS)) -rm -f $(addsuffix /*.log,$(DIRS))
-rm -f $(addsuffix /*.elg,$(DIRS)) -rm -f $(addsuffix /*.elg,$(DIRS))
-rm -f $(addsuffix /*.exc,$(DIRS)) -rm -f $(addsuffix /*.exc,$(DIRS))
ifdef inlinux ifdef inlinux
-rm -f $(patsubst %.pp,%$(EXEEXT),$(wildcard $(addsuffix /t*.pp,$(DIRS)))) -rm -f $(patsubst %.pp,%$(EXEEXT),$(wildcard $(addsuffix /t*.pp,$(DIRS))))
else else
-rm -f $(addsuffix /*$(EXEEXT),$(DIRS)) -rm -f $(addsuffix /*$(EXEEXT),$(DIRS))
endif endif
-rm -f *.tmp -rm -f *.tmp
-rm -f $(LOG) $(LONGLOG) faillist ts_fail tf_fail ex_fail -rm -f $(LOG) $(LONGLOG) faillist ts_fail tf_fail ex_fail
-rm -f fpcmaked ppas.sh ppas.bat retcode -rm -f fpcmaked ppas.sh ppas.bat retcode
info : info :
@echo This Makefile allows to test the compiler @echo This Makefile allows to test the compiler
@echo compilation of 'ts*.pp' should succeed @echo compilation of 'ts*.pp' should succeed
@echo compilation of 'tf*.pp' should fail @echo compilation of 'tf*.pp' should fail
@echo compilation of 'test*.pp' should succeed @echo compilation of 'test*.pp' should succeed
@echo 'to*.pp' files should also compile @echo 'to*.pp' files should also compile
@echo simply run \'make tests\' to test all compilation @echo simply run \'make tests\' to test all compilation
@echo run \'make allexec\' to test also if the executables @echo run \'make allexec\' to test also if the executables
@echo created behave like the should @echo created behave like the should
@echo run \'make tesiexec\' to test executables @echo run \'make tesiexec\' to test executables
@echo that require interactive mode @echo that require interactive mode