* remote execute updates, see readme.txt

This commit is contained in:
peter 2004-05-16 20:13:04 +00:00
parent 94adf83a8b
commit 514215ea0d
8 changed files with 265 additions and 398 deletions

View File

@ -1404,11 +1404,28 @@ endif
ifndef TEST_OPT ifndef TEST_OPT
TEST_OPT= TEST_OPT=
endif endif
ifndef TEST_FPC_VERSION
TEST_FPC_COMPILERINFO:=$(shell $(TEST_FPC) -iVSPTPSOTO)
TEST_FPC_VERSION:=$(word 1,$(TEST_FPC_COMPILERINFO))
endif
export TEST_FPC TEST_FPC_VERSION TEST_FPC_COMPILERINFO
ifneq ($(words $(TEST_FPC_COMPILERINFO)),5)
TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iSP)
TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iTP)
TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iSO)
TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iTO)
endif
ifndef TEST_CPU_SOURCE
TEST_CPU_SOURCE:=$(word 2,$(TEST_FPC_COMPILERINFO))
endif
ifndef TEST_CPU_TARGET ifndef TEST_CPU_TARGET
TEST_CPU_TARGET=$(CPU_TARGET) TEST_CPU_TARGET:=$(word 3,$(TEST_FPC_COMPILERINFO))
endif
ifndef TEST_OS_SOURCE
TEST_OS_SOURCE:=$(word 4,$(TEST_FPC_COMPILERINFO))
endif endif
ifndef TEST_OS_TARGET ifndef TEST_OS_TARGET
TEST_OS_TARGET=$(OS_TARGET) TEST_OS_TARGET:=$(word 5,$(TEST_FPC_COMPILERINFO))
endif endif
ifndef TEST_CCOMPILER ifndef TEST_CCOMPILER
ifeq ($(CPU_TARGET),$(TEST_CPU_TARGET)) ifeq ($(CPU_TARGET),$(TEST_CPU_TARGET))
@ -1420,10 +1437,6 @@ endif
endif endif
endif endif
endif endif
ifndef TEST_FPC_VERSION
TEST_FPC_COMPILERINFO:=$(shell $(TEST_FPC) -iVSPTPSOTO)
TEST_FPC_VERSION:=$(word 1,$(TEST_FPC_COMPILERINFO))
endif
ifndef FAILLIST ifndef FAILLIST
export FAILLIST:=faillist export FAILLIST:=faillist
endif endif
@ -1465,7 +1478,7 @@ NOCOMSPEC=1
endif endif
units: units:
$(MAKE) -C units FPC=$(TEST_FPC) CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET) \ $(MAKE) -C units FPC=$(TEST_FPC) CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET) \
OPT="$(TEST_OPT)" CCOMPILER=$(TEST_CCOMPILER) OPT="$(TEST_OPT)" CCOMPILER=$(TEST_CCOMPILER) BINUTILSPREFIX=$(TEST_BINUTILSPREFIX)
copyfiles: copyfiles:
$(COPY) test/cg/obj/$(TEST_OS_TARGET)/$(TEST_CPU_TARGET)/ctest.o test/cg $(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 .
@ -1480,6 +1493,21 @@ endif
ifneq ($(OS_TARGET),$(TEST_OS_TARGET)) ifneq ($(OS_TARGET),$(TEST_OS_TARGET))
override DOTESTOPT+=-Y-T$(TEST_OS_TARGET) override DOTESTOPT+=-Y-T$(TEST_OS_TARGET)
endif endif
ifneq ($(OS_TARGET),$(TEST_BINUTILSPREFIX))
override DOTESTOPT+=-Y-XP$(TEST_BINUTILSPREFIX)
endif
ifdef TEST_RSH
override DOTESTOPT+=-R$(TEST_RSH)
endif
ifdef TEST_SSH
override DOTESTOPT+=-R$(TEST_SSH) -S
endif
ifdef TEST_REMOTEPATH
override DOTESTOPT+=-P$(TEST_REMOTEPATH)
endif
ifdef TEST_VERBOSE
override DOTESTOPT+=-V
endif
ifdef TEST_OPT ifdef TEST_OPT
override DOTESTOPT+=$(addprefix -Y, $(TEST_OPT)) override DOTESTOPT+=$(addprefix -Y, $(TEST_OPT))
endif endif

View File

@ -29,15 +29,31 @@ ifndef TEST_OPT
TEST_OPT= TEST_OPT=
endif endif
# Retrieve Test compiler info
ifndef TEST_FPC_VERSION
TEST_FPC_COMPILERINFO:=$(shell $(TEST_FPC) -iVSPTPSOTO)
TEST_FPC_VERSION:=$(word 1,$(TEST_FPC_COMPILERINFO))
endif
export TEST_FPC TEST_FPC_VERSION TEST_FPC_COMPILERINFO
ifneq ($(words $(TEST_FPC_COMPILERINFO)),5)
TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iSP)
TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iTP)
TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iSO)
TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iTO)
endif
ifndef TEST_CPU_SOURCE
TEST_CPU_SOURCE:=$(word 2,$(TEST_FPC_COMPILERINFO))
endif
ifndef TEST_CPU_TARGET ifndef TEST_CPU_TARGET
TEST_CPU_TARGET=$(CPU_TARGET) TEST_CPU_TARGET:=$(word 3,$(TEST_FPC_COMPILERINFO))
endif
ifndef TEST_OS_SOURCE
TEST_OS_SOURCE:=$(word 4,$(TEST_FPC_COMPILERINFO))
endif endif
ifndef TEST_OS_TARGET ifndef TEST_OS_TARGET
TEST_OS_TARGET=$(OS_TARGET) TEST_OS_TARGET:=$(word 5,$(TEST_FPC_COMPILERINFO))
endif endif
ifndef TEST_CCOMPILER ifndef TEST_CCOMPILER
ifeq ($(CPU_TARGET),$(TEST_CPU_TARGET)) ifeq ($(CPU_TARGET),$(TEST_CPU_TARGET))
ifeq ($(OS_TARGET),$(TEST_OS_TARGET)) ifeq ($(OS_TARGET),$(TEST_OS_TARGET))
@ -50,14 +66,6 @@ endif
endif endif
# FPC version (code copied from fpcmake.ini)
ifndef TEST_FPC_VERSION
# For 1.1 and up we can use a single compiler call to retrieve
# all needed information
TEST_FPC_COMPILERINFO:=$(shell $(TEST_FPC) -iVSPTPSOTO)
TEST_FPC_VERSION:=$(word 1,$(TEST_FPC_COMPILERINFO))
endif
################################ ################################
# Misc # Misc
# #
@ -132,7 +140,7 @@ endif
units: units:
$(MAKE) -C units FPC=$(TEST_FPC) CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET) \ $(MAKE) -C units FPC=$(TEST_FPC) CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET) \
OPT="$(TEST_OPT)" CCOMPILER=$(TEST_CCOMPILER) OPT="$(TEST_OPT)" CCOMPILER=$(TEST_CCOMPILER) BINUTILSPREFIX=$(TEST_BINUTILSPREFIX)
################################ ################################
# Copy test environment dependent files ctest.o to test/cg etc # Copy test environment dependent files ctest.o to test/cg etc
@ -164,6 +172,24 @@ endif
ifneq ($(OS_TARGET),$(TEST_OS_TARGET)) ifneq ($(OS_TARGET),$(TEST_OS_TARGET))
override DOTESTOPT+=-Y-T$(TEST_OS_TARGET) override DOTESTOPT+=-Y-T$(TEST_OS_TARGET)
endif endif
ifneq ($(OS_TARGET),$(TEST_BINUTILSPREFIX))
override DOTESTOPT+=-Y-XP$(TEST_BINUTILSPREFIX)
endif
ifdef TEST_RSH
override DOTESTOPT+=-R$(TEST_RSH)
endif
ifdef TEST_SSH
override DOTESTOPT+=-R$(TEST_SSH) -S
endif
ifdef TEST_REMOTEPATH
override DOTESTOPT+=-P$(TEST_REMOTEPATH)
endif
ifdef TEST_DELTEMP
override DOTESTOPT+=-T
endif
ifdef TEST_VERBOSE
override DOTESTOPT+=-V
endif
ifdef TEST_OPT ifdef TEST_OPT
# handles several options as well # handles several options as well

View File

@ -85,12 +85,14 @@ This differentiation also enables cross testing.
The following test options can be given: The following test options can be given:
TEST_FPC defaults to FPC TEST_FPC defaults to FPC
TEST_OS_TARGET defaults to OS_TARGET TEST_OS_TARGET defaults to default target of TEST_FPC
TEST_CPU_TARGET defaults to CPU_TARGET TEST_CPU_TARGET defaults to default target of TEST_FPC
TEST_OPT defaults to "" TEST_OPT defaults to ""
TEST_FPC_VERSION defaults to version of TEST_FPC TEST_FPC_VERSION defaults to version of TEST_FPC
TEST_CCOMPILER defaults to installed gcc compiler, but only TEST_CCOMPILER defaults to installed gcc compiler, but only
if driver and test full-targets are the same. if driver and test full-targets are the same.
TEST_VERBOSE let dotest be more verbose, only usefull for debugging
TEST_DELTEMP delete temporary executable/object/ppu file, default is off
(Please add more test options if needed) (Please add more test options if needed)
@ -103,11 +105,18 @@ all other directories belongs to the test environment.
Remote execution Remote execution
---------------- ----------------
Also remote execution of the testsuite is possible Also remote execution of the testsuite is possible
Requirements: Requirements:
- current build tree contains a cross compiled rtl/fcl - rsh/ssh must work without keyboard interaction or extra parameters
- the cross compiler is installed works without passing extra parameters
- the tests tree is somewhere on the remote machine e.g. /mnt/cf/fpc/tests Test options:
- some dir, e.g. i386-utils contains a dotest executable for the host system TEST_RSH set this to the hostname when you want to use rsh/rcp
- ssh must work without keyboard interaction or extra parameters to execute/copy the test
then a example make command could be TEST_SSH set this to use ssh/scp to execute the test
make DOTEST=i386-utils/dotest FPC=ppcarm "DOTESTOPT=-Y-XParm-linux- -Rroot@192.168.44.9 -P/mnt/cf/fpc/tests -T" TEST_REMOTEPATH set remote path to use, default is /tmp
TEST_DELTEMP delete executable after running, so the remote system
doesn't need much free disk space
Example:
make TEST_FPC=$HOME/fpc/compiler/ppcsparc TEST_BINUTILSPREFIX=sparc-linux- TEST_RSH=sunny TEST_REMOTEPATH=/tmp/tests
make TEST_FPC=$HOME/fpc/compiler/ppcsparc TEST_BINUTILSPREFIX=sparc-linux- TEST_SSH=fpc@sunny TEST_REMOTEPATH=/tmp/tests

View File

@ -1,8 +1,8 @@
# #
# Don't edit, this file is generated by FPCMake Version 1.1 [2004/04/21] # Don't edit, this file is generated by FPCMake Version 1.1 [2004/05/16]
# #
default: all default: all
MAKEFILETARGETS=linux go32v2 win32 os2 freebsd beos netbsd amiga atari sunos qnx netware openbsd wdosx palmos macos darwin emx watcom MAKEFILETARGETS=linux
BSDs = freebsd netbsd openbsd darwin BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) sunos qnx UNIXs = linux $(BSDs) sunos qnx
FORCE: FORCE:
@ -942,126 +942,6 @@ ifeq ($(CPU_TARGET),arm)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
endif endif
endif endif
ifeq ($(OS_TARGET),go32v2)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),win32)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),os2)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),freebsd)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),freebsd)
ifeq ($(CPU_TARGET),m68k)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),beos)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),netbsd)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),netbsd)
ifeq ($(CPU_TARGET),m68k)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),netbsd)
ifeq ($(CPU_TARGET),powerpc)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),netbsd)
ifeq ($(CPU_TARGET),sparc)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),amiga)
ifeq ($(CPU_TARGET),m68k)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),atari)
ifeq ($(CPU_TARGET),m68k)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),sunos)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),sunos)
ifeq ($(CPU_TARGET),sparc)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),qnx)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),netware)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),openbsd)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),openbsd)
ifeq ($(CPU_TARGET),m68k)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),wdosx)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),palmos)
ifeq ($(CPU_TARGET),m68k)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),macos)
ifeq ($(CPU_TARGET),powerpc)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),darwin)
ifeq ($(CPU_TARGET),powerpc)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),emx)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifeq ($(OS_TARGET),watcom)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifdef REQUIRE_PACKAGES_RTL ifdef REQUIRE_PACKAGES_RTL
PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/$(OS_TARGET)/Makefile.fpc,$(PACKAGESDIR)))))) PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/$(OS_TARGET)/Makefile.fpc,$(PACKAGESDIR))))))
ifneq ($(PACKAGEDIR_RTL),) ifneq ($(PACKAGEDIR_RTL),)
@ -1430,7 +1310,7 @@ ifdef FCL
fcl-stamp: rtl-stamp fcl-stamp: rtl-stamp
$(ECHO) Copied > fcl-stamp $(ECHO) Copied > fcl-stamp
endif endif
cleanrtlfcl : cleanrtlfcl :
-$(DEL) *$(PPUEXT) -$(DEL) *$(PPUEXT)
-$(DEL) *$(OEXT) -$(DEL) *$(OEXT)
-$(DEL) *$(ASMEXT) -$(DEL) *$(ASMEXT)
@ -1441,13 +1321,18 @@ rtl : rtl-stamp
ifdef FCL ifdef FCL
fcl : fcl-stamp fcl : fcl-stamp
endif endif
TESTOPT=-n -FE. -Fu. -T$(OS_TARGET) $(OPT)
ifneq ($(BINUTILSPREFIX),)
override TESTOPT+=-XP$(BINUTILSPREFIX) -Xc
endif
TESTCOMPILER=$(FPC) $(TESTOPT)
erroru$(PPUEXT) : erroru.pp erroru$(PPUEXT) : erroru.pp
$(FPC) -n -Fu. -T$(OS_TARGET) $(OPT) erroru.pp $(TESTCOMPILER) erroru.pp
ptest$(PPUEXT) : ../test/cg/ptest.pp ptest$(PPUEXT) : ../test/cg/ptest.pp
$(FPC) -n -Fu. -T$(OS_TARGET) $(OPT) -FE. ../test/cg/ptest.pp $(TESTCOMPILER) ../test/cg/ptest.pp
ifeq ($(OS_TARGET),win32) ifeq ($(OS_TARGET),win32)
win32err$(PPUEXT) : win32err.pp win32err$(PPUEXT) : win32err.pp
$(FPC) -n -Fu. -T$(OS_TARGET) $(OPT) win32err.pp $(TESTCOMPILER) win32err.pp
endif endif
ifdef CCOMPILER ifdef CCOMPILER
../test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o : ../test/cg/obj/ctest.c ../test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o : ../test/cg/obj/ctest.c
@ -1458,6 +1343,6 @@ ifeq ($(OS_TARGET),win32)
extra : win32err$(PPUEXT) extra : win32err$(PPUEXT)
endif endif
all : rtl $(FCL) extra all : rtl $(FCL) extra
clean : cleanrtlfcl fpc_clean clean : cleanrtlfcl fpc_clean
clean_ctest : clean_ctest :
-$(DEL) ../test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o -$(DEL) ../test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o

View File

@ -65,7 +65,7 @@ fcl-stamp: rtl-stamp
$(ECHO) Copied > fcl-stamp $(ECHO) Copied > fcl-stamp
endif endif
cleanrtlfcl : cleanrtlfcl :
-$(DEL) *$(PPUEXT) -$(DEL) *$(PPUEXT)
-$(DEL) *$(OEXT) -$(DEL) *$(OEXT)
-$(DEL) *$(ASMEXT) -$(DEL) *$(ASMEXT)
@ -85,15 +85,22 @@ endif
# Extra units # Extra units
# #
TESTOPT=-n -FE. -Fu. -T$(OS_TARGET) $(OPT)
ifneq ($(BINUTILSPREFIX),)
override TESTOPT+=-XP$(BINUTILSPREFIX) -Xc
endif
TESTCOMPILER=$(FPC) $(TESTOPT)
erroru$(PPUEXT) : erroru.pp erroru$(PPUEXT) : erroru.pp
$(FPC) -n -Fu. -T$(OS_TARGET) $(OPT) erroru.pp $(TESTCOMPILER) erroru.pp
ptest$(PPUEXT) : ../test/cg/ptest.pp ptest$(PPUEXT) : ../test/cg/ptest.pp
$(FPC) -n -Fu. -T$(OS_TARGET) $(OPT) -FE. ../test/cg/ptest.pp $(TESTCOMPILER) ../test/cg/ptest.pp
ifeq ($(OS_TARGET),win32) ifeq ($(OS_TARGET),win32)
win32err$(PPUEXT) : win32err.pp win32err$(PPUEXT) : win32err.pp
$(FPC) -n -Fu. -T$(OS_TARGET) $(OPT) win32err.pp $(TESTCOMPILER) win32err.pp
endif endif
ifdef CCOMPILER ifdef CCOMPILER
@ -107,7 +114,7 @@ extra : erroru$(PPUEXT) ptest$(PPUEXT) ../test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)
ifeq ($(OS_TARGET),win32) ifeq ($(OS_TARGET),win32)
extra : win32err$(PPUEXT) extra : win32err$(PPUEXT)
endif endif
############################# #############################
# Main rules # Main rules
@ -115,7 +122,7 @@ endif
all : rtl $(FCL) extra all : rtl $(FCL) extra
clean : cleanrtlfcl fpc_clean clean : cleanrtlfcl fpc_clean
clean_ctest : clean_ctest :
-$(DEL) ../test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o -$(DEL) ../test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o

View File

@ -1,24 +1,15 @@
# #
# Don't edit, this file is generated by FPCMake Version 1.1 [2004/04/21] # Don't edit, this file is generated by FPCMake Version 1.1 [2004/03/29]
# #
default: all default: all
MAKEFILETARGETS=linux go32v2 win32 os2 freebsd beos netbsd amiga atari sunos qnx netware openbsd wdosx palmos macos darwin emx watcom MAKEFILETARGETS=linux
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) sunos qnx
FORCE:
.PHONY: FORCE
override PATH:=$(subst \,/,$(PATH)) override PATH:=$(subst \,/,$(PATH))
ifneq ($(findstring darwin,$(OSTYPE)),)
inUnix=1 #darwin
SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
else
ifeq ($(findstring ;,$(PATH)),) ifeq ($(findstring ;,$(PATH)),)
inUnix=1 inUnix=1
SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH))) SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
else else
SEARCHPATH:=$(subst ;, ,$(PATH)) SEARCHPATH:=$(subst ;, ,$(PATH))
endif endif
endif
SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE)))) SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH)))) PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
ifeq ($(PWD),) ifeq ($(PWD),)
@ -155,12 +146,6 @@ ifeq ($(findstring $(OS_TARGET),$(MAKEFILETARGETS)),)
$(error The Makefile doesn't support target $(OS_TARGET), please run fpcmake first) $(error The Makefile doesn't support target $(OS_TARGET), please run fpcmake first)
endif endif
endif endif
ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
BSDhier=1
endif
ifeq ($(OS_TARGET),linux)
linuxHier=1
endif
export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE CROSSCOMPILE export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE CROSSCOMPILE
ifdef FPCDIR ifdef FPCDIR
override FPCDIR:=$(subst \,/,$(FPCDIR)) override FPCDIR:=$(subst \,/,$(FPCDIR))
@ -225,12 +210,48 @@ ifdef REQUIRE_PACKAGESDIR
override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR) override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
endif endif
ifdef ZIPINSTALL ifdef ZIPINSTALL
ifneq ($(findstring $(OS_TARGET),$(UNIXs)),) ifeq ($(OS_TARGET),linux)
UNIXHier=1 UNIXINSTALLDIR=1
endif
ifeq ($(OS_TARGET),freebsd)
UNIXINSTALLDIR=1
endif
ifeq ($(OS_TARGET),netbsd)
UNIXINSTALLDIR=1
endif
ifeq ($(OS_TARGET),openbsd)
UNIXINSTALLDIR=1
endif
ifeq ($(OS_TARGET),darwin)
UNIXINSTALLDIR=1
endif
ifeq ($(OS_TARGET),sunos)
UNIXINSTALLDIR=1
endif
ifeq ($(OS_TARGET),qnx)
UNIXINSTALLDIR=1
endif endif
else else
ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),) ifeq ($(OS_SOURCE),linux)
UNIXHier=1 UNIXINSTALLDIR=1
endif
ifeq ($(OS_SOURCE),freebsd)
UNIXINSTALLDIR=1
endif
ifeq ($(OS_SOURCE),netbsd)
UNIXINSTALLDIR=1
endif
ifeq ($(OS_SOURCE),openbsd)
UNIXINSTALLDIR=1
endif
ifeq ($(OS_SOURCE),darwin)
UNIXINSTALLDIR=1
endif
ifeq ($(OS_TARGET),sunos)
UNIXINSTALLDIR=1
endif
ifeq ($(OS_TARGET),qnx)
UNIXINSTALLDIR=1
endif endif
endif endif
ifndef INSTALL_PREFIX ifndef INSTALL_PREFIX
@ -239,7 +260,7 @@ INSTALL_PREFIX=$(PREFIX)
endif endif
endif endif
ifndef INSTALL_PREFIX ifndef INSTALL_PREFIX
ifdef UNIXHier ifdef UNIXINSTALLDIR
INSTALL_PREFIX=/usr/local INSTALL_PREFIX=/usr/local
else else
ifdef INSTALL_FPCPACKAGE ifdef INSTALL_FPCPACKAGE
@ -257,8 +278,12 @@ ifndef DIST_DESTDIR
DIST_DESTDIR:=$(BASEDIR) DIST_DESTDIR:=$(BASEDIR)
endif endif
export DIST_DESTDIR export DIST_DESTDIR
BSDTARGETS=freebsd netbsd openbsd darwin
ifneq ($(findstring $(OS_TARGET),$(BSDTARGETS)),)
BSDhier=1
endif
ifndef INSTALL_BASEDIR ifndef INSTALL_BASEDIR
ifdef UNIXHier ifdef UNIXINSTALLDIR
ifdef INSTALL_FPCPACKAGE ifdef INSTALL_FPCPACKAGE
INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION) INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
else else
@ -269,7 +294,7 @@ INSTALL_BASEDIR:=$(INSTALL_PREFIX)
endif endif
endif endif
ifndef INSTALL_BINDIR ifndef INSTALL_BINDIR
ifdef UNIXHier ifdef UNIXINSTALLDIR
ifdef CROSSCOMPILE ifdef CROSSCOMPILE
INSTALL_BINDIR:=$(INSTALL_BASEDIR)/cross/$(FULL_TARGET)/bin INSTALL_BINDIR:=$(INSTALL_BASEDIR)/cross/$(FULL_TARGET)/bin
else else
@ -299,23 +324,19 @@ endif
endif endif
endif endif
ifndef INSTALL_LIBDIR ifndef INSTALL_LIBDIR
ifdef UNIXHier ifdef UNIXINSTALLDIR
INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
else else
INSTALL_LIBDIR:=$(INSTALL_UNITDIR) INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
endif endif
endif endif
ifndef INSTALL_SOURCEDIR ifndef INSTALL_SOURCEDIR
ifdef UNIXHier ifdef UNIXINSTALLDIR
ifdef BSDhier ifdef BSDhier
SRCPREFIXDIR=share/src SRCPREFIXDIR=share/src
else else
ifdef linuxHier
SRCPREFIXDIR=share/src
else
SRCPREFIXDIR=src SRCPREFIXDIR=src
endif endif
endif
ifdef INSTALL_FPCPACKAGE ifdef INSTALL_FPCPACKAGE
ifdef INSTALL_FPCSUBDIR ifdef INSTALL_FPCSUBDIR
INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME) INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
@ -338,16 +359,12 @@ endif
endif endif
endif endif
ifndef INSTALL_DOCDIR ifndef INSTALL_DOCDIR
ifdef UNIXHier ifdef UNIXINSTALLDIR
ifdef BSDhier ifdef BSDhier
DOCPREFIXDIR=share/doc DOCPREFIXDIR=share/doc
else else
ifdef linuxHier
DOCPREFIXDIR=share/doc
else
DOCPREFIXDIR=doc DOCPREFIXDIR=doc
endif endif
endif
ifdef INSTALL_FPCPACKAGE ifdef INSTALL_FPCPACKAGE
INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
else else
@ -362,28 +379,20 @@ endif
endif endif
endif endif
ifndef INSTALL_EXAMPLEDIR ifndef INSTALL_EXAMPLEDIR
ifdef UNIXHier ifdef UNIXINSTALLDIR
ifdef INSTALL_FPCPACKAGE ifdef INSTALL_FPCPACKAGE
ifdef BSDhier ifdef BSDhier
INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
else else
ifdef linuxHier
INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
else
INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME) INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
endif endif
endif
else else
ifdef BSDhier ifdef BSDhier
INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION) INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
else else
ifdef linuxHier
INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
else
INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION) INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
endif endif
endif endif
endif
else else
ifdef INSTALL_FPCPACKAGE ifdef INSTALL_FPCPACKAGE
INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME) INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
@ -407,19 +416,7 @@ CROSSBINDIR=
endif endif
ifeq ($(OS_SOURCE),linux) ifeq ($(OS_SOURCE),linux)
ifndef GCCLIBDIR ifndef GCCLIBDIR
ifeq ($(CPU_TARGET),i386) GCCLIBDIR:=$(shell dirname `gcc -print-libgcc-file-name`)
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 endif
ifndef OTHERLIBDIR ifndef OTHERLIBDIR
OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }') OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
@ -711,6 +708,9 @@ DEBUGSYMEXT=.xcoff
FPCMADE=fpcmade.macos FPCMADE=fpcmade.macos
endif endif
endif endif
ifdef CROSSCOMPILE
override ZIPSUFFIX:=$(CPU_TARGET)$(ZIPSUFFIX)cross
endif
ifndef ECHO ifndef ECHO
ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH)))) ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(ECHO),) ifeq ($(ECHO),)
@ -977,150 +977,6 @@ REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1 REQUIRE_PACKAGES_MYSQL=1
endif endif
endif endif
ifeq ($(OS_TARGET),go32v2)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),win32)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),os2)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),freebsd)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),freebsd)
ifeq ($(CPU_TARGET),m68k)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),beos)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),netbsd)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),netbsd)
ifeq ($(CPU_TARGET),m68k)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),netbsd)
ifeq ($(CPU_TARGET),powerpc)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),netbsd)
ifeq ($(CPU_TARGET),sparc)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),amiga)
ifeq ($(CPU_TARGET),m68k)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),atari)
ifeq ($(CPU_TARGET),m68k)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),sunos)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),sunos)
ifeq ($(CPU_TARGET),sparc)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),qnx)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),netware)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),openbsd)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),openbsd)
ifeq ($(CPU_TARGET),m68k)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),wdosx)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),palmos)
ifeq ($(CPU_TARGET),m68k)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),macos)
ifeq ($(CPU_TARGET),powerpc)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),darwin)
ifeq ($(CPU_TARGET),powerpc)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),emx)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),watcom)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifdef REQUIRE_PACKAGES_RTL ifdef REQUIRE_PACKAGES_RTL
PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/$(OS_TARGET)/Makefile.fpc,$(PACKAGESDIR)))))) PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/$(OS_TARGET)/Makefile.fpc,$(PACKAGESDIR))))))
ifneq ($(PACKAGEDIR_RTL),) ifneq ($(PACKAGEDIR_RTL),)
@ -1216,12 +1072,8 @@ ifdef RELEASE
ifeq ($(CPU_TARGET),i386) ifeq ($(CPU_TARGET),i386)
FPCCPUOPT:=-OG2p3 FPCCPUOPT:=-OG2p3
else else
ifeq ($(CPU_TARGET),powerpc)
FPCCPUOPT:=-O1
else
FPCCPUOPT:= FPCCPUOPT:=
endif endif
endif
override FPCOPT+=-Xs $(FPCCPUOPT) -n override FPCOPT+=-Xs $(FPCCPUOPT) -n
override FPCOPTDEF+=RELEASE override FPCOPTDEF+=RELEASE
endif endif
@ -1434,9 +1286,6 @@ override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
endif endif
ifdef CLEANPPUFILES ifdef CLEANPPUFILES
override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
ifdef DEBUGSYMEXT
override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
endif
override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES)) override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES))) override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
endif endif
@ -1458,9 +1307,11 @@ ifdef CLEAN_FILES
endif endif
ifdef LIB_NAME ifdef LIB_NAME
-$(DEL) $(LIB_NAME) $(LIB_FULLNAME) -$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
endif
ifdef DEBUGSYMEXT
-$(DEL) *$(DEBUGSYMEXT)
endif endif
-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE) -$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
fpc_distclean: clean fpc_distclean: clean
ifdef COMPILER_UNITTARGETDIR ifdef COMPILER_UNITTARGETDIR
TARGETDIRCLEAN=fpc_clean TARGETDIRCLEAN=fpc_clean
@ -1476,9 +1327,6 @@ endif
ifdef AOUTEXT ifdef AOUTEXT
-$(DEL) *$(AOUTEXT) -$(DEL) *$(AOUTEXT)
endif endif
ifdef DEBUGSYMEXT
-$(DEL) *$(DEBUGSYMEXT)
endif
.PHONY: fpc_baseinfo .PHONY: fpc_baseinfo
override INFORULES+=fpc_baseinfo override INFORULES+=fpc_baseinfo
fpc_baseinfo: fpc_baseinfo:
@ -1606,4 +1454,3 @@ clean: fpc_clean
-$(DEL) dbdigest$(EXEEXT) -$(DEL) dbdigest$(EXEEXT)
cleanall: fpc_cleanall cleanall: fpc_cleanall
-$(DEL) dbdigest$(EXEEXT) -$(DEL) dbdigest$(EXEEXT)

View File

@ -26,6 +26,8 @@ type
tcompinfo = (compver,comptarget,compcpu); tcompinfo = (compver,comptarget,compcpu);
const const
ObjExt='o';
PPUExt='ppu';
{$ifdef UNIX} {$ifdef UNIX}
ExeExt=''; ExeExt='';
{$else UNIX} {$else UNIX}
@ -54,8 +56,10 @@ const
ExtraCompilerOpts : string = ''; ExtraCompilerOpts : string = '';
DelExecutable : boolean = false; DelExecutable : boolean = false;
RemoteAddr : string = ''; RemoteAddr : string = '';
RemotePath : string = ''; RemotePath : string = '/tmp';
rshprog : string = 'rsh';
rcpprog : string = 'rcp';
Function FileExists (Const F : String) : Boolean; Function FileExists (Const F : String) : Boolean;
{ {
Returns True if the file exists, False if not. Returns True if the file exists, False if not.
@ -156,6 +160,17 @@ begin
end; end;
Function SplitFileName(const s:string):string;
var
p : dirstr;
n : namestr;
e : extstr;
begin
FSplit(s,p,n,e);
SplitFileName:=n+e;
end;
function ForceExtension(Const HStr,ext:String):String; function ForceExtension(Const HStr,ext:String):String;
{ {
Return a filename which certainly has the extension ext Return a filename which certainly has the extension ext
@ -175,6 +190,18 @@ begin
end; end;
Function RemoveFile(const f:string):boolean;
var
g : file;
begin
assign(g,f);
{$I-}
erase(g);
{$I+}
RemoveFile:=(ioresult=0);
end;
procedure Copyfile(const fn1,fn2:string;append:boolean); procedure Copyfile(const fn1,fn2:string;append:boolean);
const const
bufsize = 16384; bufsize = 16384;
@ -490,37 +517,41 @@ end;
function RunExecutable:boolean; function RunExecutable:boolean;
var var
outname, outname,
TestExe : string; TestRemoteExe,
TestExe : string;
execres : boolean; execres : boolean;
function ExecuteRemote(const prog,args:string):boolean;
begin
Verbose(V_Debug,'RemoteExecuting '+Prog+' '+args);
ExecuteRemote:=ExecuteRedir(prog,args,'',OutName,'stdout');
end;
begin begin
RunExecutable:=false; RunExecutable:=false;
execres:=true; execres:=true;
TestExe:=ForceExtension(PPFile,ExeExt); TestExe:=ForceExtension(PPFile,ExeExt);
OutName:=ForceExtension(PPFile,'elg'); OutName:=ForceExtension(PPFile,'elg');
Verbose(V_Debug,'Executing '+TestExe);
if RemoteAddr<>'' then if RemoteAddr<>'' then
begin begin
ExecuteRedir('ssh',RemoteAddr+' rm -f '+RemotePath+'/'+TestExe,'',OutName,''); { We don't want to create subdirs, remove paths from the test }
ExecuteRedir('scp',TestExe+' '+RemoteAddr+':'+RemotePath+'/'+TestExe,'',OutName,''); TestRemoteExe:=RemotePath+'/'+SplitFileName(TestExe);
{ don't redirect interactive and graph programs .. } ExecuteRemote(rshprog,RemoteAddr+' rm -f '+TestRemoteExe);
if Config.IsInteractive or Config.UsesGraph then ExecuteRemote(rcpprog,TestExe+' '+RemoteAddr+':'+TestRemoteExe);
ExecuteRedir(TestExe,'','','','') execres:=ExecuteRemote(rshprog,RemoteAddr+' '+TestRemoteExe);
else
ExecuteRedir('ssh',RemoteAddr+' '+RemotePath+'/'+TestExe,'',OutName,'');
if DelExecutable then
ExecuteRedir('ssh',RemoteAddr+' rm -f '+RemotePath+'/'+TestExe,'',OutName,'');
end end
else else
begin begin
Verbose(V_Debug,'Executing '+TestExe);
{ don't redirect interactive and graph programs .. } { don't redirect interactive and graph programs .. }
if Config.IsInteractive or Config.UsesGraph then if Config.IsInteractive or Config.UsesGraph then
execres:=ExecuteRedir(TestExe,'','','','') execres:=ExecuteRedir(TestExe,'','','','')
else else
execres:=ExecuteRedir(TestExe,'','',OutName,''); execres:=ExecuteRedir(TestExe,'','',OutName,'stdout');
end; end;
Verbose(V_Debug,'Exitcode '+ToStr(ExecuteResult));
{ Error during execution? } { Error during execution? }
Verbose(V_Debug,'Exitcode '+ToStr(ExecuteResult));
if (not execres) and (ExecuteResult=0) then if (not execres) and (ExecuteResult=0) then
begin begin
AddLog(FailLogFile,TestName); AddLog(FailLogFile,TestName);
@ -562,6 +593,16 @@ begin
AddLog(ResLogFile,successfully_run+PPFileInfo); AddLog(ResLogFile,successfully_run+PPFileInfo);
RunExecutable:=true; RunExecutable:=true;
end; end;
if DelExecutable then
begin
Verbose(V_Debug,'Deleting executable '+TestExe);
if RemoteAddr<>'' then
ExecuteRemote(rshprog,RemoteAddr+' rm -f '+TestRemoteExe);
RemoveFile(TestExe);
RemoveFile(ForceExtension(TestExe,ObjExt));
RemoveFile(ForceExtension(TestExe,PPUExt));
end;
end; end;
@ -584,9 +625,10 @@ var
writeln(' -G include graph tests'); writeln(' -G include graph tests');
writeln(' -K include known bug tests'); writeln(' -K include known bug tests');
writeln(' -I include interactive tests'); writeln(' -I include interactive tests');
writeln(' -R<remote> run the tests remotely with the given ssh address'); writeln(' -R<remote> run the tests remotely with the given rsh/ssh address');
writeln(' -S use ssh instead of rsh');
writeln(' -P<path> path to the tests tree on the remote machine'); writeln(' -P<path> path to the tests tree on the remote machine');
writeln(' -T remove executables after execution (applies only for remote tests)'); writeln(' -T leave temporary files (executable,ppu,o)');
writeln(' -Y<opts> extra options passed to the compiler. Several -Y<opt> can be given.'); writeln(' -Y<opts> extra options passed to the compiler. Several -Y<opt> can be given.');
halt(1); halt(1);
end; end;
@ -639,7 +681,14 @@ begin
'R' : RemoteAddr:=Para; 'R' : RemoteAddr:=Para;
'T' : DelExecutable:=true; 'T' :
DelExecutable:=true;
'S' :
begin
rshprog:='ssh';
rcpprog:='scp';
end;
end; end;
end end
else else
@ -651,6 +700,12 @@ begin
end; end;
if (PPFile='') then if (PPFile='') then
HelpScreen; HelpScreen;
{ disable graph,interactive when running remote }
if RemoteAddr<>'' then
begin
DoGraph:=false;
DoInteractive:=false;
end;
SetPPFileInfo; SetPPFileInfo;
TestName:=Copy(PPFile,1,Pos('.pp',PPFile)-1); TestName:=Copy(PPFile,1,Pos('.pp',PPFile)-1);
Verbose(V_Debug,'Running test '+TestName+', file '+PPFile); Verbose(V_Debug,'Running test '+TestName+', file '+PPFile);
@ -857,7 +912,10 @@ begin
end. end.
{ {
$Log$ $Log$
Revision 1.34 2004-05-03 14:48:51 peter Revision 1.35 2004-05-16 20:13:04 peter
* remote execute updates, see readme.txt
Revision 1.34 2004/05/03 14:48:51 peter
* support redir from stderr to stdout so the same file can be used * support redir from stderr to stdout so the same file can be used
Revision 1.33 2004/05/02 09:31:52 peter Revision 1.33 2004/05/02 09:31:52 peter

View File

@ -112,6 +112,7 @@ Const
var var
FIN,FOUT,FERR : ^File; FIN,FOUT,FERR : ^File;
RedirStdErrToStdOut,
RedirChangedOut, RedirChangedOut,
RedirChangedIn : Boolean; RedirChangedIn : Boolean;
RedirChangedError : Boolean; RedirChangedError : Boolean;
@ -417,7 +418,8 @@ function ChangeRedirError(Const Redir : String; AppendToFile : Boolean) : Boolea
ChangeRedirError:=False; ChangeRedirError:=False;
If Redir = '' then If Redir = '' then
Exit; Exit;
if Redir='stdout' then RedirStdErrToStdOut:=(Redir='stdout');
if RedirStdErrToStdOut then
begin begin
PF:=FOut; PF:=FOut;
end end
@ -635,7 +637,9 @@ end;
{$ifdef ver1_0}dup2{$else}fpdup2{$endif}(TempHError,StdErrorHandle); {$ifdef ver1_0}dup2{$else}fpdup2{$endif}(TempHError,StdErrorHandle);
{$endif not win32} {$endif not win32}
{$endif} {$endif}
Close (FERR^); { don't close when redirected to STDOUT }
if not RedirStdErrToStdOut then
Close (FERR^);
{$ifdef ver1_0}fdclose{$else}fpclose{$endif}(TempHError); {$ifdef ver1_0}fdclose{$else}fpclose{$endif}(TempHError);
RedirChangedError:=false; RedirChangedError:=false;
end; end;
@ -983,7 +987,10 @@ finalization
End. End.
{ {
$Log$ $Log$
Revision 1.17 2004-05-03 14:48:51 peter Revision 1.18 2004-05-16 20:13:04 peter
* remote execute updates, see readme.txt
Revision 1.17 2004/05/03 14:48:51 peter
* support redir from stderr to stdout so the same file can be used * support redir from stderr to stdout so the same file can be used
Revision 1.16 2003/10/14 08:30:37 peter Revision 1.16 2003/10/14 08:30:37 peter