+ Initial implementation of installer tools

This commit is contained in:
michael 2005-01-09 13:36:12 +00:00
parent 62915cd87e
commit 73bc40037f
8 changed files with 3618 additions and 0 deletions

2222
install/Makefile Normal file

File diff suppressed because it is too large Load Diff

40
install/Makefile.fpc Normal file
View File

@ -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)

173
install/fpc.cft Normal file
View File

@ -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<x> compiler stops after the <x> 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

307
install/fpc.ist Normal file
View File

@ -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""";

275
install/fpccfg.inc Normal file
View File

@ -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);

240
install/fpcmkcfg.pp Normal file
View File

@ -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
}

242
install/fpcsubst.pp Normal file
View File

@ -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.

119
install/usubst.pp Normal file
View File

@ -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
}