* use separate output dirs

* same tree can be used for multiple targets
This commit is contained in:
peter 2004-11-09 17:26:28 +00:00
parent 96427058ec
commit 5534e9ccae
6 changed files with 298 additions and 303 deletions

View File

@ -1,5 +1,5 @@
#
# Don't edit, this file is generated by FPCMake Version 1.1 [2004/10/30]
# Don't edit, this file is generated by FPCMake Version 1.1 [2004/11/08]
#
default: allexectests
MAKEFILETARGETS=linux go32v2 win32 os2 freebsd beos netbsd amiga atari sunos qnx netware openbsd wdosx palmos macos darwin emx watcom morphos netwlibc
@ -717,7 +717,7 @@ ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(ECHO),)
ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(ECHO),)
ECHO= __missing_command__
ECHO= __missing_command_ECHO
else
ECHO:=$(firstword $(ECHO))
endif
@ -731,7 +731,7 @@ DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(DATE),)
DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(DATE),)
DATE= __missing_command__
DATE= __missing_command_DATE
else
DATE:=$(firstword $(DATE))
endif
@ -745,7 +745,7 @@ GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(GINSTALL),)
GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(GINSTALL),)
GINSTALL= __missing_command__
GINSTALL= __missing_command_GINSTALL
else
GINSTALL:=$(firstword $(GINSTALL))
endif
@ -757,7 +757,7 @@ export GINSTALL
ifndef CPPROG
CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(CPPROG),)
CPPROG= __missing_command__
CPPROG= __missing_command_CPPROG
else
CPPROG:=$(firstword $(CPPROG))
endif
@ -766,7 +766,7 @@ export CPPROG
ifndef RMPROG
RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(RMPROG),)
RMPROG= __missing_command__
RMPROG= __missing_command_RMPROG
else
RMPROG:=$(firstword $(RMPROG))
endif
@ -775,7 +775,7 @@ export RMPROG
ifndef MVPROG
MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(MVPROG),)
MVPROG= __missing_command__
MVPROG= __missing_command_MVPROG
else
MVPROG:=$(firstword $(MVPROG))
endif
@ -786,7 +786,7 @@ MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(MKDIRPROG),)
MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(MKDIRPROG),)
MKDIRPROG= __missing_command__
MKDIRPROG= __missing_command_MKDIRPROG
else
MKDIRPROG:=$(firstword $(MKDIRPROG))
endif
@ -841,7 +841,7 @@ export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
ifndef PPUMOVE
PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(PPUMOVE),)
PPUMOVE= __missing_command__
PPUMOVE= __missing_command_PPUMOVE
else
PPUMOVE:=$(firstword $(PPUMOVE))
endif
@ -850,7 +850,7 @@ export PPUMOVE
ifndef FPCMAKE
FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(FPCMAKE),)
FPCMAKE= __missing_command__
FPCMAKE= __missing_command_FPCMAKE
else
FPCMAKE:=$(firstword $(FPCMAKE))
endif
@ -859,7 +859,7 @@ export FPCMAKE
ifndef ZIPPROG
ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(ZIPPROG),)
ZIPPROG= __missing_command__
ZIPPROG= __missing_command_ZIPPROG
else
ZIPPROG:=$(firstword $(ZIPPROG))
endif
@ -868,7 +868,7 @@ export ZIPPROG
ifndef TARPROG
TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(TARPROG),)
TARPROG= __missing_command__
TARPROG= __missing_command_TARPROG
else
TARPROG:=$(firstword $(TARPROG))
endif
@ -1503,6 +1503,7 @@ endif
ifndef TEST_OS_TARGET
TEST_OS_TARGET:=$(word 5,$(TEST_FPC_COMPILERINFO))
endif
TEST_FULL_TARGET=$(TEST_CPU_TARGET)-$(TEST_OS_TARGET)
ifndef TEST_CCOMPILER
ifeq ($(CPU_TARGET),$(TEST_CPU_TARGET))
ifeq ($(OS_TARGET),$(TEST_OS_TARGET))
@ -1513,14 +1514,15 @@ endif
endif
endif
endif
TEST_OUTPUTDIR=output/$(FULL_TARGET)
ifndef FAILLIST
export FAILLIST:=faillist
export FAILLIST:=$(TEST_OUTPUTDIR)/faillist
endif
ifndef LONGLOG
export LONGLOG:=longlog
export LONGLOG:=$(TEST_OUTPUTDIR)/longlog
endif
ifndef LOG
export LOG:=log
export LOG:=$(TEST_OUTPUTDIR)/log
endif
TESTSUBDIRS=cg cg/cdecl units/system units/dos units/crt units/objects units/strings units/sysutils units/math
TESTDIRS:=test $(addprefix test/,$(TESTSUBDIRS))
@ -1547,12 +1549,14 @@ endif
units:
$(MAKE) -C units FPC=$(TEST_FPC) CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET) \
OPT="$(TEST_OPT)" CCOMPILER=$(TEST_CCOMPILER) BINUTILSPREFIX=$(TEST_BINUTILSPREFIX)
copyfiles:
copyfiles: $(TEST_OUTPUTDIR)
$(COPY) test/cg/obj/$(TEST_OS_TARGET)/$(TEST_CPU_TARGET)/ctest.o test/cg
$(COPY) test/units/system/test*.txt .
testprep: testprep-stamp.$(TEST_OS_TARGET)
testprep-stamp.$(TEST_OS_TARGET): utils units copyfiles
$(ECHO) $(DATE) > testprep-stamp.$(TEST_OS_TARGET)
$(COPY) test/units/system/test*.txt $(TEST_OUTPUTDIR)/tests/units/system
testprep: testprep-stamp.$(TEST_FULL_TARGET)
testprep-stamp.$(TEST_FULL_TARGET): $(TEST_OUTPUTDIR) utils units copyfiles
$(ECHO) $(DATE) > testprep-stamp.$(TEST_FULL_TARGET)
$(TEST_OUTPUTDIR):
$(MKDIRTREE) $@
ifneq ($(TEST_FPC),ppc386$(EXEEXT))
ifeq ($(findstring -c$(TEST_FPC),$(DOTESTOPT)),)
override DOTESTOPT+=-c$(TEST_FPC)
@ -1561,7 +1565,7 @@ endif
ifneq ($(OS_TARGET),$(TEST_OS_TARGET))
override DOTESTOPT+=-Y-T$(TEST_OS_TARGET)
endif
ifneq ($(TEST_BINUTILSPREFIX),)
ifneq ($(TEST_BINUTILSPREFIX),)
override DOTESTOPT+=-Y-XP$(TEST_BINUTILSPREFIX) -Y-Xd
endif
ifdef TEST_RSH
@ -1601,6 +1605,8 @@ ifdef DOALL
override DOTESTOPT+=-a
endif
DIRS=webtbs webtbf tbs tbf $(TESTDIRS)
vpath %.log $(TEST_OUTPUTDIR)
vpath %.elg $(TEST_OUTPUTDIR)
%.log : %.pp
$(DOTEST) $(DOTESTOPT) $<
%.elg : %.pp
@ -1621,39 +1627,24 @@ allexectest : testprep $(patsubst %.pp,%.elg,$(wildcard $(addsuffix /t*.pp,$(TES
allexectests: allexectest allexectbs allexectbf allexecwebtbs allexecwebtbf
.PHONY: clean distclean clean_test
clean_test:
-$(DEL) $(addsuffix /*$(PPUEXT),$(DIRS))
-$(DEL) $(addsuffix /*$(OEXT),$(DIRS))
-$(DEL) $(addsuffix /*.rst,$(DIRS))
-$(DEL) $(addsuffix /*$(SHAREDLIBEXT),$(DIRS))
-$(DEL) $(addsuffix /*.log,$(DIRS))
-$(DEL) $(addsuffix /*.elg,$(DIRS))
-$(DEL) $(addsuffix /*$(ASMEXT),$(DIRS))
-$(DEL) $(addsuffix /*_ppas$(BATCHEXT),$(DIRS))
ifeq ($(EXEEXT),)
-$(DEL) $(wildcard $(patsubst %.pp,%$(EXEEXT),$(wildcard $(addsuffix /t*.pp,$(DIRS)))))
else
-$(DEL) $(addsuffix /*$(EXEEXT),$(DIRS))
endif
ifdef DEBUGSYMEXT
-$(DEL) $(addsuffix /*$(DEBUGSYMEXT),$(DIRS))
endif
-$(DEL) test*.txt *.tmp *$(SHAREDLIBEXT) *$(OEXT) *$(PPUEXT) core
-$(DELTREE) output/$(TEST_FULL_TARGET)
-$(DEL) $(LOG) $(LONGLOG) $(FAILLIST)
-$(DEL) ppas$(SRCBATCHEXT) gmon.out testprep-stamp.*
-$(DEL) *_ppas$(BATCHEXT)
-$(DEL) core gmon.out testprep-stamp.$(TEST_FULL_TARGET)
clean:
$(MAKE) clean_test CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET)
$(MAKE) -C units clean CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET)
distclean: clean fpc_distclean
$(DELTREE) output
$(MAKE) -C utils distclean
.PHONY: all full rundigest dailytest onlyknown onlygraph onlyinteractive
rundigest : utils
-$(DIGEST)
-$(DEL) testprep-stamp.*
.PHONY: all full digest dailytest onlyknown onlygraph onlyinteractive
digest : utils
-$(DIGEST) $(LOG)
ifeq ($(USESQL),YES)
-$(DBDIGEST) -v $(TEST_FPC_VERSION) -o $(TEST_OS_TARGET) -c $(TEST_CPU_TARGET) $(DBDIGESTOPT)
-$(DBDIGEST) -v $(TEST_FPC_VERSION) -o $(TEST_OS_TARGET) -c $(TEST_CPU_TARGET) -l $(LOG) $(DBDIGESTOPT)
endif
all : allexectests
full : clean allexectests rundigest
full : clean allexectests digest
onlyknown :
$(MAKE) full "DOTESTOPT= $(DOTESTOPT) -k-"
onlygraph :
@ -1661,9 +1652,9 @@ onlygraph :
onlyinteractive :
$(MAKE) "DOTESTOPT= $(DOTESTOPT) -i-"
info :
@$(ECHO) This Makefile allows to test the compiler
@$(ECHO) "This Makefile allows to test the compiler"
@$(ECHO)
@$(ECHO) Targets:
@$(ECHO) "Targets:"
@$(ECHO) " all - continue all tests"
@$(ECHO) " full - clean and run all tests"
@$(ECHO) " dailytest - run full and save results"
@ -1671,14 +1662,14 @@ info :
@$(ECHO) " onlyknown - run only known bugs"
@$(ECHO) " onlygraph - run only graph tests"
@$(ECHO) " onlyinteractive - run only interactive tests"
@$(ECHO) " rundigest - compute and print test statistics"
@$(ECHO) " digest - compute and print test statistics"
@$(ECHO)
@$(ECHO) Driver environment:
@$(ECHO) " $(OS_TARGET)-$(CPU_TARGET)"
@$(ECHO) "Host environment:"
@$(ECHO) " $(FULL_TARGET)"
@$(ECHO) " compiler: $(FPC) ver: $(FPC_VERSION)"
@$(ECHO)
@$(ECHO) Test environment:
@$(ECHO) " $(TEST_OS_TARGET)-$(TEST_CPU_TARGET)"
@$(ECHO) "Test environment:"
@$(ECHO) " $(TEST_FULL_TARGET)"
@$(ECHO) " compiler: $(TEST_FPC) ver: $(TEST_FPC_VERSION)"
override DATESUFFIX:=$(shell $(DATE) +%Y.%m.%d)
ifneq ($(wildcard log.$(DATESUFFIX)),)
@ -1687,14 +1678,3 @@ endif
ifneq ($(wildcard lastdate.txt),)
LASTDATESUFFIX:=$(shell cat lastdate.txt)
endif
dailytest : full
$(COPY) faillist faillist.$(DATESUFFIX)
$(COPY) log log.$(DATESUFFIX)
$(COPY) longlog longlog.$(DATESUFFIX)
-$(DIGEST) > digest.$(DATESUFFIX)
ifdef LASTDATESUFFIX
-diff -u log.$(LASTDATESUFFIX) log.$(DATESUFFIX) > difflog.$(DATESUFFIX)
-diff -u digest.$(LASTDATESUFFIX) digest.$(DATESUFFIX) > diffdigest.$(DATESUFFIX)
-diff -u faillist.$(LASTDATESUFFIX) faillist.$(DATESUFFIX) > difflist.$(DATESUFFIX)
endif
@$(ECHO) $(DATESUFFIX) > lastdate.txt

View File

@ -53,6 +53,7 @@ endif
ifndef TEST_OS_TARGET
TEST_OS_TARGET:=$(word 5,$(TEST_FPC_COMPILERINFO))
endif
TEST_FULL_TARGET=$(TEST_CPU_TARGET)-$(TEST_OS_TARGET)
ifndef TEST_CCOMPILER
ifeq ($(CPU_TARGET),$(TEST_CPU_TARGET))
@ -65,21 +66,24 @@ endif
endif
endif
# Target dir where the ppu and binaries are created
TEST_OUTPUTDIR=output/$(FULL_TARGET)
################################
# Misc
#
ifndef FAILLIST
export FAILLIST:=faillist
export FAILLIST:=$(TEST_OUTPUTDIR)/faillist
endif
ifndef LONGLOG
export LONGLOG:=longlog
export LONGLOG:=$(TEST_OUTPUTDIR)/longlog
endif
ifndef LOG
export LOG:=log
export LOG:=$(TEST_OUTPUTDIR)/log
endif
@ -136,18 +140,20 @@ units:
# Copy test environment dependent files ctest.o to test/cg etc
#
copyfiles:
copyfiles: $(TEST_OUTPUTDIR)
$(COPY) test/cg/obj/$(TEST_OS_TARGET)/$(TEST_CPU_TARGET)/ctest.o test/cg
$(COPY) test/units/system/test*.txt .
$(COPY) test/units/system/test*.txt $(TEST_OUTPUTDIR)/tests/units/system
################################
# Preparation for tests
#
testprep: testprep-stamp.$(TEST_OS_TARGET)
testprep-stamp.$(TEST_OS_TARGET): utils units copyfiles
$(ECHO) $(DATE) > testprep-stamp.$(TEST_OS_TARGET)
testprep: testprep-stamp.$(TEST_FULL_TARGET)
testprep-stamp.$(TEST_FULL_TARGET): $(TEST_OUTPUTDIR) utils units copyfiles
$(ECHO) $(DATE) > testprep-stamp.$(TEST_FULL_TARGET)
$(TEST_OUTPUTDIR):
$(MKDIRTREE) $@
################################
# Dotest options
@ -162,7 +168,7 @@ endif
ifneq ($(OS_TARGET),$(TEST_OS_TARGET))
override DOTESTOPT+=-Y-T$(TEST_OS_TARGET)
endif
ifneq ($(TEST_BINUTILSPREFIX),)
ifneq ($(TEST_BINUTILSPREFIX),)
override DOTESTOPT+=-Y-XP$(TEST_BINUTILSPREFIX) -Y-Xd
endif
ifdef TEST_RSH
@ -217,6 +223,9 @@ endif
DIRS=webtbs webtbf tbs tbf $(TESTDIRS)
vpath %.log $(TEST_OUTPUTDIR)
vpath %.elg $(TEST_OUTPUTDIR)
%.log : %.pp
$(DOTEST) $(DOTESTOPT) $<
@ -263,35 +272,18 @@ allexectests: allexectest allexectbs allexectbf allexecwebtbs allexecwebtbf
.PHONY: clean distclean clean_test
clean_test:
-$(DEL) $(addsuffix /*$(PPUEXT),$(DIRS))
-$(DEL) $(addsuffix /*$(OEXT),$(DIRS))
-$(DEL) $(addsuffix /*.rst,$(DIRS))
-$(DEL) $(addsuffix /*$(SHAREDLIBEXT),$(DIRS))
-$(DEL) $(addsuffix /*.log,$(DIRS))
-$(DEL) $(addsuffix /*.elg,$(DIRS))
-$(DEL) $(addsuffix /*$(ASMEXT),$(DIRS))
-$(DEL) $(addsuffix /*_ppas$(BATCHEXT),$(DIRS))
ifeq ($(EXEEXT),)
-$(DEL) $(wildcard $(patsubst %.pp,%$(EXEEXT),$(wildcard $(addsuffix /t*.pp,$(DIRS)))))
else
-$(DEL) $(addsuffix /*$(EXEEXT),$(DIRS))
endif
ifdef DEBUGSYMEXT
-$(DEL) $(addsuffix /*$(DEBUGSYMEXT),$(DIRS))
endif
-$(DEL) test*.txt *.tmp *$(SHAREDLIBEXT) *$(OEXT) *$(PPUEXT) core
-$(DELTREE) output/$(TEST_FULL_TARGET)
-$(DEL) $(LOG) $(LONGLOG) $(FAILLIST)
-$(DEL) ppas$(SRCBATCHEXT) gmon.out testprep-stamp.*
# Needed when link on target:
-$(DEL) *_ppas$(BATCHEXT)
-$(DEL) core gmon.out testprep-stamp.$(TEST_FULL_TARGET)
clean:
$(MAKE) clean_test CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET)
$(MAKE) -C units clean CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET)
distclean: clean fpc_distclean
$(DELTREE) output
$(MAKE) -C utils distclean
-$(DEL) testprep-stamp.*
#cleanall: clean
# $(MAKE) -C utils cleanall
@ -300,17 +292,17 @@ distclean: clean fpc_distclean
# Main rules
#
.PHONY: all full rundigest dailytest onlyknown onlygraph onlyinteractive
.PHONY: all full digest dailytest onlyknown onlygraph onlyinteractive
rundigest : utils
-$(DIGEST)
digest : utils
-$(DIGEST) $(LOG)
ifeq ($(USESQL),YES)
-$(DBDIGEST) -v $(TEST_FPC_VERSION) -o $(TEST_OS_TARGET) -c $(TEST_CPU_TARGET) $(DBDIGESTOPT)
-$(DBDIGEST) -v $(TEST_FPC_VERSION) -o $(TEST_OS_TARGET) -c $(TEST_CPU_TARGET) -l $(LOG) $(DBDIGESTOPT)
endif
all : allexectests
full : clean allexectests rundigest
full : clean allexectests digest
onlyknown :
$(MAKE) full "DOTESTOPT= $(DOTESTOPT) -k-"
@ -322,9 +314,9 @@ onlyinteractive :
$(MAKE) "DOTESTOPT= $(DOTESTOPT) -i-"
info :
@$(ECHO) This Makefile allows to test the compiler
@$(ECHO) "This Makefile allows to test the compiler"
@$(ECHO)
@$(ECHO) Targets:
@$(ECHO) "Targets:"
@$(ECHO) " all - continue all tests"
@$(ECHO) " full - clean and run all tests"
@$(ECHO) " dailytest - run full and save results"
@ -332,14 +324,14 @@ info :
@$(ECHO) " onlyknown - run only known bugs"
@$(ECHO) " onlygraph - run only graph tests"
@$(ECHO) " onlyinteractive - run only interactive tests"
@$(ECHO) " rundigest - compute and print test statistics"
@$(ECHO) " digest - compute and print test statistics"
@$(ECHO)
@$(ECHO) Driver environment:
@$(ECHO) " $(OS_TARGET)-$(CPU_TARGET)"
@$(ECHO) "Host environment:"
@$(ECHO) " $(FULL_TARGET)"
@$(ECHO) " compiler: $(FPC) ver: $(FPC_VERSION)"
@$(ECHO)
@$(ECHO) Test environment:
@$(ECHO) " $(TEST_OS_TARGET)-$(TEST_CPU_TARGET)"
@$(ECHO) "Test environment:"
@$(ECHO) " $(TEST_FULL_TARGET)"
@$(ECHO) " compiler: $(TEST_FPC) ver: $(TEST_FPC_VERSION)"
override DATESUFFIX:=$(shell $(DATE) +%Y.%m.%d)
@ -351,16 +343,3 @@ endif
ifneq ($(wildcard lastdate.txt),)
LASTDATESUFFIX:=$(shell cat lastdate.txt)
endif
dailytest : full
$(COPY) faillist faillist.$(DATESUFFIX)
$(COPY) log log.$(DATESUFFIX)
$(COPY) longlog longlog.$(DATESUFFIX)
-$(DIGEST) > digest.$(DATESUFFIX)
ifdef LASTDATESUFFIX
-diff -u log.$(LASTDATESUFFIX) log.$(DATESUFFIX) > difflog.$(DATESUFFIX)
-diff -u digest.$(LASTDATESUFFIX) digest.$(DATESUFFIX) > diffdigest.$(DATESUFFIX)
-diff -u faillist.$(LASTDATESUFFIX) faillist.$(DATESUFFIX) > difflist.$(DATESUFFIX)
endif
@$(ECHO) $(DATESUFFIX) > lastdate.txt

View File

@ -1,5 +1,5 @@
#
# Don't edit, this file is generated by FPCMake Version 1.1 [2004/10/30]
# Don't edit, this file is generated by FPCMake Version 1.1 [2004/11/09]
#
default: all
MAKEFILETARGETS=linux go32v2 win32 os2 freebsd beos netbsd amiga atari sunos qnx netware openbsd wdosx palmos macos darwin emx watcom morphos netwlibc
@ -221,6 +221,7 @@ endif
PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
override CLEAN_UNITS+=erroru win32err ptest
override INSTALL_FPCPACKAGE=y
override COMPILER_TARGETDIR+=$(FULL_TARGET)
ifdef REQUIRE_UNITSDIR
override UNITSDIR+=$(REQUIRE_UNITSDIR)
endif
@ -718,7 +719,7 @@ ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(ECHO),)
ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(ECHO),)
ECHO= __missing_command__
ECHO= __missing_command_ECHO
else
ECHO:=$(firstword $(ECHO))
endif
@ -732,7 +733,7 @@ DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(DATE),)
DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(DATE),)
DATE= __missing_command__
DATE= __missing_command_DATE
else
DATE:=$(firstword $(DATE))
endif
@ -746,7 +747,7 @@ GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(GINSTALL),)
GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(GINSTALL),)
GINSTALL= __missing_command__
GINSTALL= __missing_command_GINSTALL
else
GINSTALL:=$(firstword $(GINSTALL))
endif
@ -758,7 +759,7 @@ export GINSTALL
ifndef CPPROG
CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(CPPROG),)
CPPROG= __missing_command__
CPPROG= __missing_command_CPPROG
else
CPPROG:=$(firstword $(CPPROG))
endif
@ -767,7 +768,7 @@ export CPPROG
ifndef RMPROG
RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(RMPROG),)
RMPROG= __missing_command__
RMPROG= __missing_command_RMPROG
else
RMPROG:=$(firstword $(RMPROG))
endif
@ -776,7 +777,7 @@ export RMPROG
ifndef MVPROG
MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(MVPROG),)
MVPROG= __missing_command__
MVPROG= __missing_command_MVPROG
else
MVPROG:=$(firstword $(MVPROG))
endif
@ -787,7 +788,7 @@ MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(MKDIRPROG),)
MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(MKDIRPROG),)
MKDIRPROG= __missing_command__
MKDIRPROG= __missing_command_MKDIRPROG
else
MKDIRPROG:=$(firstword $(MKDIRPROG))
endif
@ -842,7 +843,7 @@ export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
ifndef PPUMOVE
PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(PPUMOVE),)
PPUMOVE= __missing_command__
PPUMOVE= __missing_command_PPUMOVE
else
PPUMOVE:=$(firstword $(PPUMOVE))
endif
@ -851,7 +852,7 @@ export PPUMOVE
ifndef FPCMAKE
FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(FPCMAKE),)
FPCMAKE= __missing_command__
FPCMAKE= __missing_command_FPCMAKE
else
FPCMAKE:=$(firstword $(FPCMAKE))
endif
@ -860,7 +861,7 @@ export FPCMAKE
ifndef ZIPPROG
ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(ZIPPROG),)
ZIPPROG= __missing_command__
ZIPPROG= __missing_command_ZIPPROG
else
ZIPPROG:=$(firstword $(ZIPPROG))
endif
@ -869,7 +870,7 @@ export ZIPPROG
ifndef TARPROG
TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(TARPROG),)
TARPROG= __missing_command__
TARPROG= __missing_command_TARPROG
else
TARPROG:=$(firstword $(TARPROG))
endif
@ -1474,50 +1475,20 @@ makefiles: fpc_makefiles
ifneq ($(wildcard fpcmake.loc),)
include fpcmake.loc
endif
ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
FCL=fcl
endif
.PHONY: rtl $(FCL) extra all clean cleanrtlfcl clean_ctest
.PHONY: rtl extra all clean cleanrtl clean_ctest
DUMMYINSTALLDIR=$(BASEDIR)/tmp
INSTALLOPT=INSTALL_PREFIX=$(DUMMYINSTALLDIR) INSTALL_UNITDIR=$(BASEDIR)
ifndef USEUNITDIR
rtl-stamp:
INSTALLOPT=INSTALL_PREFIX=$(DUMMYINSTALLDIR) INSTALL_UNITDIR=$(BASEDIR)/$(COMPILER_TARGETDIR)
rtl-stamp.$(FULL_TARGET):
$(MAKE) -C ../../rtl all "OPT=$(OPT) -n"
$(DELTREE) $(COMPILER_TARGETDIR)
$(MAKE) -C ../../rtl install $(INSTALLOPT)
$(ECHO) Compiled > rtl-stamp
ifdef FCL
fcl-stamp:
$(MAKE) -C ../../packages/base all "OPT=$(OPT) -n"
$(MAKE) -C ../../fcl all "OPT=$(OPT) -n"
$(MAKE) -C ../../fcl install $(INSTALLOPT)
$(ECHO) Compiled > fcl-stamp
endif
cleanrtlfcl : cleanall
$(ECHO) Compiled > rtl-stamp.$(FULL_TARGET)
cleanrtl:
$(DELTREE) $(COMPILER_TARGETDIR)
$(DELTREE) $(DUMMYINSTALLDIR)
-$(DEL) rtl-stamp fcl-stamp
else
rtl-stamp:
-$(COPY) $(USEUNITDIR)/*$(PPUEXT) .
-$(COPY) $(USEUNITDIR)/*$(OEXT) .
-$(COPY) $(USEUNITDIR)/*$(ASMEXT) .
-$(COPY) $(USEUNITDIR)/*_ppas$(BATCHEXT) .
$(ECHO) Copied > rtl-stamp
ifdef FCL
fcl-stamp: rtl-stamp
$(ECHO) Copied > fcl-stamp
endif
cleanrtlfcl :
-$(DEL) *$(PPUEXT)
-$(DEL) *$(OEXT)
-$(DEL) *$(ASMEXT)
-$(DEL) *_ppas$(BATCHEXT)
-$(DEL) rtl-stamp fcl-stamp
endif
rtl : rtl-stamp
ifdef FCL
fcl : fcl-stamp
endif
TESTOPT=-n -FE. -Fu. -T$(OS_TARGET) $(OPT)
-$(DEL) rtl-stamp.$(FULL_TARGET)
rtl : rtl-stamp.$(FULL_TARGET)
TESTOPT=-n -FE$(COMPILER_TARGETDIR) -T$(OS_TARGET) $(OPT)
ifneq ($(BINUTILSPREFIX),)
override TESTOPT+=-XP$(BINUTILSPREFIX) -Xc
endif
@ -1538,7 +1509,7 @@ extra : erroru$(PPUEXT) ptest$(PPUEXT) ../test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)
ifeq ($(OS_TARGET),win32)
extra : win32err$(PPUEXT)
endif
all : rtl $(FCL) extra
clean : cleanrtlfcl fpc_clean
all : rtl extra
clean : cleanrtl cleanall
clean_ctest :
-$(DEL) ../test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o

View File

@ -10,83 +10,42 @@ fpcpackage=y
[clean]
units = erroru win32err ptest
[compiler]
targetdir=$(FULL_TARGET)
[default]
fpcdir=../..
[rules]
# Only 1.1 has Classes in the RTL
ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
FCL=fcl
endif
.PHONY: rtl $(FCL) extra all clean cleanrtlfcl clean_ctest
.PHONY: rtl extra all clean cleanrtl clean_ctest
#############################
# RTL and FCL
# RTL
#
DUMMYINSTALLDIR=$(BASEDIR)/tmp
INSTALLOPT=INSTALL_PREFIX=$(DUMMYINSTALLDIR) INSTALL_UNITDIR=$(BASEDIR)
INSTALLOPT=INSTALL_PREFIX=$(DUMMYINSTALLDIR) INSTALL_UNITDIR=$(BASEDIR)/$(COMPILER_TARGETDIR)
ifndef USEUNITDIR
rtl-stamp:
rtl-stamp.$(FULL_TARGET):
$(MAKE) -C ../../rtl all "OPT=$(OPT) -n"
$(DELTREE) $(COMPILER_TARGETDIR)
$(MAKE) -C ../../rtl install $(INSTALLOPT)
$(ECHO) Compiled > rtl-stamp
$(ECHO) Compiled > rtl-stamp.$(FULL_TARGET)
ifdef FCL
fcl-stamp:
$(MAKE) -C ../../packages/base all "OPT=$(OPT) -n"
$(MAKE) -C ../../fcl all "OPT=$(OPT) -n"
$(MAKE) -C ../../fcl install $(INSTALLOPT)
$(ECHO) Compiled > fcl-stamp
endif
cleanrtlfcl : cleanall
# $(MAKE) -C ../../rtl clean
# $(MAKE) -C ../../fcl clean
cleanrtl:
$(DELTREE) $(COMPILER_TARGETDIR)
$(DELTREE) $(DUMMYINSTALLDIR)
-$(DEL) rtl-stamp fcl-stamp
-$(DEL) rtl-stamp.$(FULL_TARGET)
else
rtl : rtl-stamp.$(FULL_TARGET)
rtl-stamp:
# Just copying everything doesn't work, because then the Makefile will be overwritten
-$(COPY) $(USEUNITDIR)/*$(PPUEXT) .
-$(COPY) $(USEUNITDIR)/*$(OEXT) .
-$(COPY) $(USEUNITDIR)/*$(ASMEXT) .
-$(COPY) $(USEUNITDIR)/*_ppas$(BATCHEXT) .
$(ECHO) Copied > rtl-stamp
ifdef FCL
fcl-stamp: rtl-stamp
$(ECHO) Copied > fcl-stamp
endif
cleanrtlfcl :
-$(DEL) *$(PPUEXT)
-$(DEL) *$(OEXT)
-$(DEL) *$(ASMEXT)
-$(DEL) *_ppas$(BATCHEXT)
-$(DEL) rtl-stamp fcl-stamp
endif
rtl : rtl-stamp
ifdef FCL
fcl : fcl-stamp
endif
#############################
# Extra units
#
TESTOPT=-n -FE. -Fu. -T$(OS_TARGET) $(OPT)
TESTOPT=-n -FE$(COMPILER_TARGETDIR) -T$(OS_TARGET) $(OPT)
ifneq ($(BINUTILSPREFIX),)
override TESTOPT+=-XP$(BINUTILSPREFIX) -Xc
endif
@ -120,9 +79,9 @@ endif
# Main rules
#
all : rtl $(FCL) extra
all : rtl extra
clean : cleanrtlfcl fpc_clean
clean : cleanrtl cleanall
clean_ctest :
-$(DEL) ../test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o

View File

@ -1,5 +1,5 @@
#
# Don't edit, this file is generated by FPCMake Version 1.1 [2004/10/30]
# Don't edit, this file is generated by FPCMake Version 1.1 [2004/11/08]
#
default: all
MAKEFILETARGETS=linux go32v2 win32 os2 freebsd beos netbsd amiga atari sunos qnx netware openbsd wdosx palmos macos darwin emx watcom morphos netwlibc
@ -415,14 +415,14 @@ ifeq ($(CPU_TARGET),i386)
ifneq ($(findstring x86_64,$(shell uname -a)),)
ifeq ($(BINUTILSPREFIX),)
GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`)
else
GCCLIBDIR:=$(shell dirname `$(BINUTILSPREFIX)gcc -print-libgcc-file-name`)
endif
else
GCCLIBDIR:=$(shell dirname `$(BINUTILSPREFIX)gcc -print-libgcc-file-name`)
endif
else
GCCLIBDIR:=$(shell dirname `$(BINUTILSPREFIX)gcc -print-libgcc-file-name`)
endif
endif
ifndef GCCLIBDIR
CROSSGCC=$(strip $(wildcard $(addsuffix /$(BINUTILSPREFIX)gcc$(SRCEXEEXT),$(SEARCHPATH))))
ifneq ($(CROSSGCC),)
GCCLIBDIR:=$(shell dirname `$(CROSSGCC) -print-libgcc-file-name`)
endif
endif
ifndef OTHERLIBDIR
@ -747,7 +747,7 @@ ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(ECHO),)
ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(ECHO),)
ECHO= __missing_command__
ECHO= __missing_command_ECHO
else
ECHO:=$(firstword $(ECHO))
endif
@ -761,7 +761,7 @@ DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(DATE),)
DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(DATE),)
DATE= __missing_command__
DATE= __missing_command_DATE
else
DATE:=$(firstword $(DATE))
endif
@ -775,7 +775,7 @@ GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(GINSTALL),)
GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(GINSTALL),)
GINSTALL= __missing_command__
GINSTALL= __missing_command_GINSTALL
else
GINSTALL:=$(firstword $(GINSTALL))
endif
@ -787,7 +787,7 @@ export GINSTALL
ifndef CPPROG
CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(CPPROG),)
CPPROG= __missing_command__
CPPROG= __missing_command_CPPROG
else
CPPROG:=$(firstword $(CPPROG))
endif
@ -796,7 +796,7 @@ export CPPROG
ifndef RMPROG
RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(RMPROG),)
RMPROG= __missing_command__
RMPROG= __missing_command_RMPROG
else
RMPROG:=$(firstword $(RMPROG))
endif
@ -805,7 +805,7 @@ export RMPROG
ifndef MVPROG
MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(MVPROG),)
MVPROG= __missing_command__
MVPROG= __missing_command_MVPROG
else
MVPROG:=$(firstword $(MVPROG))
endif
@ -816,7 +816,7 @@ MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(MKDIRPROG),)
MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(MKDIRPROG),)
MKDIRPROG= __missing_command__
MKDIRPROG= __missing_command_MKDIRPROG
else
MKDIRPROG:=$(firstword $(MKDIRPROG))
endif
@ -871,7 +871,7 @@ export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
ifndef PPUMOVE
PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(PPUMOVE),)
PPUMOVE= __missing_command__
PPUMOVE= __missing_command_PPUMOVE
else
PPUMOVE:=$(firstword $(PPUMOVE))
endif
@ -880,7 +880,7 @@ export PPUMOVE
ifndef FPCMAKE
FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(FPCMAKE),)
FPCMAKE= __missing_command__
FPCMAKE= __missing_command_FPCMAKE
else
FPCMAKE:=$(firstword $(FPCMAKE))
endif
@ -889,7 +889,7 @@ export FPCMAKE
ifndef ZIPPROG
ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(ZIPPROG),)
ZIPPROG= __missing_command__
ZIPPROG= __missing_command_ZIPPROG
else
ZIPPROG:=$(firstword $(ZIPPROG))
endif
@ -898,7 +898,7 @@ export ZIPPROG
ifndef TARPROG
TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(TARPROG),)
TARPROG= __missing_command__
TARPROG= __missing_command_TARPROG
else
TARPROG:=$(firstword $(TARPROG))
endif

View File

@ -36,6 +36,13 @@ const
var
Config : TConfig;
CompilerLogFile,
ExeLogFile,
LongLogfile,
FailLogfile,
RTLUnitsDir,
TestOutputDir,
OutputDir : string;
CompilerBin : string;
CompilerCPU : string;
CompilerTarget : string;
@ -45,14 +52,13 @@ var
TestName : string;
const
LongLogfile : string[32] = 'longlog';
FailLogfile : string[32] = 'faillist';
DoGraph : boolean = false;
DoInteractive : boolean = false;
DoExecute : boolean = false;
DoKnown : boolean = false;
DoAll : boolean = false;
DoUsual : boolean = true;
TargetDir : string = '';
ExtraCompilerOpts : string = '';
DelExecutable : boolean = false;
RemoteAddr : string = '';
@ -75,6 +81,19 @@ begin
end;
Function PathExists (Const F : String) : Boolean;
{
Returns True if the file exists, False if not.
}
Var
info : searchrec;
begin
FindFirst (F,anyfile,Info);
PathExists:=(DosError=0) and (Info.Attr and Directory=Directory);
FindClose (Info);
end;
function ToStr(l:longint):string;
var
s : string;
@ -192,6 +211,30 @@ begin
end;
procedure mkdirtree(const s:string);
var
hs : string;
begin
if s='' then
exit;
if s[length(s)] in ['\','/'] then
hs:=Copy(s,1,length(s)-1)
else
hs:=s;
if not PathExists(hs) then
begin
{ Try parent first }
mkdirtree(SplitPath(hs));
{ make this dir }
Verbose(V_Debug,'Making Directory '+s);
{$I-}
mkdir(s);
{$I+}
ioresult;
end;
end;
Function RemoveFile(const f:string):boolean;
var
g : file;
@ -347,7 +390,7 @@ begin
else
GetCompilerVersion:=true;
if GetCompilerVersion then
Verbose(V_Debug,'Current Compiler Version: "'+CompilerVersion+'"');
Verbose(V_Debug,'Compiler Version: "'+CompilerVersion+'"');
end;
@ -358,7 +401,7 @@ begin
else
GetCompilerCPU:=true;
if GetCompilerCPU then
Verbose(V_Debug,'Current Compiler CPU: "'+CompilerCPU+'"');
Verbose(V_Debug,'Compiler CPU: "'+CompilerCPU+'"');
end;
@ -369,7 +412,25 @@ begin
else
GetCompilerTarget:=true;
if GetCompilerTarget then
Verbose(V_Debug,'Current Compiler Target: "'+CompilerTarget+'"');
Verbose(V_Debug,'Compiler Target: "'+CompilerTarget+'"');
end;
function GetCompilerFullTarget:string;
begin
GetCompilerFullTarget:=CompilerCPU+'-'+CompilerTarget;
end;
function OutputFileName(Const s,ext:String):String;
begin
OutputFileName:=OutputDir+'/'+ForceExtension(s,ext);
end;
function TestOutputFileName(Const s,ext:String):String;
begin
TestOutputFileName:=TestOutputDir+'/'+ForceExtension(SplitFileName(s),ext);
end;
@ -401,13 +462,14 @@ end;
function RunCompiler:boolean;
var
outname,
args : string;
args : string;
execres : boolean;
begin
RunCompiler:=false;
OutName:=ForceExtension(PPFile,'log');
args:='-n -Fuunits '+ExtraCompilerOpts;
args:='-n -Fu'+RTLUnitsDir;
args:=args+' -FE'+TestOutputDir;
if ExtraCompilerOpts<>'' then
args:=args+ExtraCompilerOpts;
{$ifdef unix}
{ Add runtime library path to current dir to find .so files }
if Config.NeedLibrary then
@ -418,7 +480,7 @@ begin
args:=args+' '+ppfile;
Verbose(V_Debug,'Executing '+compilerbin+' '+args);
{ also get the output from as and ld that writes to stderr sometimes }
execres:=ExecuteRedir(CompilerBin,args,'',OutName,'stdout');
execres:=ExecuteRedir(CompilerBin,args,'',CompilerLogFile,'stdout');
Verbose(V_Debug,'Exitcode '+ToStr(ExecuteResult));
{ Error during execution? }
@ -428,15 +490,15 @@ begin
AddLog(ResLogFile,failed_to_compile+PPFileInfo);
AddLog(LongLogFile,line_separation);
AddLog(LongLogFile,failed_to_compile+PPFileInfo);
CopyFile(OutName,LongLogFile,true);
CopyFile(CompilerLogFile,LongLogFile,true);
{ avoid to try again }
AddLog(ForceExtension(PPFile,'elg'),failed_to_compile+PPFileInfo);
AddLog(ExeLogFile,failed_to_compile+PPFileInfo);
Verbose(V_Abort,'IOStatus: '+ToStr(IOStatus));
exit;
end;
{ Check for internal error }
if ExitWithInternalError(OutName) then
if ExitWithInternalError(CompilerLogFile) then
begin
AddLog(FailLogFile,TestName);
if Config.Note<>'' then
@ -446,9 +508,9 @@ begin
AddLog(LongLogFile,failed_to_compile+PPFileInfo);
if Config.Note<>'' then
AddLog(LongLogFile,Config.Note);
CopyFile(OutName,LongLogFile,true);
CopyFile(CompilerLogFile,LongLogFile,true);
{ avoid to try again }
AddLog(ForceExtension(PPFile,'elg'),'Failed to compile '++PPFileInfo);
AddLog(ExeLogFile,'Failed to compile '++PPFileInfo);
Verbose(V_Abort,'Internal error in compiler');
exit;
end;
@ -460,7 +522,7 @@ begin
begin
AddLog(ResLogFile,success_compilation_failed+PPFileInfo);
{ avoid to try again }
AddLog(ForceExtension(PPFile,'elg'),success_compilation_failed+PPFileInfo);
AddLog(ExeLogFile,success_compilation_failed+PPFileInfo);
RunCompiler:=true;
end
else
@ -472,10 +534,10 @@ begin
AddLog(LongLogFile,line_separation);
AddLog(LongLogFile,failed_compilation_successful+PPFileInfo);
{ avoid to try again }
AddLog(ForceExtension(PPFile,'elg'),failed_compilation_successful+PPFileInfo);
AddLog(ExeLogFile,failed_compilation_successful+PPFileInfo);
if Config.Note<>'' then
AddLog(LongLogFile,Config.Note);
CopyFile(OutName,LongLogFile,true);
CopyFile(CompilerLogFile,LongLogFile,true);
end;
end
else
@ -489,7 +551,7 @@ begin
AddLog(LongLogFile,line_separation);
AddLog(LongLogFile,known_problem+Config.KnownCompileNote);
AddLog(LongLogFile,failed_to_compile+PPFileInfo+' ('+ToStr(ExecuteResult)+')');
Copyfile(OutName,LongLogFile,true);
Copyfile(CompilerLogFile,LongLogFile,true);
Verbose(V_Abort,known_problem+'exitcode: '+ToStr(ExecuteResult));
end
else if ExecuteResult<>0 then
@ -502,9 +564,9 @@ begin
AddLog(LongLogFile,failed_to_compile+PPFileInfo);
if Config.Note<>'' then
AddLog(LongLogFile,Config.Note);
CopyFile(OutName,LongLogFile,true);
CopyFile(CompilerLogFile,LongLogFile,true);
{ avoid to try again }
AddLog(ForceExtension(PPFile,'elg'),failed_to_compile+PPFileInfo);
AddLog(ExeLogFile,failed_to_compile+PPFileInfo);
Verbose(V_Abort,'Exitcode: '+ToStr(ExecuteResult)+' (expected 0)');
end
else
@ -538,6 +600,7 @@ begin
begin
delete(s,1,i+14-1);
val(s,ExecuteResult,code);
if code=0 then;
CheckTestExitCode:=true;
break;
end;
@ -548,7 +611,8 @@ end;
function RunExecutable:boolean;
var
outname,
OldDir,
FullExeLogFile,
TestRemoteExe,
TestExe : string;
execres : boolean;
@ -556,7 +620,7 @@ var
function ExecuteRemote(const prog,args:string):boolean;
begin
Verbose(V_Debug,'RemoteExecuting '+Prog+' '+args);
ExecuteRemote:=ExecuteRedir(prog,args,'',OutName,'stdout');
ExecuteRemote:=ExecuteRedir(prog,args,'',EXELogFile,'stdout');
end;
begin
@ -564,10 +628,9 @@ begin
execres:=true;
{ when remote testing, leave extension away }
if RemoteAddr='' then
TestExe:=ForceExtension(PPFile,ExeExt)
TestExe:=OutputFileName(PPFile,ExeExt)
else
TestExe:=ForceExtension(PPFile,'');
OutName:=ForceExtension(PPFile,'elg');
TestExe:=OutputFileName(PPFile,'');
if RemoteAddr<>'' then
begin
{ We don't want to create subdirs, remove paths from the test }
@ -579,16 +642,28 @@ begin
execres:=ExecuteRemote(rshprog,RemotePara+' '+RemoteAddr+' '+rquote+'chmod 755 '+TestRemoteExe+
' ; cd '+RemotePath+' ; '+TestRemoteExe+' ; echo "TestExitCode: $?"'+rquote);
{ Check for TestExitCode error in output, sets ExecuteResult }
CheckTestExitCode(OutName);
CheckTestExitCode(EXELogFile);
end
else
begin
{ Get full name out log file, because we change the directory during
execution }
FullExeLogFile:=FExpand(EXELogFile);
Verbose(V_Debug,'Executing '+TestExe);
{ don't redirect interactive and graph programs .. }
{$I-}
GetDir(0,OldDir);
ChDir(TestOutputDir);
{$I+}
ioresult;
{ don't redirect interactive and graph programs }
if Config.IsInteractive or Config.UsesGraph then
execres:=ExecuteRedir(TestExe,'','','','')
execres:=ExecuteRedir(SplitFileName(TestExe),'','','','')
else
execres:=ExecuteRedir(TestExe,'','',OutName,'stdout');
execres:=ExecuteRedir(SplitFileName(TestExe),'','',FullExeLogFile,'stdout');
{$I-}
ChDir(OldDir);
{$I+}
ioresult;
end;
{ Error during execution? }
@ -599,9 +674,9 @@ begin
AddLog(ResLogFile,failed_to_run+PPFileInfo);
AddLog(LongLogFile,line_separation);
AddLog(LongLogFile,failed_to_run+PPFileInfo);
CopyFile(OutName,LongLogFile,true);
CopyFile(EXELogFile,LongLogFile,true);
{ avoid to try again }
AddLog(ForceExtension(PPFile,'elg'),failed_to_run+PPFileInfo);
AddLog(ExeLogFile,failed_to_run+PPFileInfo);
Verbose(V_Abort,'IOStatus: '+ToStr(IOStatus));
exit;
end;
@ -616,7 +691,7 @@ begin
AddLog(LongLogFile,line_separation);
AddLog(LongLogFile,known_problem+Config.KnownRunNote);
AddLog(LongLogFile,failed_to_run+PPFileInfo+' ('+ToStr(ExecuteResult)+')');
Copyfile(OutName,LongLogFile,true);
Copyfile(EXELogFile,LongLogFile,true);
Verbose(V_Abort,known_problem+'exitcode: '+ToStr(ExecuteResult)+' (expected '+ToStr(Config.ResultCode)+')');
end
else
@ -625,7 +700,7 @@ begin
AddLog(ResLogFile,failed_to_run+PPFileInfo);
AddLog(LongLogFile,line_separation);
AddLog(LongLogFile,failed_to_run+PPFileInfo+' ('+ToStr(ExecuteResult)+')');
Copyfile(OutName,LongLogFile,true);
Copyfile(EXELogFile,LongLogFile,true);
Verbose(V_Abort,'Exitcode: '+ToStr(ExecuteResult)+' (expected '+ToStr(Config.ResultCode)+')');
end
end
@ -775,11 +850,42 @@ end;
procedure RunTest;
var
PPDir : string;
Res : boolean;
OutName : string;
begin
Res:=GetConfig(ppfile,Config);
OutName:=ForceExtension(PPFile,'elg');
if Res then
begin
Res:=GetCompilerCPU;
Res:=GetCompilerTarget;
RTLUnitsDir:='units/'+GetCompilerFullTarget;
if not PathExists(RTLUnitsDir) then
Verbose(V_Abort,'Unit path "'+RTLUnitsDir+'" does not exists');
OutputDir:='output/'+GetCompilerFullTarget;
if not PathExists(OutputDir) then
Verbose(V_Abort,'Output path "'+OutputDir+'" does not exists');
{ Global log files }
ResLogFile:=OutputFileName('log','');
LongLogFile:=OutputFileName('longlog','');
FailLogFile:=OutputFileName('faillist','');
{ Make subdir in output if needed }
PPDir:=SplitPath(PPFile);
if PPDir[length(PPDir)] in ['/','\'] then
Delete(PPDir,length(PPDir),1);
if PPDir<>'' then
begin
TestOutputDir:=OutputDir+'/'+PPDir;
mkdirtree(TestOutputDir);
end
else
TestOutputDir:=OutputDir;
{ Per test logfiles }
CompilerLogFile:=TestOutputFileName(SplitFileName(PPFile),'log');
ExeLogFile:=TestOutputFileName(SplitFileName(PPFile),'elg');
Verbose(V_Debug,'Using Compiler logfile: '+CompilerLogFile);
Verbose(V_Debug,'Using Execution logfile: '+ExeLogFile);
end;
if Res then
begin
@ -787,7 +893,7 @@ begin
begin
AddLog(ResLogFile,skipping_graph_test+PPFileInfo);
{ avoid a second attempt by writing to elg file }
AddLog(OutName,skipping_graph_test+PPFileInfo);
AddLog(EXELogFile,skipping_graph_test+PPFileInfo);
Verbose(V_Abort,skipping_graph_test);
Res:=false;
end;
@ -798,7 +904,7 @@ begin
if Config.IsInteractive and (not DoInteractive) then
begin
{ avoid a second attempt by writing to elg file }
AddLog(OutName,skipping_interactive_test+PPFileInfo);
AddLog(EXELogFile,skipping_interactive_test+PPFileInfo);
AddLog(ResLogFile,skipping_interactive_test+PPFileInfo);
Verbose(V_Abort,skipping_interactive_test);
Res:=false;
@ -810,7 +916,7 @@ begin
if Config.IsKnownCompileError and (not DoKnown) then
begin
{ avoid a second attempt by writing to elg file }
AddLog(OutName,skipping_known_bug+PPFileInfo);
AddLog(EXELogFile,skipping_known_bug+PPFileInfo);
AddLog(ResLogFile,skipping_known_bug+PPFileInfo);
Verbose(V_Abort,skipping_known_bug);
Res:=false;
@ -831,7 +937,7 @@ begin
if CompilerVersion<Config.MinVersion then
begin
{ avoid a second attempt by writing to elg file }
AddLog(OutName,skipping_compiler_version_too_low+PPFileInfo);
AddLog(EXELogFile,skipping_compiler_version_too_low+PPFileInfo);
AddLog(ResLogFile,skipping_compiler_version_too_low+PPFileInfo);
Verbose(V_Abort,'Compiler version too low '+CompilerVersion+' < '+Config.MinVersion);
Res:=false;
@ -848,7 +954,7 @@ begin
if CompilerVersion>Config.MaxVersion then
begin
{ avoid a second attempt by writing to elg file }
AddLog(OutName,skipping_compiler_version_too_high+PPFileInfo);
AddLog(EXELogFile,skipping_compiler_version_too_high+PPFileInfo);
AddLog(ResLogFile,skipping_compiler_version_too_high+PPFileInfo);
Verbose(V_Abort,'Compiler version too high '+CompilerVersion+' > '+Config.MaxVersion);
Res:=false;
@ -861,11 +967,10 @@ begin
if Config.NeedCPU<>'' then
begin
Verbose(V_Debug,'Required compiler cpu: '+Config.NeedCPU);
Res:=GetCompilerCPU;
if not IsInList(CompilerCPU,Config.NeedCPU) then
begin
{ avoid a second attempt by writing to elg file }
AddLog(OutName,skipping_other_cpu+PPFileInfo);
AddLog(EXELogFile,skipping_other_cpu+PPFileInfo);
AddLog(ResLogFile,skipping_other_cpu+PPFileInfo);
Verbose(V_Abort,'Compiler cpu "'+CompilerCPU+'" is not in list "'+Config.NeedCPU+'"');
Res:=false;
@ -878,11 +983,10 @@ begin
if Config.SkipCPU<>'' then
begin
Verbose(V_Debug,'Skip compiler cpu: '+Config.NeedCPU);
Res:=GetCompilerCPU;
if IsInList(CompilerCPU,Config.SkipCPU) then
begin
{ avoid a second attempt by writing to elg file }
AddLog(OutName,skipping_other_cpu+PPFileInfo);
AddLog(EXELogFile,skipping_other_cpu+PPFileInfo);
AddLog(ResLogFile,skipping_other_cpu+PPFileInfo);
Verbose(V_Abort,'Compiler cpu "'+CompilerCPU+'" is in list "'+Config.SkipCPU+'"');
Res:=false;
@ -895,11 +999,10 @@ begin
if Config.NeedTarget<>'' then
begin
Verbose(V_Debug,'Required compiler target: '+Config.NeedTarget);
Res:=GetCompilerTarget;
if not IsInList(CompilerTarget,Config.NeedTarget) then
begin
{ avoid a second attempt by writing to elg file }
AddLog(OutName,skipping_other_target+PPFileInfo);
AddLog(EXELogFile,skipping_other_target+PPFileInfo);
AddLog(ResLogFile,skipping_other_target+PPFileInfo);
Verbose(V_Abort,'Compiler target "'+CompilerTarget+'" is not in list "'+Config.NeedTarget+'"');
Res:=false;
@ -912,11 +1015,10 @@ begin
if Config.SkipTarget<>'' then
begin
Verbose(V_Debug,'Skip compiler target: '+Config.NeedTarget);
Res:=GetCompilerTarget;
if IsInList(CompilerTarget,Config.SkipTarget) then
begin
{ avoid a second attempt by writing to elg file }
AddLog(OutName,skipping_other_target+PPFileInfo);
AddLog(EXELogFile,skipping_other_target+PPFileInfo);
AddLog(ResLogFile,skipping_other_target+PPFileInfo);
Verbose(V_Abort,'Compiler target "'+CompilerTarget+'" is in list "'+Config.SkipTarget+'"');
Res:=false;
@ -936,14 +1038,14 @@ begin
if (Config.NoRun) then
begin
{ avoid a second attempt by writing to elg file }
AddLog(OutName,skipping_run_test+PPFileInfo);
AddLog(EXELogFile,skipping_run_test+PPFileInfo);
AddLog(ResLogFile,skipping_run_test+PPFileInfo);
Verbose(V_Debug,skipping_run_test);
end
else if Config.IsKnownRunError and (not DoKnown) then
begin
{ avoid a second attempt by writing to elg file }
AddLog(OutName,skipping_known_bug+PPFileInfo);
AddLog(EXELogFile,skipping_known_bug+PPFileInfo);
AddLog(ResLogFile,skipping_known_bug+PPFileInfo);
Verbose(V_Abort,skipping_known_bug);
end
@ -951,11 +1053,11 @@ begin
begin
if (not Config.ShouldFail) and DoExecute then
begin
if FileExists(ForceExtension(PPFile,'ppu')) or
FileExists(ForceExtension(PPFile,'ppo')) or
FileExists(ForceExtension(PPFile,'ppw')) then
if FileExists(TestOutputFilename(PPFile,'ppu')) or
FileExists(TestOutputFilename(PPFile,'ppo')) or
FileExists(TestOutputFilename(PPFile,'ppw')) then
begin
AddLog(ForceExtension(PPFile,'elg'),skipping_run_unit+PPFileInfo);
AddLog(ExeLogFile,skipping_run_unit+PPFileInfo);
AddLog(ResLogFile,skipping_run_unit+PPFileInfo);
Verbose(V_Debug,'Unit found, skipping run test')
end
@ -973,7 +1075,11 @@ begin
end.
{
$Log$
Revision 1.38 2004-09-30 15:38:59 peter
Revision 1.39 2004-11-09 17:26:28 peter
* use separate output dirs
* same tree can be used for multiple targets
Revision 1.38 2004/09/30 15:38:59 peter
* chdir to remote path before executing test
Revision 1.37 2004/07/03 18:28:21 florian