mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-13 12:49:33 +02:00
1831 lines
55 KiB
ObjectPascal
1831 lines
55 KiB
ObjectPascal
{
|
|
$Id$
|
|
Copyright (C) 1998-2000 by Florian Klaempfl
|
|
|
|
This unit contains information about the target systems supported
|
|
(these are not processor specific)
|
|
|
|
This progsam is free software; you can redistribute it and/or modify
|
|
iu under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
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. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 675 Mass Ave, Cambridge- MA 02139, USA.
|
|
|
|
****************************************************************************
|
|
}
|
|
unit systems;
|
|
|
|
{$i defines.inc}
|
|
|
|
interface
|
|
|
|
type
|
|
tendian = (endian_little,endian_big);
|
|
|
|
ttargetcpu=(no_cpu
|
|
,i386,m68k,alpha,powerpc
|
|
);
|
|
|
|
tprocessors = (no_processor
|
|
,Class386,ClassP5,ClassP6
|
|
,MC68000,MC68100,MC68020
|
|
);
|
|
|
|
tsection=(sec_none,
|
|
sec_code,sec_data,sec_bss,
|
|
sec_idata2,sec_idata4,sec_idata5,sec_idata6,sec_idata7,sec_edata,
|
|
sec_stab,sec_stabstr
|
|
);
|
|
|
|
type
|
|
tasmmode= (asmmode_none
|
|
,asmmode_i386_direct,asmmode_i386_att,asmmode_i386_intel
|
|
,asmmode_m68k_mot,asmmode_alpha_direct,asmmode_powerpc_direct
|
|
);
|
|
const
|
|
{$ifdef i386} i386asmmodecnt=3; {$else} i386asmmodecnt=0; {$endif}
|
|
{$ifdef m68k} m68kasmmodecnt=1; {$else} m68kasmmodecnt=0; {$endif}
|
|
{$ifdef alpha} alphaasmmodecnt=1; {$else} alphaasmmodecnt=0; {$endif}
|
|
{$ifdef powerpc} powerpcasmmodecnt=1; {$else} powerpcasmmodecnt=0; {$endif}
|
|
asmmodecnt=i386asmmodecnt+m68kasmmodecnt+Alphaasmmodecnt+powerpcasmmodecnt+1;
|
|
|
|
type
|
|
ttarget = (target_none,
|
|
target_i386_GO32V1,target_i386_GO32V2,target_i386_linux,
|
|
target_i386_OS2,target_i386_Win32,target_i386_freebsd,
|
|
target_i386_Netware,target_i386_sunos,
|
|
target_m68k_Amiga,target_m68k_Atari,target_m68k_Mac,
|
|
target_m68k_linux,target_m68k_PalmOS,
|
|
target_alpha_linux,
|
|
target_powerpc_linux,target_powerpc_macos
|
|
);
|
|
|
|
ttargetflags = (tf_none,
|
|
tf_supports_stack_checking,tf_need_export,tf_needs_isconsole
|
|
);
|
|
|
|
const
|
|
{ alias for supported_target field in tasminfo }
|
|
target_any = target_none;
|
|
|
|
{$ifdef i386} i386targetcnt=8; {$else} i386targetcnt=0; {$endif}
|
|
{$ifdef m68k} m68ktargetcnt=5; {$else} m68ktargetcnt=0; {$endif}
|
|
{$ifdef alpha} alphatargetcnt=1; {$else} alphatargetcnt=0; {$endif}
|
|
{$ifdef powerpc} powerpctargetcnt=2; {$else} powerpctargetcnt=0; {$endif}
|
|
targetcnt=i386targetcnt+m68ktargetcnt+alphatargetcnt+powerpctargetcnt+1;
|
|
|
|
type
|
|
tasm = (as_none
|
|
,as_i386_as,as_i386_as_aout,as_i386_asw,
|
|
as_i386_nasmcoff,as_i386_nasmwin32,
|
|
as_i386_nasmelf,as_i386_nasmobj,
|
|
as_i386_tasm,as_i386_masm,
|
|
as_i386_dbg,as_i386_coff,as_i386_pecoff,as_i386_elf
|
|
,as_m68k_as,as_m68k_gas,as_m68k_mit,as_m68k_mot,as_m68k_mpw,
|
|
as_alpha_as,as_powerpc_as,as_powerpc_mpw
|
|
);
|
|
{ binary assembler writers, needed to test for -a }
|
|
const
|
|
{$ifdef i386} i386asmcnt=13; {$else} i386asmcnt=0; {$endif}
|
|
{$ifdef m68k} m68kasmcnt=5; {$else} m68kasmcnt=0; {$endif}
|
|
{$ifdef alpha} alphaasmcnt=1; {$else} alphaasmcnt=0; {$endif}
|
|
{$ifdef powerpc} powerpcasmcnt=2; {$else} powerpcasmcnt=0; {$endif}
|
|
asmcnt=i386asmcnt+m68kasmcnt+alphaasmcnt+powerpcasmcnt+1;
|
|
|
|
binassem : set of tasm = [
|
|
as_i386_dbg,as_i386_coff,as_i386_pecoff,as_i386_elf
|
|
];
|
|
|
|
type
|
|
tar = (ar_none
|
|
,ar_i386_ar,ar_i386_arw
|
|
,ar_m68k_ar,ar_alpha_ar,ar_powerpc_ar
|
|
);
|
|
const
|
|
{$ifdef i386} i386arcnt=2; {$else} i386arcnt=0; {$endif}
|
|
{$ifdef m68k} m68karcnt=1; {$else} m68karcnt=0; {$endif}
|
|
{$ifdef alpha} alphaarcnt=1; {$else} alphaarcnt=0; {$endif}
|
|
{$ifdef powerpc} powerpcarcnt=1; {$else} powerpcarcnt=0; {$endif}
|
|
arcnt=i386arcnt+m68karcnt+alphaarcnt+powerpcarcnt+1;
|
|
|
|
type
|
|
tres = (res_none
|
|
,res_i386_windres,res_m68k_mpw,res_powerpc_mpw, res_i386_emx
|
|
);
|
|
const
|
|
{$ifdef i386} i386rescnt=2; {$else} i386rescnt=0; {$endif}
|
|
{$ifdef m68k} m68krescnt=1; {$else} m68krescnt=0; {$endif}
|
|
{$ifdef alpha} alpharescnt=0; {$else} alpharescnt=0; {$endif}
|
|
{$ifdef powerpc} powerpcrescnt=1; {$else} powerpcrescnt=0; {$endif}
|
|
rescnt=i386rescnt+m68krescnt+alpharescnt+powerpcrescnt+1;
|
|
|
|
type
|
|
tos = ( os_none,
|
|
os_i386_GO32V1,os_i386_GO32V2,os_i386_Linux,os_i386_OS2,
|
|
os_i386_Win32,os_i386_freeBSD,os_i386_Netware,os_i386_sunos,
|
|
os_m68k_Amiga,os_m68k_Atari,os_m68k_Mac,os_m68k_Linux,
|
|
os_m68k_PalmOS,os_alpha_linux,os_powerpc_linux,os_powerpc_macos
|
|
);
|
|
const
|
|
i386oscnt=8;
|
|
m68koscnt=5;
|
|
alphaoscnt=1;
|
|
powerpcoscnt=2;
|
|
oscnt=i386oscnt+m68koscnt+alphaoscnt+powerpcoscnt+1;
|
|
|
|
type
|
|
tosinfo = packed record
|
|
id : tos;
|
|
name : string[30];
|
|
shortname : string[9];
|
|
sharedlibext : string[10];
|
|
staticlibext,
|
|
sourceext,
|
|
pasext,
|
|
exeext,
|
|
defext,
|
|
scriptext : string[4];
|
|
libprefix : string[4];
|
|
Cprefix : string[2];
|
|
newline : string[2];
|
|
endian : tendian;
|
|
{longint this is a little overkill no ?? but 256 is possible one day }
|
|
stackalignment : word;
|
|
maxCrecordalignment : word;
|
|
size_of_pointer : byte;
|
|
size_of_longint : byte;
|
|
use_bound_instruction : boolean;
|
|
use_function_relative_addresses : boolean;
|
|
end;
|
|
|
|
tasminfo = packed record
|
|
id : tasm;
|
|
idtxt : string[9];
|
|
asmbin : string[8];
|
|
asmcmd : string[50];
|
|
supported_target : ttarget;
|
|
allowdirect,
|
|
externals,
|
|
needar,
|
|
labelprefix_only_inside_procedure : boolean;
|
|
labelprefix : string[3];
|
|
comment : string[2];
|
|
secnames : array[tsection] of string[20];
|
|
end;
|
|
|
|
tarinfo = packed record
|
|
id : tar;
|
|
arcmd : string[50];
|
|
end;
|
|
|
|
tresinfo = packed record
|
|
id : tres;
|
|
resbin : string[8];
|
|
rescmd : string[50];
|
|
end;
|
|
|
|
ttargetinfo = packed record
|
|
target : ttarget;
|
|
flags : set of ttargetflags;
|
|
cpu : ttargetcpu;
|
|
short_name : string[8];
|
|
unit_env : string[12];
|
|
smartext,
|
|
unitext,
|
|
unitlibext,
|
|
asmext,
|
|
objext,
|
|
resext,
|
|
resobjext,
|
|
exeext : string[4];
|
|
os : tos;
|
|
assem : tasm;
|
|
assemsrc : tasm; { default source writing assembler }
|
|
ar : tar;
|
|
res : tres;
|
|
heapsize,
|
|
maxheapsize,
|
|
stacksize : longint;
|
|
DllScanSupported : boolean;
|
|
end;
|
|
|
|
tasmmodeinfo=packed record
|
|
id : tasmmode;
|
|
idtxt : string[8];
|
|
end;
|
|
|
|
var
|
|
target_cpu : ttargetcpu;
|
|
target_info : ttargetinfo;
|
|
target_os : tosinfo;
|
|
target_asm : tasminfo;
|
|
target_ar : tarinfo;
|
|
target_res : tresinfo;
|
|
target_path : string[12]; { for rtl/<X>/,fcl/<X>/, etc. }
|
|
source_os : tosinfo;
|
|
|
|
function set_target_os(t:tos):boolean;
|
|
function set_target_asm(t:tasm):boolean;
|
|
function set_target_ar(t:tar):boolean;
|
|
function set_target_res(t:tres):boolean;
|
|
function set_target_info(t:ttarget):boolean;
|
|
|
|
function set_string_target(s : string) : boolean;
|
|
function set_string_asm(s : string) : boolean;
|
|
function set_string_asmmode(s:string;var t:tasmmode):boolean;
|
|
|
|
procedure InitSystems;
|
|
|
|
|
|
implementation
|
|
|
|
uses
|
|
cutils;
|
|
|
|
const
|
|
|
|
{****************************************************************************
|
|
OS Info
|
|
****************************************************************************}
|
|
os_infos : array[1..oscnt] of tosinfo = (
|
|
(
|
|
id : os_none;
|
|
name : 'No operating system';
|
|
shortname : 'none'
|
|
),
|
|
(
|
|
id : os_i386_go32v1;
|
|
name : 'GO32 V1 DOS extender';
|
|
shortname : 'go32v1';
|
|
sharedlibext : '.dll';
|
|
staticlibext : '.a';
|
|
sourceext : '.pp';
|
|
pasext : '.pas';
|
|
exeext : ''; { No .exe, the linker only output a.out ! }
|
|
defext : '.def';
|
|
scriptext : '.bat';
|
|
libprefix : '';
|
|
Cprefix : '_';
|
|
newline : #13#10;
|
|
endian : endian_little;
|
|
stackalignment : 2;
|
|
maxCrecordalignment : 4;
|
|
size_of_pointer : 4;
|
|
size_of_longint : 4;
|
|
use_bound_instruction : false;
|
|
use_function_relative_addresses : true
|
|
),
|
|
(
|
|
id : os_i386_go32v2;
|
|
name : 'GO32 V2 DOS extender';
|
|
shortname : 'go32v2';
|
|
sharedlibext : '.dll';
|
|
staticlibext : '.a';
|
|
sourceext : '.pp';
|
|
pasext : '.pas';
|
|
exeext : '.exe';
|
|
defext : '.def';
|
|
scriptext : '.bat';
|
|
libprefix : '';
|
|
Cprefix : '_';
|
|
newline : #13#10;
|
|
endian : endian_little;
|
|
stackalignment : 2;
|
|
maxCrecordalignment : 4;
|
|
size_of_pointer : 4;
|
|
size_of_longint : 4;
|
|
use_bound_instruction : false;
|
|
use_function_relative_addresses : true
|
|
),
|
|
(
|
|
id : os_i386_linux;
|
|
name : 'Linux for i386';
|
|
shortname : 'linux';
|
|
sharedlibext : '.so';
|
|
staticlibext : '.a';
|
|
sourceext : '.pp';
|
|
pasext : '.pas';
|
|
exeext : '';
|
|
defext : '.def';
|
|
scriptext : '.sh';
|
|
libprefix : 'libp';
|
|
Cprefix : '';
|
|
newline : #10;
|
|
endian : endian_little;
|
|
stackalignment : 4;
|
|
maxCrecordalignment : 4;
|
|
size_of_pointer : 4;
|
|
size_of_longint : 4;
|
|
use_bound_instruction : false;
|
|
use_function_relative_addresses : true
|
|
),
|
|
(
|
|
id : os_i386_FreeBSD;
|
|
name : 'FreeBSD/ELF for i386';
|
|
shortname : 'freebsd';
|
|
sharedlibext : '.so';
|
|
staticlibext : '.a';
|
|
sourceext : '.pp';
|
|
pasext : '.pas';
|
|
exeext : '';
|
|
defext : '.def';
|
|
scriptext : '.sh';
|
|
libprefix : 'libp';
|
|
Cprefix : '';
|
|
newline : #10;
|
|
endian : endian_little;
|
|
stackalignment : 4;
|
|
maxCrecordalignment : 4;
|
|
size_of_pointer : 4;
|
|
size_of_longint : 4;
|
|
use_bound_instruction : false;
|
|
use_function_relative_addresses : true
|
|
),
|
|
(
|
|
id : os_i386_os2;
|
|
name : 'OS/2 via EMX';
|
|
shortname : 'os2';
|
|
sharedlibext : '.ao2';
|
|
staticlibext : '.ao2';
|
|
sourceext : '.pas';
|
|
pasext : '.pp';
|
|
exeext : '.exe';
|
|
defext : '.def';
|
|
scriptext : '.cmd';
|
|
libprefix : '';
|
|
Cprefix : '_';
|
|
newline : #13#10;
|
|
endian : endian_little;
|
|
stackalignment : 4;
|
|
maxCrecordalignment : 4;
|
|
size_of_pointer : 4;
|
|
size_of_longint : 4;
|
|
use_bound_instruction : false;
|
|
use_function_relative_addresses : false
|
|
),
|
|
(
|
|
id : os_i386_win32;
|
|
name : 'Win32 for i386';
|
|
shortname : 'win32';
|
|
sharedlibext : '.dll';
|
|
staticlibext : '.aw';
|
|
sourceext : '.pp';
|
|
pasext : '.pas';
|
|
exeext : '.exe';
|
|
defext : '.def';
|
|
scriptext : '.bat';
|
|
libprefix : 'libp';
|
|
Cprefix : '_';
|
|
newline : #13#10;
|
|
endian : endian_little;
|
|
stackalignment : 4;
|
|
maxCrecordalignment : 16;
|
|
size_of_pointer : 4;
|
|
size_of_longint : 4;
|
|
use_bound_instruction : false;
|
|
use_function_relative_addresses : true
|
|
),
|
|
(
|
|
id : os_i386_Netware;
|
|
name : 'Netware for i386';
|
|
shortname : 'netware';
|
|
sharedlibext : '.nlm';
|
|
staticlibext : '.a';
|
|
sourceext : '.pp';
|
|
pasext : '.pas';
|
|
exeext : '.nlm';
|
|
defext : '.def';
|
|
scriptext : '.sh';
|
|
libprefix : '';
|
|
Cprefix : '';
|
|
newline : #13#10;
|
|
endian : endian_little;
|
|
stackalignment : 4;
|
|
maxCrecordalignment : 4;
|
|
size_of_pointer : 4;
|
|
size_of_longint : 4;
|
|
use_bound_instruction : false;
|
|
use_function_relative_addresses : true
|
|
),
|
|
(
|
|
id : os_i386_sunos;
|
|
name : 'sunOS/ELF for i386';
|
|
shortname : 'sunos';
|
|
sharedlibext : '.so';
|
|
staticlibext : '.a';
|
|
sourceext : '.pp';
|
|
pasext : '.pas';
|
|
exeext : '';
|
|
defext : '.def';
|
|
scriptext : '.sh';
|
|
libprefix : 'lib';
|
|
Cprefix : '';
|
|
newline : #10;
|
|
endian : endian_little;
|
|
stackalignment : 4;
|
|
maxCrecordalignment : 4;
|
|
size_of_pointer : 4;
|
|
size_of_longint : 4;
|
|
use_bound_instruction : false;
|
|
use_function_relative_addresses : true
|
|
),
|
|
(
|
|
id : os_m68k_amiga;
|
|
name : 'Commodore Amiga';
|
|
shortname : 'amiga';
|
|
sharedlibext : '.library';
|
|
staticlibext : '.a';
|
|
sourceext : '.pp';
|
|
pasext : '.pas';
|
|
exeext : '';
|
|
defext : '';
|
|
scriptext : '';
|
|
libprefix : '';
|
|
Cprefix : '_';
|
|
newline : #10;
|
|
endian : endian_big;
|
|
stackalignment : 2;
|
|
maxCrecordalignment : 4;
|
|
size_of_pointer : 4;
|
|
size_of_longint : 4;
|
|
use_bound_instruction : false;
|
|
use_function_relative_addresses : false
|
|
),
|
|
(
|
|
id : os_m68k_atari;
|
|
name : 'Atari ST/STE';
|
|
shortname : 'atari';
|
|
sharedlibext : '.dll';
|
|
staticlibext : '.a';
|
|
sourceext : '.pp';
|
|
pasext : '.pas';
|
|
exeext : '.tpp';
|
|
defext : '';
|
|
scriptext : '';
|
|
libprefix : '';
|
|
Cprefix : '_';
|
|
newline : #10;
|
|
endian : endian_big;
|
|
stackalignment : 2;
|
|
maxCrecordalignment : 4;
|
|
size_of_pointer : 4;
|
|
size_of_longint : 4;
|
|
use_bound_instruction : false;
|
|
use_function_relative_addresses : false
|
|
),
|
|
(
|
|
id : os_m68k_mac;
|
|
name : 'Macintosh m68k';
|
|
shortname : 'mac';
|
|
sharedlibext : 'Lib';
|
|
staticlibext : 'Lib';
|
|
sourceext : '.pp';
|
|
pasext : '.pas';
|
|
exeext : '';
|
|
defext : '';
|
|
scriptext : '';
|
|
libprefix : '';
|
|
Cprefix : '_';
|
|
newline : #13;
|
|
endian : endian_big;
|
|
stackalignment : 2;
|
|
maxCrecordalignment : 4;
|
|
size_of_pointer : 4;
|
|
size_of_longint : 4;
|
|
use_bound_instruction : false;
|
|
use_function_relative_addresses : false
|
|
),
|
|
(
|
|
id : os_m68k_linux;
|
|
name : 'Linux for m68k';
|
|
shortname : 'linux';
|
|
sharedlibext : '.so';
|
|
staticlibext : '.a';
|
|
sourceext : '.pp';
|
|
pasext : '.pas';
|
|
exeext : '';
|
|
defext : '';
|
|
scriptext : '.sh';
|
|
libprefix : 'libp';
|
|
Cprefix : '';
|
|
newline : #10;
|
|
endian : endian_big;
|
|
stackalignment : 2;
|
|
maxCrecordalignment : 32;
|
|
size_of_pointer : 4;
|
|
size_of_longint : 4;
|
|
use_bound_instruction : false;
|
|
use_function_relative_addresses : true
|
|
),
|
|
(
|
|
id : os_m68k_palmos;
|
|
name : 'PalmOS';
|
|
shortname : 'palmos';
|
|
sharedlibext : '.so';
|
|
staticlibext : '.a';
|
|
sourceext : '.pp';
|
|
pasext : '.pas';
|
|
exeext : '';
|
|
defext : '';
|
|
scriptext : '.sh';
|
|
libprefix : 'libp';
|
|
Cprefix : '_';
|
|
newline : #10;
|
|
endian : endian_big;
|
|
stackalignment : 2;
|
|
maxCrecordalignment : 32;
|
|
size_of_pointer : 4;
|
|
size_of_longint : 4;
|
|
use_bound_instruction : false;
|
|
use_function_relative_addresses : false
|
|
),
|
|
(
|
|
id : os_alpha_linux;
|
|
name : 'Linux for Alpha';
|
|
shortname : 'axplinux';
|
|
sharedlibext : '.so';
|
|
staticlibext : '.a';
|
|
sourceext : '.pp';
|
|
pasext : '.pas';
|
|
exeext : '';
|
|
defext : '.def';
|
|
scriptext : '.sh';
|
|
libprefix : 'libp';
|
|
Cprefix : '';
|
|
newline : #10;
|
|
endian : endian_little;
|
|
stackalignment : 8;
|
|
maxCrecordalignment : 32;
|
|
size_of_pointer : 8;
|
|
size_of_longint : 4;
|
|
use_bound_instruction : false;
|
|
use_function_relative_addresses : true
|
|
),
|
|
(
|
|
id : os_powerpc_linux;
|
|
name : 'Linux for PowerPC';
|
|
shortname : 'linuxppc';
|
|
sharedlibext : '.so';
|
|
staticlibext : '.s';
|
|
sourceext : '.pp';
|
|
pasext : '.pas';
|
|
exeext : '';
|
|
defext : '.def';
|
|
scriptext : '.sh';
|
|
libprefix : 'libp';
|
|
Cprefix : '';
|
|
newline : #10;
|
|
endian : endian_big;
|
|
stackalignment : 8;
|
|
maxCrecordalignment : 32;
|
|
size_of_pointer : 4;
|
|
size_of_longint : 4;
|
|
use_bound_instruction : false;
|
|
use_function_relative_addresses : true
|
|
),
|
|
(
|
|
id : os_powerpc_macos;
|
|
name : 'MacOs (PowerPC)';
|
|
shortname : 'MacOs/PPC';
|
|
sharedlibext : 'Lib';
|
|
staticlibext : 'Lib';
|
|
sourceext : '.pp';
|
|
pasext : '.pas';
|
|
exeext : '';
|
|
defext : '';
|
|
scriptext : '';
|
|
libprefix : '';
|
|
Cprefix : '';
|
|
newline : #13;
|
|
endian : endian_big;
|
|
stackalignment : 8;
|
|
maxCrecordalignment : 32;
|
|
size_of_pointer : 4;
|
|
size_of_longint : 4;
|
|
use_bound_instruction : false;
|
|
use_function_relative_addresses : true
|
|
)
|
|
);
|
|
|
|
|
|
{****************************************************************************
|
|
Assembler Info
|
|
****************************************************************************}
|
|
|
|
as_infos : array[1..asmcnt] of tasminfo = (
|
|
(
|
|
id : as_none;
|
|
idtxt : 'no'
|
|
)
|
|
{$ifdef i386}
|
|
,(
|
|
id : as_i386_as;
|
|
idtxt : 'AS';
|
|
asmbin : 'as';
|
|
asmcmd : '-o $OBJ $ASM';
|
|
supported_target : target_any;
|
|
allowdirect : true;
|
|
externals : false;
|
|
needar : true;
|
|
labelprefix : '.L';
|
|
comment : '# ';
|
|
secnames : ('',
|
|
'.text','.data','.bss',
|
|
'','','','','','',
|
|
'.stab','.stabstr')
|
|
)
|
|
,(
|
|
id : as_i386_as_aout;
|
|
idtxt : 'AS_AOUT';
|
|
asmbin : 'as';
|
|
asmcmd : '-o $OBJ $ASM';
|
|
supported_target : target_i386_os2;
|
|
allowdirect : true;
|
|
externals : false;
|
|
needar : true;
|
|
labelprefix : 'L';
|
|
comment : '# ';
|
|
secnames : ('',
|
|
'.text','.data','.bss',
|
|
'','','','','','',
|
|
'.stab','.stabstr')
|
|
)
|
|
,(
|
|
id : as_i386_asw;
|
|
idtxt : 'ASW';
|
|
asmbin : 'asw';
|
|
asmcmd : '-o $OBJ $ASM';
|
|
supported_target : target_i386_win32;
|
|
allowdirect : true;
|
|
externals : false;
|
|
needar : true;
|
|
labelprefix : '.L';
|
|
comment : '# ';
|
|
secnames : ('',
|
|
'.text','.data','.section .bss',
|
|
'.section .idata$2','.section .idata$4','.section .idata$5',
|
|
'.section .idata$6','.section .idata$7','.section .edata',
|
|
'.stab','.stabstr')
|
|
)
|
|
,(
|
|
id : as_i386_nasmcoff;
|
|
idtxt : 'NASMCOFF';
|
|
asmbin : 'nasm';
|
|
asmcmd : '-f coff -o $OBJ $ASM';
|
|
supported_target : target_i386_go32v2;
|
|
allowdirect : true;
|
|
externals : true;
|
|
needar : true;
|
|
labelprefix : '..@';
|
|
comment : '; ';
|
|
secnames : ('',
|
|
'.text','.data','.bss',
|
|
'.idata2','.idata4','.idata5','.idata6','.idata7','.edata',
|
|
'.stab','.stabstr')
|
|
)
|
|
,(
|
|
id : as_i386_nasmwin32;
|
|
idtxt : 'NASMWIN32';
|
|
asmbin : 'nasm';
|
|
asmcmd : '-f win32 -o $OBJ $ASM';
|
|
supported_target : target_i386_win32;
|
|
allowdirect : true;
|
|
externals : true;
|
|
needar : true;
|
|
labelprefix : '..@';
|
|
comment : '; ';
|
|
secnames : ('',
|
|
'.text','.data','.bss',
|
|
'.idata2','.idata4','.idata5','.idata6','.idata7','.edata',
|
|
'.stab','.stabstr')
|
|
)
|
|
,(
|
|
id : as_i386_nasmelf;
|
|
idtxt : 'NASMELF';
|
|
asmbin : 'nasm';
|
|
asmcmd : '-f elf -o $OBJ $ASM';
|
|
supported_target : target_i386_linux;
|
|
allowdirect : true;
|
|
externals : true;
|
|
needar : true;
|
|
labelprefix : '..@';
|
|
comment : '; ';
|
|
secnames : ('',
|
|
'.text','.data','.bss',
|
|
'.idata2','.idata4','.idata5','.idata6','.idata7','.edata',
|
|
'.stab','.stabstr')
|
|
)
|
|
,(
|
|
id : as_i386_nasmobj;
|
|
idtxt : 'NASMOBJ';
|
|
asmbin : 'nasm';
|
|
asmcmd : '-f obj -o $OBJ $ASM';
|
|
supported_target : target_any; { what should I write here ?? }
|
|
allowdirect : true;
|
|
externals : true;
|
|
needar : true;
|
|
labelprefix : '..@';
|
|
comment : '; ';
|
|
secnames : ('',
|
|
'.text','.data','.bss',
|
|
'.idata2','.idata4','.idata5','.idata6','.idata7','.edata',
|
|
'.stab','.stabstr')
|
|
)
|
|
,(
|
|
id : as_i386_tasm;
|
|
idtxt : 'TASM';
|
|
asmbin : 'tasm';
|
|
asmcmd : '/m2 /ml $ASM $OBJ';
|
|
supported_target : target_any; { what should I write here ?? }
|
|
allowdirect : true;
|
|
externals : true;
|
|
needar : true;
|
|
labelprefix_only_inside_procedure : true;
|
|
labelprefix : '@@';
|
|
comment : '; ';
|
|
secnames : ('',
|
|
'CODE','DATA','BSS',
|
|
'','','','','','',
|
|
'','')
|
|
)
|
|
,(
|
|
id : as_i386_masm;
|
|
idtxt : 'MASM';
|
|
asmbin : 'masm';
|
|
asmcmd : '/c $ASM /Fo$OBJ';
|
|
supported_target : target_any; { what should I write here ?? }
|
|
allowdirect : true;
|
|
externals : true;
|
|
needar : true;
|
|
labelprefix : '@@';
|
|
comment : '; ';
|
|
secnames : ('',
|
|
'CODE','DATA','BSS',
|
|
'','','','','','',
|
|
'','')
|
|
)
|
|
,(
|
|
id : as_i386_dbg;
|
|
idtxt : 'DBG';
|
|
asmbin : '';
|
|
asmcmd : '';
|
|
supported_target : target_any;
|
|
allowdirect : false;
|
|
externals : true;
|
|
needar : false;
|
|
labelprefix : 'L';
|
|
comment : '';
|
|
secnames : ('',
|
|
'.text','.data','.bss',
|
|
'.idata$2','.idata$4','.idata$5','.idata$6','.idata$7','.edata',
|
|
'.stab','.stabstr')
|
|
)
|
|
,(
|
|
id : as_i386_coff;
|
|
idtxt : 'COFF';
|
|
asmbin : '';
|
|
asmcmd : '';
|
|
supported_target : target_i386_go32v2;
|
|
allowdirect : false;
|
|
externals : true;
|
|
needar : false;
|
|
labelprefix : '.L';
|
|
comment : '';
|
|
secnames : ('',
|
|
'.text','.data','.bss',
|
|
'.idata$2','.idata$4','.idata$5','.idata$6','.idata$7','.edata',
|
|
'.stab','.stabstr')
|
|
)
|
|
,(
|
|
id : as_i386_pecoff;
|
|
idtxt : 'PECOFF';
|
|
asmbin : '';
|
|
asmcmd : '';
|
|
supported_target : target_i386_win32;
|
|
allowdirect : false;
|
|
externals : true;
|
|
needar : false;
|
|
labelprefix : '.L';
|
|
comment : '';
|
|
secnames : ('',
|
|
'.text','.data','.bss',
|
|
'.idata$2','.idata$4','.idata$5','.idata$6','.idata$7','.edata',
|
|
'.stab','.stabstr')
|
|
)
|
|
,(
|
|
id : as_i386_elf;
|
|
idtxt : 'ELF';
|
|
asmbin : '';
|
|
asmcmd : '';
|
|
supported_target : target_any; //target_i386_linux;
|
|
allowdirect : false;
|
|
externals : true;
|
|
needar : false;
|
|
labelprefix : '.L';
|
|
comment : '';
|
|
secnames : ('',
|
|
'.text','.data','.bss',
|
|
'.idata$2','.idata$4','.idata$5','.idata$6','.idata$7','.edata',
|
|
'.stab','.stabstr')
|
|
)
|
|
{$endif i386}
|
|
{$ifdef m68k}
|
|
,(
|
|
id : as_m68k_as;
|
|
idtxt : 'AS';
|
|
asmbin : 'as';
|
|
asmcmd : '-o $OBJ $ASM';
|
|
supported_target : target_any;
|
|
allowdirect : true;
|
|
externals : false;
|
|
needar : true;
|
|
labelprefix : '.L';
|
|
comment : '# ';
|
|
secnames : ('',
|
|
'.text','.data','.bss',
|
|
'.idata$2','.idata$4','.idata$5','.idata$6','.idata$7','.edata',
|
|
'.stab','.stabstr')
|
|
)
|
|
,(
|
|
id : as_m68k_gas;
|
|
idtxt : 'GAS';
|
|
asmbin : 'as68k'; { Gas for the Amiga}
|
|
asmcmd : '--register-prefix-optional -o $OBJ $ASM';
|
|
supported_target : target_any;
|
|
allowdirect : true;
|
|
externals : false;
|
|
needar : true;
|
|
labelprefix : '.L';
|
|
comment : '| ';
|
|
secnames : ('',
|
|
'.text','.data','.bss',
|
|
'.idata$2','.idata$4','.idata$5','.idata$6','.idata$7','.edata',
|
|
'.stab','.stabstr')
|
|
)
|
|
,(
|
|
id : as_m68k_mit;
|
|
idtxt : 'MIT';
|
|
asmbin : '';
|
|
asmcmd : '-o $OBJ $ASM';
|
|
supported_target : target_any;
|
|
allowdirect : true;
|
|
externals : false;
|
|
needar : true;
|
|
labelprefix : '.L';
|
|
comment : '| ';
|
|
secnames : ('',
|
|
'.text','.data','.bss',
|
|
'.idata$2','.idata$4','.idata$5','.idata$6','.idata$7','.edata',
|
|
'.stab','.stabstr')
|
|
)
|
|
,(
|
|
id : as_m68k_mot;
|
|
idtxt : 'MOT';
|
|
asmbin : '';
|
|
asmcmd : '-o $OBJ $ASM';
|
|
supported_target : target_any;
|
|
allowdirect : true;
|
|
externals : false;
|
|
needar : true;
|
|
labelprefix : '__L';
|
|
comment : '| ';
|
|
secnames : ('',
|
|
'.text','.data','.bss',
|
|
'.idata$2','.idata$4','.idata$5','.idata$6','.idata$7','.edata',
|
|
'.stab','.stabstr')
|
|
)
|
|
,(
|
|
id : as_m68k_mpw;
|
|
idtxt : 'MPW';
|
|
asmbin : '';
|
|
asmcmd : '-model far -o $OBJ $ASM';
|
|
supported_target : target_any;
|
|
allowdirect : true;
|
|
externals : false;
|
|
needar : true;
|
|
labelprefix : '__L';
|
|
comment : '* ';
|
|
secnames : ('',
|
|
'.text','.data','.bss',
|
|
'.idata$2','.idata$4','.idata$5','.idata$6','.idata$7','.edata',
|
|
'.stab','.stabstr')
|
|
)
|
|
{$endif m68k}
|
|
{$ifdef alpha}
|
|
,(
|
|
id : as_alpha_as;
|
|
idtxt : 'AS';
|
|
asmbin : 'as';
|
|
asmcmd : '-o $OBJ $ASM';
|
|
supported_target : target_any;
|
|
allowdirect : true;
|
|
externals : false;
|
|
needar : true;
|
|
labelprefix : '.L';
|
|
comment : '# ';
|
|
secnames : ('',
|
|
'.text','.data','.bss',
|
|
'','','','','','',
|
|
'.stab','.stabstr')
|
|
)
|
|
{$endif}
|
|
{$ifdef powerpc}
|
|
,(
|
|
id : as_powerpc_as;
|
|
idtxt : 'AS';
|
|
asmbin : 'as';
|
|
asmcmd : '-o $OBJ $ASM';
|
|
supported_target : target_any;
|
|
allowdirect : true;
|
|
externals : false;
|
|
needar : true;
|
|
labelprefix : '.L';
|
|
comment : '# ';
|
|
secnames : ('',
|
|
'.text','.data','.bss',
|
|
'','','','','','',
|
|
'.stab','.stabstr')
|
|
)
|
|
,(
|
|
id : as_powerpc_mpw;
|
|
idtxt : 'PPCAsm';
|
|
asmbin : 'PPCAsm';
|
|
asmcmd : '-o $OBJ $ASM';
|
|
supported_target : target_any;
|
|
allowdirect : true;
|
|
externals : false;
|
|
needar : true;
|
|
labelprefix : '.L';
|
|
comment : '; ';
|
|
secnames : ('',
|
|
'.text','.data','.bss',
|
|
'','','','','','',
|
|
'.stab','.stabstr')
|
|
)
|
|
{$endif}
|
|
);
|
|
|
|
|
|
{****************************************************************************
|
|
Ar Info
|
|
****************************************************************************}
|
|
ar_infos : array[1..arcnt] of tarinfo = (
|
|
(
|
|
id : ar_none
|
|
)
|
|
{$ifdef i386}
|
|
,(
|
|
id : ar_i386_ar;
|
|
arcmd : 'ar rs $LIB $FILES'
|
|
),
|
|
(
|
|
id : ar_i386_arw;
|
|
arcmd : 'arw rs $LIB $FILES'
|
|
)
|
|
{$endif i386}
|
|
{$ifdef m68k}
|
|
,(
|
|
id : ar_m68k_ar;
|
|
arcmd : 'ar rs $LIB $FILES'
|
|
)
|
|
{$endif m68k}
|
|
{$ifdef alpha}
|
|
,(
|
|
id : ar_alpha_ar;
|
|
arcmd : 'ar rs $LIB $FILES'
|
|
)
|
|
{$endif}
|
|
{$ifdef powerpc}
|
|
,(
|
|
id : ar_powerpc_ar;
|
|
arcmd : 'ar rs $LIB $FILES'
|
|
)
|
|
{$endif}
|
|
);
|
|
|
|
|
|
{****************************************************************************
|
|
Res Info
|
|
****************************************************************************}
|
|
res_infos : array[1..rescnt] of tresinfo = (
|
|
(
|
|
id : res_none
|
|
)
|
|
{$ifdef i386}
|
|
,(
|
|
id : res_i386_windres;
|
|
resbin : 'windres';
|
|
rescmd : '--include $INC -O coff -o $OBJ $RES'
|
|
)
|
|
,(
|
|
id : res_i386_emx;
|
|
resbin : 'emxbind';
|
|
rescmd : '-b -r $RES $OBJ'
|
|
(* Not really used - see TLinkeros2.SetDefaultInfo in t_os2.pas. *)
|
|
)
|
|
{$endif i386}
|
|
{$ifdef m68k}
|
|
,(
|
|
id : res_m68k_mpw;
|
|
resbin : 'rez';
|
|
rescmd : '-i $INC -o $OBJ $RES'
|
|
)
|
|
{$endif m68}
|
|
{$ifdef powerpc}
|
|
,(
|
|
id : res_powerpc_mpw;
|
|
resbin : 'rez';
|
|
rescmd : '-i $INC -o $OBJ $RES'
|
|
)
|
|
{$endif powerpc}
|
|
);
|
|
|
|
|
|
{****************************************************************************
|
|
Targets Info
|
|
****************************************************************************}
|
|
target_infos : array[1..targetcnt] of ttargetinfo = (
|
|
(
|
|
target : target_none;
|
|
flags : [];
|
|
cpu : no_cpu;
|
|
short_name : 'notarget'
|
|
)
|
|
{$ifdef i386}
|
|
,(
|
|
target : target_i386_GO32V1;
|
|
flags : [];
|
|
cpu : i386;
|
|
short_name : 'GO32V1';
|
|
unit_env : 'GO32V1UNITS';
|
|
smartext : '.sl';
|
|
unitext : '.pp1';
|
|
unitlibext : '.ppl';
|
|
asmext : '.s1';
|
|
objext : '.o1';
|
|
resext : '.res';
|
|
resobjext : '.o1r';
|
|
exeext : ''; { The linker produces a.out }
|
|
os : os_i386_GO32V1;
|
|
assem : as_i386_as;
|
|
assemsrc : as_i386_as;
|
|
ar : ar_i386_ar;
|
|
res : res_none;
|
|
heapsize : 2048*1024;
|
|
maxheapsize : 32768*1024;
|
|
stacksize : 16384;
|
|
DllScanSupported:false
|
|
),
|
|
(
|
|
target : target_i386_GO32V2;
|
|
flags : [];
|
|
cpu : i386;
|
|
short_name : 'GO32V2';
|
|
unit_env : 'GO32V2UNITS';
|
|
smartext : '.sl';
|
|
unitext : '.ppu';
|
|
unitlibext : '.ppl';
|
|
asmext : '.s';
|
|
objext : '.o';
|
|
resext : '.res';
|
|
resobjext : '.or';
|
|
exeext : '.exe';
|
|
os : os_i386_GO32V2;
|
|
assem : as_i386_coff;
|
|
assemsrc : as_i386_as;
|
|
ar : ar_i386_ar;
|
|
res : res_none;
|
|
heapsize : 2048*1024;
|
|
maxheapsize : 32768*1024;
|
|
stacksize : 16384;
|
|
DllScanSupported:false
|
|
),
|
|
(
|
|
target : target_i386_LINUX;
|
|
flags : [];
|
|
cpu : i386;
|
|
short_name : 'LINUX';
|
|
unit_env : 'LINUXUNITS';
|
|
smartext : '.sl';
|
|
unitext : '.ppu';
|
|
unitlibext : '.ppl';
|
|
asmext : '.s';
|
|
objext : '.o';
|
|
resext : '.res';
|
|
resobjext : '.or';
|
|
exeext : '';
|
|
os : os_i386_Linux;
|
|
assem : as_i386_elf;
|
|
assemsrc : as_i386_as;
|
|
ar : ar_i386_ar;
|
|
res : res_none;
|
|
heapsize : 256*1024;
|
|
maxheapsize : 32768*1024;
|
|
stacksize : 8192;
|
|
DllScanSupported:false
|
|
),
|
|
(
|
|
target : target_i386_FreeBSD;
|
|
flags : [];
|
|
cpu : i386;
|
|
short_name : 'FREEBSD';
|
|
unit_env : 'BSDUNITS';
|
|
smartext : '.sl';
|
|
unitext : '.ppu';
|
|
unitlibext : '.ppl';
|
|
asmext : '.s';
|
|
objext : '.o';
|
|
resext : '.res';
|
|
resobjext : '.or';
|
|
exeext : '';
|
|
os : os_i386_Freebsd;
|
|
assem : as_i386_elf;
|
|
assemsrc : as_i386_as;
|
|
ar : ar_i386_ar;
|
|
res : res_none;
|
|
heapsize : 256*1024;
|
|
maxheapsize : 32768*1024;
|
|
stacksize : 8192;
|
|
DllScanSupported:false
|
|
),
|
|
(
|
|
target : target_i386_OS2;
|
|
flags : [tf_need_export];
|
|
cpu : i386;
|
|
short_name : 'OS2';
|
|
unit_env : 'OS2UNITS';
|
|
smartext : '.sl';
|
|
unitext : '.ppo';
|
|
unitlibext : '.ppl';
|
|
asmext : '.so2';
|
|
objext : '.oo2';
|
|
resext : '.res';
|
|
resobjext : '.oor';
|
|
exeext : ''; { The linker produces a.out }
|
|
os : os_i386_OS2;
|
|
assem : as_i386_as_aout;
|
|
assemsrc : as_i386_as_aout;
|
|
ar : ar_i386_ar;
|
|
res : res_i386_emx;
|
|
heapsize : 256*1024;
|
|
maxheapsize : 32768*1024;
|
|
stacksize : 256*1024;
|
|
DllScanSupported:true
|
|
),
|
|
(
|
|
target : target_i386_WIN32;
|
|
flags : [];
|
|
cpu : i386;
|
|
short_name : 'WIN32';
|
|
unit_env : 'WIN32UNITS';
|
|
smartext : '.slw';
|
|
unitext : '.ppw';
|
|
unitlibext : '.ppl';
|
|
asmext : '.sw';
|
|
objext : '.ow';
|
|
resext : '.rc';
|
|
resobjext : '.owr';
|
|
exeext : '.exe';
|
|
os : os_i386_Win32;
|
|
assem : as_i386_pecoff;
|
|
assemsrc : as_i386_asw;
|
|
ar : ar_i386_arw;
|
|
res : res_i386_windres;
|
|
heapsize : 256*1024;
|
|
maxheapsize : 32*1024*1024;
|
|
stacksize : 32*1024*1024;
|
|
DllScanSupported:true
|
|
),
|
|
(
|
|
target : target_i386_NETWARE;
|
|
flags : [];
|
|
cpu : i386;
|
|
short_name : 'NETWARE';
|
|
unit_env : 'NETWAREUNITS';
|
|
smartext : '.sl';
|
|
unitext : '.ppn';
|
|
unitlibext : '.ppl';
|
|
asmext : '.s';
|
|
objext : '.on';
|
|
resext : '.res';
|
|
resobjext : '.or';
|
|
exeext : '';
|
|
os : os_i386_Netware;
|
|
assem : as_i386_elf;
|
|
assemsrc : as_i386_as;
|
|
ar : ar_i386_ar;
|
|
res : res_none;
|
|
heapsize : 256*1024;
|
|
maxheapsize : 32768*1024;
|
|
stacksize : 8192;
|
|
DllScanSupported:false
|
|
),
|
|
(
|
|
target : target_i386_sunos;
|
|
flags : [];
|
|
cpu : i386;
|
|
short_name : 'SUNOS';
|
|
unit_env : 'SUNOSUNITS';
|
|
smartext : '.sl';
|
|
unitext : '.ppu';
|
|
unitlibext : '.ppl';
|
|
asmext : '.s';
|
|
objext : '.o';
|
|
resext : '.res';
|
|
resobjext : '.or';
|
|
exeext : '';
|
|
os : os_i386_sunos;
|
|
assem : as_i386_as;
|
|
assemsrc : as_i386_as;
|
|
ar : ar_i386_ar;
|
|
res : res_none;
|
|
heapsize : 256*1024;
|
|
maxheapsize : 32768*1024;
|
|
stacksize : 8192;
|
|
DllScanSupported:false
|
|
)
|
|
{$endif i386}
|
|
{$ifdef m68k}
|
|
,(
|
|
target : target_m68k_Amiga;
|
|
flags : [];
|
|
cpu : m68k;
|
|
short_name : 'AMIGA';
|
|
unit_env : '';
|
|
smartext : '.sl';
|
|
unitext : '.ppa';
|
|
unitlibext : '.ppl';
|
|
asmext : '.asm';
|
|
objext : '.o';
|
|
resext : '.res';
|
|
resobjext : '.or';
|
|
exeext : '';
|
|
os : os_m68k_Amiga;
|
|
assem : as_m68k_as;
|
|
assemsrc : as_m68k_as;
|
|
ar : ar_m68k_ar;
|
|
res : res_none;
|
|
heapsize : 128*1024;
|
|
maxheapsize : 32768*1024;
|
|
stacksize : 8192;
|
|
DllScanSupported:false
|
|
),
|
|
(
|
|
target : target_m68k_Atari;
|
|
flags : [];
|
|
cpu : m68k;
|
|
short_name : 'ATARI';
|
|
unit_env : '';
|
|
smartext : '.sl';
|
|
unitext : '.ppt';
|
|
unitlibext : '.ppl';
|
|
asmext : '.s';
|
|
objext : '.o';
|
|
resext : '.res';
|
|
resobjext : '.or';
|
|
exeext : '.ttp';
|
|
os : os_m68k_Atari;
|
|
assem : as_m68k_as;
|
|
assemsrc : as_m68k_as;
|
|
ar : ar_m68k_ar;
|
|
res : res_none;
|
|
heapsize : 16*1024;
|
|
maxheapsize : 32768*1024;
|
|
stacksize : 8192;
|
|
DllScanSupported:false
|
|
),
|
|
(
|
|
target : target_m68k_Mac;
|
|
flags : [];
|
|
cpu : m68k;
|
|
short_name : 'MACOS';
|
|
unit_env : '';
|
|
smartext : '.sl';
|
|
unitext : '.ppt';
|
|
unitlibext : '.ppl';
|
|
asmext : '.a';
|
|
objext : '.o';
|
|
resext : '.res';
|
|
resobjext : '.or';
|
|
exeext : '';
|
|
os : os_m68k_Mac;
|
|
assem : as_m68k_mpw;
|
|
assemsrc : as_m68k_mpw;
|
|
ar : ar_m68k_ar;
|
|
res : res_none;
|
|
heapsize : 128*1024;
|
|
maxheapsize : 32768*1024;
|
|
stacksize : 8192;
|
|
DllScanSupported:false
|
|
),
|
|
(
|
|
target : target_m68k_linux;
|
|
flags : [];
|
|
cpu : m68k;
|
|
short_name : 'LINUX';
|
|
unit_env : 'LINUXUNITS';
|
|
smartext : '.sl';
|
|
unitext : '.ppu';
|
|
unitlibext : '.ppl';
|
|
asmext : '.s';
|
|
objext : '.o';
|
|
resext : '.res';
|
|
resobjext : '.or';
|
|
exeext : '';
|
|
os : os_m68k_Linux;
|
|
assem : as_m68k_as;
|
|
assemsrc : as_m68k_as;
|
|
ar : ar_m68k_ar;
|
|
res : res_none;
|
|
heapsize : 128*1024;
|
|
maxheapsize : 32768*1024;
|
|
stacksize : 8192;
|
|
DllScanSupported:false
|
|
),
|
|
(
|
|
target : target_m68k_PalmOS;
|
|
flags : [];
|
|
cpu : m68k;
|
|
short_name : 'PALMOS';
|
|
unit_env : 'PALMUNITS';
|
|
smartext : '.sl';
|
|
unitext : '.ppu';
|
|
unitlibext : '.ppl';
|
|
asmext : '.s';
|
|
objext : '.o';
|
|
resext : '.res';
|
|
resobjext : '.or';
|
|
exeext : '';
|
|
os : os_m68k_PalmOS;
|
|
assem : as_m68k_as;
|
|
assemsrc : as_m68k_as;
|
|
ar : ar_m68k_ar;
|
|
res : res_none;
|
|
heapsize : 128*1024;
|
|
maxheapsize : 32768*1024;
|
|
stacksize : 8192;
|
|
DllScanSupported:false
|
|
)
|
|
{$endif m68k}
|
|
{$ifdef alpha}
|
|
,(
|
|
target : target_alpha_LINUX;
|
|
flags : [];
|
|
cpu : alpha;
|
|
short_name : 'LINUX';
|
|
unit_env : 'LINUXUNITS';
|
|
smartext : '.sl';
|
|
unitext : '.ppu';
|
|
unitlibext : '.ppl';
|
|
asmext : '.s';
|
|
objext : '.o';
|
|
resext : '.res';
|
|
resobjext : '.or';
|
|
exeext : '';
|
|
os : os_alpha_Linux;
|
|
assem : as_alpha_as;
|
|
assemsrc : as_alpha_as;
|
|
ar : ar_alpha_ar;
|
|
res : res_none;
|
|
heapsize : 256*1024;
|
|
maxheapsize : 32768*1024;
|
|
{*** Changes made by Ozerski at 05.03.2001}
|
|
stacksize : 8192;
|
|
DllScanSupported:false
|
|
{*** End changes}
|
|
)
|
|
{$endif}
|
|
{$ifdef powerpc}
|
|
,(
|
|
target : target_powerpc_LINUX;
|
|
flags : [];
|
|
cpu : powerpc;
|
|
short_name : 'LINUX';
|
|
unit_env : '';
|
|
smartext : '.sl';
|
|
unitext : '.ppu';
|
|
unitlibext : '.ppl';
|
|
asmext : '.s';
|
|
objext : '.o';
|
|
resext : '.res';
|
|
resobjext : '.or';
|
|
exeext : '';
|
|
os : os_powerpc_Linux;
|
|
assem : as_powerpc_as;
|
|
assemsrc : as_powerpc_as;
|
|
ar : ar_powerpc_ar;
|
|
res : res_none;
|
|
heapsize : 256*1024;
|
|
maxheapsize : 32768*1024;
|
|
stacksize : 8192;
|
|
DllScanSupported:false
|
|
),
|
|
(
|
|
target : target_powerpc_MACOS;
|
|
flags : [];
|
|
cpu : powerpc;
|
|
short_name : 'MACOS';
|
|
unit_env : '';
|
|
smartext : '.sl';
|
|
unitext : '.ppt';
|
|
unitlibext : '.ppl';
|
|
asmext : '.a';
|
|
objext : '.o';
|
|
resext : '.res';
|
|
resobjext : '.or';
|
|
exeext : '';
|
|
os : os_powerpc_macos;
|
|
assem : as_powerpc_mpw;
|
|
assemsrc : as_powerpc_mpw;
|
|
ar : ar_powerpc_ar;
|
|
res : res_powerpc_mpw;
|
|
heapsize : 256*1024;
|
|
maxheapsize : 32768*1024;
|
|
stacksize : 8192;
|
|
DllScanSupported:false
|
|
)
|
|
{$endif}
|
|
);
|
|
|
|
{****************************************************************************
|
|
AsmModeInfo
|
|
****************************************************************************}
|
|
asmmodeinfos : array[1..asmmodecnt] of tasmmodeinfo = (
|
|
(
|
|
id : asmmode_none;
|
|
idtxt : 'none'
|
|
)
|
|
{$ifdef i386}
|
|
,(
|
|
id : asmmode_i386_direct;
|
|
idtxt : 'DIRECT'
|
|
),
|
|
(
|
|
id : asmmode_i386_att;
|
|
idtxt : 'ATT'
|
|
),
|
|
(
|
|
id : asmmode_i386_intel;
|
|
idtxt : 'INTEL'
|
|
)
|
|
{$endif i386}
|
|
{$ifdef m68k}
|
|
,(
|
|
id : asmmode_m68k_mot;
|
|
idtxt : 'MOT'
|
|
)
|
|
{$endif m68k}
|
|
{$ifdef alpha}
|
|
,(
|
|
id : asmmode_alpha_direct;
|
|
idtxt : 'DIRECT'
|
|
)
|
|
{$endif}
|
|
{$ifdef powerpc}
|
|
,(
|
|
id : asmmode_powerpc_direct;
|
|
idtxt : 'DIRECT'
|
|
)
|
|
{$endif}
|
|
);
|
|
|
|
{****************************************************************************
|
|
Helpers
|
|
****************************************************************************}
|
|
|
|
function set_target_os(t:tos):boolean;
|
|
var
|
|
i : longint;
|
|
begin
|
|
set_target_os:=false;
|
|
{ target 1 is none }
|
|
for i:=2 to oscnt do
|
|
if os_infos[i].id=t then
|
|
begin
|
|
target_os:=os_infos[i];
|
|
set_target_os:=true;
|
|
exit;
|
|
end;
|
|
end;
|
|
|
|
|
|
function set_target_asm(t:tasm):boolean;
|
|
var
|
|
i : longint;
|
|
begin
|
|
set_target_asm:=false;
|
|
for i:=1 to asmcnt do
|
|
if as_infos[i].id=t then
|
|
begin
|
|
target_asm:=as_infos[i];
|
|
set_target_asm:=true;
|
|
exit;
|
|
end;
|
|
end;
|
|
|
|
|
|
function set_target_ar(t:tar):boolean;
|
|
var
|
|
i : longint;
|
|
begin
|
|
set_target_ar:=false;
|
|
for i:=1 to arcnt do
|
|
if ar_infos[i].id=t then
|
|
begin
|
|
target_ar:=ar_infos[i];
|
|
set_target_ar:=true;
|
|
exit;
|
|
end;
|
|
end;
|
|
|
|
|
|
function set_target_res(t:tres):boolean;
|
|
var
|
|
i : longint;
|
|
begin
|
|
set_target_res:=false;
|
|
for i:=1 to rescnt do
|
|
if res_infos[i].id=t then
|
|
begin
|
|
target_res:=res_infos[i];
|
|
set_target_res:=true;
|
|
exit;
|
|
end;
|
|
end;
|
|
|
|
|
|
function set_target_info(t:ttarget):boolean;
|
|
var
|
|
i : longint;
|
|
begin
|
|
set_target_info:=false;
|
|
for i:=1 to targetcnt do
|
|
if target_infos[i].target=t then
|
|
begin
|
|
target_info:=target_infos[i];
|
|
set_target_os(target_info.os);
|
|
set_target_asm(target_info.assem);
|
|
set_target_ar(target_info.ar);
|
|
set_target_res(target_info.res);
|
|
target_path:=lower(target_info.short_name);
|
|
target_cpu:=target_info.cpu;
|
|
set_target_info:=true;
|
|
exit;
|
|
end;
|
|
end;
|
|
|
|
|
|
{****************************************************************************
|
|
Load from string
|
|
****************************************************************************}
|
|
|
|
function set_string_target(s : string) : boolean;
|
|
var
|
|
i : longint;
|
|
begin
|
|
set_string_target:=false;
|
|
{ this should be case insensitive !! PM }
|
|
s:=upper(s);
|
|
for i:=1 to targetcnt do
|
|
if target_infos[i].short_name=s then
|
|
begin
|
|
set_target_info(target_infos[i].target);
|
|
set_string_target:=true;
|
|
exit;
|
|
end;
|
|
end;
|
|
|
|
|
|
function set_string_asm(s : string) : boolean;
|
|
var
|
|
i : longint;
|
|
begin
|
|
set_string_asm:=false;
|
|
{ this should be case insensitive !! PM }
|
|
s:=upper(s);
|
|
for i:=1 to asmcnt do
|
|
if as_infos[i].idtxt=s then
|
|
begin
|
|
target_asm:=as_infos[i];
|
|
set_string_asm:=true;
|
|
end;
|
|
end;
|
|
|
|
|
|
function set_string_asmmode(s:string;var t:tasmmode):boolean;
|
|
var
|
|
i : longint;
|
|
begin
|
|
set_string_asmmode:=false;
|
|
{ this should be case insensitive !! PM }
|
|
s:=upper(s);
|
|
for i:=1 to asmmodecnt do
|
|
if asmmodeinfos[i].idtxt=s then
|
|
begin
|
|
t:=asmmodeinfos[i].id;
|
|
set_string_asmmode:=true;
|
|
end;
|
|
end;
|
|
|
|
|
|
{****************************************************************************
|
|
Initialization of default target
|
|
****************************************************************************}
|
|
|
|
procedure default_os(t:ttarget);
|
|
begin
|
|
set_target_info(t);
|
|
if source_os.name='' then
|
|
source_os:=target_os;
|
|
end;
|
|
|
|
|
|
procedure set_source_os(t:tos);
|
|
var
|
|
i : longint;
|
|
begin
|
|
{ can't use message() here (PFV) }
|
|
if source_os.name<>'' then
|
|
Writeln('Warning: Source OS Redefined!');
|
|
for i:=1 to oscnt do
|
|
if os_infos[i].id=t then
|
|
begin
|
|
source_os:=os_infos[i];
|
|
exit;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure InitSystems;
|
|
begin
|
|
{ first get source OS }
|
|
source_os.name:='';
|
|
{ please note then we use cpu86 and cpu68 here on purpose !! }
|
|
{$ifdef cpu86}
|
|
{$ifdef GO32V1}
|
|
set_source_os(os_i386_GO32V1);
|
|
{$else}
|
|
{$ifdef GO32V2}
|
|
set_source_os(os_i386_GO32V2);
|
|
{$else}
|
|
{$ifdef OS2}
|
|
set_source_os(os_i386_OS2);
|
|
if (OS_Mode = osDOS) or (OS_Mode = osDPMI) then
|
|
source_os.scriptext := '.bat';
|
|
{ OS/2 via EMX can be run under DOS as well }
|
|
{$else}
|
|
{$ifdef WIN32}
|
|
set_source_os(os_i386_WIN32);
|
|
{$else}
|
|
{$Ifdef BSD}
|
|
set_source_os(os_i386_FreeBSD);
|
|
{$else}
|
|
{$ifdef sunos}
|
|
set_source_os(os_i386_sunos);
|
|
{$else}
|
|
{ Must be the last as some freebsd also
|
|
defined linux }
|
|
{$ifdef Linux}
|
|
set_source_os(os_i386_LINUX);
|
|
{$endif linux}
|
|
{$endif sunos}
|
|
{$endif bsd}
|
|
{$endif win32}
|
|
{$endif os2}
|
|
{$endif go32v2}
|
|
{$endif go32v1}
|
|
{$endif cpu86}
|
|
{$ifdef cpu68}
|
|
{$ifdef AMIGA}
|
|
set_source_os(os_m68k_Amiga);
|
|
{$else}
|
|
{$ifdef ATARI}
|
|
set_source_os(os_m68k_Atari);
|
|
{$else}
|
|
{$ifdef MACOS}
|
|
set_source_os(os_m68k_MAC);
|
|
{$else}
|
|
{$ifdef LINUX}
|
|
set_source_os(os_m68k_linux);
|
|
{$endif linux}
|
|
{$endif macos}
|
|
{$endif atari}
|
|
{$endif amiga}
|
|
{$endif cpu68}
|
|
|
|
{ Now default target !! }
|
|
{$ifdef i386}
|
|
{$ifdef GO32V1}
|
|
default_os(target_i386_GO32V1);
|
|
{$else}
|
|
{$ifdef GO32V2}
|
|
default_os(target_i386_GO32V2);
|
|
{$else}
|
|
{$ifdef OS2}
|
|
default_os(target_i386_OS2);
|
|
{$else}
|
|
{$ifdef LINUX}
|
|
{$ifdef BSD}
|
|
default_os(target_i386_FreeBSD);
|
|
{$else}
|
|
default_os(target_i386_LINUX);
|
|
{$endif}
|
|
{$else}
|
|
{$ifdef WIN32}
|
|
default_os(target_i386_WIN32);
|
|
{$else}
|
|
default_os(target_i386_GO32V2);
|
|
{$endif win32}
|
|
{$endif linux}
|
|
{$endif os2}
|
|
{$endif go32v2}
|
|
{$endif go32v1}
|
|
{$endif i386}
|
|
{$ifdef m68k}
|
|
{$ifdef AMIGA}
|
|
default_os(target_m68k_Amiga);
|
|
{$else}
|
|
{$ifdef ATARI}
|
|
default_os(target_m68k_Atari);
|
|
{$else}
|
|
{$ifdef MACOS}
|
|
default_os(target_m68k_Mac);
|
|
{$else}
|
|
{$ifdef LINUX}
|
|
default_os(target_m68k_linux);
|
|
{$else}
|
|
default_os(target_m68k_Amiga);
|
|
{$endif linux}
|
|
{$endif macos}
|
|
{$endif atari}
|
|
{$endif amiga}
|
|
{$endif m68k}
|
|
{$ifdef alpha}
|
|
default_os(target_alpha_linux);
|
|
{$endif alpha}
|
|
{$ifdef powerpc}
|
|
default_os(target_powerpc_linux);
|
|
{$endif powerpc}
|
|
end;
|
|
|
|
|
|
begin
|
|
InitSystems;
|
|
end.
|
|
{
|
|
$Log$
|
|
Revision 1.15 2001-03-06 18:28:02 peter
|
|
* patch from Pavel with a new and much faster DLL Scanner for
|
|
automatic importing so $linklib works for DLLs. Thanks Pavel!
|
|
|
|
Revision 1.14 2001/02/26 19:44:55 peter
|
|
* merged generic m68k updates from fixes branch
|
|
|
|
Revision 1.13 2001/02/20 21:36:40 peter
|
|
* tasm/masm fixes merged
|
|
|
|
Revision 1.12 2001/01/06 20:15:43 peter
|
|
* merged libp library prefix
|
|
|
|
Revision 1.11 2000/10/15 09:08:58 peter
|
|
* use System for the systemunit instead of target dependent
|
|
|
|
Revision 1.10 2000/09/24 21:12:41 hajny
|
|
* OS/2 stack alignment corrected + default stack increased
|
|
|
|
Revision 1.9 2000/09/24 15:06:30 peter
|
|
* use defines.inc
|
|
|
|
Revision 1.8 2000/09/20 10:49:39 marco
|
|
* Set writer to elf. (Only a prob for smart with -OG3p3r)
|
|
|
|
Revision 1.7 2000/09/16 12:22:52 peter
|
|
* freebsd support merged
|
|
|
|
Revision 1.6 2000/09/11 17:00:23 florian
|
|
+ first implementation of Netware Module support, thanks to
|
|
Armin Diehl (diehl@nordrhein.de) for providing the patches
|
|
|
|
Revision 1.5 2000/08/12 19:14:59 peter
|
|
* ELF writer works now also with -g
|
|
* ELF writer is default again for linux
|
|
|
|
Revision 1.4 2000/07/14 21:29:38 michael
|
|
* Back to external assembler till peter fixes gdb
|
|
|
|
Revision 1.3 2000/07/13 12:08:28 michael
|
|
+ patched to 1.1.0 with former 1.09patch from peter
|
|
|
|
Revision 1.2 2000/07/13 11:32:50 michael
|
|
+ removed logs
|
|
|
|
}
|