mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 14:29:44 +02:00
* Do not remove *.ree files
+ support for *.cfg file to allow for flexibility in tests
This commit is contained in:
parent
1bb13781e0
commit
20089b7a4b
194
tests/Makefile
194
tests/Makefile
@ -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
|
@ -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
|
Loading…
Reference in New Issue
Block a user