mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 10:29:24 +02:00
+ Initial implementation of installer tools
This commit is contained in:
parent
62915cd87e
commit
73bc40037f
2222
install/Makefile
Normal file
2222
install/Makefile
Normal file
File diff suppressed because it is too large
Load Diff
40
install/Makefile.fpc
Normal file
40
install/Makefile.fpc
Normal 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
173
install/fpc.cft
Normal 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
307
install/fpc.ist
Normal 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
275
install/fpccfg.inc
Normal 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
240
install/fpcmkcfg.pp
Normal 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
242
install/fpcsubst.pp
Normal 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
119
install/usubst.pp
Normal 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
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user