* -Ur switch (merged)

* masm fixes (merged)
  * quoted filenames for go32v2 and win32
This commit is contained in:
peter 2001-06-18 20:36:23 +00:00
parent 94b50cf56c
commit e24474d9ac
15 changed files with 248 additions and 131 deletions

View File

@ -73,7 +73,7 @@ interface
public public
Function FindAssembler:string; Function FindAssembler:string;
Function CallAssembler(const command,para:string):Boolean; Function CallAssembler(const command,para:string):Boolean;
Function DoAssemble:boolean; Function DoAssemble:boolean;virtual;
Procedure RemoveAsm; Procedure RemoveAsm;
Procedure AsmFlush; Procedure AsmFlush;
Procedure AsmClear; Procedure AsmClear;
@ -1515,7 +1515,12 @@ Implementation
end. end.
{ {
$Log$ $Log$
Revision 1.20 2001-06-13 18:31:57 peter Revision 1.21 2001-06-18 20:36:23 peter
* -Ur switch (merged)
* masm fixes (merged)
* quoted filenames for go32v2 and win32
Revision 1.20 2001/06/13 18:31:57 peter
* smartlink with dll fixed (merged) * smartlink with dll fixed (merged)
Revision 1.19 2001/04/21 15:34:49 peter Revision 1.19 2001/04/21 15:34:49 peter

View File

@ -53,6 +53,7 @@ interface
procedure valint(S : string;var V : longint;var code : integer); procedure valint(S : string;var V : longint;var code : integer);
function is_number(const s : string) : boolean; function is_number(const s : string) : boolean;
function ispowerof2(value : longint;var power : longint) : boolean; function ispowerof2(value : longint;var power : longint) : boolean;
function maybequoted(const s:string):string;
{ releases the string p and assignes nil to p } { releases the string p and assignes nil to p }
{ if p=nil then freemem isn't called } { if p=nil then freemem isn't called }
@ -424,6 +425,30 @@ uses
end; end;
function maybequoted(const s:string):string;
var
s1 : string;
i : integer;
begin
if (pos('"',s)>0) then
begin
s1:='"';
for i:=1 to length(s) do
begin
if s[i]='"' then
s1:=s1+'\"'
else
s1:=s1+s[i];
end;
maybequoted:=s1+'"';
end
else if (pos(' ',s)>0) then
maybequoted:='"'+s+'"'
else
maybequoted:=s;
end;
function pchar2pstring(p : pchar) : pstring; function pchar2pstring(p : pchar) : pstring;
var var
w,i : longint; w,i : longint;
@ -633,7 +658,12 @@ initialization
end. end.
{ {
$Log$ $Log$
Revision 1.6 2001-05-09 14:11:10 jonas Revision 1.7 2001-06-18 20:36:23 peter
* -Ur switch (merged)
* masm fixes (merged)
* quoted filenames for go32v2 and win32
Revision 1.6 2001/05/09 14:11:10 jonas
* range check error fixes from Peter * range check error fixes from Peter
Revision 1.5 2000/12/24 12:25:31 peter Revision 1.5 2000/12/24 12:25:31 peter

View File

@ -561,9 +561,14 @@ uses
temp:=' time '+filetimestring(source_time); temp:=' time '+filetimestring(source_time);
if (source_time>ppufiletime) then if (source_time>ppufiletime) then
begin begin
do_compile:=true; if {is_main or} ((flags and uf_release)=0) then
recompile_reason:=rr_sourcenewer; begin
temp:=temp+' *' do_compile:=true;
recompile_reason:=rr_sourcenewer;
end
else
Message2(unit_h_source_modified,hs,ppufilename^);
temp:=temp+' *';
end; end;
end; end;
end; end;
@ -581,7 +586,8 @@ uses
end; end;
{ check if we want to rebuild every unit, only if the sources are { check if we want to rebuild every unit, only if the sources are
available } available }
if do_build and sources_avail then if do_build and sources_avail and
((flags and uf_release)=0) then
begin begin
do_compile:=true; do_compile:=true;
recompile_reason:=rr_build; recompile_reason:=rr_build;
@ -714,6 +720,8 @@ uses
flags:=flags or uf_has_browser; flags:=flags or uf_has_browser;
if cs_local_browser in aktmoduleswitches then if cs_local_browser in aktmoduleswitches then
flags:=flags or uf_local_browser; flags:=flags or uf_local_browser;
if do_release then
flags:=flags or uf_release;
{$ifdef Test_Double_checksum_write} {$ifdef Test_Double_checksum_write}
Assign(CRCFile,s+'.IMP'); Assign(CRCFile,s+'.IMP');
@ -1172,7 +1180,12 @@ uses
end. end.
{ {
$Log$ $Log$
Revision 1.8 2001-06-04 11:49:08 peter Revision 1.9 2001-06-18 20:36:23 peter
* -Ur switch (merged)
* masm fixes (merged)
* quoted filenames for go32v2 and win32
Revision 1.8 2001/06/04 11:49:08 peter
* store used units in original type in ppu * store used units in original type in ppu
Revision 1.7 2001/05/19 23:05:19 peter Revision 1.7 2001/05/19 23:05:19 peter

View File

@ -115,6 +115,7 @@ interface
{ some flags for global compiler switches } { some flags for global compiler switches }
do_build, do_build,
do_release,
do_make : boolean; do_make : boolean;
not_unit_proc : boolean; not_unit_proc : boolean;
{ path for searching units, different paths can be seperated by ; } { path for searching units, different paths can be seperated by ; }
@ -1198,6 +1199,7 @@ implementation
begin begin
{ set global switches } { set global switches }
do_build:=false; do_build:=false;
do_release:=false;
do_make:=true; do_make:=true;
compile_level:=0; compile_level:=0;
{ these two should not be cleared in { these two should not be cleared in
@ -1282,7 +1284,12 @@ begin
end. end.
{ {
$Log$ $Log$
Revision 1.37 2001-06-03 21:57:35 peter Revision 1.38 2001-06-18 20:36:24 peter
* -Ur switch (merged)
* masm fixes (merged)
* quoted filenames for go32v2 and win32
Revision 1.37 2001/06/03 21:57:35 peter
+ hint directive parsing support + hint directive parsing support
Revision 1.36 2001/06/03 20:21:08 peter Revision 1.36 2001/06/03 20:21:08 peter

View File

@ -32,6 +32,7 @@ interface
T386IntelAssembler = class(TExternalAssembler) T386IntelAssembler = class(TExternalAssembler)
procedure WriteTree(p:TAAsmoutput);override; procedure WriteTree(p:TAAsmoutput);override;
procedure WriteAsmList;override; procedure WriteAsmList;override;
Function DoAssemble:boolean;override;
procedure WriteExternals; procedure WriteExternals;
end; end;
@ -42,7 +43,7 @@ interface
sysutils, sysutils,
{$endif} {$endif}
cutils,globtype,globals,systems,cclasses, cutils,globtype,globals,systems,cclasses,
verbose,cpubase,cpuasm,finput,fmodule verbose,cpubase,cpuasm,finput,fmodule,script
; ;
const const
@ -262,7 +263,7 @@ interface
if s=S_FAR then if s=S_FAR then
hs:='far ptr ' hs:='far ptr '
else else
hs:='near ptr '; hs:='dword ptr ';
end; end;
getopstr_jmp:=hs+getreferencestring(o.ref^); getopstr_jmp:=hs+getreferencestring(o.ref^);
end; end;
@ -342,7 +343,7 @@ interface
i,j,l : longint; i,j,l : longint;
consttyp : tait; consttyp : tait;
found, found,
do_line, do_line,DoNotSplitLine,
quoted : boolean; quoted : boolean;
sep : char; sep : char;
begin begin
@ -353,10 +354,12 @@ interface
(cs_lineinfo in aktmoduleswitches)) (cs_lineinfo in aktmoduleswitches))
and (p=codesegment); and (p=codesegment);
InlineLevel:=0; InlineLevel:=0;
DoNotSplitLine:=false;
hp:=tai(p.first); hp:=tai(p.first);
while assigned(hp) do while assigned(hp) do
begin begin
if do_line and not(hp.typ in nolinetai) then if do_line and not(hp.typ in nolinetai) and
not DoNotSplitLine then
begin begin
{ load infile } { load infile }
if lastfileinfo.fileindex<>hp.fileinfo.fileindex then if lastfileinfo.fileindex<>hp.fileinfo.fileindex then
@ -399,6 +402,7 @@ interface
lastfileinfo:=hp.fileinfo; lastfileinfo:=hp.fileinfo;
lastinfile:=infile; lastinfile:=infile;
end; end;
DoNotSplitLine:=false;
case hp.typ of case hp.typ of
ait_comment : Begin ait_comment : Begin
AsmWrite(target_asm.comment); AsmWrite(target_asm.comment);
@ -545,7 +549,9 @@ interface
[ait_const_32bit,ait_const_16bit,ait_const_8bit, [ait_const_32bit,ait_const_16bit,ait_const_8bit,
ait_const_symbol,ait_const_rva, ait_const_symbol,ait_const_rva,
ait_real_32bit,ait_real_64bit,ait_real_80bit,ait_comp_64bit,ait_string]) then ait_real_32bit,ait_real_64bit,ait_real_80bit,ait_comp_64bit,ait_string]) then
AsmWriteLn(':'); AsmWriteLn(':')
else
DoNotSplitLine:=true;
end; end;
end; end;
ait_direct : begin ait_direct : begin
@ -661,6 +667,8 @@ ait_stab_function_name : ;
hp:=tai(hp.next); hp:=tai(hp.next);
end; end;
AsmWriteLn(#9'.386p'); AsmWriteLn(#9'.386p');
AsmWriteLn('DGROUP'#9'GROUP'#9'_BSS,_DATA');
AsmWriteLn(#9'ASSUME'#9'CS:_CODE,ES:DGROUP,DS:DGROUP,SS:DGROUP');
{ I was told that this isn't necesarry because } { I was told that this isn't necesarry because }
{ the labels generated by FPC are unique (FK) } { the labels generated by FPC are unique (FK) }
{ AsmWriteLn(#9'LOCALS '+target_asm.labelprefix); } { AsmWriteLn(#9'LOCALS '+target_asm.labelprefix); }
@ -706,6 +714,28 @@ ait_stab_function_name : ;
end; end;
function t386intelassembler.DoAssemble : boolean;
var f : file;
begin
DoAssemble:=Inherited DoAssemble;
{ masm does not seem to recognize specific extensions and uses .obj allways PM }
if (aktoutputformat = as_i386_masm) then
begin
if not(cs_asm_extern in aktglobalswitches) then
begin
if Not FileExists(objfile) and
FileExists(ForceExtension(objfile,'.obj')) then
begin
Assign(F,ForceExtension(objfile,'.obj'));
Rename(F,objfile);
end;
end
else
AsmRes.AddAsmCommand('mv',ForceExtension(objfile,'.obj')+' '+objfile,objfile);
end;
end;
procedure T386IntelAssembler.WriteAsmList; procedure T386IntelAssembler.WriteAsmList;
begin begin
{$ifdef EXTDEBUG} {$ifdef EXTDEBUG}
@ -777,7 +807,7 @@ ait_stab_function_name : ;
id : as_i386_masm; id : as_i386_masm;
idtxt : 'MASM'; idtxt : 'MASM';
asmbin : 'masm'; asmbin : 'masm';
asmcmd : '/c $ASM /Fo$OBJ'; asmcmd : '/c /Cp $ASM /Fo$OBJ';
supported_target : target_any; { what should I write here ?? } supported_target : target_any; { what should I write here ?? }
outputbinary: false; outputbinary: false;
allowdirect : true; allowdirect : true;
@ -798,7 +828,12 @@ initialization
end. end.
{ {
$Log$ $Log$
Revision 1.13 2001-05-06 17:13:23 jonas Revision 1.14 2001-06-18 20:36:25 peter
* -Ur switch (merged)
* masm fixes (merged)
* quoted filenames for go32v2 and win32
Revision 1.13 2001/05/06 17:13:23 jonas
* completed incomplete typed constant records * completed incomplete typed constant records
Revision 1.12 2001/04/21 15:33:03 peter Revision 1.12 2001/04/21 15:33:03 peter

View File

@ -496,13 +496,11 @@ interface
swapleftright; swapleftright;
{ optimize first loading of a set } { optimize first loading of a set }
{$ifdef usecreateset}
if (right.nodetype=setelementn) and if (right.nodetype=setelementn) and
not(assigned(right.right)) and not(assigned(tsetelementnode(right).right)) and
is_emptyset(left) then is_emptyset(left) then
createset:=true createset:=true
else else
{$endif}
begin begin
createset:=false; createset:=false;
secondpass(left); secondpass(left);
@ -2285,7 +2283,12 @@ begin
end. end.
{ {
$Log$ $Log$
Revision 1.13 2001-05-27 14:30:56 florian Revision 1.14 2001-06-18 20:36:25 peter
* -Ur switch (merged)
* masm fixes (merged)
* quoted filenames for go32v2 and win32
Revision 1.13 2001/05/27 14:30:56 florian
+ some widestring stuff added + some widestring stuff added
Revision 1.12 2001/05/06 17:12:14 jonas Revision 1.12 2001/05/06 17:12:14 jonas

View File

@ -914,10 +914,10 @@ parser_w_skipped_fields_before=03175_W_Some fields coming before "$1" weren't in
parser_e_skipped_fields_before=03176_E_Some fields coming before "$1" weren't initialized parser_e_skipped_fields_before=03176_E_Some fields coming before "$1" weren't initialized
% In all syntax modes but Delphi mode, you can't leave some fields uninitialized % In all syntax modes but Delphi mode, you can't leave some fields uninitialized
% in the middle of a typed constant record % in the middle of a typed constant record
parser_w_skipped_fields_after=03177_W_Some fields coming after "$1" weren't initialized parser_h_skipped_fields_after=03177_H_Some fields coming after "$1" weren't initialized
% You can leave some fields at the end of a type constant record uninitialized % You can leave some fields at the end of a type constant record uninitialized
% (the compiler will initialize them to zero automatically), but the the % (the compiler will initialize them to zero automatically), but the the
% compiler warns you when it detects such situations. % compiler gives a hint because it can be the source of a problem.
parser_e_varargs_need_cdecl_and_external=03178_E_VarArgs directive without CDecl and External parser_e_varargs_need_cdecl_and_external=03178_E_VarArgs directive without CDecl and External
% The varargs directive can only be used with procedures or functions % The varargs directive can only be used with procedures or functions
% that are declared with CDecl and External directives. The varargs directive % that are declared with CDecl and External directives. The varargs directive
@ -1724,6 +1724,10 @@ unit_h_cond_set_in_last_compile=10039_H_Conditional $1 was set at startup in las
unit_w_cant_compile_unit_with_changed_incfile=10040_W_Can't recompile unit $1, but found modifed include files unit_w_cant_compile_unit_with_changed_incfile=10040_W_Can't recompile unit $1, but found modifed include files
% A unit was found to have modified include files, but % A unit was found to have modified include files, but
% some source files were not found, so recompilation is impossible. % some source files were not found, so recompilation is impossible.
unit_h_source_modified=10041_H_File $1 is newer than Release PPU file $2
% A modified source file for a unit was found that was compiled with the
% release flag (-Ur). The unit will not implicitly be recompiled because
% this release flag is set.
% \end{description} % \end{description}
# EndOfTeX # EndOfTeX
@ -1912,6 +1916,7 @@ option_help_pages=11025_[
**1u<x>_undefines the symbol <x> **1u<x>_undefines the symbol <x>
**1U_unit options: **1U_unit options:
**2Un_don't check the unit name **2Un_don't check the unit name
**2Ur_generate release unit files
**2Us_compile a system unit **2Us_compile a system unit
**1v<x>_Be verbose. <x> is a combination of the following letters: **1v<x>_Be verbose. <x> is a combination of the following letters:
**2*_e : Show errors (default) d : Show debug info **2*_e : Show errors (default) d : Show debug info

View File

@ -252,7 +252,7 @@ const
parser_e_no_local_external=03174; parser_e_no_local_external=03174;
parser_w_skipped_fields_before=03175; parser_w_skipped_fields_before=03175;
parser_e_skipped_fields_before=03176; parser_e_skipped_fields_before=03176;
parser_w_skipped_fields_after=03177; parser_h_skipped_fields_after=03177;
parser_e_varargs_need_cdecl_and_external=03178; parser_e_varargs_need_cdecl_and_external=03178;
type_e_mismatch=04000; type_e_mismatch=04000;
type_e_incompatible_types=04001; type_e_incompatible_types=04001;
@ -560,6 +560,7 @@ const
unit_h_cond_not_set_in_last_compile=10038; unit_h_cond_not_set_in_last_compile=10038;
unit_h_cond_set_in_last_compile=10039; unit_h_cond_set_in_last_compile=10039;
unit_w_cant_compile_unit_with_changed_incfile=10040; unit_w_cant_compile_unit_with_changed_incfile=10040;
unit_h_source_modified=10041;
option_usage=11000; option_usage=11000;
option_only_one_source_support=11001; option_only_one_source_support=11001;
option_def_only_for_os2=11002; option_def_only_for_os2=11002;
@ -591,9 +592,9 @@ const
option_info=11024; option_info=11024;
option_help_pages=11025; option_help_pages=11025;
MsgTxtSize = 32986; MsgTxtSize = 33070;
MsgIdxMax : array[1..20] of longint=( MsgIdxMax : array[1..20] of longint=(
17,59,179,37,41,41,98,14,35,41, 17,59,179,37,41,41,98,14,35,42,
30,1,1,1,1,1,1,1,1,1 30,1,1,1,1,1,1,1,1,1
); );

View File

@ -284,7 +284,7 @@ const msgtxt : array[0..000137,1..240] of char=(
'03174_E_Can'#039't declare local procedure as EXTE','RNAL'#000+ '03174_E_Can'#039't declare local procedure as EXTE','RNAL'#000+
'03175_W_Some fields coming before "$1" weren'#039't initialized'#000+ '03175_W_Some fields coming before "$1" weren'#039't initialized'#000+
'03176_E_Some fields coming before "$1" weren'#039't initialized'#000+ '03176_E_Some fields coming before "$1" weren'#039't initialized'#000+
'03177_W_Some fields coming after "$1" weren'#039't initialized'#000+ '03177_H_Some fields coming after "$1" weren'#039't initialized'#000+
'03178_E_VarArgs directive without CDecl and External'#000+ '03178_E_VarArgs directive without CDecl and External'#000+
'04000_','E_Type mismatch'#000+ '04000_','E_Type mismatch'#000+
'04001_E_Incompatible types: got "$1" expected "$2"'#000+ '04001_E_Incompatible types: got "$1" expected "$2"'#000+
@ -609,201 +609,202 @@ const msgtxt : array[0..000137,1..240] of char=(
'10039_H_Conditional $1 was set at startup in last compilation of $2'#000+ '10039_H_Conditional $1 was set at startup in last compilation of $2'#000+
'10040_W_Can'#039't reco','mpile unit $1, but found modifed include files'+ '10040_W_Can'#039't reco','mpile unit $1, but found modifed include files'+
#000+ #000+
'10041_H_File $1 is newer than Release PPU file $2'#000+
'11000_$1 [options] <inputfile> [options]'#000+ '11000_$1 [options] <inputfile> [options]'#000+
'11001_W_Only one source file supported'#000+ '11001_W_Only one source file supported'#000+
'11002_W_DEF file can be created only for OS/2'#000+ '11002_W_DEF file can be created only for OS/2'#000+
'11003_E_nested response files are not supported'#000+ '11003_E_nested re','sponse files are not supported'#000+
'11004_F_No source f','ile name in command line'#000+ '11004_F_No source file name in command line'#000+
'11005_N_No option inside $1 config file'#000+ '11005_N_No option inside $1 config file'#000+
'11006_E_Illegal parameter: $1'#000+ '11006_E_Illegal parameter: $1'#000+
'11007_H_-? writes help pages'#000+ '11007_H_-? writes help pages'#000+
'11008_F_Too many config files nested'#000+ '11008_F_Too many config files nested'#000+
'11009_F_Unable to open file $1'#000+ '11009_F_Unable to open file $','1'#000+
'11010_D_Reading further options from $1'#000+ '11010_D_Reading further options from $1'#000+
'11011_W_','Target is already set to: $1'#000+ '11011_W_Target is already set to: $1'#000+
'11012_W_Shared libs not supported on DOS platform, reverting to static'+ '11012_W_Shared libs not supported on DOS platform, reverting to static'+
#000+ #000+
'11013_F_too many IF(N)DEFs'#000+ '11013_F_too many IF(N)DEFs'#000+
'11014_F_too many ENDIFs'#000+ '11014_F_too many ENDIFs'#000+
'11015_F_open conditional at the end of the file'#000+ '11015_F_open conditional at the end of ','the file'#000+
'11016_W_Debug information generation is n','ot supported by this execut'+ '11016_W_Debug information generation is not supported by this executab'+
'able'#000+ 'le'#000+
'11017_H_Try recompiling with -dGDB'#000+ '11017_H_Try recompiling with -dGDB'#000+
'11018_E_You are using the obsolete switch $1'#000+ '11018_E_You are using the obsolete switch $1'#000+
'11019_E_You are using the obsolete switch $1, please use $2'#000+ '11019_E_You are using the obsolete switch $1, please use $2'#000+
'11020_N_Switching assembler to default source writing assembler'#000+ '11020_N_Switching ','assembler to default source writing assembler'#000+
'1102','1_W_Assembler output selected "$1" is not compatible with "$2"'#000+ '11021_W_Assembler output selected "$1" is not compatible with "$2"'#000+
'11022_W_"$1" assembler use forced'#000+ '11022_W_"$1" assembler use forced'#000+
'11026_T_Reading options from file $1'#000+ '11026_T_Reading options from file $1'#000+
'11027_T_Reading options from environment $1'#000+ '11027_T_Reading options from environment $1'#000+
'11028_D_Handling option "$1"'#000+ '11028_D_Hand','ling option "$1"'#000+
'11029__*** press enter ***'#000+ '11029__*** press enter ***'#000+
'11023_','Free Pascal Compiler version $FPCVER [$FPCDATE] for $FPCTARGET'+ '11023_Free Pascal Compiler version $FPCVER [$FPCDATE] for $FPCTARGET'#010+
#010+
'Copyright (c) 1993-2000 by Florian Klaempfl'#000+ 'Copyright (c) 1993-2000 by Florian Klaempfl'#000+
'11024_Free Pascal Compiler version $FPCVER'#010+ '11024_Free Pascal Compiler version $FPCVER'#010+
#010+ #010+
'Compiler Date : $FPCDATE'#010+ 'Compiler Date : $FPCDATE'#010+
'Compiler Target: $FPCTARGET'#010+ 'Compiler Targ','et: $FPCTARGET'#010+
#010+ #010+
'This program comes under the GNU G','eneral Public Licence'#010+ 'This program comes under the GNU General Public Licence'#010+
'For more information read COPYING.FPC'#010+ 'For more information read COPYING.FPC'#010+
#010+ #010+
'Report bugs,suggestions etc to:'#010+ 'Report bugs,suggestions etc to:'#010+
' bugrep@freepascal.org'#000+ ' bugrep@freepascal.org'#000+
'11025_**0*_put + after a boolean switch option to enable it, - to disa'+ '11025_**0*_put + after a boolean switch option to enable i','t, - to di'+
'ble it'#010+ 'sable it'#010+
'**1a_the compiler doesn'#039't delet','e the generated assembler file'#010+ '**1a_the compiler doesn'#039't delete the generated assembler file'#010+
'**2al_list sourcecode lines in assembler file'#010+ '**2al_list sourcecode lines in assembler file'#010+
'**2ar_list register allocation/release info in assembler file'#010+ '**2ar_list register allocation/release info in assembler file'#010+
'**2at_list temp allocation/release info in assembler file'#010+ '**2at_list temp allocation/release info in assemble','r file'#010+
'**1b_generate browser info'#010+ '**1b_generate browser info'#010+
'**2bl_generate l','ocal symbol info'#010+ '**2bl_generate local symbol info'#010+
'**1B_build all modules'#010+ '**1B_build all modules'#010+
'**1C<x>_code generation options:'#010+ '**1C<x>_code generation options:'#010+
'**2CD_create also dynamic library (not supported)'#010+ '**2CD_create also dynamic library (not supported)'#010+
'**2Ch<n>_<n> bytes heap (between 1023 and 67107840)'#010+ '**2Ch<n>_<n> bytes heap (between 1023 and 67107840)'#010+
'**2Ci_IO-checking'#010+ '**2Ci_IO-checki','ng'#010+
'**2Cn_omit linking stage'#010+ '**2Cn_omit linking stage'#010+
'**2Co_check overflow o','f integer operations'#010+ '**2Co_check overflow of integer operations'#010+
'**2Cr_range checking'#010+ '**2Cr_range checking'#010+
'**2Cs<n>_set stack size to <n>'#010+ '**2Cs<n>_set stack size to <n>'#010+
'**2Ct_stack checking'#010+ '**2Ct_stack checking'#010+
'**2CX_create also smartlinked library'#010+ '**2CX_create also smartlinked library'#010+
'**1d<x>_defines the symbol <x>'#010+ '**1d<x>_defines the symbol <x>'#010+
'*O1D_generate a DEF file'#010+ '*O1D_generate a DEF file'#010+
'*O2Dd<x>_set description to <x>'#010+ '*O','2Dd<x>_set description to <x>'#010+
'*O2Dw_PM application',#010+ '*O2Dw_PM application'#010+
'**1e<x>_set path to executable'#010+ '**1e<x>_set path to executable'#010+
'**1E_same as -Cn'#010+ '**1E_same as -Cn'#010+
'**1F<x>_set file names and paths:'#010+ '**1F<x>_set file names and paths:'#010+
'**2FD<x>_sets the directory where to search for compiler utilities'#010+ '**2FD<x>_sets the directory where to search for compiler utilities'#010+
'**2Fe<x>_redirect error output to <x>'#010+ '**2Fe<x>_redirect error output to <x>'#010+
'**2FE<x>_set exe/unit output path to <x>'#010+ '**','2FE<x>_set exe/unit output path to <x>'#010+
'**2Fi<x>_ad','ds <x> to include path'#010+ '**2Fi<x>_adds <x> to include path'#010+
'**2Fl<x>_adds <x> to library path'#010+ '**2Fl<x>_adds <x> to library path'#010+
'*L2FL<x>_uses <x> as dynamic linker'#010+ '*L2FL<x>_uses <x> as dynamic linker'#010+
'**2Fo<x>_adds <x> to object path'#010+ '**2Fo<x>_adds <x> to object path'#010+
'**2Fr<x>_load error message file <x>'#010+ '**2Fr<x>_load error message file <x>'#010+
'**2Fu<x>_adds <x> to unit path'#010+ '**2Fu<x>_adds <x> to unit p','ath'#010+
'**2FU<x>_set unit output path to <x>, override','s -FE'#010+ '**2FU<x>_set unit output path to <x>, overrides -FE'#010+
'*g1g_generate debugger information:'#010+ '*g1g_generate debugger information:'#010+
'*g2gg_use gsym'#010+ '*g2gg_use gsym'#010+
'*g2gd_use dbx'#010+ '*g2gd_use dbx'#010+
'*g2gh_use heap trace unit (for memory leak debugging)'#010+ '*g2gh_use heap trace unit (for memory leak debugging)'#010+
'*g2gl_use line info unit to show more info for backtraces'#010+ '*g2gl_use line info unit to show more info for backtraces'#010+
'*g2gc_generate checks for pointers'#010+ '*g2gc_g','enerate checks for pointers'#010+
'**1i_information'#010+ '**1i_information'#010+
'**2iD','_return compiler date'#010+ '**2iD_return compiler date'#010+
'**2iV_return compiler version'#010+ '**2iV_return compiler version'#010+
'**2iSO_return compiler OS'#010+ '**2iSO_return compiler OS'#010+
'**2iSP_return compiler processor'#010+ '**2iSP_return compiler processor'#010+
'**2iTO_return target OS'#010+ '**2iTO_return target OS'#010+
'**2iTP_return target processor'#010+ '**2iTP_return target processor'#010+
'**1I<x>_adds <x> to include path'#010+ '**1I<x>_adds <x> to incl','ude path'#010+
'**1k<x>_Pass <x> to the linker'#010+ '**1k<x>_Pass <x> to the linker'#010+
'**1l_write',' logo'#010+ '**1l_write logo'#010+
'**1n_don'#039't read the default config file'#010+ '**1n_don'#039't read the default config file'#010+
'**1o<x>_change the name of the executable produced to <x>'#010+ '**1o<x>_change the name of the executable produced to <x>'#010+
'**1pg_generate profile code for gprof (defines FPC_PROFILE)'#010+ '**1pg_generate profile code for gprof (defines FPC_PROFILE)'#010+
'*L1P_use pipes instead of creating temporary assembler files'#010+ '*L1P_use pipes instead of ','creating temporary assembler files'#010+
'**1S<x>_syntax ','options:'#010+ '**1S<x>_syntax options:'#010+
'**2S2_switch some Delphi 2 extensions on'#010+ '**2S2_switch some Delphi 2 extensions on'#010+
'**2Sc_supports operators like C (*=,+=,/= and -=)'#010+ '**2Sc_supports operators like C (*=,+=,/= and -=)'#010+
'**2Sa_include assertion code.'#010+ '**2Sa_include assertion code.'#010+
'**2Sd_tries to be Delphi compatible'#010+ '**2Sd_tries to be Delphi compatible'#010+
'**2Se<x>_compiler stops after the <x> errors (default is 1)'#010+ '**2Se<x>_compiler stops ','after the <x> errors (default is 1)'#010+
'**2Sg_allow LA','BEL and GOTO'#010+ '**2Sg_allow LABEL and GOTO'#010+
'**2Sh_Use ansistrings'#010+ '**2Sh_Use ansistrings'#010+
'**2Si_support C++ styled INLINE'#010+ '**2Si_support C++ styled INLINE'#010+
'**2Sm_support macros like C (global)'#010+ '**2Sm_support macros like C (global)'#010+
'**2So_tries to be TP/BP 7.0 compatible'#010+ '**2So_tries to be TP/BP 7.0 compatible'#010+
'**2Sp_tries to be gpc compatible'#010+ '**2Sp_tries to be gpc compatible'#010+
'**2Ss_constructor name must be init (destructor must be done)'#010+ '**2Ss_construc','tor name must be init (destructor must be done)'#010+
'**','2St_allow static keyword in objects'#010+ '**2St_allow static keyword in objects'#010+
'**1s_don'#039't call assembler and linker (only with -a)'#010+ '**1s_don'#039't call assembler and linker (only with -a)'#010+
'**1u<x>_undefines the symbol <x>'#010+ '**1u<x>_undefines the symbol <x>'#010+
'**1U_unit options:'#010+ '**1U_unit options:'#010+
'**2Un_don'#039't check the unit name'#010+ '**2Un_don'#039't check the unit name'#010+
'**2Ur_generate rel','ease unit files'#010+
'**2Us_compile a system unit'#010+ '**2Us_compile a system unit'#010+
'**1v<x>_Be verbose. <x> is a combination',' of the following letters:'#010+ '**1v<x>_Be verbose. <x> is a combination of the following letters:'#010+
'**2*_e : Show errors (default) d : Show debug info'#010+ '**2*_e : Show errors (default) d : Show debug info'#010+
'**2*_w : Show warnings u : Show unit info'#010+ '**2*_w : Show warnings u : Show unit info'#010+
'**2*_n : Show notes t : Show tried/used files'#010+ '**2*_n : Show no','tes t : Show tried/used files'#010+
'**2*_h : Show hints ','m : Show defined macros'#010+ '**2*_h : Show hints m : Show defined macros'#010+
'**2*_i : Show general info p : Show compiled procedures'#010+ '**2*_i : Show general info p : Show compiled procedures'#010+
'**2*_l : Show linenumbers c : Show conditionals'#010+ '**2*_l : Show linenumbers c : Show conditionals'#010+
'**2*_a : Show everything 0 : Show nothing (except errors)'#010+ '**2*_a ',': Show everything 0 : Show nothing (except errors'+
'**2*_b : Show all pro','cedure r : Rhide/GCC compatibility mod'+ ')'#010+
'e'#010+ '**2*_b : Show all procedure r : Rhide/GCC compatibility mode'#010+
'**2*_ declarations if an error x : Executable info (Win32 only)'#010+ '**2*_ declarations if an error x : Executable info (Win32 only)'#010+
'**2*_ occurs'#010+ '**2*_ occurs'#010+
'**1X_executable options:'#010+ '**1X_executable optio','ns:'#010+
'*L2Xc_link with the c library'#010+ '*L2Xc_link with the c library'#010+
'**2Xs_strip all symbols from executable'#010+ '**2Xs_strip all symbols from executable'#010+
'**2XD_try ','to link dynamic (defines FPC_LINK_DYNAMIC)'#010+ '**2XD_try to link dynamic (defines FPC_LINK_DYNAMIC)'#010+
'**2XS_try to link static (default) (defines FPC_LINK_STATIC)'#010+ '**2XS_try to link static (default) (defines FPC_LINK_STATIC)'#010+
'**2XX_try to link smart (defines FPC_LINK_SMART)'#010+ '**2XX_try to link smart (defines',' FPC_LINK_SMART)'#010+
'**0*_Processor specific options:'#010+ '**0*_Processor specific options:'#010+
'3*1A<x>_output format:'#010+ '3*1A<x>_output format:'#010+
'3*2Aas_asse','mble using GNU AS'#010+ '3*2Aas_assemble using GNU AS'#010+
'3*2Aasaout_assemble using GNU AS for aout (Go32v1)'#010+ '3*2Aasaout_assemble using GNU AS for aout (Go32v1)'#010+
'3*2Anasmcoff_coff (Go32v2) file using Nasm'#010+ '3*2Anasmcoff_coff (Go32v2) file using Nasm'#010+
'3*2Anasmelf_elf32 (Linux) file using Nasm'#010+ '3*2Anasmelf_elf32 (Linux) file using Nasm'#010+
'3*2Anasmobj_obj file using Nasm'#010+ '3*','2Anasmobj_obj file using Nasm'#010+
'3*2Amasm_obj file using Masm (Microsoft)'#010+ '3*2Amasm_obj file using Masm (Microsoft)'#010+
'3*2Atasm_obj ','file using Tasm (Borland)'#010+ '3*2Atasm_obj file using Tasm (Borland)'#010+
'3*2Acoff_coff (Go32v2) using internal writer'#010+ '3*2Acoff_coff (Go32v2) using internal writer'#010+
'3*2Apecoff_pecoff (Win32) using internal writer'#010+ '3*2Apecoff_pecoff (Win32) using internal writer'#010+
'3*1R<x>_assembler reading style:'#010+ '3*1R<x>_assembler reading style:'#010+
'3*2Ratt_read AT&T style assembler'#010+ '3*2R','att_read AT&T style assembler'#010+
'3*2Rintel_read Intel style assembler'#010+ '3*2Rintel_read Intel style assembler'#010+
'3*2Rdirect_copy a','ssembler text directly to assembler file'#010+ '3*2Rdirect_copy assembler text directly to assembler file'#010+
'3*1O<x>_optimizations:'#010+ '3*1O<x>_optimizations:'#010+
'3*2Og_generate smaller code'#010+ '3*2Og_generate smaller code'#010+
'3*2OG_generate faster code (default)'#010+ '3*2OG_generate faster code (default)'#010+
'3*2Or_keep certain variables in registers'#010+ '3*2Or_keep certain variable','s in registers'#010+
'3*2Ou_enable uncertain optimizations (see docs)'#010+ '3*2Ou_enable uncertain optimizations (see docs)'#010+
'3*2O1_level 1 optimiz','ations (quick optimizations)'#010+ '3*2O1_level 1 optimizations (quick optimizations)'#010+
'3*2O2_level 2 optimizations (-O1 + slower optimizations)'#010+ '3*2O2_level 2 optimizations (-O1 + slower optimizations)'#010+
'3*2O3_level 3 optimizations (-O2 repeatedly, max 5 times)'#010+ '3*2O3_level 3 optimizations (-O2 repeatedly, max 5 times)'#010+
'3*2Op<x>_target processor:'#010+ '3*2Op<x>_tar','get processor:'#010+
'3*3Op1_set target processor to 386/486'#010+ '3*3Op1_set target processor to 386/486'#010+
'3*3Op2_set target processor to',' Pentium/PentiumMMX (tm)'#010+ '3*3Op2_set target processor to Pentium/PentiumMMX (tm)'#010+
'3*3Op3_set target processor to PPro/PII/c6x86/K6 (tm)'#010+ '3*3Op3_set target processor to PPro/PII/c6x86/K6 (tm)'#010+
'3*1T<x>_Target operating system:'#010+ '3*1T<x>_Target operating system:'#010+
'3*2TGO32V1_version 1 of DJ Delorie DOS extender'#010+ '3*2TGO32V1_version 1 of DJ Delorie DOS exten','der'#010+
'3*2TGO32V2_version 2 of DJ Delorie DOS extender'#010+ '3*2TGO32V2_version 2 of DJ Delorie DOS extender'#010+
'3*2TLINUX_Linux'#010+ '3*2TLINUX_Linux'#010+
'3*2Tnetware_Nove','ll Netware Module (experimental)'#010+ '3*2Tnetware_Novell Netware Module (experimental)'#010+
'3*2TOS2_OS/2 2.x'#010+ '3*2TOS2_OS/2 2.x'#010+
'3*2TSUNOS_SunOS/Solaris'#010+ '3*2TSUNOS_SunOS/Solaris'#010+
'3*2TWin32_Windows 32 Bit'#010+ '3*2TWin32_Windows 32 Bit'#010+
'3*1W<x>_Win32 target options'#010+ '3*1W<x>_Win32 target options'#010+
'3*2WB<x>_Set Image base to Hexadecimal <x> value'#010+ '3*2WB<x>_Set Image base to H','exadecimal <x> value'#010+
'3*2WC_Specify console type application'#010+ '3*2WC_Specify console type application'#010+
'3*2WD_Use DEFFILE to exp','ort functions of DLL or EXE'#010+ '3*2WD_Use DEFFILE to export functions of DLL or EXE'#010+
'3*2WF_Specify full-screen type application (OS/2 only)'#010+ '3*2WF_Specify full-screen type application (OS/2 only)'#010+
'3*2WG_Specify graphic type application'#010+ '3*2WG_Specify graphic type application'#010+
'3*2WN_Do not generate relocation code (necessary for debugging)'#010+ '3*2WN_Do not generate relocation c','ode (necessary for debugging)'#010+
'3*2WR_Generate relocation code'#010+ '3*2WR_Generate relocation code'#010+
'6*1A<x>_output format'#010+ '6*1A<x>_output format'#010+
'6','*2Aas_Unix o-file using GNU AS'#010+ '6*2Aas_Unix o-file using GNU AS'#010+
'6*2Agas_GNU Motorola assembler'#010+ '6*2Agas_GNU Motorola assembler'#010+
'6*2Amit_MIT Syntax (old GAS)'#010+ '6*2Amit_MIT Syntax (old GAS)'#010+
'6*2Amot_Standard Motorola assembler'#010+ '6*2Amot_Standard Motorola assembler'#010+
'6*1O_optimizations:'#010+ '6*1O_optimizations:'#010+
'6*2Oa_turn on the optimizer'#010+ '6*2Oa_tur','n on the optimizer'#010+
'6*2Og_generate smaller code'#010+ '6*2Og_generate smaller code'#010+
'6*2OG_generate faster code (default)'#010, '6*2OG_generate faster code (default)'#010+
'6*2Ox_optimize maximum (still BUGGY!!!)'#010+ '6*2Ox_optimize maximum (still BUGGY!!!)'#010+
'6*2O2_set target processor to a MC68020+'#010+ '6*2O2_set target processor to a MC68020+'#010+
'6*1R<x>_assembler reading style:'#010+ '6*1R<x>_assembler reading style:'#010+
'6*2RMOT_read motorola style assembler'#010+ '6*2RMOT_read motorola style assembler'#010+
'6*1T<x>_Target operating system:'#010+ '6*1T','<x>_Target operating system:'#010+
'6*2TAMIGA_Commodore Amiga'#010+ '6*2TAMIGA_Commodore Amiga'#010+
'6*2TATARI_Atari ST/STe/TT'#010+ '6*2TATARI_Atari ST/STe/TT'#010+
'6*2','TMACOS_Macintosh m68k'#010+ '6*2TMACOS_Macintosh m68k'#010+
'6*2TLINUX_Linux-68k'#010+ '6*2TLINUX_Linux-68k'#010+
'**1*_'#010+ '**1*_'#010+
'**1?_shows this help'#010+ '**1?_shows this help'#010+

View File

@ -741,6 +741,7 @@ begin
Message2(option_obsolete_switch_use_new,'-Up','-Fu'); Message2(option_obsolete_switch_use_new,'-Up','-Fu');
break; break;
end; end;
'r' : do_release:=true;
's' : initmoduleswitches:=initmoduleswitches+[cs_compilesystem]; 's' : initmoduleswitches:=initmoduleswitches+[cs_compilesystem];
'-' : begin '-' : begin
initmoduleswitches:=initmoduleswitches initmoduleswitches:=initmoduleswitches
@ -1540,7 +1541,12 @@ finalization
end. end.
{ {
$Log$ $Log$
Revision 1.43 2001-06-02 19:21:45 peter Revision 1.44 2001-06-18 20:36:24 peter
* -Ur switch (merged)
* masm fixes (merged)
* quoted filenames for go32v2 and win32
Revision 1.43 2001/06/02 19:21:45 peter
* extradefines field added to target_info, so that targets don't * extradefines field added to target_info, so that targets don't
need to put code in options.pas for it need to put code in options.pas for it

View File

@ -319,11 +319,6 @@ implementation
; ;
{$endif powerpc} {$endif powerpc}
{$ifdef i386} {$ifdef i386}
target_i386_Win32 :
begin
if islibrary then
exportssection.concat(tai_const_symbol.create_rva(exportlib.edatalabel));
end;
target_i386_GO32V2 : target_i386_GO32V2 :
begin begin
{ stacksize can be specified } { stacksize can be specified }
@ -1216,6 +1211,13 @@ implementation
end; end;
compile_proc_body(true,false); compile_proc_body(true,false);
{ Add symbol to the exports section for win32 so smartlinking a
DLL will include the edata section }
if assigned(exportlib) and
(target_info.target=target_i386_win32) and
assigned(current_module._exports.first) then
codesegment.concat(tai_const_symbol.create(exportlib.edatalabel));
{ avoid self recursive destructor call !! PM } { avoid self recursive destructor call !! PM }
aktprocsym.definition.localst:=nil; aktprocsym.definition.localst:=nil;
@ -1333,7 +1335,12 @@ implementation
end. end.
{ {
$Log$ $Log$
Revision 1.36 2001-06-06 21:58:16 peter Revision 1.37 2001-06-18 20:36:25 peter
* -Ur switch (merged)
* masm fixes (merged)
* quoted filenames for go32v2 and win32
Revision 1.36 2001/06/06 21:58:16 peter
* Win32 fixes for Makefile so it doesn't require sh.exe * Win32 fixes for Makefile so it doesn't require sh.exe
Revision 1.35 2001/06/03 21:57:36 peter Revision 1.35 2001/06/03 21:57:36 peter

View File

@ -126,6 +126,7 @@ const
external linking! } external linking! }
uf_has_resources = $800; { unit has resource section } uf_has_resources = $800; { unit has resource section }
uf_little_endian = $1000; uf_little_endian = $1000;
uf_release = $2000;{ unit was compiled with -Ur option }
type type
ppureal=extended; ppureal=extended;
@ -956,7 +957,12 @@ end;
end. end.
{ {
$Log$ $Log$
Revision 1.9 2001-05-18 22:28:59 peter Revision 1.10 2001-06-18 20:36:25 peter
* -Ur switch (merged)
* masm fixes (merged)
* quoted filenames for go32v2 and win32
Revision 1.9 2001/05/18 22:28:59 peter
* endian define * endian define
Revision 1.8 2001/05/06 14:49:17 peter Revision 1.8 2001/05/06 14:49:17 peter

View File

@ -63,9 +63,6 @@ implementation
procedure readtypedconst(const t:ttype;sym : ttypedconstsym;no_change_allowed : boolean); procedure readtypedconst(const t:ttype;sym : ttypedconstsym;no_change_allowed : boolean);
var var
{$ifdef m68k}
j : longint;
{$endif m68k}
len,base : longint; len,base : longint;
p,hp : tnode; p,hp : tnode;
i,l,offset, i,l,offset,
@ -369,23 +366,9 @@ implementation
Message(cg_e_illegal_expression) Message(cg_e_illegal_expression)
else else
begin begin
{$ifdef i386} { this writing is endian independant }
for l:=0 to t.def.size-1 do for l:=0 to t.def.size-1 do
curconstSegment.concat(Tai_const.Create_8bit(tsetconstnode(p).value_set^[l])); curconstSegment.concat(Tai_const.Create_8bit(tsetconstnode(p).value_set^[l]));
{$endif}
{$ifdef m68k}
j:=0;
for l:=0 to ((def.size-1) div 4) do
{ HORRIBLE HACK because of endian }
{ now use intel endian for constant sets }
begin
curconstSegment.concat(Tai_const.Create_8bit(tordconstnode(p).value_set^[j+3]));
curconstSegment.concat(Tai_const.Create_8bit(tordconstnode(p).value_set^[j+2]));
curconstSegment.concat(Tai_const.Create_8bit(tordconstnode(p).value_set^[j+1]));
curconstSegment.concat(Tai_const.Create_8bit(tordconstnode(p).value_set^[j]));
Inc(j,4);
end;
{$endif}
end; end;
end end
else else
@ -778,7 +761,7 @@ implementation
{ don't complain if there only come other variant parts } { don't complain if there only come other variant parts }
{ after the last initialized field } { after the last initialized field }
(tvarsym(srsym).address > tvarsym(recsym).address) then (tvarsym(srsym).address > tvarsym(recsym).address) then
Message1(parser_w_skipped_fields_after,s); Message1(parser_h_skipped_fields_after,s);
for i:=1 to t.def.size-aktpos do for i:=1 to t.def.size-aktpos do
curconstSegment.concat(Tai_const.Create_8bit(0)); curconstSegment.concat(Tai_const.Create_8bit(0));
@ -902,7 +885,12 @@ implementation
end. end.
{ {
$Log$ $Log$
Revision 1.23 2001-05-06 17:15:00 jonas Revision 1.24 2001-06-18 20:36:25 peter
* -Ur switch (merged)
* masm fixes (merged)
* quoted filenames for go32v2 and win32
Revision 1.23 2001/05/06 17:15:00 jonas
+ detect incomplete typed constant records + detect incomplete typed constant records
Revision 1.22 2001/04/18 22:01:57 peter Revision 1.22 2001/04/18 22:01:57 peter

View File

@ -297,11 +297,11 @@ begin
{ Call linker } { Call linker }
SplitBinCmd(Info.ExeCmd[1],binstr,cmdstr); SplitBinCmd(Info.ExeCmd[1],binstr,cmdstr);
Replace(cmdstr,'$EXE',current_module.exefilename^); Replace(cmdstr,'$EXE',maybequoted(current_module.exefilename^));
Replace(cmdstr,'$OPT',Info.ExtraOptions); Replace(cmdstr,'$OPT',Info.ExtraOptions);
Replace(cmdstr,'$RES',outputexedir+Info.ResName); Replace(cmdstr,'$RES',maybequoted(outputexedir+Info.ResName));
Replace(cmdstr,'$STRIP',StripStr); Replace(cmdstr,'$STRIP',StripStr);
Replace(cmdstr,'$SCRIPT','--script='+outputexedir+Info.ResName); Replace(cmdstr,'$SCRIPT','--script='+maybequoted(outputexedir+Info.ResName));
success:=DoExec(FindUtil(BinStr),cmdstr,true,false); success:=DoExec(FindUtil(BinStr),cmdstr,true,false);
{ Remove ReponseFile } { Remove ReponseFile }
@ -473,7 +473,12 @@ initialization
end. end.
{ {
$Log$ $Log$
Revision 1.5 2001-06-03 15:15:31 peter Revision 1.6 2001-06-18 20:36:26 peter
* -Ur switch (merged)
* masm fixes (merged)
* quoted filenames for go32v2 and win32
Revision 1.5 2001/06/03 15:15:31 peter
* dllprt0 stub for linux shared libs * dllprt0 stub for linux shared libs
* pass -init and -fini for linux shared libs * pass -init and -fini for linux shared libs
* libprefix splitted into staticlibprefix and sharedlibprefix * libprefix splitted into staticlibprefix and sharedlibprefix

View File

@ -429,6 +429,7 @@ implementation
if not(assigned(exportssection)) then if not(assigned(exportssection)) then
exportssection:=TAAsmoutput.create; exportssection:=TAAsmoutput.create;
last_index:=0; last_index:=0;
getdatalabel(edatalabel);
end; end;
@ -552,7 +553,6 @@ implementation
exportsSection.concat(Tai_section.Create(sec_edata)); exportsSection.concat(Tai_section.Create(sec_edata));
{ create label to reference from main so smartlink will include { create label to reference from main so smartlink will include
the .edata section } the .edata section }
getdatalabel(edatalabel);
exportsSection.concat(Tai_symbol.Create(edatalabel,0)); exportsSection.concat(Tai_symbol.Create(edatalabel,0));
{ export flags } { export flags }
exportsSection.concat(Tai_const.Create_32bit(0)); exportsSection.concat(Tai_const.Create_32bit(0));
@ -819,9 +819,9 @@ begin
SplitBinCmd(Info.ExeCmd[i],binstr,cmdstr); SplitBinCmd(Info.ExeCmd[i],binstr,cmdstr);
if binstr<>'' then if binstr<>'' then
begin begin
Replace(cmdstr,'$EXE',current_module.exefilename^); Replace(cmdstr,'$EXE',maybequoted(current_module.exefilename^));
Replace(cmdstr,'$OPT',Info.ExtraOptions); Replace(cmdstr,'$OPT',Info.ExtraOptions);
Replace(cmdstr,'$RES',outputexedir+Info.ResName); Replace(cmdstr,'$RES',maybequoted(outputexedir+Info.ResName));
Replace(cmdstr,'$APPTYPE',AppTypeStr); Replace(cmdstr,'$APPTYPE',AppTypeStr);
Replace(cmdstr,'$ASBIN',AsbinStr); Replace(cmdstr,'$ASBIN',AsbinStr);
Replace(cmdstr,'$RELOC',RelocStr); Replace(cmdstr,'$RELOC',RelocStr);
@ -830,7 +830,7 @@ begin
if not DefFile.Empty {and UseDefFileForExport} then if not DefFile.Empty {and UseDefFileForExport} then
begin begin
DefFile.WriteFile; DefFile.WriteFile;
Replace(cmdstr,'$DEF','-d '+deffile.fname); Replace(cmdstr,'$DEF','-d '+maybequoted(deffile.fname));
end end
else else
Replace(cmdstr,'$DEF',''); Replace(cmdstr,'$DEF','');
@ -899,9 +899,9 @@ begin
SplitBinCmd(Info.DllCmd[i],binstr,cmdstr); SplitBinCmd(Info.DllCmd[i],binstr,cmdstr);
if binstr<>'' then if binstr<>'' then
begin begin
Replace(cmdstr,'$EXE',current_module.sharedlibfilename^); Replace(cmdstr,'$EXE',maybequoted(current_module.sharedlibfilename^));
Replace(cmdstr,'$OPT',Info.ExtraOptions); Replace(cmdstr,'$OPT',Info.ExtraOptions);
Replace(cmdstr,'$RES',outputexedir+Info.ResName); Replace(cmdstr,'$RES',maybequoted(outputexedir+Info.ResName));
Replace(cmdstr,'$APPTYPE',AppTypeStr); Replace(cmdstr,'$APPTYPE',AppTypeStr);
Replace(cmdstr,'$ASBIN',AsbinStr); Replace(cmdstr,'$ASBIN',AsbinStr);
Replace(cmdstr,'$RELOC',RelocStr); Replace(cmdstr,'$RELOC',RelocStr);
@ -910,7 +910,7 @@ begin
if not DefFile.Empty {and UseDefFileForExport} then if not DefFile.Empty {and UseDefFileForExport} then
begin begin
DefFile.WriteFile; DefFile.WriteFile;
Replace(cmdstr,'$DEF','-d '+deffile.fname); Replace(cmdstr,'$DEF','-d '+maybequoted(deffile.fname));
end end
else else
Replace(cmdstr,'$DEF',''); Replace(cmdstr,'$DEF','');
@ -1456,7 +1456,12 @@ initialization
end. end.
{ {
$Log$ $Log$
Revision 1.11 2001-06-06 21:58:16 peter Revision 1.12 2001-06-18 20:36:26 peter
* -Ur switch (merged)
* masm fixes (merged)
* quoted filenames for go32v2 and win32
Revision 1.11 2001/06/06 21:58:16 peter
* Win32 fixes for Makefile so it doesn't require sh.exe * Win32 fixes for Makefile so it doesn't require sh.exe
Revision 1.10 2001/06/03 20:18:13 peter Revision 1.10 2001/06/03 20:18:13 peter