From 73bc40037fac8ff54eea3adbd62b0a36ae95f91c Mon Sep 17 00:00:00 2001 From: michael Date: Sun, 9 Jan 2005 13:36:12 +0000 Subject: [PATCH] + Initial implementation of installer tools --- install/Makefile | 2222 ++++++++++++++++++++++++++++++++++++++++++ install/Makefile.fpc | 40 + install/fpc.cft | 173 ++++ install/fpc.ist | 307 ++++++ install/fpccfg.inc | 275 ++++++ install/fpcmkcfg.pp | 240 +++++ install/fpcsubst.pp | 242 +++++ install/usubst.pp | 119 +++ 8 files changed, 3618 insertions(+) create mode 100644 install/Makefile create mode 100644 install/Makefile.fpc create mode 100644 install/fpc.cft create mode 100644 install/fpc.ist create mode 100644 install/fpccfg.inc create mode 100644 install/fpcmkcfg.pp create mode 100644 install/fpcsubst.pp create mode 100644 install/usubst.pp diff --git a/install/Makefile b/install/Makefile new file mode 100644 index 0000000000..772a0156c5 --- /dev/null +++ b/install/Makefile @@ -0,0 +1,2222 @@ +# +# Don't edit, this file is generated by FPCMake Version 1.1 [2004/12/31] +# +default: all +MAKEFILETARGETS=linux go32v2 win32 os2 freebsd beos netbsd amiga atari sunos qnx netware openbsd wdosx palmos macos darwin emx watcom morphos netwlibc +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) sunos qnx +LIMIT83fs = go32v2 os2 emx watcom +FORCE: +.PHONY: FORCE +override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH))) +ifneq ($(findstring darwin,$(OSTYPE)),) +inUnix=1 #darwin +SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH))) +else +ifeq ($(findstring ;,$(PATH)),) +inUnix=1 +SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH))) +else +SEARCHPATH:=$(subst ;, ,$(PATH)) +endif +endif +SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE)))) +PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH)))) +ifeq ($(PWD),) +PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH)))) +ifeq ($(PWD),) +$(error You need the GNU utils package to use this Makefile) +else +PWD:=$(firstword $(PWD)) +SRCEXEEXT= +endif +else +PWD:=$(firstword $(PWD)) +SRCEXEEXT=.exe +endif +ifndef inUnix +ifeq ($(OS),Windows_NT) +inWinNT=1 +else +ifdef OS2_SHELL +inOS2=1 +endif +endif +else +ifneq ($(findstring cygdrive,$(PATH)),) +inCygWin=1 +endif +endif +ifdef inUnix +SRCBATCHEXT=.sh +else +ifdef inOS2 +SRCBATCHEXT=.cmd +else +SRCBATCHEXT=.bat +endif +endif +ifdef inUnix +PATHSEP=/ +else +PATHSEP:=$(subst /,\,/) +ifdef inCygWin +PATHSEP=/ +endif +endif +ifdef PWD +BASEDIR:=$(subst \,/,$(shell $(PWD))) +ifdef inCygWin +ifneq ($(findstring /cygdrive/,$(BASEDIR)),) +BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR)) +BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR))) +BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR)) +endif +endif +else +BASEDIR=. +endif +ifdef inOS2 +ifndef ECHO +ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO=echo +else +ECHO:=$(firstword $(ECHO)) +endif +else +ECHO:=$(firstword $(ECHO)) +endif +endif +export ECHO +endif +override DEFAULT_FPCDIR=.. +ifndef FPC +ifdef PP +FPC=$(PP) +endif +endif +ifndef FPC +FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH)))) +ifneq ($(FPCPROG),) +FPCPROG:=$(firstword $(FPCPROG)) +FPC:=$(shell $(FPCPROG) -PB) +ifneq ($(findstring Error,$(FPC)),) +override FPC=ppc386 +endif +else +override FPC=ppc386 +endif +endif +override FPC:=$(subst $(SRCEXEEXT),,$(FPC)) +override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT) +ifndef FPC_VERSION +FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO) +FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO)) +endif +export FPC FPC_VERSION FPC_COMPILERINFO +unexport CHECKDEPEND ALLDEPENDENCIES +ifndef CPU_TARGET +ifdef CPU_TARGET_DEFAULT +CPU_TARGET=$(CPU_TARGET_DEFAULT) +endif +endif +ifndef OS_TARGET +ifdef OS_TARGET_DEFAULT +OS_TARGET=$(OS_TARGET_DEFAULT) +endif +endif +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +endif +ifndef CPU_SOURCE +CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO)) +endif +ifndef CPU_TARGET +CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO)) +endif +ifndef OS_SOURCE +OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO)) +endif +ifndef OS_TARGET +OS_TARGET:=$(word 5,$(FPC_COMPILERINFO)) +endif +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +FULL_TARGET=$(OS_TARGET) +FULL_SOURCE=$(OS_SOURCE) +else +FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET) +FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE) +endif +ifneq ($(FULL_TARGET),$(FULL_SOURCE)) +CROSSCOMPILE=1 +endif +ifeq ($(findstring makefile,$(MAKECMDGOALS)),) +ifeq ($(findstring $(OS_TARGET),$(MAKEFILETARGETS)),) +$(error The Makefile doesn't support target $(OS_TARGET), please run fpcmake first) +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 +ifdef FPCDIR +override FPCDIR:=$(subst \,/,$(FPCDIR)) +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR=wrong +endif +else +override FPCDIR=wrong +endif +ifdef DEFAULT_FPCDIR +ifeq ($(FPCDIR),wrong) +override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR)) +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR=wrong +endif +endif +endif +ifeq ($(FPCDIR),wrong) +ifdef inUnix +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 $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR:=$(FPCDIR)/.. +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR:=$(BASEDIR) +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR=c:/pp +endif +endif +endif +endif +endif +ifndef CROSSBINDIR +CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(FULL_TARGET)) +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)- +endif +endif +endif +UNITSDIR:=$(wildcard $(FPCDIR)/units/$(FULL_TARGET)) +ifeq ($(UNITSDIR),) +UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET)) +endif +PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/extra) +override PACKAGE_NAME=install +override PACKAGE_VERSION=1.9.6 +override TARGET_PROGRAMS+=fpcsubst fpcmkcfg +override CLEAN_UNITS+=usubst +override INSTALL_FPCPACKAGE=n +override COMPILER_OPTIONS+=-S2h +ifdef REQUIRE_UNITSDIR +override UNITSDIR+=$(REQUIRE_UNITSDIR) +endif +ifdef REQUIRE_PACKAGESDIR +override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR) +endif +ifdef ZIPINSTALL +ifneq ($(findstring $(OS_TARGET),$(UNIXs)),) +UNIXHier=1 +endif +else +ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),) +UNIXHier=1 +endif +endif +ifndef INSTALL_PREFIX +ifdef PREFIX +INSTALL_PREFIX=$(PREFIX) +endif +endif +ifndef INSTALL_PREFIX +ifdef UNIXHier +INSTALL_PREFIX=/usr/local +else +ifdef INSTALL_FPCPACKAGE +INSTALL_BASEDIR:=/pp +else +INSTALL_BASEDIR:=/$(PACKAGE_NAME) +endif +endif +endif +export INSTALL_PREFIX +ifdef INSTALL_FPCSUBDIR +export INSTALL_FPCSUBDIR +endif +ifndef DIST_DESTDIR +DIST_DESTDIR:=$(BASEDIR) +endif +export DIST_DESTDIR +ifndef COMPILER_UNITTARGETDIR +ifdef PACKAGEDIR_MAIN +COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(FULL_TARGET) +else +COMPILER_UNITTARGETDIR=units/$(FULL_TARGET) +endif +endif +ifndef COMPILER_TARGETDIR +COMPILER_TARGETDIR=. +endif +ifndef INSTALL_BASEDIR +ifdef UNIXHier +ifdef INSTALL_FPCPACKAGE +INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION) +else +INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME) +endif +else +INSTALL_BASEDIR:=$(INSTALL_PREFIX) +endif +endif +ifndef INSTALL_BINDIR +ifdef UNIXHier +INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin +else +INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin +ifdef INSTALL_FPCPACKAGE +ifdef CROSSCOMPILE +ifdef CROSSINSTALL +INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(FULL_SOURCE) +else +INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(FULL_TARGET) +endif +else +INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(FULL_TARGET) +endif +endif +endif +endif +ifndef INSTALL_UNITDIR +INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(FULL_TARGET) +ifdef INSTALL_FPCPACKAGE +ifdef PACKAGE_NAME +INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME) +endif +endif +endif +ifndef INSTALL_LIBDIR +ifdef UNIXHier +INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib +else +INSTALL_LIBDIR:=$(INSTALL_UNITDIR) +endif +endif +ifndef INSTALL_SOURCEDIR +ifdef UNIXHier +ifdef BSDhier +SRCPREFIXDIR=share/src +else +ifdef linuxHier +SRCPREFIXDIR=share/src +else +SRCPREFIXDIR=src +endif +endif +ifdef INSTALL_FPCPACKAGE +ifdef INSTALL_FPCSUBDIR +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME) +else +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +endif +else +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +endif +else +ifdef INSTALL_FPCPACKAGE +ifdef INSTALL_FPCSUBDIR +INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME) +else +INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME) +endif +else +INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source +endif +endif +endif +ifndef INSTALL_DOCDIR +ifdef UNIXHier +ifdef BSDhier +DOCPREFIXDIR=share/doc +else +ifdef linuxHier +DOCPREFIXDIR=share/doc +else +DOCPREFIXDIR=doc +endif +endif +ifdef INSTALL_FPCPACKAGE +INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +else +INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +endif +else +ifdef INSTALL_FPCPACKAGE +INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME) +else +INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc +endif +endif +endif +ifndef INSTALL_EXAMPLEDIR +ifdef UNIXHier +ifdef INSTALL_FPCPACKAGE +ifdef BSDhier +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +else +ifdef linuxHier +INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples +else +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME) +endif +endif +else +ifdef BSDhier +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +else +ifdef linuxHier +INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +else +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +endif +endif +endif +else +ifdef INSTALL_FPCPACKAGE +INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME) +else +INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples +endif +endif +endif +ifndef INSTALL_DATADIR +INSTALL_DATADIR=$(INSTALL_BASEDIR) +endif +ifdef CROSSCOMPILE +ifndef CROSSBINDIR +CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(FULL_SOURCE)) +ifeq ($(CROSSBINDIR),) +CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(FULL_TARGET)/bin/$(FULL_SOURCE)) +endif +endif +else +CROSSBINDIR= +endif +ifeq ($(OS_SOURCE),linux) +ifndef GCCLIBDIR +ifeq ($(CPU_TARGET),i386) +ifneq ($(findstring x86_64,$(shell uname -a)),) +ifeq ($(BINUTILSPREFIX),) +GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`) +endif +endif +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 +OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }') +endif +endif +ifdef inUnix +ifeq ($(OS_SOURCE),netbsd) +OTHERLIBDIR+=/usr/pkg/lib +endif +export GCCLIBDIR OTHERLIB +endif +BATCHEXT=.bat +LOADEREXT=.as +EXEEXT=.exe +PPLEXT=.ppl +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.so +STATICLIBPREFIX=libp +RSTEXT=.rst +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +endif +ifeq ($(OS_TARGET),freebsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=fbs +endif +ifeq ($(OS_TARGET),netbsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=nbs +endif +ifeq ($(OS_TARGET),openbsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=obs +endif +ifeq ($(OS_TARGET),win32) +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),morphos) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=mos +endif +ifeq ($(OS_TARGET),atari) +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),sunos) +BATCHEXT=.sh +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +endif +ifeq ($(OS_TARGET),freebsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=fbs +endif +ifeq ($(OS_TARGET),netbsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=nbs +endif +ifeq ($(OS_TARGET),openbsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=obs +endif +ifeq ($(OS_TARGET),win32) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.asm +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),sunos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +endif +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +FPCMADE=fpcmade.$(SHORTSUFFIX) +ZIPSUFFIX=$(SHORTSUFFIX) +ZIPCROSSPREFIX= +ZIPSOURCESUFFIX=src +ZIPEXAMPLESUFFIX=exm +else +FPCMADE=fpcmade.$(FULL_TARGET) +ZIPSOURCESUFFIX=.source +ZIPEXAMPLESUFFIX=.examples +ifdef CROSSCOMPILE +ZIPSUFFIX=.$(FULL_SOURCE) +ZIPCROSSPREFIX=$(FULL_TARGET)- +else +ZIPSUFFIX=.$(FULL_TARGET) +ZIPCROSSPREFIX= +endif +endif +ifndef ECHO +ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO= __missing_command_ECHO +else +ECHO:=$(firstword $(ECHO)) +endif +else +ECHO:=$(firstword $(ECHO)) +endif +endif +export ECHO +ifndef DATE +DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(DATE),) +DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(DATE),) +DATE= __missing_command_DATE +else +DATE:=$(firstword $(DATE)) +endif +else +DATE:=$(firstword $(DATE)) +endif +endif +export DATE +ifndef GINSTALL +GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(GINSTALL),) +GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(GINSTALL),) +GINSTALL= __missing_command_GINSTALL +else +GINSTALL:=$(firstword $(GINSTALL)) +endif +else +GINSTALL:=$(firstword $(GINSTALL)) +endif +endif +export GINSTALL +ifndef CPPROG +CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(CPPROG),) +CPPROG= __missing_command_CPPROG +else +CPPROG:=$(firstword $(CPPROG)) +endif +endif +export CPPROG +ifndef RMPROG +RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(RMPROG),) +RMPROG= __missing_command_RMPROG +else +RMPROG:=$(firstword $(RMPROG)) +endif +endif +export RMPROG +ifndef MVPROG +MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(MVPROG),) +MVPROG= __missing_command_MVPROG +else +MVPROG:=$(firstword $(MVPROG)) +endif +endif +export MVPROG +ifndef MKDIRPROG +MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(MKDIRPROG),) +MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(MKDIRPROG),) +MKDIRPROG= __missing_command_MKDIRPROG +else +MKDIRPROG:=$(firstword $(MKDIRPROG)) +endif +else +MKDIRPROG:=$(firstword $(MKDIRPROG)) +endif +endif +export MKDIRPROG +ifndef ECHOREDIR +ifndef inUnix +ECHOREDIR=echo +else +ECHOREDIR=$(ECHO) +endif +endif +ifndef COPY +COPY:=$(CPPROG) -fp +endif +ifndef COPYTREE +COPYTREE:=$(CPPROG) -Rfp +endif +ifndef MKDIRTREE +MKDIRTREE:=$(MKDIRPROG) -p +endif +ifndef MOVE +MOVE:=$(MVPROG) -f +endif +ifndef DEL +DEL:=$(RMPROG) -f +endif +ifndef DELTREE +DELTREE:=$(RMPROG) -rf +endif +ifndef INSTALL +ifdef inUnix +INSTALL:=$(GINSTALL) -c -m 644 +else +INSTALL:=$(COPY) +endif +endif +ifndef INSTALLEXE +ifdef inUnix +INSTALLEXE:=$(GINSTALL) -c -m 755 +else +INSTALLEXE:=$(COPY) +endif +endif +ifndef MKDIR +MKDIR:=$(GINSTALL) -m 755 -d +endif +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 +else +PPUMOVE:=$(firstword $(PPUMOVE)) +endif +endif +export PPUMOVE +ifndef FPCMAKE +FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(FPCMAKE),) +FPCMAKE= __missing_command_FPCMAKE +else +FPCMAKE:=$(firstword $(FPCMAKE)) +endif +endif +export FPCMAKE +ifndef ZIPPROG +ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ZIPPROG),) +ZIPPROG= __missing_command_ZIPPROG +else +ZIPPROG:=$(firstword $(ZIPPROG)) +endif +endif +export ZIPPROG +ifndef TARPROG +TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(TARPROG),) +TARPROG= __missing_command_TARPROG +else +TARPROG:=$(firstword $(TARPROG)) +endif +endif +export TARPROG +ASNAME=$(BINUTILSPREFIX)as +LDNAME=$(BINUTILSPREFIX)ld +ARNAME=$(BINUTILSPREFIX)ar +RCNAME=$(BINUTILSPREFIX)rc +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +ifndef ASPROG +ifdef CROSSBINDIR +ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT) +else +ASPROG=$(ASNAME) +endif +endif +ifndef LDPROG +ifdef CROSSBINDIR +LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT) +else +LDPROG=$(LDNAME) +endif +endif +ifndef RCPROG +ifdef CROSSBINDIR +RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT) +else +RCPROG=$(RCNAME) +endif +endif +ifndef ARPROG +ifdef CROSSBINDIR +ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT) +else +ARPROG=$(ARNAME) +endif +endif +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +ZIPOPT=-9 +ZIPEXT=.zip +ifeq ($(USETAR),bz2) +TAROPT=vI +TAREXT=.tar.bz2 +else +TAROPT=vz +TAREXT=.tar.gz +endif +override REQUIRE_PACKAGES=rtl fcl +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),i386) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +REQUIRE_PACKAGES_PTHREADS=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_IBASE=1 +REQUIRE_PACKAGES_POSTGRES=1 +REQUIRE_PACKAGES_MYSQL=1 +REQUIRE_PACKAGES_SQLITE=1 +endif +endif +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),m68k) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +REQUIRE_PACKAGES_PTHREADS=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_IBASE=1 +REQUIRE_PACKAGES_POSTGRES=1 +REQUIRE_PACKAGES_MYSQL=1 +REQUIRE_PACKAGES_SQLITE=1 +endif +endif +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),powerpc) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +REQUIRE_PACKAGES_PTHREADS=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_IBASE=1 +REQUIRE_PACKAGES_POSTGRES=1 +REQUIRE_PACKAGES_MYSQL=1 +REQUIRE_PACKAGES_SQLITE=1 +endif +endif +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),sparc) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +REQUIRE_PACKAGES_PTHREADS=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_IBASE=1 +REQUIRE_PACKAGES_POSTGRES=1 +REQUIRE_PACKAGES_MYSQL=1 +REQUIRE_PACKAGES_SQLITE=1 +endif +endif +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +REQUIRE_PACKAGES_PTHREADS=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_IBASE=1 +REQUIRE_PACKAGES_POSTGRES=1 +REQUIRE_PACKAGES_MYSQL=1 +REQUIRE_PACKAGES_SQLITE=1 +endif +endif +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),arm) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +REQUIRE_PACKAGES_PTHREADS=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_IBASE=1 +REQUIRE_PACKAGES_POSTGRES=1 +REQUIRE_PACKAGES_MYSQL=1 +REQUIRE_PACKAGES_SQLITE=1 +endif +endif +ifeq ($(OS_TARGET),go32v2) +ifeq ($(CPU_TARGET),i386) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +endif +endif +ifeq ($(OS_TARGET),win32) +ifeq ($(CPU_TARGET),i386) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_IBASE=1 +REQUIRE_PACKAGES_POSTGRES=1 +REQUIRE_PACKAGES_MYSQL=1 +REQUIRE_PACKAGES_SQLITE=1 +REQUIRE_PACKAGES_LIBASYNC=1 +endif +endif +ifeq ($(OS_TARGET),os2) +ifeq ($(CPU_TARGET),i386) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +endif +endif +ifeq ($(OS_TARGET),freebsd) +ifeq ($(CPU_TARGET),i386) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +REQUIRE_PACKAGES_PTHREADS=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_IBASE=1 +REQUIRE_PACKAGES_POSTGRES=1 +REQUIRE_PACKAGES_MYSQL=1 +REQUIRE_PACKAGES_SQLITE=1 +endif +endif +ifeq ($(OS_TARGET),freebsd) +ifeq ($(CPU_TARGET),m68k) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +REQUIRE_PACKAGES_PTHREADS=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_IBASE=1 +REQUIRE_PACKAGES_POSTGRES=1 +REQUIRE_PACKAGES_MYSQL=1 +REQUIRE_PACKAGES_SQLITE=1 +endif +endif +ifeq ($(OS_TARGET),freebsd) +ifeq ($(CPU_TARGET),x86_64) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +REQUIRE_PACKAGES_PTHREADS=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_IBASE=1 +REQUIRE_PACKAGES_POSTGRES=1 +REQUIRE_PACKAGES_MYSQL=1 +REQUIRE_PACKAGES_SQLITE=1 +endif +endif +ifeq ($(OS_TARGET),beos) +ifeq ($(CPU_TARGET),i386) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +endif +endif +ifeq ($(OS_TARGET),netbsd) +ifeq ($(CPU_TARGET),i386) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_IBASE=1 +REQUIRE_PACKAGES_POSTGRES=1 +REQUIRE_PACKAGES_MYSQL=1 +REQUIRE_PACKAGES_SQLITE=1 +endif +endif +ifeq ($(OS_TARGET),netbsd) +ifeq ($(CPU_TARGET),m68k) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_IBASE=1 +REQUIRE_PACKAGES_POSTGRES=1 +REQUIRE_PACKAGES_MYSQL=1 +REQUIRE_PACKAGES_SQLITE=1 +endif +endif +ifeq ($(OS_TARGET),netbsd) +ifeq ($(CPU_TARGET),powerpc) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_IBASE=1 +REQUIRE_PACKAGES_POSTGRES=1 +REQUIRE_PACKAGES_MYSQL=1 +REQUIRE_PACKAGES_SQLITE=1 +endif +endif +ifeq ($(OS_TARGET),netbsd) +ifeq ($(CPU_TARGET),sparc) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_IBASE=1 +REQUIRE_PACKAGES_POSTGRES=1 +REQUIRE_PACKAGES_MYSQL=1 +REQUIRE_PACKAGES_SQLITE=1 +endif +endif +ifeq ($(OS_TARGET),amiga) +ifeq ($(CPU_TARGET),m68k) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +endif +endif +ifeq ($(OS_TARGET),atari) +ifeq ($(CPU_TARGET),m68k) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +endif +endif +ifeq ($(OS_TARGET),sunos) +ifeq ($(CPU_TARGET),i386) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +endif +endif +ifeq ($(OS_TARGET),sunos) +ifeq ($(CPU_TARGET),sparc) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +endif +endif +ifeq ($(OS_TARGET),qnx) +ifeq ($(CPU_TARGET),i386) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +endif +endif +ifeq ($(OS_TARGET),netware) +ifeq ($(CPU_TARGET),i386) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +endif +endif +ifeq ($(OS_TARGET),openbsd) +ifeq ($(CPU_TARGET),i386) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_IBASE=1 +REQUIRE_PACKAGES_POSTGRES=1 +REQUIRE_PACKAGES_MYSQL=1 +REQUIRE_PACKAGES_SQLITE=1 +endif +endif +ifeq ($(OS_TARGET),openbsd) +ifeq ($(CPU_TARGET),m68k) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_IBASE=1 +REQUIRE_PACKAGES_POSTGRES=1 +REQUIRE_PACKAGES_MYSQL=1 +REQUIRE_PACKAGES_SQLITE=1 +endif +endif +ifeq ($(OS_TARGET),wdosx) +ifeq ($(CPU_TARGET),i386) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +endif +endif +ifeq ($(OS_TARGET),palmos) +ifeq ($(CPU_TARGET),m68k) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +endif +endif +ifeq ($(OS_TARGET),macos) +ifeq ($(CPU_TARGET),powerpc) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +endif +endif +ifeq ($(OS_TARGET),darwin) +ifeq ($(CPU_TARGET),powerpc) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +REQUIRE_PACKAGES_PTHREADS=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_IBASE=1 +REQUIRE_PACKAGES_POSTGRES=1 +REQUIRE_PACKAGES_MYSQL=1 +REQUIRE_PACKAGES_SQLITE=1 +endif +endif +ifeq ($(OS_TARGET),emx) +ifeq ($(CPU_TARGET),i386) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +endif +endif +ifeq ($(OS_TARGET),watcom) +ifeq ($(CPU_TARGET),i386) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +endif +endif +ifeq ($(OS_TARGET),morphos) +ifeq ($(CPU_TARGET),powerpc) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +endif +endif +ifeq ($(OS_TARGET),netwlibc) +ifeq ($(CPU_TARGET),i386) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL=1 +REQUIRE_PACKAGES_PASJPEG=1 +REQUIRE_PACKAGES_NETDB=1 +REQUIRE_PACKAGES_LIBASYNC=1 +endif +endif +ifdef REQUIRE_PACKAGES_RTL +PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_RTL),) +ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(FULL_TARGET)),) +UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(FULL_TARGET) +else +UNITDIR_RTL=$(PACKAGEDIR_RTL) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_RTL)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_RTL) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(FPCMADE) +endif +else +PACKAGEDIR_RTL= +UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_RTL),) +UNITDIR_RTL:=$(firstword $(UNITDIR_RTL)) +else +UNITDIR_RTL= +endif +endif +ifdef UNITDIR_RTL +override COMPILER_UNITDIR+=$(UNITDIR_RTL) +endif +endif +ifdef REQUIRE_PACKAGES_PASZLIB +PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_PASZLIB),) +ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(FULL_TARGET)),) +UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(FULL_TARGET) +else +UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_PASZLIB)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_PASZLIB) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE) +endif +else +PACKAGEDIR_PASZLIB= +UNITDIR_PASZLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_PASZLIB),) +UNITDIR_PASZLIB:=$(firstword $(UNITDIR_PASZLIB)) +else +UNITDIR_PASZLIB= +endif +endif +ifdef UNITDIR_PASZLIB +override COMPILER_UNITDIR+=$(UNITDIR_PASZLIB) +endif +endif +ifdef REQUIRE_PACKAGES_NETDB +PACKAGEDIR_NETDB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /netdb/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_NETDB),) +ifneq ($(wildcard $(PACKAGEDIR_NETDB)/units/$(FULL_TARGET)),) +UNITDIR_NETDB=$(PACKAGEDIR_NETDB)/units/$(FULL_TARGET) +else +UNITDIR_NETDB=$(PACKAGEDIR_NETDB) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_NETDB)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_NETDB) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_NETDB)/$(FPCMADE) +endif +else +PACKAGEDIR_NETDB= +UNITDIR_NETDB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /netdb/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_NETDB),) +UNITDIR_NETDB:=$(firstword $(UNITDIR_NETDB)) +else +UNITDIR_NETDB= +endif +endif +ifdef UNITDIR_NETDB +override COMPILER_UNITDIR+=$(UNITDIR_NETDB) +endif +endif +ifdef REQUIRE_PACKAGES_LIBASYNC +PACKAGEDIR_LIBASYNC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libasync/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_LIBASYNC),) +ifneq ($(wildcard $(PACKAGEDIR_LIBASYNC)/units/$(FULL_TARGET)),) +UNITDIR_LIBASYNC=$(PACKAGEDIR_LIBASYNC)/units/$(FULL_TARGET) +else +UNITDIR_LIBASYNC=$(PACKAGEDIR_LIBASYNC) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_LIBASYNC)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_LIBASYNC) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBASYNC)/$(FPCMADE) +endif +else +PACKAGEDIR_LIBASYNC= +UNITDIR_LIBASYNC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libasync/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_LIBASYNC),) +UNITDIR_LIBASYNC:=$(firstword $(UNITDIR_LIBASYNC)) +else +UNITDIR_LIBASYNC= +endif +endif +ifdef UNITDIR_LIBASYNC +override COMPILER_UNITDIR+=$(UNITDIR_LIBASYNC) +endif +endif +ifdef REQUIRE_PACKAGES_PTHREADS +PACKAGEDIR_PTHREADS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /pthreads/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_PTHREADS),) +ifneq ($(wildcard $(PACKAGEDIR_PTHREADS)/units/$(FULL_TARGET)),) +UNITDIR_PTHREADS=$(PACKAGEDIR_PTHREADS)/units/$(FULL_TARGET) +else +UNITDIR_PTHREADS=$(PACKAGEDIR_PTHREADS) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_PTHREADS)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_PTHREADS) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_PTHREADS)/$(FPCMADE) +endif +else +PACKAGEDIR_PTHREADS= +UNITDIR_PTHREADS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /pthreads/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_PTHREADS),) +UNITDIR_PTHREADS:=$(firstword $(UNITDIR_PTHREADS)) +else +UNITDIR_PTHREADS= +endif +endif +ifdef UNITDIR_PTHREADS +override COMPILER_UNITDIR+=$(UNITDIR_PTHREADS) +endif +endif +ifdef REQUIRE_PACKAGES_FCL +PACKAGEDIR_FCL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_FCL),) +ifneq ($(wildcard $(PACKAGEDIR_FCL)/units/$(FULL_TARGET)),) +UNITDIR_FCL=$(PACKAGEDIR_FCL)/units/$(FULL_TARGET) +else +UNITDIR_FCL=$(PACKAGEDIR_FCL) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_FCL)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_FCL) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL)/$(FPCMADE) +endif +else +PACKAGEDIR_FCL= +UNITDIR_FCL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_FCL),) +UNITDIR_FCL:=$(firstword $(UNITDIR_FCL)) +else +UNITDIR_FCL= +endif +endif +ifdef UNITDIR_FCL +override COMPILER_UNITDIR+=$(UNITDIR_FCL) +endif +endif +ifdef REQUIRE_PACKAGES_PASJPEG +PACKAGEDIR_PASJPEG:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /pasjpeg/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_PASJPEG),) +ifneq ($(wildcard $(PACKAGEDIR_PASJPEG)/units/$(FULL_TARGET)),) +UNITDIR_PASJPEG=$(PACKAGEDIR_PASJPEG)/units/$(FULL_TARGET) +else +UNITDIR_PASJPEG=$(PACKAGEDIR_PASJPEG) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_PASJPEG)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_PASJPEG) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_PASJPEG)/$(FPCMADE) +endif +else +PACKAGEDIR_PASJPEG= +UNITDIR_PASJPEG:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /pasjpeg/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_PASJPEG),) +UNITDIR_PASJPEG:=$(firstword $(UNITDIR_PASJPEG)) +else +UNITDIR_PASJPEG= +endif +endif +ifdef UNITDIR_PASJPEG +override COMPILER_UNITDIR+=$(UNITDIR_PASJPEG) +endif +endif +ifdef REQUIRE_PACKAGES_IBASE +PACKAGEDIR_IBASE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /ibase/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_IBASE),) +ifneq ($(wildcard $(PACKAGEDIR_IBASE)/units/$(FULL_TARGET)),) +UNITDIR_IBASE=$(PACKAGEDIR_IBASE)/units/$(FULL_TARGET) +else +UNITDIR_IBASE=$(PACKAGEDIR_IBASE) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_IBASE)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_IBASE) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_IBASE)/$(FPCMADE) +endif +else +PACKAGEDIR_IBASE= +UNITDIR_IBASE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /ibase/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_IBASE),) +UNITDIR_IBASE:=$(firstword $(UNITDIR_IBASE)) +else +UNITDIR_IBASE= +endif +endif +ifdef UNITDIR_IBASE +override COMPILER_UNITDIR+=$(UNITDIR_IBASE) +endif +endif +ifdef REQUIRE_PACKAGES_POSTGRES +PACKAGEDIR_POSTGRES:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /postgres/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_POSTGRES),) +ifneq ($(wildcard $(PACKAGEDIR_POSTGRES)/units/$(FULL_TARGET)),) +UNITDIR_POSTGRES=$(PACKAGEDIR_POSTGRES)/units/$(FULL_TARGET) +else +UNITDIR_POSTGRES=$(PACKAGEDIR_POSTGRES) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_POSTGRES)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_POSTGRES) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_POSTGRES)/$(FPCMADE) +endif +else +PACKAGEDIR_POSTGRES= +UNITDIR_POSTGRES:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /postgres/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_POSTGRES),) +UNITDIR_POSTGRES:=$(firstword $(UNITDIR_POSTGRES)) +else +UNITDIR_POSTGRES= +endif +endif +ifdef UNITDIR_POSTGRES +override COMPILER_UNITDIR+=$(UNITDIR_POSTGRES) +endif +endif +ifdef REQUIRE_PACKAGES_MYSQL +PACKAGEDIR_MYSQL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /mysql/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_MYSQL),) +ifneq ($(wildcard $(PACKAGEDIR_MYSQL)/units/$(FULL_TARGET)),) +UNITDIR_MYSQL=$(PACKAGEDIR_MYSQL)/units/$(FULL_TARGET) +else +UNITDIR_MYSQL=$(PACKAGEDIR_MYSQL) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_MYSQL)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_MYSQL) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_MYSQL)/$(FPCMADE) +endif +else +PACKAGEDIR_MYSQL= +UNITDIR_MYSQL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /mysql/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_MYSQL),) +UNITDIR_MYSQL:=$(firstword $(UNITDIR_MYSQL)) +else +UNITDIR_MYSQL= +endif +endif +ifdef UNITDIR_MYSQL +override COMPILER_UNITDIR+=$(UNITDIR_MYSQL) +endif +endif +ifdef REQUIRE_PACKAGES_SQLITE +PACKAGEDIR_SQLITE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /sqlite/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_SQLITE),) +ifneq ($(wildcard $(PACKAGEDIR_SQLITE)/units/$(FULL_TARGET)),) +UNITDIR_SQLITE=$(PACKAGEDIR_SQLITE)/units/$(FULL_TARGET) +else +UNITDIR_SQLITE=$(PACKAGEDIR_SQLITE) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_SQLITE)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_SQLITE) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_SQLITE)/$(FPCMADE) +endif +else +PACKAGEDIR_SQLITE= +UNITDIR_SQLITE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /sqlite/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_SQLITE),) +UNITDIR_SQLITE:=$(firstword $(UNITDIR_SQLITE)) +else +UNITDIR_SQLITE= +endif +endif +ifdef UNITDIR_SQLITE +override COMPILER_UNITDIR+=$(UNITDIR_SQLITE) +endif +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) -Xc +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +endif +endif +ifdef UNITDIR +override FPCOPT+=$(addprefix -Fu,$(UNITDIR)) +endif +ifdef LIBDIR +override FPCOPT+=$(addprefix -Fl,$(LIBDIR)) +endif +ifdef OBJDIR +override FPCOPT+=$(addprefix -Fo,$(OBJDIR)) +endif +ifdef INCDIR +override FPCOPT+=$(addprefix -Fi,$(INCDIR)) +endif +ifdef LINKSMART +override FPCOPT+=-XX +endif +ifdef CREATESMART +override FPCOPT+=-CX +endif +ifdef DEBUG +override FPCOPT+=-gl +override FPCOPTDEF+=DEBUG +endif +ifdef RELEASE +ifeq ($(CPU_TARGET),i386) +FPCCPUOPT:=-OG2p3 +else +ifeq ($(CPU_TARGET),powerpc) +FPCCPUOPT:=-O1 +else +FPCCPUOPT:= +endif +endif +override FPCOPT+=-Xs $(FPCCPUOPT) -n +override FPCOPTDEF+=RELEASE +endif +ifdef STRIP +override FPCOPT+=-Xs +endif +ifdef OPTIMIZE +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-OG2p3 +endif +endif +ifdef VERBOSE +override FPCOPT+=-vwni +endif +ifdef COMPILER_OPTIONS +override FPCOPT+=$(COMPILER_OPTIONS) +endif +ifdef COMPILER_UNITDIR +override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR)) +endif +ifdef COMPILER_LIBRARYDIR +override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR)) +endif +ifdef COMPILER_OBJECTDIR +override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR)) +endif +ifdef COMPILER_INCLUDEDIR +override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR)) +endif +ifdef CROSSBINDIR +override FPCOPT+=-FD$(CROSSBINDIR) +endif +ifdef COMPILER_TARGETDIR +override FPCOPT+=-FE$(COMPILER_TARGETDIR) +ifeq ($(COMPILER_TARGETDIR),.) +override TARGETDIRPREFIX= +else +override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/ +endif +endif +ifdef COMPILER_UNITTARGETDIR +override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR) +ifeq ($(COMPILER_UNITTARGETDIR),.) +override UNITTARGETDIRPREFIX= +else +override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/ +endif +else +ifdef COMPILER_TARGETDIR +override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR) +override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX) +endif +endif +ifeq ($(OS_TARGET),linux) +ifeq ($(FPC_VERSION),1.0.6) +override FPCOPTDEF+=HASUNIX +endif +endif +ifdef GCCLIBDIR +override FPCOPT+=-Fl$(GCCLIBDIR) +endif +ifdef OTHERLIBDIR +override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR)) +endif +ifdef OPT +override FPCOPT+=$(OPT) +endif +ifdef FPCOPTDEF +override FPCOPT+=$(addprefix -d,$(FPCOPTDEF)) +endif +ifdef CFGFILE +override FPCOPT+=@$(CFGFILE) +endif +ifdef USEENV +override FPCEXTCMD:=$(FPCOPT) +override FPCOPT:=!FPCEXTCMD +export FPCEXTCMD +endif +override COMPILER:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +EXECPPAS:=@$(PPAS) +endif +endif +.PHONY: fpc_exes +ifndef CROSSINSTALL +ifneq ($(TARGET_PROGRAMS),) +override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS)) +override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) +override ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +ifeq ($(OS_TARGET),os2) +override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS)) +endif +ifeq ($(OS_TARGET),emx) +override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS)) +endif +endif +endif +fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES) +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_all fpc_smart fpc_debug fpc_release +$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET) + @$(ECHOREDIR) Compiled > $(FPCMADE) +fpc_all: $(FPCMADE) +fpc_smart: + $(MAKE) all LINKSMART=1 CREATESMART=1 +fpc_debug: + $(MAKE) all DEBUG=1 +fpc_release: + $(MAKE) all RELEASE=1 +.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res +$(COMPILER_UNITTARGETDIR): + $(MKDIRTREE) $(COMPILER_UNITTARGETDIR) +$(COMPILER_TARGETDIR): + $(MKDIRTREE) $(COMPILER_TARGETDIR) +%$(PPUEXT): %.pp + $(COMPILER) $< + $(EXECPPAS) +%$(PPUEXT): %.pas + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.pp + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.pas + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.lpr + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.dpr + $(COMPILER) $< + $(EXECPPAS) +%.res: %.rc + windres -i $< -o $@ +vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %$(OEXT) $(COMPILER_UNITTARGETDIR) +vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR) +.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall +ifdef INSTALL_UNITS +override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS)) +endif +ifdef INSTALL_BUILDUNIT +override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES)) +endif +ifdef INSTALLPPUFILES +override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) +override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPUFILES)) +override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPULINKFILES))) +override INSTALL_CREATEPACKAGEFPC=1 +endif +ifdef INSTALLEXEFILES +override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(INSTALLEXEFILES)) +endif +fpc_install: all $(INSTALLTARGET) +ifdef INSTALLEXEFILES + $(MKDIR) $(INSTALL_BINDIR) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR) +endif +ifdef INSTALL_CREATEPACKAGEFPC +ifdef FPCMAKE +ifdef PACKAGE_VERSION +ifneq ($(wildcard Makefile.fpc),) + $(FPCMAKE) -p -T$(OS_TARGET) Makefile.fpc + $(MKDIR) $(INSTALL_UNITDIR) + $(INSTALL) Package.fpc $(INSTALL_UNITDIR) +endif +endif +endif +endif +ifdef INSTALLPPUFILES + $(MKDIR) $(INSTALL_UNITDIR) + $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR) +ifneq ($(INSTALLPPULINKFILES),) + $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR) +endif +ifneq ($(wildcard $(LIB_FULLNAME)),) + $(MKDIR) $(INSTALL_LIBDIR) + $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR) +ifdef inUnix + ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME) +endif +endif +endif +ifdef INSTALL_FILES + $(MKDIR) $(INSTALL_DATADIR) + $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR) +endif +fpc_sourceinstall: distclean + $(MKDIR) $(INSTALL_SOURCEDIR) + $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR) +fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS)) +ifdef HASEXAMPLES + $(MKDIR) $(INSTALL_EXAMPLEDIR) +endif +ifdef EXAMPLESOURCEFILES + $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR) +endif +ifdef TARGET_EXAMPLEDIRS + $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR) +endif +.PHONY: fpc_distinstall +fpc_distinstall: install exampleinstall +.PHONY: fpc_zipinstall fpc_zipsourceinstall fpc_zipexampleinstall +ifndef PACKDIR +ifndef inUnix +PACKDIR=$(BASEDIR)/../fpc-pack +else +PACKDIR=/tmp/fpc-pack +endif +endif +ifndef ZIPNAME +ifdef DIST_ZIPNAME +ZIPNAME=$(DIST_ZIPNAME) +else +ZIPNAME=$(PACKAGE_NAME) +endif +endif +ifndef FULLZIPNAME +FULLZIPNAME=$(ZIPCROSSPREFIX)$(ZIPPREFIX)$(ZIPNAME)$(ZIPSUFFIX) +endif +ifndef ZIPTARGET +ifdef DIST_ZIPTARGET +ZIPTARGET=DIST_ZIPTARGET +else +ZIPTARGET=install +endif +endif +ifndef USEZIP +ifdef inUnix +USETAR=1 +endif +endif +ifndef inUnix +USEZIPWRAPPER=1 +endif +ifdef USEZIPWRAPPER +ZIPPATHSEP=$(PATHSEP) +ZIPWRAPPER=$(subst /,$(PATHSEP),$(DIST_DESTDIR)/fpczip$(SRCBATCHEXT)) +else +ZIPPATHSEP=/ +endif +ZIPCMD_CDPACK:=cd $(subst /,$(ZIPPATHSEP),$(PACKDIR)) +ZIPCMD_CDBASE:=cd $(subst /,$(ZIPPATHSEP),$(BASEDIR)) +ifdef USETAR +ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(TAREXT) +ZIPCMD_ZIP:=$(TARPROG) cf$(TAROPT) $(ZIPDESTFILE) * +else +ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(ZIPEXT) +ZIPCMD_ZIP:=$(subst /,$(ZIPPATHSEP),$(ZIPPROG)) -Dr $(ZIPOPT) $(ZIPDESTFILE) * +endif +fpc_zipinstall: + $(MAKE) $(ZIPTARGET) INSTALL_PREFIX=$(PACKDIR) ZIPINSTALL=1 + $(MKDIR) $(DIST_DESTDIR) + $(DEL) $(ZIPDESTFILE) +ifdef USEZIPWRAPPER +ifneq ($(ECHOREDIR),echo) + $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDPACK))" > $(ZIPWRAPPER) + $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" >> $(ZIPWRAPPER) + $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDBASE))" >> $(ZIPWRAPPER) +else + echo $(ZIPCMD_CDPACK) > $(ZIPWRAPPER) + echo $(ZIPCMD_ZIP) >> $(ZIPWRAPPER) + echo $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER) +endif +ifdef inUnix + /bin/sh $(ZIPWRAPPER) +else + $(ZIPWRAPPER) +endif + $(DEL) $(ZIPWRAPPER) +else + $(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE) +endif + $(DELTREE) $(PACKDIR) +fpc_zipsourceinstall: + $(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall ZIPSUFFIX=$(ZIPSOURCESUFFIX) +fpc_zipexampleinstall: +ifdef HASEXAMPLES + $(MAKE) fpc_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=$(ZIPEXAMPLESUFFIX) +endif +fpc_zipdistinstall: + $(MAKE) fpc_zipinstall ZIPTARGET=distinstall +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +endif +ifdef CLEAN_UNITS +override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS)) +endif +ifdef 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 CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES))) +endif +fpc_clean: $(CLEANTARGET) +ifdef CLEANEXEFILES + -$(DEL) $(CLEANEXEFILES) +endif +ifdef CLEANPPUFILES + -$(DEL) $(CLEANPPUFILES) +endif +ifneq ($(CLEANPPULINKFILES),) + -$(DEL) $(CLEANPPULINKFILES) +endif +ifdef CLEANRSTFILES + -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES)) +endif +ifdef CLEAN_FILES + -$(DEL) $(CLEAN_FILES) +endif +ifdef LIB_NAME + -$(DEL) $(LIB_NAME) $(LIB_FULLNAME) +endif + -$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE) + -$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT) +fpc_cleanall: $(CLEANTARGET) +ifdef CLEANEXEFILES + -$(DEL) $(CLEANEXEFILES) +endif +ifdef COMPILER_UNITTARGETDIR +ifdef CLEANPPUFILES + -$(DEL) $(CLEANPPUFILES) +endif +ifneq ($(CLEANPPULINKFILES),) + -$(DEL) $(CLEANPPULINKFILES) +endif +ifdef CLEANRSTFILES + -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES)) +endif +endif + -$(DELTREE) units + -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT) +ifneq ($(PPUEXT),.ppu) + -$(DEL) *.o *.ppu *.a +endif + -$(DELTREE) *$(SMARTEXT) + -$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE) + -$(DEL) *_ppas$(BATCHEXT) +ifdef AOUTEXT + -$(DEL) *$(AOUTEXT) +endif +ifdef DEBUGSYMEXT + -$(DEL) *$(DEBUGSYMEXT) +endif +fpc_distclean: cleanall +.PHONY: fpc_baseinfo +override INFORULES+=fpc_baseinfo +fpc_baseinfo: + @$(ECHO) + @$(ECHO) == Package info == + @$(ECHO) Package Name..... $(PACKAGE_NAME) + @$(ECHO) Package Version.. $(PACKAGE_VERSION) + @$(ECHO) + @$(ECHO) == Configuration info == + @$(ECHO) + @$(ECHO) FPC.......... $(FPC) + @$(ECHO) FPC Version.. $(FPC_VERSION) + @$(ECHO) Source CPU... $(CPU_SOURCE) + @$(ECHO) Target CPU... $(CPU_TARGET) + @$(ECHO) Source OS.... $(OS_SOURCE) + @$(ECHO) Target OS.... $(OS_TARGET) + @$(ECHO) Full Source.. $(FULL_SOURCE) + @$(ECHO) Full Target.. $(FULL_TARGET) + @$(ECHO) + @$(ECHO) == Directory info == + @$(ECHO) + @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES) + @$(ECHO) + @$(ECHO) Basedir......... $(BASEDIR) + @$(ECHO) FPCDir.......... $(FPCDIR) + @$(ECHO) CrossBinDir..... $(CROSSBINDIR) + @$(ECHO) UnitsDir........ $(UNITSDIR) + @$(ECHO) PackagesDir..... $(PACKAGESDIR) + @$(ECHO) + @$(ECHO) GCC library..... $(GCCLIBDIR) + @$(ECHO) Other library... $(OTHERLIBDIR) + @$(ECHO) + @$(ECHO) == Tools info == + @$(ECHO) + @$(ECHO) As........ $(AS) + @$(ECHO) Ld........ $(LD) + @$(ECHO) Ar........ $(AR) + @$(ECHO) Rc........ $(RC) + @$(ECHO) + @$(ECHO) Mv........ $(MVPROG) + @$(ECHO) Cp........ $(CPPROG) + @$(ECHO) Rm........ $(RMPROG) + @$(ECHO) GInstall.. $(GINSTALL) + @$(ECHO) Echo...... $(ECHO) + @$(ECHO) Shell..... $(SHELL) + @$(ECHO) Date...... $(DATE) + @$(ECHO) FPCMake... $(FPCMAKE) + @$(ECHO) PPUMove... $(PPUMOVE) + @$(ECHO) Upx....... $(UPXPROG) + @$(ECHO) Zip....... $(ZIPPROG) + @$(ECHO) + @$(ECHO) == Object info == + @$(ECHO) + @$(ECHO) Target Loaders........ $(TARGET_LOADERS) + @$(ECHO) Target Units.......... $(TARGET_UNITS) + @$(ECHO) Target Implicit Units. $(TARGET_IMPLICITUNITS) + @$(ECHO) Target Programs....... $(TARGET_PROGRAMS) + @$(ECHO) Target Dirs........... $(TARGET_DIRS) + @$(ECHO) Target Examples....... $(TARGET_EXAMPLES) + @$(ECHO) Target ExampleDirs.... $(TARGET_EXAMPLEDIRS) + @$(ECHO) + @$(ECHO) Clean Units......... $(CLEAN_UNITS) + @$(ECHO) Clean Files......... $(CLEAN_FILES) + @$(ECHO) + @$(ECHO) Install Units....... $(INSTALL_UNITS) + @$(ECHO) Install Files....... $(INSTALL_FILES) + @$(ECHO) + @$(ECHO) == Install info == + @$(ECHO) + @$(ECHO) DateStr.............. $(DATESTR) + @$(ECHO) ZipName.............. $(ZIPNAME) + @$(ECHO) ZipPrefix............ $(ZIPPREFIX) + @$(ECHO) ZipCrossPrefix....... $(ZIPCROSSPREFIX) + @$(ECHO) ZipSuffix............ $(ZIPSUFFIX) + @$(ECHO) FullZipName.......... $(FULLZIPNAME) + @$(ECHO) Install FPC Package.. $(INSTALL_FPCPACKAGE) + @$(ECHO) + @$(ECHO) Install base dir..... $(INSTALL_BASEDIR) + @$(ECHO) Install binary dir... $(INSTALL_BINDIR) + @$(ECHO) Install library dir.. $(INSTALL_LIBDIR) + @$(ECHO) Install units dir.... $(INSTALL_UNITDIR) + @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR) + @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR) + @$(ECHO) Install example dir.. $(INSTALL_EXAMPLEDIR) + @$(ECHO) Install data dir..... $(INSTALL_DATADIR) + @$(ECHO) + @$(ECHO) Dist destination dir. $(DIST_DESTDIR) + @$(ECHO) Dist zip name........ $(DIST_ZIPNAME) + @$(ECHO) +.PHONY: fpc_info +fpc_info: $(INFORULES) +.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \ + fpc_makefile_dirs +fpc_makefile: + $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc +fpc_makefile_sub1: +ifdef TARGET_DIRS + $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS)) +endif +ifdef TARGET_EXAMPLEDIRS + $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS)) +endif +fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS)) +fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2 +fpc_makefiles: fpc_makefile fpc_makefile_dirs +all: fpc_all +debug: fpc_debug +smart: fpc_smart +release: fpc_release +units: fpc_units +examples: +shared: +install: fpc_install +sourceinstall: fpc_sourceinstall +exampleinstall: fpc_exampleinstall +distinstall: fpc_distinstall +zipinstall: fpc_zipinstall +zipsourceinstall: fpc_zipsourceinstall +zipexampleinstall: fpc_zipexampleinstall +zipdistinstall: fpc_zipdistinstall +clean: fpc_clean +distclean: fpc_distclean +cleanall: fpc_cleanall +info: fpc_info +makefiles: fpc_makefiles +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +fpcsubst$(EXEEXT): fpcsubst.pp usubst.pp +fpcmkcfg$(EXEEXT): fpcmkcfg.pp usubst.pp fpccfg.inc +fpccfg.inc: fpc.cft + bin2obj -a -o fpccfg.inc -c DefaultConfig fpc.cft +fpc.iss: fpc.ist + fpcsubst -i fpc.ist -o fpc.ist $(FPCISSSUBST) diff --git a/install/Makefile.fpc b/install/Makefile.fpc new file mode 100644 index 0000000000..3538658c70 --- /dev/null +++ b/install/Makefile.fpc @@ -0,0 +1,40 @@ +# +# Makefile.fpc for install utilities +# + +[package] +name=install +version=1.9.6 + +[require] +packages=fcl + +[target] +programs=fpcsubst fpcmkcfg +rst=fpcmkcfg fpcsubst +# removed to reduce dependencies of rpm. +#dirs_linux_i386=fpde +#dirs_win32=fpde + +[compiler] +options=-S2h + +[install] +fpcpackage=n + +[default] +fpcdir=.. + +[clean] +units=usubst + +[rules] +fpcsubst$(EXEEXT): fpcsubst.pp usubst.pp + +fpcmkcfg$(EXEEXT): fpcmkcfg.pp usubst.pp fpccfg.inc + +fpccfg.inc: fpc.cft + bin2obj -a -o fpccfg.inc -c DefaultConfig fpc.cft + +fpc.iss: fpc.ist + fpcsubst -i fpc.ist -o fpc.ist $(FPCISSSUBST) \ No newline at end of file diff --git a/install/fpc.cft b/install/fpc.cft new file mode 100644 index 0000000000..5513a5ce1d --- /dev/null +++ b/install/fpc.cft @@ -0,0 +1,173 @@ +# Config file generated by fpcmkcfg on %BUILDDATE% - %BUILDTIME% +# Example fpc.cfg for Free Pascal Compiler +# + +# ---------------------- +# Defines (preprocessor) +# ---------------------- + +# +# nested #IFNDEF, #IFDEF, #ENDIF, #ELSE, #DEFINE, #UNDEF are allowed +# +# -d is the same as #DEFINE +# -u is the same as #UNDEF +# + +# +# Some examples (for switches see below, and the -? helppages) +# +# Try compiling with the -dRELEASE or -dDEBUG on the commandline +# + +# For a release compile with optimizes and strip debuginfo +#IFDEF RELEASE + -OG2p3 + -Xs + #WRITE Compiling Release Version +#ENDIF + +# For a debug version compile with debuginfo and all codegeneration checks on +#IFDEF DEBUG + -g + -Crtoi + #WRITE Compiling Debug Version +#ENDIF + +# ---------------- +# Parsing switches +# ---------------- + +# All assembler blocks are intel styled by default +#-Rintel + +# All assembler blocks are AT&T styled by default +#-Ratt + +# All assembler blocks are directly copied to asm +#-Rdirect + +# Semantic checking +# -S2 switch some Delphi 2 extensions on +# -Sc supports operators like C (*=,+=,/= and -=) +# -Sd tries to be Delphi compatible +# -Se compiler stops after the errors (default is 1) +# -Sg allow LABEL and GOTO +# -Sh Use ansistrings +# -Si support C++ styled INLINE +# -Sm support macros like C (global) +# -So tries to be TP/BP 7.0 compatible +# -Sp tries to be gpc compatible +# -Ss constructor name must be init (destructor must be done) +# -St allow static keyword in objects +# Allow goto, inline, C-operators +-Sgic + +# --------------- +# Code generation +# --------------- + +# Uncomment the next line if you always want static/dynamic units by default +# (can be overruled with -CD, -CS at the commandline) +#-CS +#-CD + +# Set the default heapsize to 8Mb +#-Ch8000000 + +# Set default codegeneration checks (iocheck, overflow, range, stack) +#-Ci +#-Co +#-Cr +#-Ct + +# Optimizer switches +# -Og generate smaller code +# -OG generate faster code (default) +# -Or keep certain variables in registers (still BUGGY!!!) +# -Ou enable uncertain optimizations (see docs) +# -O1 level 1 optimizations (quick optimizations) +# -O2 level 2 optimizations (-O1 + slower optimizations) +# -O3 level 3 optimizations (same as -O2u) +# -Op target processor +# -Op1 set target processor to 386/486 +# -Op2 set target processor to Pentium/PentiumMMX (tm) +# -Op3 set target processor to PPro/PII/c6x86/K6 (tm) + +# Optimize always for Size and PentiumII +#-Og2p3 + + +# ----------------------- +# Set Filenames and Paths +# ----------------------- + +# Both slashes and backslashes are allowed in paths + +# path to the messagefile, not necessary anymore but can be used to override +# the default language +#-Fr%basepath%/msg/errore.msg +#-Fr%basepath%/msg/errorn.msg +#-Fr%basepath%/msg/errores.msg +#-Fr%basepath%/msg/errord.msg +#-Fr%basepath%/msg/errorr.msg + +# path to the gcclib +#-Fl%basepath%/lib + +# searchpath for includefiles +# release them only if you know what you do +# because this could cause a rebuild of the runtime library +# if you tell them compiler/ide to build the project (FK) +#-Fi%basepath%/source/rtl/inc;%basepath%/source/rtl/i386 + +# searchpath for objectfiles +#-Fo%basepath%/source/rtl/inc;%basepath%/source/rtl/i386 + +# searchpath for units and other system dependent things +-Fu%basepath%/units/$FPCTARGET/ +-Fu%basepath%/units/$FPCTARGET/* +-Fu%basepath%/units/$FPCTARGET/rtl + +# searchpath for libraries +#-Fl%basepath%/lib +#-Fl/lib;/usr/lib + +# searchpath for tools +-FD%basepath%/bin/$FPCTARGET + +# ------------- +# Linking +# ------------- + +# generate always debugging information for GDB (slows down the compiling +# process) +#-gl + +# always pass an option to the linker +#-k-s + +# Always strip debuginfo from the executable +-Xs + + +# ------------- +# Miscellaneous +# ------------- + +# Write always a nice FPC logo ;) +-l + +# Verbosity +# e : Show errors (default) d : Show debug info +# w : Show warnings u : Show used files +# n : Show notes t : Show tried files +# h : Show hints m : Show defined macros +# i : Show general info p : Show compiled procedures +# l : Show linenumbers c : Show conditionals +# a : Show everything 0 : Show nothing (except errors) + +# Display Info, Warnings, Notes and Hints +-viwn +# If you don't want so much verbosity use +#-vw + diff --git a/install/fpc.ist b/install/fpc.ist new file mode 100644 index 0000000000..9f963985b2 --- /dev/null +++ b/install/fpc.ist @@ -0,0 +1,307 @@ +;********************************************************************** +; We don't use the INNO Setup preprocessor. It is unfortunately quite buggy. +; So, this script must be preprocessed by our own tools. +; The preprocessor will replace anything enclosed in percent characters +; by the value specified in it's config file. Standard there are only +; the following things; +; FPCVERSION Version of FPC. +; BUILDDIR Build directory. +;********************************************************************** +; +; ISS Build script generated on %BUILDDATE% - %BUILDTIME% +; +[Setup] +AppName=Free Pascal +AppVerName=Free Pascal %FPCVERSION% +AppPublisher=Free Pascal Team +AppPublisherURL=http://www.freepascal.org/ +AppSupportURL=http://www.freepascal.org/ +AppUpdatesURL=http://www.freepascal.org/ +DefaultDirName={sd}\FPC\%FPCVERSION% +DefaultGroupName=Free Pascal +AllowNoIcons=yes +InfoAfterFile=doc\fpc\whatsnew.txt +Compression=bzip +SolidCompression=true +SourceDir=%BUILDDIR% +InternalCompressLevel=max +AppCopyright=GPL +AppendDefaultDirName=false +AlwaysShowComponentsList=false +ShowLanguageDialog=yes + +[Files] +; Base package +Source: bin\i386-win32\ppc386.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: base +Source: bin\i386-win32\ppudump.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: base +Source: bin\i386-win32\ppufiles.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: base +Source: bin\i386-win32\ppumove.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: base +Source: bin\i386-win32\ppc386.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: base +Source: bin\i386-win32\cygwin1.dll; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: base +Source: bin\i386-win32\fp32_32.ico; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: base +Source: bin\i386-win32\fpc.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: base +Source: bin\i386-win32\fpcmkcfg.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: base +Source: doc\fpc\copying; DestDir: {app}\doc\fpc; Components: base +Source: doc\fpc\copying.dj; DestDir: {app}\doc\fpc; Components: base +Source: doc\fpc\copying.emx; DestDir: {app}\doc\fpc; Components: base +Source: doc\fpc\copying.fpc; DestDir: {app}\doc\fpc; Components: base +Source: doc\fpc\copying.rsx; DestDir: {app}\doc\fpc; Components: base +Source: doc\fpc\readme.txt; DestDir: {app}\doc\fpc; Components: base; Flags: isreadme +Source: doc\fpc\whatsnew.txt; DestDir: {app}\doc\fpc; Components: base +Source: doc\fpc\faq.txt; DestDir: {app}\doc\fpc; Components: base +Source: doc\fpc\faq.htm; DestDir: {app}\doc\fpc; Components: base +Source: msg\*.*; DestDir: {app}\msg; Components: base +Source: units\i386-win32\rtl\*.*; DestDir: {app}\units\i386-win32\rtl; Components: base +; Binutils (asld) +Source: bin\i386-win32\ar.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: binutils +Source: bin\i386-win32\as.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: binutils +Source: bin\i386-win32\cpp.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: binutils +Source: bin\i386-win32\dlltool.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: binutils +Source: bin\i386-win32\gcc.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: binutils +Source: bin\i386-win32\ld.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: binutils +Source: bin\i386-win32\objdump.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: binutils +Source: bin\i386-win32\windres.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: binutils +Source: bin\i386-win32\windres.h; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: binutils +Source: bin\i386-win32\strip.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: binutils +Source: bin\i386-win32\gdbpas.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: gdb +; IDE files +Source: bin\i386-win32\fp.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: ide +Source: bin\i386-win32\fp32.ico; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: ide +Source: bin\i386-win32\fp.ans; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: ide +Source: bin\i386-win32\cvsco.tdf; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: ide +Source: bin\i386-win32\cvsdiff.tdf; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: ide +Source: bin\i386-win32\cvsup.tdf; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: ide +Source: bin\i386-win32\gplprog.pt; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: ide +Source: bin\i386-win32\gplunit.pt; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: ide +Source: bin\i386-win32\unit.pt; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: ide +Source: bin\i386-win32\program.pt; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: ide +Source: bin\i386-win32\tpgrep.tdf; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: ide +Source: bin\i386-win32\grep.tdf; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: ide +Source: doc\ide\readme.ide; DestDir: {app}\doc\ide; Flags: ignoreversion; Components: ide +; Make tools +Source: bin\i386-win32\gdate.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: make +Source: bin\i386-win32\gecho.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: make +Source: bin\i386-win32\ginstall.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: make +Source: bin\i386-win32\gmkdir.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: make +Source: bin\i386-win32\grep.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: make +Source: bin\i386-win32\make.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: make +Source: bin\i386-win32\mv.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: make +Source: bin\i386-win32\patch.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: make +Source: bin\i386-win32\pwd.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: make +Source: bin\i386-win32\rm.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: make +Source: bin\i386-win32\unzip.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: make +Source: bin\i386-win32\upx.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: make +Source: bin\i386-win32\zip.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: make +Source: bin\i386-win32\cmp.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: make +Source: bin\i386-win32\cp.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: make +Source: bin\i386-win32\diff.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: make +; FPC Utilities +Source: bin\i386-win32\bin2obj.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: utils +Source: bin\i386-win32\data2inc.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: utils +Source: bin\i386-win32\delp.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: utils +Source: bin\i386-win32\fpcmake.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: utils +Source: bin\i386-win32\fpdoc.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: utils +Source: bin\i386-win32\fpmc.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: utils +Source: bin\i386-win32\fpmcgtk.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: utils +Source: bin\i386-win32\fprcp.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: utils +Source: bin\i386-win32\h2pas.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: utils +Source: bin\i386-win32\h2paspp.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: utils +Source: bin\i386-win32\makeskel.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: utils +Source: bin\i386-win32\plex.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: utils +Source: bin\i386-win32\postw32.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: utils +Source: bin\i386-win32\ppdep.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: utils +Source: bin\i386-win32\ptop.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: utils +Source: bin\i386-win32\pyacc.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: utils +Source: bin\i386-win32\rstconv.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: utils +Source: bin\i386-win32\unitdiff.exe; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: utils +Source: bin\i386-win32\yylex.cod; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: utils +Source: bin\i386-win32\yyparse.cod; DestDir: {app}\bin\i386-win32; Flags: ignoreversion; Components: utils +Source: units\i386-win32\lexyacc\*.*; DestDir: {app}\units\i386-win32\lexyacc; Flags: ignoreversion; Components: utils +; Documentation +Source: doc\*.pdf; DestDir: {app}\doc; Flags: ignoreversion; Components: docs + +; FCL +Source: units\i386-win32\fcl\*.*; DestDir: {app}\units\i386-win32\fcl; Flags: ignoreversion; Components: fcl +Source: examples\fcl\*.*; DestDir: {app}\examples\fcl; Flags: ignoreversion; Components: fcl +; FV +Source: units\i386-win32\fv\*.*; DestDir: {app}\units\i386-win32\fv; Flags: ignoreversion; Components: fv +Source: examples\fv\*.*; DestDir: {app}\examples\fv; Flags: ignoreversion; Components: fv +; Various units packages +; CDROM +Source: units\i386-win32\cdrom\*.*; DestDir: {app}\units\i386-win32\cdrom; Flags: ignoreversion; Components: packages/cdrom +Source: examples\cdrom\*.*; DestDir: {app}\examples\cdrom; Flags: ignoreversion; Components: packages/cdrom +; fpGtk +Source: units\i386-win32\fpgtk\*.*; DestDir: {app}\units\i386-win32\fpgtk; Flags: ignoreversion; Components: packages/gtk/fpgtk +; Source: examples\fpgtk\*.*; DestDir: {app}\examples\fpgtk; Flags: ignoreversion; Components: packages/gtk/fpgtk +; Gtk +Source: units\i386-win32\gtk\*.*; DestDir: {app}\units\i386-win32\gtk; Flags: ignoreversion; Components: packages/gtk +Source: examples\gtk\*.*; DestDir: {app}\examples\gtk; Flags: ignoreversion; Components: packages/gtk +; GDBINT +Source: units\i386-win32\gdbint\*.*; DestDir: {app}\units\i386-win32\gdbint; Flags: ignoreversion; Components: packages/gdbint +Source: examples\gdbint\*.*; DestDir: {app}\examples\gdbint; Flags: ignoreversion; Components: packages/gdbint +; Interbase +Source: units\i386-win32\ibase\*.*; DestDir: {app}\units\i386-win32\ibase; Flags: ignoreversion; Components: packages/ibase +Source: examples\ibase\*.*; DestDir: {app}\examples\ibase; Flags: ignoreversion; Components: packages/ibase +; MD5 +Source: units\i386-win32\md5\*.*; DestDir: {app}\units\i386-win32\md5; Flags: ignoreversion; Components: packages/md5 +Source: examples\md5\*.*; DestDir: {app}\examples\md5; Flags: ignoreversion; Components: packages/md5 +; MMSystem +Source: units\i386-win32\mmsystem\*.*; DestDir: {app}\units\i386-win32\mmsystem; Flags: ignoreversion; Components: packages/mmsystem +;Source: examples\mmsystem\*.*; DestDir: {app}\examples\mmsystem; Flags: ignoreversion; Components: packages/mmsystem +; MySQL +Source: units\i386-win32\mysql\*.*; DestDir: {app}\units\i386-win32\mysql; Flags: ignoreversion; Components: packages/mysql +Source: examples\mysql\*.*; DestDir: {app}\examples\mysql; Flags: ignoreversion; Components: packages/mysql +; Netdb +Source: units\i386-win32\netdb\*.*; DestDir: {app}\units\i386-win32\netdb; Flags: ignoreversion; Components: packages/netdb +Source: examples\netdb\*.*; DestDir: {app}\examples\netdb; Flags: ignoreversion; Components: packages/netdb +; odbc +Source: units\i386-win32\odbc\*.*; DestDir: {app}\units\i386-win32\odbc; Flags: ignoreversion; Components: packages/odbc +Source: examples\odbc\*.*; DestDir: {app}\examples\odbc; Flags: ignoreversion; Components: packages/odbc +; opengl +Source: units\i386-win32\opengl\*.*; DestDir: {app}\units\i386-win32\opengl; Flags: ignoreversion; Components: packages/opengl +Source: examples\opengl\*.*; DestDir: {app}\examples\opengl; Flags: ignoreversion; Components: packages/opengl +; pasjpeg +Source: units\i386-win32\pasjpeg\*.*; DestDir: {app}\units\i386-win32\pasjpeg; Flags: ignoreversion; Components: packages/pasjpeg +Source: examples\pasjpeg\*.*; DestDir: {app}\examples\pasjpeg; Flags: ignoreversion; Components: packages/pasjpeg +; paszlib +Source: units\i386-win32\paszlib\*.*; DestDir: {app}\units\i386-win32\paszlib; Flags: ignoreversion; Components: packages/paszlib +Source: examples\paszlib\*.*; DestDir: {app}\examples\paszlib; Flags: ignoreversion; Components: packages/paszlib +; regexpr +Source: units\i386-win32\regexpr\*.*; DestDir: {app}\units\i386-win32\regexpr; Flags: ignoreversion; Components: packages/regexp +Source: examples\regexpr\*.*; DestDir: {app}\examples\regexpr; Flags: ignoreversion; Components: packages/regexp +; sqlite +Source: units\i386-win32\sqlite\*.*; DestDir: {app}\units\i386-win32\sqlite; Flags: ignoreversion; Components: packages/sqlite +; Source: examples\sqlite\*.*; DestDir: {app}\examples\sqlite; Flags: ignoreversion; Components: packages/sqlite +; tcl +Source: units\i386-win32\tcl\*.*; DestDir: {app}\units\i386-win32\tcl; Flags: ignoreversion; Components: packages/tcl +Source: examples\tcl\*.*; DestDir: {app}\examples\tcl; Flags: ignoreversion; Components: packages/tcl +; unzip +Source: units\i386-win32\unzip\*.*; DestDir: {app}\units\i386-win32\unzip; Flags: ignoreversion; Components: packages/unzip +; Source: examples\unzip\*.*; DestDir: {app}\examples\unzip; Flags: ignoreversion; Components: packages/unzip +; winver +Source: units\i386-win32\winver\*.*; DestDir: {app}\units\i386-win32\winver; Flags: ignoreversion; Components: packages/winver +Source: examples\winver\*.*; DestDir: {app}\examples\winver; Flags: ignoreversion; Components: packages/winver +; zlib +Source: units\i386-win32\zlib\*.*; DestDir: {app}\units\i386-win32\zlib; Flags: ignoreversion; Components: packages/zlib +; Source: examples\zlib\*.*; DestDir: {app}\examples\zlib; Flags: ignoreversion; Components: packages/unzip + +[INI] +Filename: {app}\ppc386.url; Section: InternetShortcut; Key: URL; String: http://www.freepascal.org/ + +[Icons] +Name: {userdesktop}\Free Pascal IDE; Filename: {app}\bin\i386-win32\fp.exe; components: ide; IconFileName: {app}\bin\i386-win32\fp32.ico; +Name: {group}\Free Pascal; Filename: {app}\bin\i386-win32\fp.exe; components: ide; IconFileName: {app}\bin\i386-win32\fp32.ico; +Name: {group}\{cm:ProgramOnTheWeb,Free Pascal}; Filename: {app}\Free Pascal Website.url; IconFileName: {app}\bin\i386-win32\fp32.ico; +Name: {group}\{cm:UninstallProgram,Free Pascal}; Filename: {uninstallexe} + +[UninstallDelete] +Type: files; Name: {app}\Free Pascal.url +Type: files; Name: {app}\bin\i386-win32\fpc.cfg; Tasks: createcfg; + +[Components] +Name: base; Description: Basic system for win32; Flags: fixed; Types: Custom Minimum Full +Name: binutils; Description: GNU linker and assembler; Flags: fixed; Types: Custom Minimum Full +Name: docs; Description: Documentation in PDF; Types: Custom Full +Name: ide; Description: Integrated Development Environment; Types: Custom Full +Name: utils; Description: Free Pascal Utilities; Types: Custom Full +Name: make; Description: GNU make; Types: Custom Full +Name: gdb; Description: GNU debugger; Types: Full Custom +Name: fcl; Description: FCL (Free Component Library) units; Types: Custom Full +Name: fv; Description: Free Vision; Types: Custom Full +Name: packages; Description: Various unit packages; Types: Custom Full +Name: packages/gtk; Description: GTK units; Types: Custom Full +Name: packages/gtk/fpgtk; Description: fpGTK units; Types: Custom Full +Name: packages/opengl; Description: OpenGL units; Types: Custom Full +Name: packages/ibase; Description: Interbase/Firebird units; Types: Custom Full +Name: packages/mysql; Description: MySQL units; Types: Custom Full +Name: packages/mmsystem; Description: MultiMedia System units; Types: Custom Full +Name: packages/gdbint; Description: GDB access units; Types: Custom Full +Name: packages/paszlib; Description: Paszlib unit (provide acces to gzipped files); Types: Custom Full +Name: packages/regexp; Description: Regular Expression support units; Types: Custom Full +Name: packages/unzip; Description: Unzip units (provide acces to .zip files); Types: Custom Full +Name: packages/zlib; Description: Interface to libz compression library; Types: Custom Full +Name: packages/netdb; Description: Portable DNS routines; Types: Custom Full +Name: packages/pasjpeg; Description: PasJPEG units (provide access to JPEG files); Types: Custom Full +Name: packages/md5; Description: MD5 checksum units; Types: Custom Full +Name: packages/cdrom; Description: Portable CD-ROM acces; Types: Custom Full +Name: packages/odbc; Description: ODBC data acces; Types: Custom Full +Name: packages/sqlite; Description: SQLITE data access; Types: Custom Full +Name: packages/tcl; Description: TCL interpreter access; Types: Custom Full +Name: packages/winver; Description: Windows file version information access; Types: Custom Full +;Name: sources; Description: Pascal source files; Types: Custom Full +;Name: sources/base; Description: Base sources, required; Types: Custom Full +;Name: sources/compiler; Description: Compiler sources; Types: Custom Full +;Name: sources/utils; Description: Utility sources; Types: Custom Full +;Name: sources/installer; Description: Installer sources; Types: Custom Full +;Name: sources/doc; Description: Documentation sources (LaTeX); Types: Custom Full +;Name: sources/rtl; Description: Run-Time Library sources; Types: Custom Full +;Name: sources/fcl; Description: FCL (Free Component Library) sources; Types: Custom Full +;Name: sources/fpgtk; Description: fpGTK source files; Types: Custom Full +;Name: sources/opengl; Description: OpenGL source files; Types: Custom Full +;Name: sources/gtk; Description: GTK source files; Types: Custom Full +;Name: sources/interbase; Description: Interbase/Firebird source files; Types: Custom Full +;Name: sources/mysql; Description: MySQL source files; Types: Custom Full +;Name: sources/mmsystem; Description: MultiMedia System source files; Types: Custom Full +;Name: sources/gdbint; Description: GDB access source files; Types: Custom Full +;Name: sources/paszlib; Description: Paszlib source files; Types: Custom Full +;Name: sources/regexp; Description: Regular Expression support source files; Types: Custom Full +;Name: sources/unzip; Description: Unzip source files; Types: Custom Full +;Name: sources/zlib; Description: Libz interface source files; Types: Custom Full +;Name: sources/netdb; Description: Portable DNS routines source files; Types: Custom Full +;Name: sources/pasjpeg; Description: PasJPEG source files; Types: Custom Full +;Name: sources/md5; Description: MD5 source files; Types: Custom Full +;Name: sources/fv; Description: Free Vision source files; Types: Custom Full +;Name: sources/rexx; Description: REXX source files (OS/2); Types: Custom Full +;Name: sources/hwvideo; Description: Hardware access source files (OS/2); Types: Custom Full +;Name: sources/ftpapi; Description: FTP API access source files (OS/2); Types: Custom Full +;Name: sources/mmtk; Description: MMOS/2 access source files (OS/2); Types: Custom Full +;Name: sources/clkdll; Description: CLKDLL access source files (OS/2); Types: Custom Full +;Name: sources/lvm; Description: LVM access source files (OS/2); Types: Custom Full +;Name: sources/libpng; Description: PNG library access source files (Linux); Types: Custom Full +;Name: sources/imlib; Description: imlib library access source files (Linux); Types: Custom Full +;Name: sources/cdrom; Description: Portable CD-ROM access source files; Types: Custom Full +;Name: sources/odbc; Description: ODBC data acces source files; Types: Custom Full +;Name: sources/sqlite; Description: SQLITE data access source files; Types: Custom Full +;Name: sources/tcl; Description: TCL interpreter access source files; Types: Custom Full +;Name: sources/winver; Description: Windows file version information access source files; Types: Custom Full + +[Types] +Name: Full; Description: Full installation +Name: Minimum; Description: Minimum installation +Name: Custom; Description: Custom installation; Flags: iscustom + +[Tasks] +Name: associatepp; Description: "Associate .pp files with Free Pascal IDE"; GroupDescription: "File associations:"; Components: ide; +Name: associateinc; Description: "Associate .inc files with Free Pascal IDE"; GroupDescription: "File associations:"; Components: ide; +Name: associatepas; Description: "Associate .pas files with Free Pascal IDE"; GroupDescription: "File associations:"; Components: ide; Flags: unchecked; +Name: associatedpr; Description: "Associate .dpr files with Free Pascal IDE"; GroupDescription: "File associations:"; Components: ide; Flags: unchecked; +Name: createdesktopicon; Description: "Create a desktop icon for the Free Pascal IDE"; Components: ide; +Name: createcfg; Description: "Create a standard configuration file for the compiler"; + + +[Registry] +; Associate .pp with FP IDE +Root: HKCR; Subkey: ".pp"; ValueType: string; ValueName: ""; ValueData: "FPCPPFile"; Flags: uninsdeletevalue; Tasks: associatepp; +Root: HKCR; Subkey: "FPCPPFile"; ValueType: string; ValueName: ""; ValueData: "Free Pascal File"; Flags: uninsdeletekey; Tasks: associatepp; +Root: HKCR; Subkey: "FPCPPFile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\bin\i386-Win32\fpc32.ico"; Tasks: associatepp; +Root: HKCR; Subkey: "FPCPPFile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\bin\i386-win32\fp.exe"" ""%1""";Tasks: associatepp; +; Associate .inc with FP IDE +Root: HKCR; Subkey: ".inc"; ValueType: string; ValueName: ""; ValueData: "FPCINCFile"; Flags: uninsdeletevalue; Tasks: associatepp; +Root: HKCR; Subkey: "FPCINCFile"; ValueType: string; ValueName: ""; ValueData: "Free Pascal include File"; Flags: uninsdeletekey; Tasks: associateinc; +Root: HKCR; Subkey: "FPCINCFile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\bin\i386-Win32\fpc32.ico"; Tasks: associateinc; +Root: HKCR; Subkey: "FPCINCFile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\bin\i386-win32\fp.exe"" ""%1""";Tasks: associateinc; +; Associate .pas with FP IDE +Root: HKCR; Subkey: ".pas"; ValueType: string; ValueName: ""; ValueData: "FPCPASFile"; Flags: uninsdeletevalue; Tasks: associatepas; +Root: HKCR; Subkey: "FPPASFile"; ValueType: string; ValueName: ""; ValueData: "Free Pascal File"; Flags: uninsdeletekey; Tasks: associatepas; +Root: HKCR; Subkey: "FPPASFile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\bin\i386-Win32\fpc32.ico"; Tasks: associatepas; +Root: HKCR; Subkey: "FPPASFile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\bin\i386-win32\fp.exe"" ""%1""";Tasks: associatepas; +; Associate .pas with FP IDE +Root: HKCR; Subkey: ".dpr"; ValueType: string; ValueName: ""; ValueData: "FPCDPRFile"; Flags: uninsdeletevalue; Tasks: associatedpr; +Root: HKCR; Subkey: "FPDPRFile"; ValueType: string; ValueName: ""; ValueData: "Free Pascal Project File"; Flags: uninsdeletekey; Tasks: associatedpr; +Root: HKCR; Subkey: "FPDPRFile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\bin\i386-Win32\fpc32.ico"; Tasks: associatedpr; +Root: HKCR; Subkey: "FPDPRFile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\bin\i386-win32\fp.exe"" ""%1""";Tasks: associatedpr; +; Extend path in NT,2000 or XP. Does not work in 95/98/Me +Root: HKCU; Subkey: Environment; ValueType: String; ValueName: "PATH"; ValueData: "{reg:HKCU\environment,PATH|};{app}\bin\i386-Win32\";MinVersion: 5.0,4.0 + +[Run] +FileName: {app}\bin\i386-win32\fpcmkcfg.exe; Description: "Creating default configuration file for Free Pascal compiler"; Parameters: "-d ""basepath={app}"" -o ""{app}\bin\i386-Win32\fpc.cfg"""; diff --git a/install/fpccfg.inc b/install/fpccfg.inc new file mode 100644 index 0000000000..0f6815d781 --- /dev/null +++ b/install/fpccfg.inc @@ -0,0 +1,275 @@ + +Const + DefaultConfig : Array[0..4615] of char = ( + '#',' ','C','o','n','f','i','g',' ','f','i','l','e',' ','g','e','n', + 'e','r','a','t','e','d',' ','b','y',' ','f','p','c','m','k','c','f', + 'g',' ','o','n',' ','%','B','U','I','L','D','D','A','T','E','%',' ', + '-',' ','%','B','U','I','L','D','T','I','M','E','%',#13,#10,'#',' ', + 'E','x','a','m','p','l','e',' ','f','p','c','.','c','f','g',' ','f', + 'o','r',' ','F','r','e','e',' ','P','a','s','c','a','l',' ','C','o', + 'm','p','i','l','e','r',#13,#10,'#',#13,#10,#13,#10,'#',' ','-','-', + '-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-', + '-','-','-',#13,#10,'#',' ','D','e','f','i','n','e','s',' ','(','p', + 'r','e','p','r','o','c','e','s','s','o','r',')',#13,#10,'#',' ','-', + '-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-', + '-','-','-','-',#13,#10,#13,#10,'#',#13,#10,'#',' ','n','e','s','t', + 'e','d',' ','#','I','F','N','D','E','F',',',' ','#','I','F','D','E', + 'F',',',' ','#','E','N','D','I','F',',',' ','#','E','L','S','E',',', + ' ','#','D','E','F','I','N','E',',',' ','#','U','N','D','E','F',' ', + 'a','r','e',' ','a','l','l','o','w','e','d',#13,#10,'#',#13,#10,'#', + ' ','-','d',' ','i','s',' ','t','h','e',' ','s','a','m','e',' ','a', + 's',' ','#','D','E','F','I','N','E',#13,#10,'#',' ','-','u',' ','i', + 's',' ','t','h','e',' ','s','a','m','e',' ','a','s',' ','#','U','N', + 'D','E','F',#13,#10,'#',#13,#10,#13,#10,'#',#13,#10,'#',' ','S','o', + 'm','e',' ','e','x','a','m','p','l','e','s',' ','(','f','o','r',' ', + 's','w','i','t','c','h','e','s',' ','s','e','e',' ','b','e','l','o', + 'w',',',' ','a','n','d',' ','t','h','e',' ','-','?',' ','h','e','l', + 'p','p','a','g','e','s',')',#13,#10,'#',#13,#10,'#',' ','T','r','y', + ' ','c','o','m','p','i','l','i','n','g',' ','w','i','t','h',' ','t', + 'h','e',' ','-','d','R','E','L','E','A','S','E',' ','o','r',' ','-', + 'd','D','E','B','U','G',' ','o','n',' ','t','h','e',' ','c','o','m', + 'm','a','n','d','l','i','n','e',#13,#10,'#',#13,#10,#13,#10,'#',' ', + 'F','o','r',' ','a',' ','r','e','l','e','a','s','e',' ','c','o','m', + 'p','i','l','e',' ','w','i','t','h',' ','o','p','t','i','m','i','z', + 'e','s',' ','a','n','d',' ','s','t','r','i','p',' ','d','e','b','u', + 'g','i','n','f','o',#13,#10,'#','I','F','D','E','F',' ','R','E','L', + 'E','A','S','E',#13,#10,' ',' ','-','O','G','2','p','3',#13,#10,' ', + ' ','-','X','s',#13,#10,' ',' ','#','W','R','I','T','E',' ','C','o', + 'm','p','i','l','i','n','g',' ','R','e','l','e','a','s','e',' ','V', + 'e','r','s','i','o','n',#13,#10,'#','E','N','D','I','F',#13,#10,#13, + #10,'#',' ','F','o','r',' ','a',' ','d','e','b','u','g',' ','v','e', + 'r','s','i','o','n',' ','c','o','m','p','i','l','e',' ','w','i','t', + 'h',' ','d','e','b','u','g','i','n','f','o',' ','a','n','d',' ','a', + 'l','l',' ','c','o','d','e','g','e','n','e','r','a','t','i','o','n', + ' ','c','h','e','c','k','s',' ','o','n',#13,#10,'#','I','F','D','E', + 'F',' ','D','E','B','U','G',#13,#10,' ',' ','-','g',#13,#10,' ',' ', + '-','C','r','t','o','i',#13,#10,' ',' ','#','W','R','I','T','E',' ', + 'C','o','m','p','i','l','i','n','g',' ','D','e','b','u','g',' ','V', + 'e','r','s','i','o','n',#13,#10,'#','E','N','D','I','F',#13,#10,#13, + #10,'#',' ','-','-','-','-','-','-','-','-','-','-','-','-','-','-', + '-','-',#13,#10,'#',' ','P','a','r','s','i','n','g',' ','s','w','i', + 't','c','h','e','s',#13,#10,'#',' ','-','-','-','-','-','-','-','-', + '-','-','-','-','-','-','-','-',#13,#10,#13,#10,'#',' ','A','l','l', + ' ','a','s','s','e','m','b','l','e','r',' ','b','l','o','c','k','s', + ' ','a','r','e',' ','i','n','t','e','l',' ','s','t','y','l','e','d', + ' ','b','y',' ','d','e','f','a','u','l','t',#13,#10,'#','-','R','i', + 'n','t','e','l',#13,#10,#13,#10,'#',' ','A','l','l',' ','a','s','s', + 'e','m','b','l','e','r',' ','b','l','o','c','k','s',' ','a','r','e', + ' ','A','T','&','T',' ','s','t','y','l','e','d',' ','b','y',' ','d', + 'e','f','a','u','l','t',#13,#10,'#','-','R','a','t','t',#13,#10,#13, + #10,'#',' ','A','l','l',' ','a','s','s','e','m','b','l','e','r',' ', + 'b','l','o','c','k','s',' ','a','r','e',' ','d','i','r','e','c','t', + 'l','y',' ','c','o','p','i','e','d',' ','t','o',' ','a','s','m',#13, + #10,'#','-','R','d','i','r','e','c','t',#13,#10,#13,#10,'#',' ','S', + 'e','m','a','n','t','i','c',' ','c','h','e','c','k','i','n','g',#13, + #10,'#',' ',' ','-','S','2',' ',' ',' ',' ',' ',' ',' ',' ','s','w', + 'i','t','c','h',' ','s','o','m','e',' ','D','e','l','p','h','i',' ', + '2',' ','e','x','t','e','n','s','i','o','n','s',' ','o','n',#13,#10, + '#',' ',' ','-','S','c',' ',' ',' ',' ',' ',' ',' ',' ','s','u','p', + 'p','o','r','t','s',' ','o','p','e','r','a','t','o','r','s',' ','l', + 'i','k','e',' ','C',' ','(','*','=',',','+','=',',','/','=',' ','a', + 'n','d',' ','-','=',')',#13,#10,'#',' ',' ','-','S','d',' ',' ',' ', + ' ',' ',' ',' ',' ','t','r','i','e','s',' ','t','o',' ','b','e',' ', + 'D','e','l','p','h','i',' ','c','o','m','p','a','t','i','b','l','e', + #13,#10,'#',' ',' ','-','S','e','<','x','>',' ',' ',' ',' ',' ','c', + 'o','m','p','i','l','e','r',' ','s','t','o','p','s',' ','a','f','t', + 'e','r',' ','t','h','e',' ','<','x','>',' ','e','r','r','o','r','s', + ' ','(','d','e','f','a','u','l','t',' ','i','s',' ','1',')',#13,#10, + '#',' ',' ','-','S','g',' ',' ',' ',' ',' ',' ',' ',' ','a','l','l', + 'o','w',' ','L','A','B','E','L',' ','a','n','d',' ','G','O','T','O', + #13,#10,'#',' ',' ','-','S','h',' ',' ',' ',' ',' ',' ',' ',' ','U', + 's','e',' ','a','n','s','i','s','t','r','i','n','g','s',#13,#10,'#', + ' ',' ','-','S','i',' ',' ',' ',' ',' ',' ',' ',' ','s','u','p','p', + 'o','r','t',' ','C','+','+',' ','s','t','y','l','e','d',' ','I','N', + 'L','I','N','E',#13,#10,'#',' ',' ','-','S','m',' ',' ',' ',' ',' ', + ' ',' ',' ','s','u','p','p','o','r','t',' ','m','a','c','r','o','s', + ' ','l','i','k','e',' ','C',' ','(','g','l','o','b','a','l',')',#13, + #10,'#',' ',' ','-','S','o',' ',' ',' ',' ',' ',' ',' ',' ','t','r', + 'i','e','s',' ','t','o',' ','b','e',' ','T','P','/','B','P',' ','7', + '.','0',' ','c','o','m','p','a','t','i','b','l','e',#13,#10,'#',' ', + ' ','-','S','p',' ',' ',' ',' ',' ',' ',' ',' ','t','r','i','e','s', + ' ','t','o',' ','b','e',' ','g','p','c',' ','c','o','m','p','a','t', + 'i','b','l','e',#13,#10,'#',' ',' ','-','S','s',' ',' ',' ',' ',' ', + ' ',' ',' ','c','o','n','s','t','r','u','c','t','o','r',' ','n','a', + 'm','e',' ','m','u','s','t',' ','b','e',' ','i','n','i','t',' ','(', + 'd','e','s','t','r','u','c','t','o','r',' ','m','u','s','t',' ','b', + 'e',' ','d','o','n','e',')',#13,#10,'#',' ',' ','-','S','t',' ',' ', + ' ',' ',' ',' ',' ',' ','a','l','l','o','w',' ','s','t','a','t','i', + 'c',' ','k','e','y','w','o','r','d',' ','i','n',' ','o','b','j','e', + 'c','t','s',#13,#10,'#',' ','A','l','l','o','w',' ','g','o','t','o', + ',',' ','i','n','l','i','n','e',',',' ','C','-','o','p','e','r','a', + 't','o','r','s',#13,#10,'-','S','g','i','c',#13,#10,#13,#10,'#',' ', + '-','-','-','-','-','-','-','-','-','-','-','-','-','-','-',#13,#10, + '#',' ','C','o','d','e',' ','g','e','n','e','r','a','t','i','o','n', + #13,#10,'#',' ','-','-','-','-','-','-','-','-','-','-','-','-','-', + '-','-',#13,#10,#13,#10,'#',' ','U','n','c','o','m','m','e','n','t', + ' ','t','h','e',' ','n','e','x','t',' ','l','i','n','e',' ','i','f', + ' ','y','o','u',' ','a','l','w','a','y','s',' ','w','a','n','t',' ', + 's','t','a','t','i','c','/','d','y','n','a','m','i','c',' ','u','n', + 'i','t','s',' ','b','y',' ','d','e','f','a','u','l','t',#13,#10,'#', + ' ','(','c','a','n',' ','b','e',' ','o','v','e','r','r','u','l','e', + 'd',' ','w','i','t','h',' ','-','C','D',',',' ','-','C','S',' ','a', + 't',' ','t','h','e',' ','c','o','m','m','a','n','d','l','i','n','e', + ')',#13,#10,'#','-','C','S',#13,#10,'#','-','C','D',#13,#10,#13,#10, + '#',' ','S','e','t',' ','t','h','e',' ','d','e','f','a','u','l','t', + ' ','h','e','a','p','s','i','z','e',' ','t','o',' ','8','M','b',#13, + #10,'#','-','C','h','8','0','0','0','0','0','0',#13,#10,#13,#10,'#', + ' ','S','e','t',' ','d','e','f','a','u','l','t',' ','c','o','d','e', + 'g','e','n','e','r','a','t','i','o','n',' ','c','h','e','c','k','s', + ' ','(','i','o','c','h','e','c','k',',',' ','o','v','e','r','f','l', + 'o','w',',',' ','r','a','n','g','e',',',' ','s','t','a','c','k',')', + #13,#10,'#','-','C','i',#13,#10,'#','-','C','o',#13,#10,'#','-','C', + 'r',#13,#10,'#','-','C','t',#13,#10,#13,#10,'#',' ','O','p','t','i', + 'm','i','z','e','r',' ','s','w','i','t','c','h','e','s',#13,#10,'#', + ' ','-','O','g',' ',' ',' ',' ',' ',' ',' ',' ','g','e','n','e','r', + 'a','t','e',' ','s','m','a','l','l','e','r',' ','c','o','d','e',#13, + #10,'#',' ','-','O','G',' ',' ',' ',' ',' ',' ',' ',' ','g','e','n', + 'e','r','a','t','e',' ','f','a','s','t','e','r',' ','c','o','d','e', + ' ','(','d','e','f','a','u','l','t',')',#13,#10,'#',' ','-','O','r', + ' ',' ',' ',' ',' ',' ',' ',' ','k','e','e','p',' ','c','e','r','t', + 'a','i','n',' ','v','a','r','i','a','b','l','e','s',' ','i','n',' ', + 'r','e','g','i','s','t','e','r','s',' ','(','s','t','i','l','l',' ', + 'B','U','G','G','Y','!','!','!',')',#13,#10,'#',' ','-','O','u',' ', + ' ',' ',' ',' ',' ',' ',' ','e','n','a','b','l','e',' ','u','n','c', + 'e','r','t','a','i','n',' ','o','p','t','i','m','i','z','a','t','i', + 'o','n','s',' ','(','s','e','e',' ','d','o','c','s',')',#13,#10,'#', + ' ','-','O','1',' ',' ',' ',' ',' ',' ',' ',' ','l','e','v','e','l', + ' ','1',' ','o','p','t','i','m','i','z','a','t','i','o','n','s',' ', + '(','q','u','i','c','k',' ','o','p','t','i','m','i','z','a','t','i', + 'o','n','s',')',#13,#10,'#',' ','-','O','2',' ',' ',' ',' ',' ',' ', + ' ',' ','l','e','v','e','l',' ','2',' ','o','p','t','i','m','i','z', + 'a','t','i','o','n','s',' ','(','-','O','1',' ','+',' ','s','l','o', + 'w','e','r',' ','o','p','t','i','m','i','z','a','t','i','o','n','s', + ')',#13,#10,'#',' ','-','O','3',' ',' ',' ',' ',' ',' ',' ',' ','l', + 'e','v','e','l',' ','3',' ','o','p','t','i','m','i','z','a','t','i', + 'o','n','s',' ','(','s','a','m','e',' ','a','s',' ','-','O','2','u', + ')',#13,#10,'#',' ','-','O','p',' ',' ',' ',' ',' ',' ',' ',' ','t', + 'a','r','g','e','t',' ','p','r','o','c','e','s','s','o','r',#13,#10, + '#',' ',' ',' ',' ',' ','-','O','p','1',' ',' ','s','e','t',' ','t', + 'a','r','g','e','t',' ','p','r','o','c','e','s','s','o','r',' ','t', + 'o',' ','3','8','6','/','4','8','6',#13,#10,'#',' ',' ',' ',' ',' ', + '-','O','p','2',' ',' ','s','e','t',' ','t','a','r','g','e','t',' ', + 'p','r','o','c','e','s','s','o','r',' ','t','o',' ','P','e','n','t', + 'i','u','m','/','P','e','n','t','i','u','m','M','M','X',' ','(','t', + 'm',')',#13,#10,'#',' ',' ',' ',' ',' ','-','O','p','3',' ',' ','s', + 'e','t',' ','t','a','r','g','e','t',' ','p','r','o','c','e','s','s', + 'o','r',' ','t','o',' ','P','P','r','o','/','P','I','I','/','c','6', + 'x','8','6','/','K','6',' ','(','t','m',')',#13,#10,#13,#10,'#',' ', + 'O','p','t','i','m','i','z','e',' ','a','l','w','a','y','s',' ','f', + 'o','r',' ','S','i','z','e',' ','a','n','d',' ','P','e','n','t','i', + 'u','m','I','I',#13,#10,'#','-','O','g','2','p','3',#13,#10,#13,#10, + #13,#10,'#',' ','-','-','-','-','-','-','-','-','-','-','-','-','-', + '-','-','-','-','-','-','-','-','-','-',#13,#10,'#',' ','S','e','t', + ' ','F','i','l','e','n','a','m','e','s',' ','a','n','d',' ','P','a', + 't','h','s',#13,#10,'#',' ','-','-','-','-','-','-','-','-','-','-', + '-','-','-','-','-','-','-','-','-','-','-','-','-',#13,#10,#13,#10, + '#',' ','B','o','t','h',' ','s','l','a','s','h','e','s',' ','a','n', + 'd',' ','b','a','c','k','s','l','a','s','h','e','s',' ','a','r','e', + ' ','a','l','l','o','w','e','d',' ','i','n',' ','p','a','t','h','s', + #13,#10,#13,#10,'#',' ','p','a','t','h',' ','t','o',' ','t','h','e', + ' ','m','e','s','s','a','g','e','f','i','l','e',',',' ','n','o','t', + ' ','n','e','c','e','s','s','a','r','y',' ','a','n','y','m','o','r', + 'e',' ','b','u','t',' ','c','a','n',' ','b','e',' ','u','s','e','d', + ' ','t','o',' ','o','v','e','r','r','i','d','e',#13,#10,'#',' ','t', + 'h','e',' ','d','e','f','a','u','l','t',' ','l','a','n','g','u','a', + 'g','e',#13,#10,'#','-','F','r','%','b','a','s','e','p','a','t','h', + '%','/','m','s','g','/','e','r','r','o','r','e','.','m','s','g',#13, + #10,'#','-','F','r','%','b','a','s','e','p','a','t','h','%','/','m', + 's','g','/','e','r','r','o','r','n','.','m','s','g',#13,#10,'#','-', + 'F','r','%','b','a','s','e','p','a','t','h','%','/','m','s','g','/', + 'e','r','r','o','r','e','s','.','m','s','g',#13,#10,'#','-','F','r', + '%','b','a','s','e','p','a','t','h','%','/','m','s','g','/','e','r', + 'r','o','r','d','.','m','s','g',#13,#10,'#','-','F','r','%','b','a', + 's','e','p','a','t','h','%','/','m','s','g','/','e','r','r','o','r', + 'r','.','m','s','g',#13,#10,#13,#10,'#',' ','p','a','t','h',' ','t', + 'o',' ','t','h','e',' ','g','c','c','l','i','b',#13,#10,'#','-','F', + 'l','%','b','a','s','e','p','a','t','h','%','/','l','i','b',#13,#10, + #13,#10,'#',' ','s','e','a','r','c','h','p','a','t','h',' ','f','o', + 'r',' ','i','n','c','l','u','d','e','f','i','l','e','s',#13,#10,'#', + ' ','r','e','l','e','a','s','e',' ','t','h','e','m',' ','o','n','l', + 'y',' ','i','f',' ','y','o','u',' ','k','n','o','w',' ','w','h','a', + 't',' ','y','o','u',' ','d','o',#13,#10,'#',' ','b','e','c','a','u', + 's','e',' ','t','h','i','s',' ','c','o','u','l','d',' ','c','a','u', + 's','e',' ','a',' ','r','e','b','u','i','l','d',' ','o','f',' ','t', + 'h','e',' ','r','u','n','t','i','m','e',' ','l','i','b','r','a','r', + 'y',#13,#10,'#',' ','i','f',' ','y','o','u',' ','t','e','l','l',' ', + 't','h','e','m',' ','c','o','m','p','i','l','e','r','/','i','d','e', + ' ','t','o',' ','b','u','i','l','d',' ','t','h','e',' ','p','r','o', + 'j','e','c','t',' ','(','F','K',')',#13,#10,'#','-','F','i','%','b', + 'a','s','e','p','a','t','h','%','/','s','o','u','r','c','e','/','r', + 't','l','/','i','n','c',';','%','b','a','s','e','p','a','t','h','%', + '/','s','o','u','r','c','e','/','r','t','l','/','i','3','8','6',#13, + #10,#13,#10,'#',' ','s','e','a','r','c','h','p','a','t','h',' ','f', + 'o','r',' ','o','b','j','e','c','t','f','i','l','e','s',#13,#10,'#', + '-','F','o','%','b','a','s','e','p','a','t','h','%','/','s','o','u', + 'r','c','e','/','r','t','l','/','i','n','c',';','%','b','a','s','e', + 'p','a','t','h','%','/','s','o','u','r','c','e','/','r','t','l','/', + 'i','3','8','6',#13,#10,#13,#10,'#',' ','s','e','a','r','c','h','p', + 'a','t','h',' ','f','o','r',' ','u','n','i','t','s',' ','a','n','d', + ' ','o','t','h','e','r',' ','s','y','s','t','e','m',' ','d','e','p', + 'e','n','d','e','n','t',' ','t','h','i','n','g','s',#13,#10,'-','F', + 'u','%','b','a','s','e','p','a','t','h','%','/','u','n','i','t','s', + '/','$','F','P','C','T','A','R','G','E','T','/',#13,#10,'-','F','u', + '%','b','a','s','e','p','a','t','h','%','/','u','n','i','t','s','/', + '$','F','P','C','T','A','R','G','E','T','/','*',#13,#10,'-','F','u', + '%','b','a','s','e','p','a','t','h','%','/','u','n','i','t','s','/', + '$','F','P','C','T','A','R','G','E','T','/','r','t','l',#13,#10,#13, + #10,'#',' ','s','e','a','r','c','h','p','a','t','h',' ','f','o','r', + ' ','l','i','b','r','a','r','i','e','s',#13,#10,'#','-','F','l','%', + 'b','a','s','e','p','a','t','h','%','/','l','i','b',#13,#10,'#','-', + 'F','l','/','l','i','b',';','/','u','s','r','/','l','i','b',#13,#10, + #13,#10,'#',' ','s','e','a','r','c','h','p','a','t','h',' ','f','o', + 'r',' ','t','o','o','l','s',#13,#10,'-','F','D','%','b','a','s','e', + 'p','a','t','h','%','/','b','i','n','/','$','F','P','C','T','A','R', + 'G','E','T',#13,#10,#13,#10,'#',' ','-','-','-','-','-','-','-','-', + '-','-','-','-','-',#13,#10,'#',' ','L','i','n','k','i','n','g',#13, + #10,'#',' ','-','-','-','-','-','-','-','-','-','-','-','-','-',#13, + #10,#13,#10,'#',' ','g','e','n','e','r','a','t','e',' ','a','l','w', + 'a','y','s',' ','d','e','b','u','g','g','i','n','g',' ','i','n','f', + 'o','r','m','a','t','i','o','n',' ','f','o','r',' ','G','D','B',' ', + '(','s','l','o','w','s',' ','d','o','w','n',' ','t','h','e',' ','c', + 'o','m','p','i','l','i','n','g',#13,#10,'#',' ','p','r','o','c','e', + 's','s',')',#13,#10,'#','-','g','l',#13,#10,#13,#10,'#',' ','a','l', + 'w','a','y','s',' ','p','a','s','s',' ','a','n',' ','o','p','t','i', + 'o','n',' ','t','o',' ','t','h','e',' ','l','i','n','k','e','r',#13, + #10,'#','-','k','-','s',#13,#10,#13,#10,'#',' ','A','l','w','a','y', + 's',' ','s','t','r','i','p',' ','d','e','b','u','g','i','n','f','o', + ' ','f','r','o','m',' ','t','h','e',' ','e','x','e','c','u','t','a', + 'b','l','e',#13,#10,'-','X','s',#13,#10,#13,#10,#13,#10,'#',' ','-', + '-','-','-','-','-','-','-','-','-','-','-','-',#13,#10,'#',' ','M', + 'i','s','c','e','l','l','a','n','e','o','u','s',#13,#10,'#',' ','-', + '-','-','-','-','-','-','-','-','-','-','-','-',#13,#10,#13,#10,'#', + ' ','W','r','i','t','e',' ','a','l','w','a','y','s',' ','a',' ','n', + 'i','c','e',' ','F','P','C',' ','l','o','g','o',' ',';',')',#13,#10, + '-','l',#13,#10,#13,#10,'#',' ','V','e','r','b','o','s','i','t','y', + #13,#10,'#',' ','e',' ',':',' ','S','h','o','w',' ','e','r','r','o', + 'r','s',' ','(','d','e','f','a','u','l','t',')',' ',' ',' ',' ',' ', + ' ',' ','d',' ',':',' ','S','h','o','w',' ','d','e','b','u','g',' ', + 'i','n','f','o',#13,#10,'#',' ','w',' ',':',' ','S','h','o','w',' ', + 'w','a','r','n','i','n','g','s',' ',' ',' ',' ',' ',' ',' ',' ',' ', + ' ',' ',' ',' ',' ',' ','u',' ',':',' ','S','h','o','w',' ','u','s', + 'e','d',' ','f','i','l','e','s',#13,#10,'#',' ','n',' ',':',' ','S', + 'h','o','w',' ','n','o','t','e','s',' ',' ',' ',' ',' ',' ',' ',' ', + ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','t',' ',':',' ','S','h','o', + 'w',' ','t','r','i','e','d',' ','f','i','l','e','s',#13,#10,'#',' ', + 'h',' ',':',' ','S','h','o','w',' ','h','i','n','t','s',' ',' ',' ', + ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','m',' ', + ':',' ','S','h','o','w',' ','d','e','f','i','n','e','d',' ','m','a', + 'c','r','o','s',#13,#10,'#',' ','i',' ',':',' ','S','h','o','w',' ', + 'g','e','n','e','r','a','l',' ','i','n','f','o',' ',' ',' ',' ',' ', + ' ',' ',' ',' ',' ',' ','p',' ',':',' ','S','h','o','w',' ','c','o', + 'm','p','i','l','e','d',' ','p','r','o','c','e','d','u','r','e','s', + #13,#10,'#',' ','l',' ',':',' ','S','h','o','w',' ','l','i','n','e', + 'n','u','m','b','e','r','s',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', + ' ',' ','c',' ',':',' ','S','h','o','w',' ','c','o','n','d','i','t', + 'i','o','n','a','l','s',#13,#10,'#',' ','a',' ',':',' ','S','h','o', + 'w',' ','e','v','e','r','y','t','h','i','n','g',' ',' ',' ',' ',' ', + ' ',' ',' ',' ',' ',' ',' ',' ','0',' ',':',' ','S','h','o','w',' ', + 'n','o','t','h','i','n','g',' ','(','e','x','c','e','p','t',' ','e', + 'r','r','o','r','s',')',#13,#10,#13,#10,'#',' ','D','i','s','p','l', + 'a','y',' ','I','n','f','o',',',' ','W','a','r','n','i','n','g','s', + ',',' ','N','o','t','e','s',' ','a','n','d',' ','H','i','n','t','s', + #13,#10,'-','v','i','w','n',#13,#10,'#',' ','I','f',' ','y','o','u', + ' ','d','o','n',#39,'t',' ','w','a','n','t',' ','s','o',' ','m','u', + 'c','h',' ','v','e','r','b','o','s','i','t','y',' ','u','s','e',#13, + #10,'#','-','v','w',#13,#10,#13,#10); diff --git a/install/fpcmkcfg.pp b/install/fpcmkcfg.pp new file mode 100644 index 0000000000..00c7f0cad4 --- /dev/null +++ b/install/fpcmkcfg.pp @@ -0,0 +1,240 @@ +{$mode objfpc} +{$H+} +{ + $Id$ + This file is part of Free Pascal Build tools + Copyright (c) 2005 by Michael Van Canneyt + + Create a configuration file + + See the file COPYING.FPC, included in this distribution, + for details about the copyright. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + **********************************************************************} +program fpcmkcfg; + +uses usubst,SysUtils,Classes; + +{ + The fpccfg.inc file must be built from a template with the bin2obj + command. it needs options: + bin2obj -a -o fpccfg.inc -c DefaultConfig fpc.cft + where fpc.cft is the template file. +} + +{$i fpccfg.inc} + +Const + BuildVersion={$I %FPCVERSION%}; + BuildTarget={$I %FPCTARGET%}; + + +Resourcestring + SUsage00 = 'Usage: %s [options]'; + SUsage10 = 'Where options is one or more of'; + SUSage20 = ' -t filename Template file name. Default is built-in'; + SUSage30 = ' -o filename Set output file. Default is standard output.'; + SUsage40 = ' -d name=value define name=value pair.'; + SUsage50 = ' -h show this help and exit.'; + SUsage60 = ' -u name remove name from list of name/value pairs.'; + SUsage70 = ' -l filename read name/value pairs from filename'; + SUsage80 = ' -b show builtin template and exit.'; + SUsage90 = ' -v be verbose.'; + SErrUnknownOption = 'Error: Unknown option.'; + SErrArgExpected = 'Error: Option "%s" requires an argument.'; + SErrNoSuchFile = 'Error: File "%s" does not exist.'; + SErrBackupFailed = 'Error: Backup of file "%s" to "%s" failed.'; + SErrDelBackupFailed = 'Error: Delete of old backup file "%s" failed.'; + SWarnIgnoringFile = 'Warning: Ignoring non-existent file: '; + SWarnIgnoringPair = 'Warning: ignoring wrong name/value pair: '; + SStats = 'Replaced %d placeholders in %d lines.'; + SSubstInLine = 'Replaced %s placeholders in line %d.'; + + +Var + Verbose : Boolean; + SkipBackup : Boolean; + List,Cfg : TStringList; + TemplateFileName, + OutputFileName : String; + + + + +procedure Init; + +begin + Verbose:=False; + List:=TStringList.Create; + AddToList(List,'FPCVERSION',BuildVersion); + AddToList(List,'FPCTARGET',BuildTarget); + AddToList(List,'PWD',GetCurrentDir); + AddToList(List,'BUILDDATE',DateToStr(Date)); + AddToList(List,'BUILDTIME',TimeToStr(Time)); + Cfg:=TStringList.Create; + Cfg.Text:=StrPas(Addr(DefaultConfig)); +end; + +Procedure Done; + +begin + FreeAndNil(List); + FreeAndNil(Cfg); +end; + +Procedure Usage; + +begin + Writeln(Format(SUsage00,[ExtractFileName(Paramstr(0))])); + Writeln(SUsage10); + Writeln(SUsage20); + Writeln(SUsage30); + Writeln(SUsage40); + Writeln(SUsage50); + Writeln(SUsage60); + Writeln(SUsage70); + Writeln(SUsage80); + Writeln(SUsage90); + Halt(1); +end; + +Procedure UnknownOption(Const S : String); + +begin + Writeln(SErrUnknownOption,S); + Usage; +end; + +Procedure ShowBuiltIn; + +Var + I : Integer; + + +begin + For I:=0 to Cfg.Count-1 do + Writeln(Cfg[I]); +end; + + +Procedure ProcessCommandline; + +Var + I,P,l : Integer; + T,S : String; + + Function GetOptArg : String; + + begin + If I=ParamCount then + begin + Writeln(StdErr,Format(SErrArgExpected,[S])); + Halt(1); + end; + inc(I); + Result:=ParamStr(I); + end; + +begin + I:=1; + While( I<=ParamCount) do + begin + S:=Paramstr(i); + If Length(S)<=1 then + UnknownOption(S) + else + case S[2] of + 'v' : Verbose:=True; + 'h' : Usage; + 'b' : begin + ShowBuiltin; + halt(0); + end; + 't' : TemplateFileName:=GetOptArg; + 'd' : AddPair(List,GetOptArg); + 'u' : AddPair(List,GetOptArg+'='); + 'o' : OutputFileName:=GetoptArg; + 's' : SkipBackup:=True; + else + UnknownOption(S); + end; + Inc(I); + end; + If (TemplateFileName<>'') then + begin + If Not FileExists(TemplateFileName) then + begin + Writeln(StdErr,Format(SErrNoSuchFile,[TemplateFileName])); + Halt(1); + end; + Cfg.LoadFromFile(TemplateFileName); + AddToList(List,'TEMPLATEFILE',TemplateFileName); + end + else + AddToList(List,'TEMPLATEFILE','builtin'); +end; + + +Procedure CreateFile; + +Var + Fout : Text; + S,BFN : String; + I,RCount : INteger; + +begin + If (OutputFileName<>'') + and FileExists(OutputFileName) + and not SkipBackup then + begin + BFN:=ChangeFileExt(OutputFileName,'.bak'); + If FileExists(BFN) and not DeleteFile(BFN) then + begin + Writeln(StdErr,Format(SErrDelBackupFailed,[BFN])); + Halt(1); + end; + If not RenameFile(OutputFileName,BFN) then + begin + Writeln(StdErr,Format(SErrBackupFailed,[OutputFileName,BFN])); + Halt(1); + end; + end; + Assign(Fout,OutputFileName); + Rewrite(FOut); + Try + For I:=0 to Cfg.Count-1 do + begin + S:=Cfg[i]; + Inc(RCount,DoSubstitutions(List,S)); + Writeln(FOut,S); + end; + If Verbose then + Writeln(StdErr,Format(SStats,[RCount,Cfg.Count])); + Finally + Close(Fout); + end; +end; + +begin + Init; + Try + ProcessCommandLine; + CreateFile; + Finally + Done; + end; +end. +{ + $Log$ + Revision 1.1 2005-01-09 13:36:12 michael + + Initial implementation of installer tools + + Revision 1.2 2002/09/07 15:40:47 peter + * old logs removed and tabs fixed + +} + diff --git a/install/fpcsubst.pp b/install/fpcsubst.pp new file mode 100644 index 0000000000..ba2ad5abef --- /dev/null +++ b/install/fpcsubst.pp @@ -0,0 +1,242 @@ +{$Mode objfpc} +{$H+} +program fpcsubst; + +uses SysUtils,Classes,Usubst; + +Const + BuildVersion={$I %FPCVERSION%}; + BuildTarget={$I %FPCTARGET%}; + +Resourcestring + SUsage00 = 'Usage: %s [options]'; + SUsage10 = 'Where options is one or more of'; + SUSage20 = ' -i filename Set input file. Default is standard input'; + SUSage30 = ' -o filename Set output file. Default is standard output.'; + SUsage40 = ' -d name=value define name=value pair.'; + SUsage50 = ' -h show this help and exit.'; + SUsage60 = ' -u name remove name from list of name/value pairs.'; + SUsage70 = ' -l filename read name/value pairs from filename'; + SUsage80 = ' -b show builtin list and exit.'; + SUsage90 = ' -v be verbose.'; + SErrUnknownOption = 'Error: Unknown option.'; + SErrArgExpected = 'Error: Option "%s" requires an argument.'; + SErrNoSuchFile = 'Error: File "%s" does not exist.'; + SErrBackupFailed = 'Error: Backup of file "%s" to "%s" failed.'; + SErrDelBackupFailed = 'Error: Delete of old backup file "%s" failed.'; + SWarnIgnoringFile = 'Warning: Ignoring non-existent file: '; + SWarnIgnoringPair = 'Warning: ignoring wrong name/value pair: '; + SStats = 'Replaced %d placeholders in %d lines.'; + SSubstInLine = 'Replaced %s placeholders in line %d.'; + + +Var + List : TStringList; + InputFileName : String; + OutputFileName : String; + Verbose : Boolean; + SkipBackup : Boolean; + + + + + +procedure Init; + +begin + Verbose:=False; + List:=TStringList.Create; + AddToList(List,'FPCVERSION',BuildVersion); + AddToList(List,'FPCTARGET',BuildTarget); + AddToList(List,'PWD',GetCurrentDir); + AddToList(List,'BUILDDATE',DateToStr(Date)); + AddToList(List,'BUILDTIME',TimeToStr(Time)); +end; + +Procedure Done; + +begin + FreeAndNil(List); +end; + +Procedure Usage; + +begin + Writeln(Format(SUsage00,[ExtractFileName(Paramstr(0))])); + Writeln(SUsage10); + Writeln(SUsage20); + Writeln(SUsage30); + Writeln(SUsage40); + Writeln(SUsage50); + Writeln(SUsage60); + Writeln(SUsage70); + Writeln(SUsage80); + Writeln(SUsage90); + Halt(1); +end; + +Procedure ShowBuiltIns; + +var + I : Integer; + +begin + for I:=0 to List.Count-1 do + Writeln(List[i]); +end; + + + + +Procedure AddFromFile(FN : String); + +Var + F : Text; + S : String; + +begin + If Not FileExists(FN) then + begin + Writeln(StdErr,SWarnIgnoringFile,FN); + Exit; + end; + Assign(F,FN); + Reset(F); + Try + While not EOF(F) do + begin + ReadLn(F,S); + If (Length(S)>0) and (not (S[1] in ['#',';'])) then + If not AddPair(List,S) then + If Verbose then + Writeln(StdErr,SWarnIgnoringPair,S) + end; + finally + Close(F); + end; +end; + +Procedure UnknownOption(Const S : String); + +begin + Writeln(SErrUnknownOption,S); + Usage; +end; + +Procedure ProcessCommandline; + +Var + I,P,l : Integer; + T,S : String; + + Function GetOptArg : String; + + begin + If I=ParamCount then + begin + Writeln(StdErr,Format(SErrArgExpected,[S])); + Halt(1); + end; + inc(I); + Result:=ParamStr(I); + end; + +begin + I:=1; + While( I<=ParamCount) do + begin + S:=Paramstr(i); + If (Length(S)<=1) or (S[1]<>'-') then + UnknownOption(S) + else + case S[2] of + 'v' : Verbose:=True; + 'h' : Usage; + 'b' : begin + ShowBuiltins; + halt(0); + end; + 'l' : AddFromFile(GetOptArg); + 'd' : AddPair(List,GetOptArg); + 'u' : AddPair(List,GetOptArg+'='); + 'i' : InputFileName:=GetOptArg; + 'o' : OutputFileName:=GetoptArg; + 's' : SkipBackup:=True; + else + UnknownOption(S); + end; + Inc(I); + end; +end; + + + +Procedure DoFile; + +Var + Fin,Fout : Text; + S,BFN : String; + N,LCount,RCount : Integer; + + +begin + If (InputFileName<>'') and not FileExists(InputFIleName) then + begin + Writeln(StdErr,Format(SErrNoSuchFile,[InputFileName])); + Halt(1) + end; + If (OutputFileName<>'') + and FileExists(OutputFileName) + and not SkipBackup then + begin + BFN:=ChangeFileExt(OutputFileName,'.bak'); + If FileExists(BFN) and not DeleteFile(BFN) then + begin + Writeln(StdErr,Format(SErrDelBackupFailed,[BFN])); + Halt(1); + end; + If not RenameFile(OutputFileName,BFN) then + begin + Writeln(StdErr,Format(SErrBackupFailed,[OutputFileName,BFN])); + Halt(1); + end; + end; + Assign(Fin,InputFileName); + Assign(Fout,OutputFileName); + Reset(Fin); + Try + Rewrite(FOut); + Try + LCount:=0; + RCount:=0; + While Not EOF(Fin) do + begin + Inc(LCount); + ReadLn(Fin,S); + N:=DoSubstitutions(List,S); + If Verbose and (N>0) then + Writeln(StdErr,Format(SSubstInLine,[N,LCount])); + Inc(RCount,N); + Writeln(Fout,S); + end; + If Verbose then + Writeln(StdErr,Format(SStats,[RCount,LCount])); + Finally + Close(Fout); + end; + Finally + Close(Fin); + end; + +end; + +begin + Init; + Try + ProcessCommandLine; + DoFile; + Finally + Done; + end; +end. + diff --git a/install/usubst.pp b/install/usubst.pp new file mode 100644 index 0000000000..4d53bed07a --- /dev/null +++ b/install/usubst.pp @@ -0,0 +1,119 @@ +{$mode objfpc} +{$H+} +{ + $Id$ + This file is part of Free Pascal build tools + Copyright (c) 2005 by Michael Van Canneyt + + Implements string substitutions + + See the file COPYING.FPC, included in this distribution, + for details about the copyright. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + **********************************************************************} +unit usubst; + +interface + +uses SysUtils,Classes; + +// Add N=V pair to list. +Procedure AddToList(List : TStrings; Const N,V : String); +// Split NV to N/V and call AddToList +Function AddPair(List : TStrings; Const NV : String) : Boolean; +// Perform substitutions in S, from List. +Function DoSubStitutions(List : TStrings; Var S : String) : Integer; + +implementation + +Procedure AddToList(List : TStrings; Const N,V : String); + +var + I : Integer; + +begin + I:=List.IndexOfName(N); + If (V='') then + begin + If (I<>-1) then + List.Delete(I) + end + else + begin + If (I=-1) then + List.Add(N+'='+V) + else + List[I]:=N+'='+V; + end; +end; + +Function AddPair(List : TStrings; Const NV : String) : Boolean; + +Var + P,I : Integer; + N,V : string; + +begin + P:=Pos('=',NV); + Result:=(P<>0); + If Result then + begin + V:=NV; + N:=Copy(V,1,P-1); + Delete(V,1,P); + AddToList(List,N,V); + end; +end; + +Function DoSubstitutions(List : TStrings; Var S : String) : Integer; + +Var + N,T : String; + P : Integer; + +begin + Result:=0; + T:=S; + S:=''; + P:=Pos('%',T); + While (P>0) do + begin + S:=S+Copy(T,1,P-1); + Delete(T,1,P); + If (Length(T)>0) then + if (T[1]='%') then + begin + S:=S+'%'; + Delete(T,1,1); + end + else + begin + P:=Pos('%',T); + If (P=0) then + S:=S+'%' + else + begin + N:=Copy(T,1,P-1); + Delete(T,1,P); + S:=S+List.Values[N]; + end; + end; + P:=Pos('%',T); + end; + S:=S+T; +end; + +end. +{ + $Log$ + Revision 1.1 2005-01-09 13:36:12 michael + + Initial implementation of installer tools + + +} + +