* install updated to support w32 and dos and config file

This commit is contained in:
peter 1998-09-15 12:06:06 +00:00
parent cc3f66783c
commit 4e0d2d84bb
4 changed files with 735 additions and 242 deletions

195
install/install.dos Normal file
View File

@ -0,0 +1,195 @@
#
# Go32 Install file
#
title=Free Pascal Compiler for Go32v2
version=0.99.8
basepath=c:\pp
binsub=\bin
ppc386=ppc386
package=basego32.zip,~B~asic system for Go32v2 (required)
package=asldgo32.zip,GNU ~L~inker and GNU Assembler for Go32v2 (required)
package=gdbgo32.zip,GNU ~D~ebugger for Go32v2
package=gnuutils.zip,GNU ~U~tilities (required to recompile run time library)
package=demo.zip,D~e~mos
package=docs.zip,Documentation (~H~TML)
package=doc110ps.zip,Documentation (~P~ostscript)
package=rl0998s.zip,~R~un time library sources
package=pp0998s.zip,~C~ompiler sources
package=doc110s.zip,Documentation sources (La~T~eX)
cfgfile=ppc386.cfg
defaultcfg=
#
# Example ppc386.cfg for Free Pascal Compiler Version 0.99.8
#
# ----------------------
# Defines (preprocessor)
# ----------------------
#
# nested #IFNDEF, #IFDEF, #ENDIF, #ELSE, #DEFINE, #UNDEF are allowed
#
# -d is the same as #DEFINE
# -u is the same as #UNDEF
#
# When not m68k is defined at the commandline, define i386
#IFNDEF m68k
#DEFINE i386
#ENDIF
#
# 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
-OG2p2
-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
# Semantic checking
# -S2 switch some Delphi 2 extension on
# -Sc supports operators like C (*=,+=,/= and -=)
# -Sg allows LABEL and GOTO
# -Si support C++ stlyed INLINE
# -Sm support macros like C (global)
# -So tries to be TP/BP 7.0 compatible
# -Ss constructor name must be init (destructor must be done)
# -St allows static keyword in objects
# -Sv allow CVAR variable directive
# Allow goto, inline, C-operators, CVar directive
-Sgicv
# ---------------
# 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 Pentium
#-OG2p2
# -----------------------
# Set Filenames and Paths
# -----------------------
# Slashes are also allowed under dos
# path to the messagefile, not necessary anymore but can be used to override
# the default language
#-Fr$1/bin/errore.msg
#-Fr$1/bin/errorn.msg
# path to the gcclib
#-Fg$1/lib
# searchpath for includefiles
#-Fi$1/inc;$1/rtl/inc
# searchpath for units (does the same as -Up)
#IFDEF Go32V1
-Fu$1/rtl/dos/go32v1
#ENDIF
#IFDEF Go32V2
-Fu$1/rtl/dos/go32v2
#ENDIF
#IFDEF Win32
-Fu$1/rtl/dos/win32
#ENDIF
# searchpath for libraries
#-Fl$1/lib
#-Fl/lib;/usr/lib
# -------------
# Linking
# -------------
# generate always debugging information for GDB (slows down the compiling
# process)
#-g
# 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
-viwnh
# If you don't want so much verbosity use
#-vw
#
# That's all folks
#
endcfg

View File

@ -14,53 +14,110 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
**********************************************************************}
{$A+,B-,D+,E+,F-,G-,I-,L+,N-,O-,P-,Q+,R+,S+,T-,V-,X+,Y+}
program install;
uses
app,dialogs,views,objects,menus,drivers,strings,msgbox,dos,unzip,ziptypes;
var
binpath,startpath : string;
successfull : boolean;
const
version = '0';
release = '99';
patchlevel = '8';
maxpackages=20;
maxdefcfgs=200;
filenr = version+release+patchlevel;
cfgfile='install.dat';
doc_version = '110';
type
tpackage=record
name : string[60];
zip : string[12];
end;
cfgrec=record
title : string[80];
version : string[20];
basepath : string[80];
binsub : string[12];
ppc386 : string[12];
packages : longint;
package : array[1..maxpackages] of tpackage;
defcfgfile : string[12];
defcfgs : longint;
defcfg : array[1..maxdefcfgs] of pstring;
end;
datarec=record
basepath : string[80];
mask : word;
end;
var
startpath : string;
successfull : boolean;
cfg : cfgrec;
data : datarec;
{*****************************************************************************
Helpers
*****************************************************************************}
procedure uppervar(var s : string);
var
i : integer;
function packagemask(i:longint):longint;
begin
for i:=1 to length(s) do
s[i]:=upcase(s[i]);
packagemask:=1 shl (i-1);
end;
function file_exists(const f : string;const path : string) : boolean;
function upper(const s : string):string;
var
i : integer;
begin
for i:=1 to length(s) do
if s[i] in ['a'..'z'] then
upper[i]:=chr(ord(s[i])-32)
else
upper[i]:=s[i];
upper[0]:=s[0];
end;
function lower(const s : string):string;
var
i : integer;
begin
for i:=1 to length(s) do
if s[i] in ['A'..'Z'] then
lower[i]:=chr(ord(s[i])+32)
else
lower[i]:=s[i];
lower[0]:=s[0];
end;
procedure Replace(var s:string;const s1,s2:string);
var
i : longint;
begin
repeat
i:=pos(s1,s);
if i>0 then
begin
Delete(s,i,length(s1));
Insert(s2,s,i);
end;
until i=0;
end;
function file_exists(const f : string;const path : string) : boolean;
begin
file_exists:=fsearch(f,path)<>'';
end;
function diskspace(const path,zipfile : string) : string;
function diskspace(const zipfile : string) : string;
var
compressed,uncompressed : longint;
s : string;
begin
s:=path+zipfile+#0;
s:=zipfile+#0;
uncompressed:=UnzipSize(@s[1],compressed);
uncompressed:=uncompressed shr 10;
str(uncompressed,s);
@ -68,43 +125,164 @@ program install;
end;
function createdir(const s : string) : boolean;
function createdir(var s : string) : boolean;
var
result : longint;
result : longint;
dir : searchrec;
params : array[0..0] of pointer;
begin
chdir(s);
if ioresult=0 then
if s[length(s)]='\' then
dec(s[0]);
s:=lower(s);
FindFirst(s,$ff,dir);
if doserror=0 then
begin
result:=messagebox('The installation directory exists already. '+
'Do want to enter a new installation directory ?',nil,
mferror+mfyesbutton+mfnobutton);
createdir:=result=cmyes;
createdir:=(result=cmNo);
exit;
end;
mkdir(s);
{$I-}
mkdir(s);
{$I+}
if ioresult<>0 then
begin
messagebox('The installation directory couldn''t be created',
@s,mferror+mfokbutton);
createdir:=true;
params[0]:=@s;
messagebox('The installation directory %s couldn''t be created',
@params,mferror+mfokbutton);
createdir:=false;
exit;
end;
createdir:=false;
createdir:=true;
end;
procedure changedir(const s : string);
{*****************************************************************************
Writing of ppc386.cfg
*****************************************************************************}
procedure writedefcfg(const fn:string);
var
t : text;
i : longint;
s : string;
dir : searchrec;
params : array[0..0] of pointer;
begin
chdir(s);
if ioresult<>0 then
findfirst(fn,$ff,dir);
if doserror=0 then
begin
params[0]:=@fn;
MessageBox('Config file %s already exists, default config not written',@params,mfinformation+mfokbutton);
exit;
end;
assign(t,fn);
{$I-}
rewrite(t);
{$I+}
if ioresult<>0 then
begin
params[0]:=@fn;
MessageBox('Can''t create %s, default config not written',@params,mfinformation+mfokbutton);
exit;
end;
for i:=1to cfg.defcfgs do
if assigned(cfg.defcfg[i]) then
begin
messagebox('Error when changing directory ',@s,mferror+mfokbutton);
halt(1);
end;
s:=cfg.defcfg[i]^;
Replace(s,'$1',data.basepath);
writeln(t,s);
end
else
writeln(t,'');
close(t);
end;
{*****************************************************************************
Cfg Read
*****************************************************************************}
procedure readcfg(const fn:string);
var
t : text;
i,j,
line : longint;
item,
s : string;
begin
assign(t,fn);
{$I-}
reset(t);
{$I+}
if ioresult<>0 then
begin
writeln('error: ',fn,' not found!');
halt(1);
end;
line:=0;
while not eof(t) do
begin
readln(t,s);
inc(line);
if (s<>'') and not(s[1] in ['#',';']) then
begin
i:=pos('=',s);
if i>0 then
begin
item:=upper(Copy(s,1,i-1));
delete(s,1,i);
if item='VERSION' then
cfg.version:=s
else
if item='TITLE' then
cfg.title:=s
else
if item='BASEPATH' then
cfg.basepath:=s
else
if item='PPC386' then
cfg.ppc386:=s
else
if item='BINSUB' then
cfg.binsub:=s
else
if item='CFGFILE' then
cfg.defcfgfile:=s
else
if item='DEFAULTCFG' then
begin
repeat
readln(t,s);
if upper(s)='ENDCFG' then
break;
if cfg.defcfgs<maxdefcfgs then
begin
inc(cfg.defcfgs);
cfg.defcfg[cfg.defcfgs]:=newstr(s);
end;
until false;
end
else
if item='PACKAGE' then
begin
j:=pos(',',s);
if (j>0) and (cfg.packages<maxpackages) then
begin
inc(cfg.packages);
cfg.package[cfg.packages].zip:=copy(s,1,j-1);
cfg.package[cfg.packages].name:=copy(s,j+1,255);
end;
end
else
writeln('error in confg, unknown item "',item,'" skipping line ',line);
end
else
writeln('error in confg, skipping line ',line);
end;
end;
close(t);
end;
@ -117,9 +295,10 @@ program install;
tunzipdialog=object(tdialog)
filetext : pstatictext;
constructor Init(var Bounds: TRect; ATitle: TTitleStr);
procedure do_unzip(s:string);
procedure do_unzip(s,topath:string);
end;
constructor tunzipdialog.init;
var
r : trect;
@ -131,11 +310,10 @@ program install;
end;
procedure tunzipdialog.do_unzip(s : string);
procedure tunzipdialog.do_unzip(s,topath : string);
var
fn,dir,wild : string;
begin
s:=s+'.ZIP';
Disposestr(filetext^.text);
filetext^.Text:=NewStr('File: '+s);
filetext^.drawview;
@ -146,7 +324,7 @@ program install;
halt(1);
end;
fn:=startpath+'\'+s+#0;
dir:='.'#0;
dir:=topath+#0;
wild:='*.*'#0;
FileUnzipEx(@fn[1],@dir[1],@wild[1]);
if doserror<>0 then
@ -166,78 +344,75 @@ program install;
tinstalldialog = object(tdialog)
constructor init;
end;
var
mask_components : longint;
constructor tinstalldialog.init;
var
r : trect;
line : integer;
mask_components : longint;
i,line : integer;
items : psitem;
p,f : pview;
s : string;
const breite = 76;
hoehe = 20;
x1 = (80-breite) div 2;
y1 = (23-hoehe) div 2;
x2 = x1+breite;
y2 = y1+hoehe;
const
width = 76;
height = 20;
x1 = (79-width) div 2;
y1 = (23-height) div 2;
x2 = x1+width;
y2 = y1+height;
begin
r.assign(x1,y1,x2,y2);
inherited init(r,'Install');
inherited init(r,cfg.title+' Installation');
line:=2;
r.assign(3,line+1,28,line+2);
p:=new(pinputline,init(r,79));
f:=p;
s:='C:\PP';
p^.setdata(s);
insert(p);
r.assign(3,line,8,line+1);
insert(new(plabel,init(r,'~P~ath',p)));
insert(p);
r.assign(3,line+1,28,line+2);
f:=new(pinputline,init(r,80));
insert(f);
{ walk packages reverse and insert a newsitem for each, and set the mask }
items:=nil;
mask_components:=0;
for i:=cfg.packages downto 1 do
begin
if file_exists(cfg.package[i].zip,startpath) then
begin
items:=newsitem(cfg.package[i].name+diskspace(startpath+'\'+cfg.package[i].zip),items);
mask_components:=mask_components or packagemask(i);
end
else
begin
items:=newsitem(cfg.package[i].name,items);
end;
end;
{ If no component found abort }
if mask_components=0 then
begin
messagebox('No components found to install, aborting.',nil,mferror+mfokbutton);
halt(1);
end;
inc(line,3);
r.assign(3,line+1,breite-3,line+11);
p:=new(pcheckboxes,init(r,
newsitem('~B~asic system (required)'+diskspace(startpath,'BASEDOS.ZIP'),
newsitem('GNU ~L~inker and GNU Assembler (required)'+diskspace(startpath,'GNUASLD.ZIP'),
newsitem('D~e~mos'+diskspace(startpath,'DEMO.ZIP'),
newsitem('GNU ~D~ebugger'+diskspace(startpath,'GDB.ZIP'),
newsitem('GNU ~U~tilities (required to recompile run time library)'+diskspace(startpath,'GNUUTILS.ZIP'),
newsitem('Documentation (~H~TML)'+diskspace(startpath,'DOCS.ZIP'),
newsitem('Documentation (~P~ostscript)'+diskspace(startpath,'DOC'+doc_version+'PS.ZIP'),
newsitem('~R~un time library sources'+diskspace(startpath,'RL'+filenr+'S.ZIP'),
newsitem('~C~ompiler sources'+diskspace(startpath,'PP'+filenr+'S.ZIP'),
newsitem('Documentation sources (La~T~eX)'+diskspace(startpath,'DOC'+doc_version+'.ZIP'),
nil
))))))))))));
r.assign(3,line,14,line+1);
insert(new(plabel,init(r,'~C~omponents',p)));
r.assign(3,line+1,width-3,line+cfg.packages+1);
p:=new(pcheckboxes,init(r,items));
pcluster(p)^.enablemask:=mask_components;
insert(p);
r.assign(3,line,14,line+1);
insert(new(plabel,init(r,'~C~omponents',p)));
inc(line,12);
{ Free Vision
r.assign(3,line+1,breite-3,line+3);
p:=new(pcheckboxes,init(r,
newsitem('~B~asic system',
newsitem('~D~ocumentation',
newsitem('S~a~mples',
newsitem('~S~ources',
nil
))))));
pcluster(p)^.enablemask:=mask_freevision;
insert(p);
r.assign(3,line,15,line+1);
insert(new(plabel,init(r,'~F~ree Vision',p)));
inc(line,4);
}
r.assign((breite div 2)-14,line,(breite div 2)-4,line+2);
inc(line,cfg.packages+2);
r.assign((width div 2)-14,line,(width div 2)-4,line+2);
insert(new(pbutton,init(r,'~O~k',cmok,bfdefault)));
r.assign((breite div 2)+4,line,(breite div 2)+14,line+2);
r.assign((width div 2)+4,line,(width div 2)+14,line+2);
insert(new(pbutton,init(r,'~C~ancel',cmcancel,bfnormal)));
f^.select;
end;
@ -259,134 +434,72 @@ program install;
procedure tapp.do_installdialog;
var
p : pinstalldialog;
p2 : punzipdialog;
p3 : pstatictext;
r : trect;
c : word;
t : text;
installdata : record
path : string[79];
components : word;
end;
f : file;
label
newpath;
p : pinstalldialog;
p2 : punzipdialog;
p3 : pstatictext;
r : trect;
result,
c : word;
i : longint;
begin
installdata.path:='C:\PP';
installdata.components:=0;
data.basepath:=cfg.basepath;
data.mask:=0;
mask_components:=$0;
{ searching files }
if file_exists('BASEDOS.ZIP',startpath) then
inc(mask_components,1);
if file_exists('GNUASLD.ZIP',startpath) then
inc(mask_components,2);
if file_exists('DEMO.ZIP',startpath) then
inc(mask_components,4);
if file_exists('GDB.ZIP',startpath) then
inc(mask_components,8);
if file_exists('GNUUTILS.ZIP',startpath) then
inc(mask_components,16);
if file_exists('DOCS.ZIP',startpath) then
inc(mask_components,32);
if file_exists('DOC+doc_version+PS.ZIP',startpath) then
inc(mask_components,64);
if file_exists('RL'+filenr+'S.ZIP',startpath) then
inc(mask_components,128);
if file_exists('PP'+filenr+'S.ZIP',startpath) then
inc(mask_components,256);
if file_exists('DOC+doc_version+S.ZIP',startpath) then
inc(mask_components,512);
while true do
begin
newpath:
p:=new(pinstalldialog,init);
{ default settings }
c:=executedialog(p,@installdata);
if c=cmok then
repeat
p:=new(pinstalldialog,init);
{ default settings }
c:=executedialog(p,@data);
if (c=cmok) then
begin
if (data.mask>0) then
begin
if installdata.path[length(installdata.path)]='\' then
dec(byte(installdata.path[0]));
uppervar(installdata.path);
binpath:=installdata.path+'\BIN';
if createdir(installdata.path) then
goto newpath;
changedir(installdata.path);
r.assign(20,7,60,16);
p2:=new(punzipdialog,init(r,'Extracting files'));
desktop^.insert(p2);
if (installdata.components and 1)<>0 then
p2^.do_unzip('BASEDOS');
if (installdata.components and 2)<>0 then
p2^.do_unzip('GNUASLD');
if (installdata.components and 4)<>0 then
p2^.do_unzip('DEMO');
if (installdata.components and 8)<>0 then
p2^.do_unzip('GDB');
if (installdata.components and 16)<>0 then
p2^.do_unzip('GNUUTILS');
if (installdata.components and 32)<>0 then
p2^.do_unzip('DOCS');
if (installdata.components and 64)<>0 then
p2^.do_unzip('DOC+doc_version+PS');
if (installdata.components and 128)<>0 then
p2^.do_unzip('RL'+filenr+'S');
if (installdata.components and 256)<>0 then
p2^.do_unzip('PP'+filenr+'S');
if (installdata.components and 512)<>0 then
p2^.do_unzip('DOC+doc_version+S');
assign(t,'BIN\PPC386.CFG');
rewrite(t);
writeln(t,'-l');
writeln(t,'#ifdef GO32V1');
writeln(t,'-Up',installdata.path+'\RTL\DOS\GO32V1');
writeln(t,'#endif GO32V1');
writeln(t,'#ifdef GO32V2');
writeln(t,'-Up',installdata.path+'\RTL\DOS\GO32V2');
writeln(t,'#endif GO32V2');
writeln(t,'#ifdef Win32');
writeln(t,'-Up',installdata.path+'\RTL\WIN32');
writeln(t,'#endif Win32');
close(t);
desktop^.delete(p2);
dispose(p2,done);
messagebox('Installation successfull',nil,mfinformation+mfokbutton);
successfull:=true;
if createdir(data.basepath) then
break;
end
else
begin
result:=messagebox('No components selected.'#13#13'Abort installation?',nil,
mferror+mfyesbutton+mfnobutton);
if result=cmYes then
exit;
end;
break;
end;
end
else
exit;
until false;
r.assign(20,7,60,16);
p2:=new(punzipdialog,init(r,'Extracting files'));
desktop^.insert(p2);
for i:=1to cfg.packages do
begin
if data.mask and packagemask(i)<>0 then
p2^.do_unzip(cfg.package[i].zip,data.basepath);
end;
desktop^.delete(p2);
dispose(p2,done);
writedefcfg(data.basepath+cfg.binsub+'\'+cfg.defcfgfile);
messagebox('Installation successfull',nil,mfinformation+mfokbutton);
successfull:=true;
end;
procedure tapp.initmenubar;
var
r : trect;
begin
getextent(r);
r.b.y:=r.a.y+1;
menubar:=new(pmenubar,init(r,newmenu(
newsubmenu('~F~ree Pascal '+cfg.version,hcnocontext,newmenu(nil
),
nil))));
end;
procedure tapp.handleevent(var event : tevent);
label
insertdisk1,insertdisk2,newpath;
begin
inherited handleevent(event);
if event.what=evcommand then
@ -403,43 +516,33 @@ program install;
end;
end;
procedure tapp.initmenubar;
var
r : trect;
begin
getextent(r);
r.b.y:=r.a.y+1;
menubar:=new(pmenubar,init(r,newmenu(
newsubmenu('~I~nstallation',hcnocontext,newmenu(
newitem('~S~tart','',kbnokey,cmstart,hcnocontext,
newline(
newitem('~E~xit','Alt+X',kbaltx,cmquit,hcnocontext,
nil)))
),
nil))));
end;
var
installapp : tapp;
begin
getdir(0,startpath);
successfull:=false;
readcfg(cfgfile);
installapp.init;
installapp.do_installdialog;
installapp.done;
if successfull then
begin
writeln('Extend your PATH variable with');
writeln(binpath);
writeln('Extend your PATH variable with ''',data.basepath+cfg.binsub+'''');
writeln;
writeln('To compile files enter ''',cfg.ppc386,' [file]''');
writeln;
writeln('To compile files enter PPC386 [file]');
chdir(startpath);
end;
end.
{
$Log$
Revision 1.4 1998-09-10 10:50:49 florian
Revision 1.5 1998-09-15 12:06:06 peter
* install updated to support w32 and dos and config file
Revision 1.4 1998/09/10 10:50:49 florian
* DOS install program updated
Revision 1.3 1998/09/09 13:39:58 peter

195
install/install.w32 Normal file
View File

@ -0,0 +1,195 @@
#
# Win32 Install file
#
title=Free Pascal Compiler for Win32
version=0.99.8
basepath=c:\ppw
binsub=\bin
ppc386=ppw
package=basew32.zip,~B~asic system for Win32 (required)
package=asldw32.zip,GNU ~L~inker and GNU Assembler for Win32 (required)
package=gdbw32.zip,GNU ~D~ebugger for Win32
package=gnuutils.zip,GNU ~U~tilities (required to recompile run time library)
package=demo.zip,D~e~mos
package=docs.zip,Documentation (~H~TML)
package=doc110ps.zip,Documentation (~P~ostscript)
package=rl0998s.zip,~R~un time library sources
package=pp0998s.zip,~C~ompiler sources
package=doc110s.zip,Documentation sources (La~T~eX)
cfgfile=ppc386.cfg
defaultcfg=
#
# Example ppc386.cfg for Free Pascal Compiler Version 0.99.8
#
# ----------------------
# Defines (preprocessor)
# ----------------------
#
# nested #IFNDEF, #IFDEF, #ENDIF, #ELSE, #DEFINE, #UNDEF are allowed
#
# -d is the same as #DEFINE
# -u is the same as #UNDEF
#
# When not m68k is defined at the commandline, define i386
#IFNDEF m68k
#DEFINE i386
#ENDIF
#
# 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
-OG2p2
-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
# Semantic checking
# -S2 switch some Delphi 2 extension on
# -Sc supports operators like C (*=,+=,/= and -=)
# -Sg allows LABEL and GOTO
# -Si support C++ stlyed INLINE
# -Sm support macros like C (global)
# -So tries to be TP/BP 7.0 compatible
# -Ss constructor name must be init (destructor must be done)
# -St allows static keyword in objects
# -Sv allow CVAR variable directive
# Allow goto, inline, C-operators, CVar directive
-Sgicv
# ---------------
# 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 Pentium
#-OG2p2
# -----------------------
# Set Filenames and Paths
# -----------------------
# Slashes are also allowed under dos
# path to the messagefile, not necessary anymore but can be used to override
# the default language
#-Fr$1/bin/errore.msg
#-Fr$1/bin/errorn.msg
# path to the gcclib
#-Fg$1/lib
# searchpath for includefiles
#-Fi$1/inc;$1/rtl/inc
# searchpath for units (does the same as -Up)
#IFDEF Go32V1
-Fu$1/rtl/dos/go32v1
#ENDIF
#IFDEF Go32V2
-Fu$1/rtl/dos/go32v2
#ENDIF
#IFDEF Win32
-Fu$1/rtl/dos/win32
#ENDIF
# searchpath for libraries
#-Fl$1/lib
#-Fl/lib;/usr/lib
# -------------
# Linking
# -------------
# generate always debugging information for GDB (slows down the compiling
# process)
#-g
# 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
-viwnh
# If you don't want so much verbosity use
#-vw
#
# That's all folks
#
endcfg

View File

@ -363,7 +363,7 @@ VAR slide : pchar; {Sliding dictionary for unzipping}
dlghandle : word; {optional: handle of a cancel and "%-done"-dialog}
dlgnotify : integer; {notification code to tell dialog how far the decompression is}
VAR w : word; {Current Position in slide}
VAR w : longint; {Current Position in slide}
b : longint; {Bit Buffer}
k : byte; {Bits in bit buffer}
infile, {handle to zipfile}
@ -506,8 +506,8 @@ CONST crc_32_tab : ARRAY [ 0..255 ] of longint =
{*********************************** CRC Checking ********************************}
PROCEDURE UpdateCRC ( VAR s : iobuf;len : integer );
VAR i : integer;
PROCEDURE UpdateCRC ( VAR s : iobuf;len : word );
VAR i : word;
BEGIN
{$ifndef assembler}
FOR i := 0 TO Pred ( len ) DO BEGIN
@ -1032,7 +1032,7 @@ END;
FUNCTION inflate_codes ( tl, td : phuftlist;bl, bd : integer ) : integer;
VAR
n, d, e1, {length and index for copy}
ml, md : word; {masks for bl and bd bits}
ml, md : longint; {masks for bl and bd bits}
t : phuft; {pointer to table entry}
e : byte; {table entry flag/number of extra bits}
@ -1100,7 +1100,7 @@ BEGIN
ELSE e1 := WSIZE -w;
IF e1 > n THEN e1 := n;
dec ( n, e1 );
IF ( w -d >= e1 ) THEN BEGIN
IF ( longint(w) -d >= e1 ) THEN BEGIN
move ( slide [ d ], slide [ w ], e1 );
inc ( w, e1 );
inc ( d, e1 );