summaryrefslogtreecommitdiff
path: root/rtl
diff options
context:
space:
mode:
authorflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-04-10 19:20:48 +0000
committerflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-04-10 19:20:48 +0000
commit160cc1e115eeb75638dce6effdd16b2bc810ddb4 (patch)
treeb791a95695a7cf674e61a6153139c6f9c6c491fa /rtl
parent3843727e74b31bbf2a34e7e3b89ee422269f770e (diff)
parent413a6aa6469e6c297780217a27ca91363c637944 (diff)
downloadfpc-avr.tar.gz
* rebase to trunk@17295avr
git-svn-id: http://svn.freepascal.org/svn/fpc/branches/avr@17296 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'rtl')
-rw-r--r--rtl/arm/arm.inc3
-rw-r--r--rtl/arm/thumb2.inc10
-rw-r--r--rtl/freebsd/freebsd.pas8
-rw-r--r--rtl/freebsd/ptypes.inc86
-rw-r--r--rtl/freebsd/sysnr.inc224
-rw-r--r--rtl/inc/aliases.inc2
-rw-r--r--rtl/inc/astrings.inc17
-rw-r--r--rtl/inc/compproc.inc15
-rw-r--r--rtl/inc/dynarr.inc7
-rw-r--r--rtl/inc/exeinfo.pp143
-rw-r--r--rtl/inc/rtti.inc207
-rw-r--r--rtl/inc/sstrings.inc4
-rw-r--r--rtl/inc/system.fpd6
-rw-r--r--rtl/inc/system.inc16
-rw-r--r--rtl/inc/systemh.inc1
-rw-r--r--rtl/inc/threadvr.inc33
-rw-r--r--rtl/inc/ucomplex.pp6
-rw-r--r--rtl/inc/ustrings.inc10
-rw-r--r--rtl/inc/variants.pp46
-rw-r--r--rtl/inc/wstrings.inc10
-rw-r--r--rtl/linux/arm/dllprt0.as25
-rw-r--r--rtl/linux/system.pp10
-rw-r--r--rtl/morphos/Makefile128
-rw-r--r--rtl/morphos/Makefile.fpc4
-rw-r--r--rtl/netware/Makefile214
-rw-r--r--rtl/netware/Makefile.fpc15
-rw-r--r--rtl/netware/nwpre.imp6
-rw-r--r--rtl/netware/nwpre.pp323
-rw-r--r--rtl/netware/system.pp16
-rw-r--r--rtl/objpas/classes/classesh.inc6
-rw-r--r--rtl/objpas/classes/streams.inc39
-rw-r--r--rtl/objpas/cvarutil.inc36
-rw-r--r--rtl/objpas/dateutil.inc136
-rw-r--r--rtl/objpas/fmtbcd.pp166
-rw-r--r--rtl/objpas/sysutils/dati.inc13
-rw-r--r--rtl/objpas/sysutils/sysformt.inc12
-rw-r--r--rtl/objpas/sysutils/sysstr.inc5
-rw-r--r--rtl/objpas/sysutils/sysutilh.inc2
-rw-r--r--rtl/os2/sysutils.pp6
-rw-r--r--rtl/unix/aliasptp.inc1
-rw-r--r--rtl/unix/clocale.pp82
-rw-r--r--rtl/unix/sysutils.pp4
-rw-r--r--rtl/win/sysutils.pp108
-rw-r--r--rtl/win/syswin.inc5
-rw-r--r--rtl/win/tthread.inc11
-rw-r--r--rtl/win/windirs.pp120
-rw-r--r--rtl/win/wininc/func.inc2
-rw-r--r--rtl/win/wininc/messages.inc9
-rw-r--r--rtl/win/wininc/redef.inc2
-rw-r--r--rtl/win/wininc/struct.inc81
-rw-r--r--rtl/win32/Makefile126
-rw-r--r--rtl/win32/Makefile.fpc2
-rw-r--r--rtl/win32/buildrtl.pp2
-rw-r--r--rtl/win32/system.pp12
-rw-r--r--rtl/win64/Makefile126
-rw-r--r--rtl/win64/Makefile.fpc2
-rw-r--r--rtl/win64/buildrtl.pp2
-rw-r--r--rtl/win64/system.pp12
-rw-r--r--rtl/x86_64/cpu.pp45
-rw-r--r--rtl/x86_64/x86_64.inc695
60 files changed, 1996 insertions, 1469 deletions
diff --git a/rtl/arm/arm.inc b/rtl/arm/arm.inc
index d1148f6bca..63d003e914 100644
--- a/rtl/arm/arm.inc
+++ b/rtl/arm/arm.inc
@@ -202,7 +202,6 @@ end;
procedure Move_pld(const source;var dest;count:longint);assembler;nostackframe;
asm
pld [r0]
- pld [r1]
// count <=0 ?
cmp r2,#0
{$if defined(cpuarmv3) or defined(cpuarmv4) or defined(cpuarmv5)}
@@ -258,13 +257,11 @@ asm
bne .Ldwordloop
*)
pld [r0,#32]
- pld [r1,#32]
.Ldwordloop:
sub r2,r2,#4
ldr r3,[r0],#4
// preload
pld [r0,#64]
- pld [r1,#64]
cmp r2,#4
str r3,[r1],#4
bcs .Ldwordloop
diff --git a/rtl/arm/thumb2.inc b/rtl/arm/thumb2.inc
index c4948d9ca0..6271c6920d 100644
--- a/rtl/arm/thumb2.inc
+++ b/rtl/arm/thumb2.inc
@@ -77,12 +77,18 @@ asm
end;
{$ENDIF not INTERNAL_BACKTRACE}
+{
+ Stack frame on Thumb2:
+ LR <- FP
+ Old FP
+}
+
{$define FPC_SYSTEM_HAS_GET_CALLER_ADDR}
function get_caller_addr(framebp:pointer):pointer;assembler;
asm
movs r0,r0
beq .Lg_a_null
- ldr r0,[r0,#-4]
+ ldr r0,[r0]
.Lg_a_null:
end;
@@ -92,7 +98,7 @@ function get_caller_frame(framebp:pointer):pointer;assembler;
asm
movs r0,r0
beq .Lgnf_null
- ldr r0,[r0,#-12]
+ ldr r0,[r0,#-4]
.Lgnf_null:
end;
diff --git a/rtl/freebsd/freebsd.pas b/rtl/freebsd/freebsd.pas
index 5f9148391b..d477bf1764 100644
--- a/rtl/freebsd/freebsd.pas
+++ b/rtl/freebsd/freebsd.pas
@@ -185,6 +185,10 @@ Type
function kse_release(timeout: PTimeSpec): cInt; extdecl;
function kse_switchin(tmbx: PKseThrMailBox; flags: cInt): cInt; extdecl;
+{$ifndef FPC_USE_LIBC}
+function fpgetfsstat(buf:pstatfs;bufsize:clong;flags:cint):cint;
+{$endif}
+
Const
MAP_FILE = $0000; { map from file (default) }
MAP_ANON = $1000; { allocated from memory, swap space }
@@ -294,6 +298,10 @@ begin
kse_switchin:=do_SysCall(syscall_nr_kse_switchin, TSysParam(tmbx), TSysParam(flags));
end;
+function fpgetfsstat(buf:pstatfs;bufsize:clong;flags:cint):cint;
+begin
+ fpgetfsstat:=do_syscall(syscall_nr_getfsstat,TSysParam(buf),TSysParam(Bufsize),TSysParam(Flags));
+end;
{$ENDIF}
end.
diff --git a/rtl/freebsd/ptypes.inc b/rtl/freebsd/ptypes.inc
index aacf23c5f5..8bc19db1bf 100644
--- a/rtl/freebsd/ptypes.inc
+++ b/rtl/freebsd/ptypes.inc
@@ -163,16 +163,75 @@ type
_MUTEX_TYPE_MAX
);
-
-Const
- MNAMLEN = 88-2*sizeof(clong); // slightly machine specific.
- MFSNamLen = 16;
type
- fsid_t = array[0..1] of cint;
+ fsid_t = array[0..1] of cint32;
-// Kernel statfs
-
- TStatfs = packed record
+Const
+ MNAMELEN = 88;
+ MFSNamELen = 16;
+ STATFS_VERSION = $20030518;
+ OMNAMLEN = 88-2*sizeof(clong); // slightly machine specific.
+ OMFSNamLen = 16;
+
+// fieldnames start with f_ in headers. Probably 1.0.x simplification that somehow
+// managed to escape the unix rewrite. Make an union+ deprecate after newstatfs is stable.
+
+Type TStatFS = {?} Record
+ case boolean of
+ 0 : ( // current FreeBSD
+ version : cuint32; { structure version number }
+ ftype : cuint32; { type of filesystem }
+ fflags : cuint64; { copy of mount exported flags }
+ bsize : cuint64; { filesystem fragment size }
+ iosize : cuint64; { optimal transfer block size }
+ blocks : cuint64; { total data blocks in filesystem }
+ bfree : cuint64; { free blocks in filesystem }
+ bavail : cint64; { free blocks avail to non-superuser }
+ files : cuint64; { total file nodes in filesystem }
+ ffree : cint64; { free nodes avail to non-superuser }
+ fsyncwrites : cuint64; { count of sync writes since mount }
+ fasyncwrites : cuint64; { count of async writes since mount }
+ fsyncreads : cuint64; { count of sync reads since mount }
+ fasyncreads : cuint64; { count of async reads since mount }
+ spare : array[0..9] of cuint64; { unused spare }
+ namemax : cuint32; { maximum filename length }
+ owner : tuid; { user that mounted the filesystem }
+ fsid : fsid_t; { filesystem id }
+ charspare : array[0..80-1] of ansichar; { spare string space }
+ fstypename : array[0..MFSNAMELEN-1] of ansichar; { filesystem type name }
+ mnfromname : array[0..MNAMELEN-1] of ansichar; { mounted filesystem }
+ mountpoint : array[0..MNAMELEN-1] of ansichar; { directory on which mounted }
+ );
+ 1:( // union for old fieldname's sake.
+ f_version : cuint32; { structure version number }
+ f_type : cuint32; { type of filesystem }
+ f_flags : cuint64; { copy of mount exported flags }
+ f_bsize : cuint64; { filesystem fragment size }
+ f_iosize : cuint64; { optimal transfer block size }
+ f_blocks : cuint64; { total data blocks in filesystem }
+ f_bfree : cuint64; { free blocks in filesystem }
+ f_bavail : cint64; { free blocks avail to non-superuser }
+ f_files : cuint64; { total file nodes in filesystem }
+ f_ffree : cint64; { free nodes avail to non-superuser }
+ f_syncwrites : cuint64; { count of sync writes since mount }
+ f_asyncwrites : cuint64; { count of async writes since mount }
+ f_syncreads : cuint64; { count of sync reads since mount }
+ f_asyncreads : cuint64; { count of async reads since mount }
+ f_spare : array[0..9] of cuint64; { unused spare }
+ f_namemax : cuint32; { maximum filename length }
+ f_owner : tuid; { user that mounted the filesystem }
+ f_fsid : fsid_t; { filesystem id }
+ f_charspare : array[0..80-1] of ansichar; { spare string space }
+ f_fstypename : array[0..MFSNAMELEN-1] of ansichar; { filesystem type name }
+ f_mntfromname : array[0..MNAMELEN-1] of ansichar; { mounted filesystem }
+ f_mntonname : array[0..MNAMELEN-1] of ansichar; { directory on which mounted }
+ );
+ end;
+
+ PStatFS=^TStatFS;
+
+
+ TStatFS4 = packed record
spare2, { place holder}
bsize, { fundamental block size}
iosize, { optimal block size }
@@ -187,18 +246,19 @@ type
fflags : cint; {copy of mount flags}
fsyncwrites,
fasyncwrites : clong;
- fstypename : array[0..MFSNamLen-1] of char;
- mountpoint : array[0..MNAMLEN-1] of char;
+ fstypename : array[0..OMFSNamLen-1] of char;
+ mountpoint : array[0..OMNAMLEN-1] of char;
fsyncreads, { count of sync reads since mount }
fasyncreads : clong;
fspares1 : cshort;
- mnfromname : array[0..MNAMLEN-1] of char;
+ mnfromname : array[0..OMNAMLEN-1] of char;
fspares2 : cshort;
fspare3 : array[0..1] of clong;
end;
- PStatFS=^TStatFS;
+
+ PStatFS4=^TStatFs4;
- mbstate_t = record
+ mbstate_t = record
case byte of
0: (__mbstate8: array[0..127] of char);
1: (_mbstateL: cint64); { for alignment }
diff --git a/rtl/freebsd/sysnr.inc b/rtl/freebsd/sysnr.inc
index cba80e702b..720e8f67d0 100644
--- a/rtl/freebsd/sysnr.inc
+++ b/rtl/freebsd/sysnr.inc
@@ -13,223 +13,6 @@
**********************************************************************}
const
-{ Crude converted FreeBSD 6.1-release syscall.h. Copy and paste if you
- checked the function.
- syscall_nr_syscall = 0;
- syscall_nr_exit = 1;
- syscall_nr_fork = 2;
- syscall_nr_read = 3;
- syscall_nr_write = 4;
- syscall_nr_open = 5;
- syscall_nr_close = 6;
- syscall_nr_wait4 = 7;
- syscall_nr_link = 9;
- syscall_nr_unlink = 10;
- syscall_nr_chdir = 12;
- syscall_nr_fchdir = 13;
- syscall_nr_mknod = 14;
- syscall_nr_chmod = 15;
- syscall_nr_chown = 16;
- syscall_nr_break = 17;
- syscall_nr_getfsstat = 18;
- syscall_nr_getpid = 20;
- syscall_nr_mount = 21;
- syscall_nr_unmount = 22;
- syscall_nr_getuid = 24;
- syscall_nr_geteuid = 25;
- syscall_nr_ptrace = 26;
- syscall_nr_recvmsg = 27;
- syscall_nr_sendmsg = 28;
- syscall_nr_getpeername = 31;
- syscall_nr_getsockname = 32;
- syscall_nr_access = 33;
- syscall_nr_chflags = 34;
- syscall_nr_fchflags = 35;
- syscall_nr_sync = 36;
- syscall_nr_kill = 37;
- syscall_nr_getppid = 39;
- syscall_nr_dup = 41;
- syscall_nr_pipe = 42;
- syscall_nr_getegid = 43;
- syscall_nr_profil = 44;
- syscall_nr_ktrace = 45;
- syscall_nr_getgid = 47;
- syscall_nr_getlogin = 49;
- syscall_nr_setlogin = 50;
- syscall_nr_acct = 51;
- syscall_nr_sigaltstack = 53;
- syscall_nr_ioctl = 54;
- syscall_nr_reboot = 55;
- syscall_nr_revoke = 56;
- syscall_nr_symlink = 57;
- syscall_nr_readlink = 58;
- syscall_nr_execve = 59;
- syscall_nr_umask = 60;
- syscall_nr_chroot = 61;
- syscall_nr_msync = 65;
- syscall_nr_vfork = 66;
- syscall_nr_sbrk = 69;
- syscall_nr_sstk = 70;
- syscall_nr_vadvise = 72;
- syscall_nr_mprotect = 74;
- syscall_nr_madvise = 75;
- syscall_nr_mincore = 78;
- syscall_nr_setgroups = 80;
- syscall_nr_setpgid = 82;
- syscall_nr_swapon = 85;
-
- syscall_nr_getdtablesize = 89;
- syscall_nr_dup2 = 90;
- syscall_nr_fcntl = 92;
- syscall_nr_select = 93;
- syscall_nr_fsync = 95;
- syscall_nr_setpriority = 96;
- syscall_nr_connect = 98;
- syscall_nr_getpriority =100;
- syscall_nr_setsockopt =105;
- syscall_nr_gettimeofday =116;
-
- syscall_nr_fchown =123;
- syscall_nr_fchmod =124;
- syscall_nr_setreuid =126;
- syscall_nr_setregid =127;
- syscall_nr_rename =128;
- syscall_nr_flock =131;
- syscall_nr_mkdir =136;
- syscall_nr_rmdir =137;
- syscall_nr_utimes =138;
- syscall_nr_adjtime =140;
-
- syscall_nr_quotactl =148;
- syscall_nr_nfssvc =155;
- syscall_nr_statfs =157;
- syscall_nr_fstatfs =158;
- syscall_nr_getfh =161;
- syscall_nr_getdomainname =162;
- syscall_nr_setdomainname =163;
- syscall_nr_uname =164;
-
- syscall_nr_rtprio =166;
-
- syscall_nr_ntp_adjtime =176;
- syscall_nr_setegid =182;
- syscall_nr_seteuid =183;
- syscall_nr_stat =188;
- syscall_nr_fstat =189;
- syscall_nr_lstat =190;
- syscall_nr_pathconf =191;
- syscall_nr_fpathconf =192;
- syscall_nr_getrlimit =194;
- syscall_nr_setrlimit =195;
-syscall_nr_getdirentries =196;
- syscall_nr_mmap =197;
- syscall_nr_lseek =199;
- syscall_nr_truncate =200;
- syscall_nr_ftruncate =201;
- syscall_nr___sysctl =202;
- syscall_nr_mlock =203;
- syscall_nr_munlock =204;
- syscall_nr_undelete =205;
- syscall_nr_futimes =206;
- syscall_nr_getpgid =207;
- syscall_nr___semctl =220;
- syscall_nr_semget =221;
- syscall_nr_semop =222;
- syscall_nr_semconfig =223;
- syscall_nr_msgctl =224;
- syscall_nr_msgget =225;
- syscall_nr_msgsnd =226;
- syscall_nr_msgrcv =227;
- syscall_nr_shmat =228;
- syscall_nr_shmctl =229;
- syscall_nr_shmdt =230;
- syscall_nr_shmget =231;
- syscall_nr_clock_gettime =232;
- syscall_nr_clock_settime =233;
- syscall_nr_clock_getres =234;
- syscall_nr_nanosleep =240;
- syscall_nr_minherit =250;
- syscall_nr_openbsd_poll =252;
- syscall_nr_issetugid =253;
- syscall_nr_lchown =254;
- syscall_nr_getdents =272;
- syscall_nr_lchmod =274;
- syscall_nr_netbsd_lchown =275;
- syscall_nr_lutimes =276;
- syscall_nr_netbsd_msync =277;
- syscall_nr_nstat =278;
- syscall_nr_nfstat =279;
- syscall_nr_nlstat =280;
- syscall_nr_fhstatfs =297;
- syscall_nr_fhopen =298;
- syscall_nr_fhstat =299;
- syscall_nr_modnext =300;
- syscall_nr_modstat =301;
- syscall_nr_modfnext =302;
- syscall_nr_modfind =303;
- syscall_nr_kldload =304;
- syscall_nr_kldunload =305;
- syscall_nr_kldfind =306;
- syscall_nr_kldnext =307;
- syscall_nr_kldstat =308;
- syscall_nr_kldfirstmod =309;
- syscall_nr_getsid =310;
- syscall_nr_setresuid =311;
- syscall_nr_setresgid =312;
- syscall_nr_aio_return =314;
- syscall_nr_aio_suspend =315;
- syscall_nr_aio_cancel =316;
- syscall_nr_aio_error =317;
- syscall_nr_aio_read =318;
- syscall_nr_aio_write =319;
- syscall_nr_lio_listio =320;
- syscall_nr_yield =321;
- syscall_nr_thr_sleep =322;
- syscall_nr_thr_wakeup =323;
- syscall_nr_mlockall =324;
- syscall_nr_munlockall =325;
- syscall_nr_sched_setparam =327;
- syscall_nr_sched_getparam =328;
- syscall_nr_sched_setscheduler =329;
- syscall_nr_sched_getscheduler =330;
- syscall_nr_sched_yield =331;
- syscall_nr_sched_get_priority_max =332;
- syscall_nr_sched_get_priority_min =333;
- syscall_nr_sched_rr_get_interval =334;
- syscall_nr_utrace =335;
- syscall_nr_sendfile =336;
- syscall_nr_kldsym =337;
- syscall_nr_jail =338;
- syscall_nr_sigprocmask =340;
- syscall_nr_sigsuspend =341;
- syscall_nr_sigaction =342;
- syscall_nr_sigpending =343;
- syscall_nr_sigreturn =344;
- syscall_nr_sigtimedwait =345;
- syscall_nr___acl_get_file =347;
- syscall_nr___acl_set_file =348;
- syscall_nr___acl_get_fd =349;
- syscall_nr___acl_set_fd =350;
- syscall_nr___acl_delete_file =351;
- syscall_nr___acl_delete_fd =352;
- syscall_nr___acl_aclcheck_file =353;
- syscall_nr___acl_aclcheck_fd =354;
- syscall_nr_extattrctl =355;
- syscall_nr_extattr_set_file =356;
- syscall_nr_extattr_get_file =357;
- syscall_nr_extattr_delete_file =358;
- syscall_nr_aio_waitcomplete =359;
- syscall_nr_getresuid =360;
- syscall_nr_getresgid =361;
- syscall_nr_kse_exit = 379;
- syscall_nr_kse_wakeup = 380;
- syscall_nr_kse_create = 381;
- syscall_nr_kse_thr_interrupt = 382;
- syscall_nr_kse_release = 383;
- syscall_nr_kse_switchin = 440;
-
-}
-
{More or less checked/in use FreeBSD syscalls}
syscall_nr_readv = 120;
syscall_nr_writev = 121;
@@ -266,7 +49,11 @@ syscall_nr_getdirentries =196;
syscall_nr_flock = 131;
syscall_nr_fork = 2;
syscall_nr_fstat = 189;
- syscall_nr_fstatfs = 158; // COMPAT4x
+ syscall_nr_statfs4 = 157; // COMPAT4x
+ syscall_nr_fstatfs4 = 158; // COMPAT4x
+ syscall_nr_getfsstat = 395;
+ syscall_nr_statfs = 396;
+ syscall_nr_fstatfs = 397;
syscall_nr_fsync = 95;
syscall_nr_ftruncate = 201;
syscall_nr_getdents = 272;
@@ -310,7 +97,6 @@ syscall_nr_getdirentries =196;
syscall_nr_socket = 97;
syscall_nr_socketpair = 135;
syscall_nr_stat = 188;
- syscall_nr_statfs = 157; // COMPAT4x
syscall_nr_symlink = 57;
syscall_nr_umask = 60;
syscall_nr_unlink = 10;
diff --git a/rtl/inc/aliases.inc b/rtl/inc/aliases.inc
index e9431cc5b8..7a7e90794c 100644
--- a/rtl/inc/aliases.inc
+++ b/rtl/inc/aliases.inc
@@ -28,5 +28,5 @@ Procedure int_Finalize (Data,TypeInfo: Pointer); [external name 'FPC_FINALIZE'];
Procedure int_Addref (Data,TypeInfo : Pointer); [external name 'FPC_ADDREF'];
Procedure int_DecRef (Data, TypeInfo : Pointer); [external name 'FPC_DECREF'];
Procedure int_Initialize (Data,TypeInfo: Pointer); [external name 'FPC_INITIALIZE'];
-procedure int_FinalizeArray(data,typeinfo : pointer;count,size : longint); [external name 'FPC_FINALIZEARRAY'];
+procedure int_FinalizeArray(data,typeinfo : pointer;count : longint); [external name 'FPC_FINALIZE_ARRAY'];
diff --git a/rtl/inc/astrings.inc b/rtl/inc/astrings.inc
index 1d6d4253c1..bf509c1dab 100644
--- a/rtl/inc/astrings.inc
+++ b/rtl/inc/astrings.inc
@@ -539,16 +539,10 @@ begin
end;
-Procedure fpc_AnsiStr_CheckZero(p : pointer);[Public,Alias : 'FPC_ANSISTR_CHECKZERO']; compilerproc;
-begin
- if p=nil then
- HandleErrorFrame(201,get_frame);
-end;
-
-Procedure fpc_AnsiStr_CheckRange(len,index : SizeInt);[Public,Alias : 'FPC_ANSISTR_RANGECHECK']; compilerproc;
+Procedure fpc_AnsiStr_CheckRange(p: Pointer; index: SizeInt);[Public,Alias : 'FPC_ANSISTR_RANGECHECK']; compilerproc;
begin
- if (index>len) or (Index<1) then
+ if (p=nil) or (index>PAnsiRec(p-FirstOff)^.Len) or (Index<1) then
HandleErrorFrame(201,get_frame);
end;
@@ -1060,6 +1054,13 @@ begin
Move (Buf^,Pointer(S)^,Len);
end;
+Procedure SetString (Out S : AnsiString; Buf : PWideChar; Len : SizeInt);
+begin
+ if (Buf<>nil) and (Len>0) then
+ widestringmanager.Wide2AnsiMoveProc(Buf,S,Len)
+ else
+ SetLength(S, Len);
+end;
function upcase(const s : ansistring) : ansistring;
var
diff --git a/rtl/inc/compproc.inc b/rtl/inc/compproc.inc
index 6b81ffa6d3..0f6126f25a 100644
--- a/rtl/inc/compproc.inc
+++ b/rtl/inc/compproc.inc
@@ -278,8 +278,7 @@ procedure fpc_ansistr_to_chararray(out res: array of char; const src: ansistring
{$endif ndef FPC_STRTOCHARARRAYPROC}
Function fpc_AnsiStr_Compare(const S1,S2 : AnsiString): SizeInt; compilerproc;
Function fpc_AnsiStr_Compare_equal(const S1,S2 : AnsiString): SizeInt; compilerproc;
-Procedure fpc_AnsiStr_CheckZero(p : pointer); compilerproc;
-Procedure fpc_AnsiStr_CheckRange(len,index : SizeInt); compilerproc;
+Procedure fpc_AnsiStr_CheckRange(p : Pointer; index : SizeInt); compilerproc;
Procedure fpc_AnsiStr_SetLength (Var S : AnsiString; l : SizeInt); compilerproc;
Function fpc_ansistr_Copy (Const S : AnsiString; Index,Size : SizeInt) : AnsiString;compilerproc;
{$ifdef EXTRAANSISHORT}
@@ -327,8 +326,7 @@ procedure fpc_widestr_to_widechararray(out res: array of widechar; const src: Wi
{$endif ndef FPC_STRTOCHARARRAYPROC}
Function fpc_WideStr_Compare(const S1,S2 : WideString): SizeInt; compilerproc;
Function fpc_WideStr_Compare_equal(const S1,S2 : WideString): SizeInt; compilerproc;
-Procedure fpc_WideStr_CheckZero(p : pointer); compilerproc;
-Procedure fpc_WideStr_CheckRange(len,index : SizeInt); compilerproc;
+Procedure fpc_WideStr_CheckRange(p: Pointer; index : SizeInt); compilerproc;
Procedure fpc_WideStr_SetLength (Var S : WideString; l : SizeInt); compilerproc;
Function fpc_widestr_Copy (Const S : WideString; Index,Size : SizeInt) : WideString;compilerproc;
{$ifndef FPC_WINLIKEWIDESTRING}
@@ -413,8 +411,7 @@ procedure fpc_unicodestr_to_widechararray(out res: array of widechar; const src:
{$endif VER2_2}
Function fpc_UnicodeStr_Compare(const S1,S2 : UnicodeString): SizeInt; compilerproc;
Function fpc_UnicodeStr_Compare_equal(const S1,S2 : UnicodeString): SizeInt; compilerproc;
-Procedure fpc_UnicodeStr_CheckZero(p : pointer); compilerproc;
-Procedure fpc_UnicodeStr_CheckRange(len,index : SizeInt); compilerproc;
+Procedure fpc_UnicodeStr_CheckRange(p: Pointer; index : SizeInt); compilerproc;
Procedure fpc_UnicodeStr_SetLength (Var S : UnicodeString; l : SizeInt); compilerproc;
Function fpc_unicodestr_Copy (Const S : UnicodeString; Index,Size : SizeInt) : UnicodeString;compilerproc;
function fpc_unicodestr_Unique(Var S : Pointer): Pointer; compilerproc;
@@ -678,8 +675,10 @@ Procedure fpc_Initialize (Data,TypeInfo : pointer); compilerproc;
Procedure fpc_finalize (Data,TypeInfo: Pointer); compilerproc;
Procedure fpc_Addref (Data,TypeInfo : Pointer); compilerproc;
Procedure fpc_DecRef (Data,TypeInfo : Pointer); compilerproc;
-procedure fpc_initialize_array(data,typeinfo : pointer;count,size : SizeInt); compilerproc;
-procedure fpc_finalize_array(data,typeinfo : pointer;count,size : SizeInt); compilerproc;
+procedure fpc_initialize_array(data,typeinfo : pointer;count : SizeInt); compilerproc;
+procedure fpc_finalize_array(data,typeinfo : pointer;count : SizeInt); compilerproc;
+procedure fpc_addref_array(data,typeinfo: pointer; count: SizeInt); compilerproc;
+procedure fpc_decref_array(data,typeinfo: pointer; count: sizeint); compilerproc;
Function fpc_Copy (Src, Dest, TypeInfo : Pointer) : SizeInt; compilerproc;
Procedure fpc_Copy_proc (Src, Dest, TypeInfo : Pointer); compilerproc; inline;
{$endif FPC_HAS_FEATURE_RTTI}
diff --git a/rtl/inc/dynarr.inc b/rtl/inc/dynarr.inc
index 33fca66d96..78eb834d70 100644
--- a/rtl/inc/dynarr.inc
+++ b/rtl/inc/dynarr.inc
@@ -53,7 +53,6 @@ function fpc_dynarray_high(p : pointer) : tdynarrayindex;[Public,Alias:'FPC_DYNA
{ releases and finalizes the data of a dyn. array and sets p to nil }
procedure fpc_dynarray_clear_internal(p : pointer;ti : pointer);
var
- elesize : sizeint;
eletype : pdynarraytypeinfo;
begin
if p=nil then
@@ -64,12 +63,10 @@ procedure fpc_dynarray_clear_internal(p : pointer;ti : pointer);
ti:=aligntoptr(ti);
- elesize:=psizeint(ti)^;
eletype:=pdynarraytypeinfo(pointer(pdynarraytypeinfo(pointer(ti)+sizeof(sizeint)))^);
{ finalize all data }
- int_finalizearray(p+sizeof(tdynarray),eletype,pdynarray(p)^.high+1,
- elesize);
+ int_finalizearray(p+sizeof(tdynarray),eletype,pdynarray(p)^.high+1);
{ release the data }
freemem(p);
@@ -243,7 +240,7 @@ procedure fpc_dynarray_setlength(var p : pointer;pti : pointer;
begin
int_finalizearray(pointer(realp)+sizeof(tdynarray)+
elesize*dims[dimcount-1],
- eletype,realp^.high-dims[dimcount-1]+1,elesize);
+ eletype,realp^.high-dims[dimcount-1]+1);
reallocmem(realp,size);
end
else if dims[dimcount-1]>realp^.high+1 then
diff --git a/rtl/inc/exeinfo.pp b/rtl/inc/exeinfo.pp
index 40b4105bfb..87b66de5ca 100644
--- a/rtl/inc/exeinfo.pp
+++ b/rtl/inc/exeinfo.pp
@@ -170,38 +170,54 @@ type
{$ifdef netware}
+function getByte(var f:file):byte;
+ begin
+ BlockRead (f,getByte,1);
+ end;
+
+ procedure Skip (var f:file; bytes : longint);
+ var i : longint;
+ begin
+ for i := 1 to bytes do getbyte(f);
+ end;
+
+ function get0String (var f:file) : string;
+ var c : char;
+ begin
+ get0String := '';
+ c := char (getbyte(f));
+ while (c <> #0) do
+ begin
+ get0String := get0String + c;
+ c := char (getbyte(f));
+ end;
+ end;
+
+ function getint32 (var f:file): longint;
+ begin
+ blockread (F, getint32, 4);
+ end;
+
+
const SIZE_OF_NLM_INTERNAL_FIXED_HEADER = 130;
SIZE_OF_NLM_INTERNAL_VERSION_HEADER = 32;
SIZE_OF_NLM_INTERNAL_EXTENDED_HEADER = 124;
-function loadNetwareNLM:boolean;
+function openNetwareNLM(var e:TExeFile):boolean;
var valid : boolean;
name : string;
- StabLength,
- StabStrLength,
- alignAmount,
hdrLength,
dataOffset,
dataLength : longint;
-
- function getByte:byte;
- begin
- BlockRead (f,getByte,1);
- end;
-
- procedure Skip (bytes : longint);
- var i : longint;
- begin
- for i := 1 to bytes do getbyte;
- end;
+
function getLString : String;
var Res:string;
begin
- blockread (F, res, 1);
+ blockread (e.F, res, 1);
if length (res) > 0 THEN
- blockread (F, res[1], length (res));
- getbyte;
+ blockread (e.F, res[1], length (res));
+ getbyte(e.f);
getLString := res;
end;
@@ -210,42 +226,27 @@ var valid : boolean;
begin
getFixString := '';
for I := 1 to Len do
- getFixString := getFixString + char (getbyte);
+ getFixString := getFixString + char (getbyte(e.f));
end;
- function get0String : string;
- var c : char;
- begin
- get0String := '';
- c := char (getbyte);
- while (c <> #0) do
- begin
- get0String := get0String + c;
- c := char (getbyte);
- end;
- end;
function getword : word;
begin
- blockread (F, getword, 2);
+ blockread (e.F, getword, 2);
end;
- function getint32 : longint;
- begin
- blockread (F, getint32, 4);
- end;
+
begin
- processaddress := 0;
- LoadNetwareNLM:=false;
- stabofs:=-1;
- stabstrofs:=-1;
- { read and check header }
- Skip (SIZE_OF_NLM_INTERNAL_FIXED_HEADER);
+ e.sechdrofs := 0;
+ openNetwareNLM:=false;
+
+ // read and check header
+ Skip (e.f,SIZE_OF_NLM_INTERNAL_FIXED_HEADER);
getLString; // NLM Description
- getInt32; // Stacksize
- getInt32; // Reserved
- skip(5); // old Thread Name
+ getInt32(e.f); // Stacksize
+ getInt32(e.f); // Reserved
+ skip(e.f,5); // old Thread Name
getLString; // Screen Name
getLString; // Thread Name
hdrLength := -1;
@@ -256,7 +257,7 @@ begin
name := getFixString (8);
if (name = 'VeRsIoN#') then
begin
- Skip (SIZE_OF_NLM_INTERNAL_VERSION_HEADER-8);
+ Skip (e.f,SIZE_OF_NLM_INTERNAL_VERSION_HEADER-8);
end else
if (name = 'CoPyRiGh') then
begin
@@ -265,50 +266,50 @@ begin
end else
if (name = 'MeSsAgEs') then
begin
- skip (SIZE_OF_NLM_INTERNAL_EXTENDED_HEADER - 8);
+ skip (e.f,SIZE_OF_NLM_INTERNAL_EXTENDED_HEADER - 8);
end else
if (name = 'CuStHeAd') then
begin
- hdrLength := getInt32;
- dataOffset := getInt32;
- dataLength := getInt32;
- Skip (8); // dataStamp
+ hdrLength := getInt32(e.f);
+ dataOffset := getInt32(e.f);
+ dataLength := getInt32(e.f);
+ Skip (e.f,8); // dateStamp
Valid := false;
end else
Valid := false;
until not valid;
if (hdrLength = -1) or (dataOffset = -1) or (dataLength = -1) then
exit;
- (* The format of the section information is:
+
+ Seek (e.F, dataOffset);
+ e.sechdrofs := dataOffset;
+ openNetwareNLM := (e.sechdrofs > 0);
+end;
+
+function FindSectionNetwareNLM(var e:TExeFile;const asecname:string;var secofs,seclen:longint):boolean;
+var name : string;
+ alignAmount : longint;
+begin
+ seek(e.f,e.sechdrofs);
+ (* The format of the section information is:
null terminated section name
zeroes to adjust to 4 byte boundary
4 byte section data file pointer
4 byte section size *)
- Seek (F, dataOffset);
- stabOfs := 0;
- stabStrOfs := 0;
Repeat
- Name := Get0String;
+ Name := Get0String(e.f);
alignAmount := 4 - ((length (Name) + 1) MOD 4);
- Skip (alignAmount);
- if (Name = '.stab') then
+ Skip (e.f,AlignAmount);
+ if (Name = asecname) then
begin
- stabOfs := getInt32;
- stabLength := getInt32;
- stabcnt:=stabLength div sizeof(tstab);
+ secOfs := getInt32(e.f);
+ secLen := getInt32(e.f);
end else
- if (Name = '.stabstr') then
- begin
- stabStrOfs := getInt32;
- stabStrLength := getInt32;
- end else
- Skip (8);
- until (Name = '') or ((StabOfs <> 0) and (stabStrOfs <> 0));
- Seek (F,stabOfs);
- //if (StabOfs = 0) then __ConsolePrintf ('StabOfs = 0');
- //if (StabStrOfs = 0) then __ConsolePrintf ('StabStrOfs = 0');
- LoadNetwareNLM := ((stabOfs > 0) and (stabStrOfs > 0));
+ Skip(e.f,8);
+ until (Name = '') or (Name = asecname);
+ FindSectionNetwareNLM := (Name=asecname);
end;
+
{$endif}
diff --git a/rtl/inc/rtti.inc b/rtl/inc/rtti.inc
index 904b1a965c..2ec8e37c1d 100644
--- a/rtl/inc/rtti.inc
+++ b/rtl/inc/rtti.inc
@@ -19,85 +19,85 @@
type
TRTTIProc=procedure(Data,TypeInfo:Pointer);
+ PRecordElement=^TRecordElement;
+ TRecordElement=packed record
+ TypeInfo: Pointer;
+ Offset: Longint;
+ end;
+
+ PRecordInfo=^TRecordInfo;
+ TRecordInfo=packed record
+ Size: Longint;
+ Count: Longint;
+ { Elements: array[count] of TRecordElement }
+ end;
+
+ PArrayInfo=^TArrayInfo;
+ TArrayInfo=packed record
+ ElSize: SizeInt;
+ ElCount: SizeInt;
+ ElInfo: Pointer;
+ end;
+
+
+function RTTIArraySize(typeInfo: Pointer): SizeInt;
+begin
+ typeInfo:=aligntoptr(typeInfo+2+PByte(typeInfo)[1]);
+ result:=PArrayInfo(typeInfo)^.ElSize * PArrayInfo(typeInfo)^.ElCount;
+end;
+
+function RTTIRecordSize(typeInfo: Pointer): SizeInt;
+begin
+ typeInfo:=aligntoptr(typeInfo+2+PByte(typeInfo)[1]);
+ result:=PRecordInfo(typeInfo)^.Size;
+end;
+
+function RTTISize(typeInfo: Pointer): SizeInt;
+begin
+ case PByte(typeinfo)^ of
+ tkAString,tkWString,tkUString,
+ tkInterface,tkDynarray:
+ result:=sizeof(Pointer);
+{$ifdef FPC_HAS_FEATURE_VARIANTS}
+ tkVariant:
+ result:=sizeof(TVarData);
+{$endif FPC_HAS_FEATURE_VARIANTS}
+ tkArray:
+ result:=RTTIArraySize(typeinfo);
+ tkObject,tkRecord:
+ result:=RTTIRecordSize(typeinfo);
+ else
+ result:=-1;
+ end;
+end;
+
{ if you modify this procedure, fpc_copy must be probably modified as well }
procedure RecordRTTI(Data,TypeInfo:Pointer;rttiproc:TRTTIProc);
-{
- A record is designed as follows :
- 1 : tkrecord
- 2 : Length of name string (n);
- 3 : name string;
- 3+n : record size;
- 7+n : number of elements (N)
- 11+n : N times : Pointer to type info
- Offset in record
-}
var
- Temp : pbyte;
- namelen : byte;
count,
- offset,
i : longint;
- info : pointer;
begin
- Temp:=PByte(TypeInfo);
- inc(Temp);
- { Skip Name }
- namelen:=Temp^;
- inc(temp,namelen+1);
- temp:=aligntoptr(temp);
- { Skip size }
- inc(Temp,4);
- { Element count }
- Count:=PLongint(Temp)^;
- inc(Temp,sizeof(Count));
+ typeInfo:=aligntoptr(typeInfo+2+PByte(typeInfo)[1]);
+ Count:=PRecordInfo(typeInfo)^.Count;
+ Inc(PRecordInfo(typeInfo));
{ Process elements }
for i:=1 to count Do
begin
- Info:=PPointer(Temp)^;
- inc(Temp,sizeof(Info));
- Offset:=PLongint(Temp)^;
- inc(Temp,sizeof(Offset));
- rttiproc (Data+Offset,Info);
+ rttiproc (Data+PRecordElement(typeInfo)^.Offset,PRecordElement(typeInfo)^.TypeInfo);
+ Inc(PRecordElement(typeInfo));
end;
end;
{ if you modify this procedure, fpc_copy must be probably modified as well }
procedure ArrayRTTI(Data,TypeInfo:Pointer;rttiproc:TRTTIProc);
-{
- An array is designed as follows :
- 1 : tkArray;
- 2 : length of name string (n);
- 3 : NAme string
- 3+n : Element Size
- 7+n : Number of elements
- 11+n : Pointer to type of elements
-}
var
- Temp : pbyte;
- namelen : byte;
- count,
- size,
i : SizeInt;
- info : pointer;
begin
- Temp:=PByte(TypeInfo);
- inc(Temp);
- { Skip Name }
- namelen:=Temp^;
- inc(temp,namelen+1);
- temp:=aligntoptr(temp);
- { Element size }
- size:=PSizeInt(Temp)^;
- inc(Temp,sizeof(Size));
- { Element count }
- Count:=PSizeInt(Temp)^;
- inc(Temp,sizeof(Count));
- Info:=PPointer(Temp)^;
- inc(Temp,sizeof(Info));
+ typeInfo:=aligntoptr(typeInfo+2+PByte(typeInfo)[1]);
{ Process elements }
- for I:=0 to Count-1 do
- rttiproc(Data+(I*size),Info);
+ for I:=0 to PArrayInfo(typeInfo)^.ElCount-1 do
+ rttiproc(Data+(I*PArrayInfo(typeInfo)^.ElSize),PArrayInfo(typeInfo)^.ElInfo);
end;
@@ -268,13 +268,12 @@ Function fpc_Copy_internal (Src, Dest, TypeInfo : Pointer) : SizeInt;[external n
Function fpc_Copy (Src, Dest, TypeInfo : Pointer) : SizeInt;[Public,alias : 'FPC_COPY']; compilerproc;
var
+ ArrayInfo: PArrayInfo;
Temp : pbyte;
- namelen : byte;
copiedsize,
expectedoffset,
count,
offset,
- size,
i : SizeInt;
info : pointer;
begin
@@ -300,57 +299,31 @@ begin
{$endif FPC_HAS_FEATURE_WIDESTRINGS}
tkArray:
begin
- Temp:=PByte(TypeInfo);
- inc(Temp);
- { Skip Name }
- namelen:=Temp^;
- inc(temp,namelen+1);
- temp:=aligntoptr(temp);
-
- { Element size }
- size:=PSizeInt(Temp)^;
- inc(Temp,sizeof(Size));
-
- { Element count }
- Count:=PSizeInt(Temp)^;
- inc(Temp,sizeof(Count));
- Info:=PPointer(Temp)^;
- inc(Temp,sizeof(Info));
+ ArrayInfo:=aligntoptr(typeInfo+2+PByte(typeInfo)[1]);
{ Process elements }
- for I:=0 to Count-1 do
- fpc_Copy_internal(Src+(I*size),Dest+(I*size),Info);
- Result:=size*count;
+ for I:=0 to ArrayInfo^.ElCount-1 do
+ fpc_Copy_internal(Src+(I*ArrayInfo^.ElSize),Dest+(I*ArrayInfo^.ElSize),ArrayInfo^.ElInfo);
+ Result:=ArrayInfo^.ElSize*ArrayInfo^.ElCount;
end;
{$ifdef FPC_HAS_FEATURE_OBJECTS}
tkobject,
{$endif FPC_HAS_FEATURE_OBJECTS}
tkrecord:
begin
- Temp:=PByte(TypeInfo);
- inc(Temp);
- { Skip Name }
- namelen:=Temp^;
- inc(temp,namelen+1);
- temp:=aligntoptr(temp);
-
- Result:=plongint(temp)^;
+ Temp:=aligntoptr(typeInfo+2+PByte(typeInfo)[1]);
- { Skip size }
- inc(Temp,4);
-
- { Element count }
- Count:=PLongint(Temp)^;
- inc(Temp,sizeof(longint));
+ Result:=PRecordInfo(Temp)^.Size;
+ Count:=PRecordInfo(Temp)^.Count;
+ Inc(PRecordInfo(Temp));
expectedoffset:=0;
{ Process elements with rtti }
for i:=1 to count Do
begin
- Info:=PPointer(Temp)^;
- inc(Temp,sizeof(Info));
- Offset:=PLongint(Temp)^;
+ Info:=PRecordElement(Temp)^.TypeInfo;
+ Offset:=PRecordElement(Temp)^.Offset;
+ Inc(PRecordElement(Temp));
if Offset>expectedoffset then
move((Src+expectedoffset)^,(Dest+expectedoffset)^,Offset-expectedoffset);
- inc(Temp,sizeof(longint));
copiedsize:=fpc_Copy_internal(Src+Offset,Dest+Offset,Info);
expectedoffset:=Offset+copiedsize;
end;
@@ -392,24 +365,44 @@ begin
end;
-procedure fpc_initialize_array(data,typeinfo : pointer;count,size : SizeInt); compilerproc;
+procedure fpc_initialize_array(data,typeinfo : pointer;count : SizeInt); [public,alias:'FPC_INITIALIZE_ARRAY'] compilerproc;
var
- i : SizeInt;
+ i, size : SizeInt;
begin
- if not(PByte(typeinfo)^ in [tkInteger,tkChar,tkEnumeration,tkFloat,tkSet,
- tkMethod,tkSString,tkLString,tkWChar,tkBool,tkInt64,tkQWord]) then
+ size:=RTTISize(typeinfo);
+ if size>0 then
for i:=0 to count-1 do
int_initialize(data+size*i,typeinfo);
end;
-procedure fpc_finalize_array(data,typeinfo : pointer;count,size : SizeInt); [Public,Alias:'FPC_FINALIZEARRAY']; compilerproc;
+procedure fpc_finalize_array(data,typeinfo : pointer;count : SizeInt); [Public,Alias:'FPC_FINALIZE_ARRAY']; compilerproc;
var
- i : SizeInt;
+ i, size: SizeInt;
begin
- if not(PByte(typeinfo)^ in [tkInteger,tkChar,tkEnumeration,tkFloat,tkSet,
- tkMethod,tkSString,tkLString,tkWChar,tkBool,tkInt64,tkQWord]) then
+ size:=RTTISize(typeinfo);
+ if size>0 then
for i:=0 to count-1 do
int_finalize(data+size*i,typeinfo);
end;
+procedure fpc_addref_array(data,typeinfo: pointer; count: SizeInt); [public,alias:'FPC_ADDREF_ARRAY']; compilerproc;
+ var
+ i, size: SizeInt;
+ begin
+ size:=RTTISize(typeinfo);
+ if size>0 then
+ for i:=0 to count-1 do
+ int_addref(data+size*i,typeinfo);
+ end;
+
+procedure fpc_decref_array(data,typeinfo: pointer; count: SizeInt); [public,alias:'FPC_DECREF_ARRAY']; compilerproc;
+ var
+ i, size: SizeInt;
+ begin
+ size:=RTTISize(typeinfo);
+ if size>0 then
+ for i:=0 to count-1 do
+ int_decref(data+size*i,typeinfo);
+ end;
+
diff --git a/rtl/inc/sstrings.inc b/rtl/inc/sstrings.inc
index c8ada78043..ae9cc4cd7e 100644
--- a/rtl/inc/sstrings.inc
+++ b/rtl/inc/sstrings.inc
@@ -455,8 +455,6 @@ type
end;
var
- p:Pstring;
-
enum_o2s : Penum_ord_to_string;
header:Penum_typeinfo;
body:Penum_typedata;
@@ -1340,8 +1338,6 @@ var l,h,m:cardinal;
spaces:byte;
t:shortstring;
-label error;
-
begin
{Val for numbers accepts spaces at the start, so lets do the same
for enums. Skip spaces at the start of the string.}
diff --git a/rtl/inc/system.fpd b/rtl/inc/system.fpd
index 5f2eea9736..f373414f42 100644
--- a/rtl/inc/system.fpd
+++ b/rtl/inc/system.fpd
@@ -62,3 +62,9 @@ Procedure ReadStr(Const S : String; Args : Arguments);
Procedure Pack(Const A : UnpackedArrayType; StartIndex : TIndexType; Out Z : PackedArrayType);
Procedure UnPack(Const Z : PackedArrayType; Out A : UnpackedArrayType; StartIndex : TIndexType);
+{$IFNDEF GO32V2}
+Var
+ mem : array[0..$7fffffff-1] of byte;
+ memw : array[0..($7fffffff div sizeof(word))-1] of word;
+ meml : array[0..($7fffffff div sizeof(longint))-1] of longint;
+{$ENDIF}
diff --git a/rtl/inc/system.inc b/rtl/inc/system.inc
index 72163f415a..b911c5115d 100644
--- a/rtl/inc/system.inc
+++ b/rtl/inc/system.inc
@@ -786,9 +786,11 @@ var
begin
{ call cpu/fpu initialisation routine }
fpc_cpuinit;
- with {$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}PInitFinalTable(EntryInformation.{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
- InitFinalTable
- {$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION})^{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION} do
+{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}
+ with PInitFinalTable(EntryInformation.InitFinalTable)^ do
+{$else FPC_HAS_INDIRECT_MAIN_INFORMATION}
+ with InitFinalTable do
+{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
begin
for i:=1 to TableCount do
begin
@@ -815,9 +817,11 @@ end;
procedure FinalizeUnits;[public,alias:'FPC_FINALIZEUNITS'];
begin
- with {$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}PInitFinalTable(EntryInformation.{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
- InitFinalTable
- {$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION})^{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION} do
+{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}
+ with PInitFinalTable(EntryInformation.InitFinalTable)^ do
+{$else FPC_HAS_INDIRECT_MAIN_INFORMATION}
+ with InitFinalTable do
+{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
begin
while (InitCount>0) do
begin
diff --git a/rtl/inc/systemh.inc b/rtl/inc/systemh.inc
index 1b3cfe6bb1..b1fe1e4a5a 100644
--- a/rtl/inc/systemh.inc
+++ b/rtl/inc/systemh.inc
@@ -820,6 +820,7 @@ Function Pos(C:Char;const s:shortstring):SizeInt;
{$ifdef FPC_HAS_FEATURE_ANSISTRINGS}
Function Pos (const Substr : ShortString; const Source : AnsiString) : SizeInt;
Procedure SetString (out S : AnsiString; Buf : PChar; Len : SizeInt);
+Procedure SetString (out S : AnsiString; Buf : PWideChar; Len : SizeInt);
{$endif FPC_HAS_FEATURE_ANSISTRINGS}
Procedure SetString (out S : Shortstring; Buf : PChar; Len : SizeInt);
function ShortCompareText(const S1, S2: shortstring): SizeInt;
diff --git a/rtl/inc/threadvr.inc b/rtl/inc/threadvr.inc
index 538b99eac2..02af72e96d 100644
--- a/rtl/inc/threadvr.inc
+++ b/rtl/inc/threadvr.inc
@@ -52,15 +52,18 @@ procedure init_all_unit_threadvars;
var
i : integer;
begin
+{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}
+ with PltvInitTablesTable(EntryInformation.ThreadvarTablesTable)^ do
+{$else FPC_HAS_INDIRECT_MAIN_INFORMATION}
+ with ThreadvarTablesTable do
+{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
+ begin
{$ifdef DEBUG_MT}
- WriteLn ('init_all_unit_threadvars (',
- {$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}PltvInitTablesTable(EntryInformation.{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
- ThreadvarTablesTable{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION})^{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}.count,') units');
+ WriteLn ('init_all_unit_threadvars (',count,') units');
{$endif}
- for i := 1 to {$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}PltvInitTablesTable(EntryInformation.{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
- ThreadvarTablesTable{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION})^{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}.count do
- init_unit_threadvars ({$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}PltvInitTablesTable(EntryInformation.{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
- ThreadvarTablesTable{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION})^{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}.tables[i]);
+ for i := 1 to count do
+ init_unit_threadvars (tables[i]);
+ end;
end;
@@ -83,14 +86,18 @@ procedure copy_all_unit_threadvars;
var
i : integer;
begin
+{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}
+ with PltvInitTablesTable(EntryInformation.ThreadvarTablesTable)^ do
+{$else FPC_HAS_INDIRECT_MAIN_INFORMATION}
+ with ThreadvarTablesTable do
+{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
+ begin
{$ifdef DEBUG_MT}
- WriteLn ('copy_all_unit_threadvars (',{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}PltvInitTablesTable(EntryInformation.{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
- ThreadvarTablesTable{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION})^{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}.count,') units');
+ WriteLn ('copy_all_unit_threadvars (',count,') units');
{$endif}
- for i := 1 to {$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}PltvInitTablesTable(EntryInformation.{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
- ThreadvarTablesTable{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION})^{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}.count do
- copy_unit_threadvars ({$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}PltvInitTablesTable(EntryInformation.{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
- ThreadvarTablesTable{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION})^{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}.tables[i]);
+ for i := 1 to count do
+ copy_unit_threadvars (tables[i]);
+ end;
end;
procedure InitThreadVars(RelocProc : Pointer);
diff --git a/rtl/inc/ucomplex.pp b/rtl/inc/ucomplex.pp
index c9b304c0d0..0a4613cd75 100644
--- a/rtl/inc/ucomplex.pp
+++ b/rtl/inc/ucomplex.pp
@@ -344,7 +344,7 @@ Unit UComplex;
z.re := (znum.im + znum.re * tmp) / denom;
z.im := (-znum.re + znum.im * tmp) / denom;
end;
- end;
+ end;
operator / (znum : complex; r : real) z : complex;
{ division : z := znum / r }
@@ -572,7 +572,7 @@ Unit UComplex;
{ _________ }
{ argch(z) = -/+ ln(z + i.V 1 - z.z) }
begin
- carg_ch:=-cln(z+i*csqrt(z*z-1.0));
+ carg_ch:=-cln(z+i*csqrt(1.0-z*z));
end;
function carg_sh (z : complex) : complex;
@@ -587,7 +587,7 @@ Unit UComplex;
{ hyperbolic arc tangent }
{ argth(z) = 1/2 ln((z + 1) / (1 - z)) }
begin
- carg_th:=cln((z+1.0)/(z-1.0))/2.0;
+ carg_th:=cln((z+1.0)/(1.0-z))/2.0;
end;
{ functions to write out a complex value }
diff --git a/rtl/inc/ustrings.inc b/rtl/inc/ustrings.inc
index f805d376f1..ed7e3583a9 100644
--- a/rtl/inc/ustrings.inc
+++ b/rtl/inc/ustrings.inc
@@ -1304,16 +1304,10 @@ begin
exit(CompareWord(S1[1],S2[1],MaxI));
end;
-Procedure fpc_UnicodeStr_CheckZero(p : pointer);[Public,Alias : 'FPC_UNICODESTR_CHECKZERO']; compilerproc;
-begin
- if p=nil then
- HandleErrorFrame(201,get_frame);
-end;
-
-Procedure fpc_UnicodeStr_CheckRange(len,index : SizeInt);[Public,Alias : 'FPC_UNICODESTR_RANGECHECK']; compilerproc;
+Procedure fpc_UnicodeStr_CheckRange(p: Pointer; index: SizeInt);[Public,Alias : 'FPC_UNICODESTR_RANGECHECK']; compilerproc;
begin
- if (index>len div 2) or (Index<1) then
+ if (p=nil) or (index>PUnicodeRec(p-UnicodeFirstOff)^.len div 2) or (Index<1) then
HandleErrorFrame(201,get_frame);
end;
diff --git a/rtl/inc/variants.pp b/rtl/inc/variants.pp
index fdd34ece40..75d89a042b 100644
--- a/rtl/inc/variants.pp
+++ b/rtl/inc/variants.pp
@@ -670,6 +670,7 @@ begin
VarCastError(varNull, varDouble)
else
Result := 0
+ { TODO: performance: custom variants must be handled after standard ones }
else if FindCustomVariantType(TVarData(v).vType, Handler) then
begin
VariantInit(dest);
@@ -693,6 +694,21 @@ begin
Result := VariantToCurrency(TVarData(V));
end;
+function CustomVarToLStr(const v: TVarData; out s: AnsiString): Boolean;
+var
+ handler: TCustomVariantType;
+ temp: TVarData;
+begin
+ result := FindCustomVariantType(v.vType, handler);
+ if result then
+ begin
+ VariantInit(temp);
+ handler.CastTo(temp, v, varString);
+ { out-semantic ensures that s is finalized,
+ so just copy the pointer and don't finalize the temp }
+ Pointer(s) := temp.vString;
+ end;
+end;
procedure sysvartolstr (var s : AnsiString; const v : Variant);
begin
@@ -701,7 +717,8 @@ begin
VarCastError(varNull, varString)
else
s := NullAsStringValue
- else
+ { TODO: performance: custom variants must be handled after standard ones }
+ else if not CustomVarToLStr(TVarData(v), s) then
S := VariantToAnsiString(TVarData(V));
end;
@@ -2643,7 +2660,6 @@ var
valuevtype,
arrayelementtype : TVarType;
tempvar : Variant;
- variantmanager : tvariantmanager;
begin
Dest:=TVarData(a);
{ get final Variant }
@@ -2686,8 +2702,7 @@ begin
end
else
begin
- GetVariantManager(variantmanager);
- variantmanager.varcast(tempvar,value,arrayelementtype);
+ VarCast(tempvar,value,arrayelementtype);
if arrayelementtype in [varOleStr,varDispatch,varUnknown] then
VarResultCheck(SafeArrayPutElement(p,PVarArrayCoorArray(indices),TVarData(tempvar).vPointer))
else
@@ -3328,17 +3343,13 @@ function VarTypeIsValidElementType(const aVarType: TVarType): Boolean;
var
customvarianttype : TCustomVariantType;
begin
- if FindCustomVariantType(aVarType,customvarianttype) then
- Result:=true
- else
- begin
- Result:=(aVarType and not(varByRef) and not(varArray)) in [varEmpty,varNull,varSmallInt,varInteger,
+ Result:=((aVarType and not(varByRef) and not(varArray)) in [varEmpty,varNull,varSmallInt,varInteger,
{$ifndef FPUNONE}
- varSingle,varDouble,varDate,
+ varSingle,varDouble,varDate,
{$endif}
- varCurrency,varOleStr,varDispatch,varError,varBoolean,
- varVariant,varUnknown,varShortInt,varByte,varWord,varLongWord,varInt64];
- end;
+ varCurrency,varOleStr,varDispatch,varError,varBoolean,
+ varVariant,varUnknown,varShortInt,varByte,varWord,varLongWord,varInt64]) or
+ FindCustomVariantType(aVarType,customvarianttype);
end;
@@ -3383,7 +3394,6 @@ procedure DynArrayToVariant(var V: Variant; const DynArray: Pointer; TypeInfo: P
dynarriter : tdynarrayiter;
p : Pointer;
temp : Variant;
- variantmanager : tvariantmanager;
dynarraybounds : tdynarraybounds;
type
TDynArray = array of Pointer;
@@ -3398,8 +3408,6 @@ procedure DynArrayToVariant(var V: Variant; const DynArray: Pointer; TypeInfo: P
if (Dims>1) and not(DynamicArrayIsRectangular(DynArray,TypeInfo)) then
exit;
- GetVariantManager(variantmanager);
-
{ retrieve Bounds array }
Setlength(dynarraybounds,Dims);
GetMem(vararraybounds,Dims*SizeOf(TVarArrayBound));
@@ -3466,7 +3474,7 @@ procedure DynArrayToVariant(var V: Variant; const DynArray: Pointer; TypeInfo: P
VarClear(temp);
end;
dynarriter.next;
- variantmanager.VarArrayPut(V,temp,Dims,PLongint(iter.Coords));
+ VarArrayPut(V,temp,Slice(iter.Coords^,Dims));
until not(iter.next);
finally
iter.done;
@@ -3487,7 +3495,6 @@ procedure DynArrayFromVariant(var DynArray: Pointer; const V: Variant; TypeInfo:
dynarriter : tdynarrayiter;
temp : Variant;
dynarrvartype : LongInt;
- variantmanager : tvariantmanager;
vararraybounds : PVarArrayBoundArray;
dynarraybounds : tdynarraybounds;
i : SizeInt;
@@ -3513,14 +3520,13 @@ procedure DynArrayFromVariant(var DynArray: Pointer; const V: Variant; TypeInfo:
dynarraybounds[i]:=vararraybounds^[i].ElementCount;
end;
DynArraySetLength(DynArray,TypeInfo,VarArrayDims,PSizeInt(dynarraybounds));
- GetVariantManager(variantmanager);
VarArrayLock(V);
try
iter.init(VarArrayDims,PVarArrayBoundArray(vararraybounds));
dynarriter.init(DynArray,TypeInfo,VarArrayDims,dynarraybounds);
if not iter.AtEnd then
repeat
- temp:=variantmanager.VarArrayGet(V,VarArrayDims,PLongint(iter.Coords));
+ temp:=VarArrayGet(V,Slice(iter.Coords^,VarArrayDims));
case dynarrvartype of
varSmallInt:
PSmallInt(dynarriter.data)^:=temp;
diff --git a/rtl/inc/wstrings.inc b/rtl/inc/wstrings.inc
index fe573bf12c..f0fa4572a4 100644
--- a/rtl/inc/wstrings.inc
+++ b/rtl/inc/wstrings.inc
@@ -729,16 +729,10 @@ begin
exit(CompareWord(S1[1],S2[1],MaxI));
end;
-Procedure fpc_WideStr_CheckZero(p : pointer);[Public,Alias : 'FPC_WIDESTR_CHECKZERO']; compilerproc;
-begin
- if p=nil then
- HandleErrorFrame(201,get_frame);
-end;
-
-Procedure fpc_WideStr_CheckRange(len,index : SizeInt);[Public,Alias : 'FPC_WIDESTR_RANGECHECK']; compilerproc;
+Procedure fpc_WideStr_CheckRange(p: Pointer; index: SizeInt);[Public,Alias : 'FPC_WIDESTR_RANGECHECK']; compilerproc;
begin
- if (index>len div 2) or (Index<1) then
+ if (p=nil) or (index>PWideRec(p-WideFirstOff)^.len div 2) or (Index<1) then
HandleErrorFrame(201,get_frame);
end;
diff --git a/rtl/linux/arm/dllprt0.as b/rtl/linux/arm/dllprt0.as
index 269d691c04..a054991d31 100644
--- a/rtl/linux/arm/dllprt0.as
+++ b/rtl/linux/arm/dllprt0.as
@@ -7,34 +7,27 @@ _startlib:
.type FPC_SHARED_LIB_START,#function
FPC_SHARED_LIB_START:
mov ip, sp
- push {fp, ip, lr, pc}
+ stmfd sp!,{fp, ip, lr, pc}
sub fp, ip, #4
- sub sp, sp, #40
- /* load argc */
- mov a1, ip
-
- /* load and save a copy of argc */
- ldr a2, [a1]
+ /* a1 contains argc, a2 contains argv and a3 contains envp */
ldr ip, =operatingsystem_parameter_argc
- str a2, [ip]
-
- /* calc argv and store */
- add a1, a1, #4
- ldr ip, =operatingsystem_parameter_argv
str a1, [ip]
- /* calc envp and store */
- add a2, a2, #1
- add a2, a1, a2, lsl #2
+ ldr ip, =operatingsystem_parameter_argv
+ str a2, [ip]
ldr ip, =operatingsystem_parameter_envp
- str a2, [ip]
+ str a3, [ip]
/* save initial stackpointer */
ldr ip, =__stklen
str sp, [ip]
+ ldr ip, =TC_SYSTEM_ISLIBRARY
+ mov a1, #1
+ str a1, [ip]
+
/* call main and exit normally */
bl PASCALMAIN
ldmdb fp, {fp, sp, pc}
diff --git a/rtl/linux/system.pp b/rtl/linux/system.pp
index 6508aa42ad..9aae64619e 100644
--- a/rtl/linux/system.pp
+++ b/rtl/linux/system.pp
@@ -33,7 +33,7 @@ Unit System;
{$I sysunixh.inc}
-function get_cmdline:Pchar;
+function get_cmdline:Pchar;
property cmdline:Pchar read get_cmdline;
{$if defined(CPUARM) or defined(CPUM68K)}
@@ -179,6 +179,7 @@ begin
found:=true;
break;
end;
+ found:=found or (len=0); // also quote if len=0, bug 19114
if bufsize+len>=ARG_MAX-2 then
AddBuf;
if found then
@@ -186,8 +187,11 @@ begin
buf[bufsize]:='"';
inc(bufsize);
end;
- move(argv[i]^,buf[bufsize],len);
- inc(bufsize,len);
+ if len>0 then
+ begin
+ move(argv[i]^,buf[bufsize],len);
+ inc(bufsize,len);
+ end;
if found then
begin
buf[bufsize]:='"';
diff --git a/rtl/morphos/Makefile b/rtl/morphos/Makefile
index b944d667e0..5472b0a1c7 100644
--- a/rtl/morphos/Makefile
+++ b/rtl/morphos/Makefile
@@ -1,5 +1,5 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/09/29]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/10/21]
#
default: all
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
@@ -280,190 +280,190 @@ endif
OBJPASDIR=$(RTL)/objpas
GRAPHDIR=$(INC)/graph
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video keyboard mouse sockets clipboard datatypes asl ahi tinygl get9 muihelper
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings dos heaptrc ctypes sysutils classes fgl strutils math typinfo varutils charset ucomplex getopts matrix fmtbcd variants types rtlconsts sysconst dateutil objects exec timer doslib utility hardware inputevent keymap graphics layers intuition aboxlib mui kvm video mouse keyboard sockets clipboard datatypes asl ahi tinygl get9 muihelper
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=prt0
@@ -2542,7 +2542,7 @@ sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
objpas$(PPUEXT) dos$(PPUEXT) sysconst$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
- sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) types$(PPUEXT) fgl$(PPUEXT)
+ sysutils$(PPUEXT) rtlconsts$(PPUEXT) typinfo$(PPUEXT) types$(PPUEXT) fgl$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
$(COMPILER) $(OBJPASDIR)/fgl.pp
diff --git a/rtl/morphos/Makefile.fpc b/rtl/morphos/Makefile.fpc
index 6222cb0f37..9bb52a90f7 100644
--- a/rtl/morphos/Makefile.fpc
+++ b/rtl/morphos/Makefile.fpc
@@ -15,7 +15,7 @@ units=$(SYSTEMUNIT) objpas macpas iso7185 strings \
exec timer doslib utility hardware inputevent keymap graphics layers \
intuition aboxlib mui \
# these units are here, because they depend on system interface units above
- kvm video keyboard mouse sockets \
+ kvm video mouse keyboard sockets \
# these can be moved to packages later
clipboard datatypes asl ahi tinygl get9 muihelper
#implicitunits=exeinfo
@@ -127,7 +127,7 @@ sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
- sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) types$(PPUEXT) fgl$(PPUEXT)
+ sysutils$(PPUEXT) rtlconsts$(PPUEXT) typinfo$(PPUEXT) types$(PPUEXT) fgl$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
diff --git a/rtl/netware/Makefile b/rtl/netware/Makefile
index eb19dcbde8..5009c2a214 100644
--- a/rtl/netware/Makefile
+++ b/rtl/netware/Makefile
@@ -1,8 +1,8 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/05/05]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/02/11]
#
default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx haiku
LIMIT83fs = go32v2 os2 emx watcom
@@ -247,7 +247,7 @@ endif
ifndef CROSSBINDIR
CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
endif
-ifeq ($(OS_TARGET),darwin)
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
ifeq ($(OS_SOURCE),darwin)
DARWIN2DARWIN=1
endif
@@ -285,180 +285,193 @@ dsapi.imp dsevent.imp lib0.imp \
locnlm32.imp ndpsrpc.imp netnlm32.imp nit.imp \
nlmlib.imp nwpsrv3x.imp nwpsrv.imp nwsnut.imp \
requestr.imp socklib.imp streams.imp threads.imp \
-tli.imp vollib.imp ws2_32.imp ws2nlm.imp unicode.imp
+tli.imp vollib.imp ws2_32.imp ws2nlm.imp unicode.imp \
+nwpre.imp
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas iso7185 strings lineinfo lnfodwrf winsock heaptrc matrix dos crt objects sysconst initc sysutils types typinfo fgl classes fmtbcd cpu mmx getopts dateutils strutils convutils charset ucomplex variants rtlconsts math varutils freebidi utf8bidi mouse video keyboard cmem dynlibs sockets aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_IMPLICITUNITS+=exeinfo
@@ -520,6 +533,12 @@ endif
ifeq ($(FULL_TARGET),i386-symbian)
override TARGET_IMPLICITUNITS+=exeinfo
endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override TARGET_IMPLICITUNITS+=exeinfo
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override TARGET_IMPLICITUNITS+=exeinfo
+endif
ifeq ($(FULL_TARGET),m68k-linux)
override TARGET_IMPLICITUNITS+=exeinfo
endif
@@ -583,6 +602,9 @@ endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
override TARGET_IMPLICITUNITS+=exeinfo
endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override TARGET_IMPLICITUNITS+=exeinfo
+endif
ifeq ($(FULL_TARGET),x86_64-darwin)
override TARGET_IMPLICITUNITS+=exeinfo
endif
@@ -634,6 +656,9 @@ endif
ifeq ($(FULL_TARGET),armeb-embedded)
override TARGET_IMPLICITUNITS+=exeinfo
endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override TARGET_IMPLICITUNITS+=exeinfo
+endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=nwpre prelude
endif
@@ -694,6 +719,12 @@ endif
ifeq ($(FULL_TARGET),i386-symbian)
override TARGET_LOADERS+=nwpre prelude
endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override TARGET_LOADERS+=nwpre prelude
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override TARGET_LOADERS+=nwpre prelude
+endif
ifeq ($(FULL_TARGET),m68k-linux)
override TARGET_LOADERS+=nwpre prelude
endif
@@ -757,6 +788,9 @@ endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
override TARGET_LOADERS+=nwpre prelude
endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override TARGET_LOADERS+=nwpre prelude
+endif
ifeq ($(FULL_TARGET),x86_64-darwin)
override TARGET_LOADERS+=nwpre prelude
endif
@@ -808,6 +842,9 @@ endif
ifeq ($(FULL_TARGET),armeb-embedded)
override TARGET_LOADERS+=nwpre prelude
endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override TARGET_LOADERS+=nwpre prelude
+endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_RSTS+=math varutils variants typinfo classes dateutils sysconst convutils rtlconsts
endif
@@ -868,6 +905,12 @@ endif
ifeq ($(FULL_TARGET),i386-symbian)
override TARGET_RSTS+=math varutils variants typinfo classes dateutils sysconst convutils rtlconsts
endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override TARGET_RSTS+=math varutils variants typinfo classes dateutils sysconst convutils rtlconsts
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override TARGET_RSTS+=math varutils variants typinfo classes dateutils sysconst convutils rtlconsts
+endif
ifeq ($(FULL_TARGET),m68k-linux)
override TARGET_RSTS+=math varutils variants typinfo classes dateutils sysconst convutils rtlconsts
endif
@@ -931,6 +974,9 @@ endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
override TARGET_RSTS+=math varutils variants typinfo classes dateutils sysconst convutils rtlconsts
endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override TARGET_RSTS+=math varutils variants typinfo classes dateutils sysconst convutils rtlconsts
+endif
ifeq ($(FULL_TARGET),x86_64-darwin)
override TARGET_RSTS+=math varutils variants typinfo classes dateutils sysconst convutils rtlconsts
endif
@@ -982,6 +1028,9 @@ endif
ifeq ($(FULL_TARGET),armeb-embedded)
override TARGET_RSTS+=math varutils variants typinfo classes dateutils sysconst convutils rtlconsts
endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override TARGET_RSTS+=math varutils variants typinfo classes dateutils sysconst convutils rtlconsts
+endif
override INSTALL_FPCPACKAGE=y
ifeq ($(FULL_TARGET),i386-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
@@ -1043,6 +1092,12 @@ endif
ifeq ($(FULL_TARGET),i386-symbian)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
ifeq ($(FULL_TARGET),m68k-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
@@ -1106,6 +1161,9 @@ endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
ifeq ($(FULL_TARGET),x86_64-darwin)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
@@ -1157,6 +1215,9 @@ endif
ifeq ($(FULL_TARGET),armeb-embedded)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
ifeq ($(FULL_TARGET),i386-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
@@ -1217,6 +1278,12 @@ endif
ifeq ($(FULL_TARGET),i386-symbian)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
ifeq ($(FULL_TARGET),m68k-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
@@ -1280,6 +1347,9 @@ endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
ifeq ($(FULL_TARGET),x86_64-darwin)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
@@ -1331,6 +1401,9 @@ endif
ifeq ($(FULL_TARGET),armeb-embedded)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
ifdef REQUIRE_UNITSDIR
override UNITSDIR+=$(REQUIRE_UNITSDIR)
endif
@@ -1658,7 +1731,7 @@ DEBUGSYMEXT=.xcoff
SHORTSUFFIX=mac
IMPORTLIBPREFIX=imp
endif
-ifeq ($(OS_TARGET),darwin)
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
BATCHEXT=.sh
EXEEXT=
HASSHAREDLIB=1
@@ -1673,6 +1746,10 @@ ifeq ($(OS_TARGET),symbian)
SHAREDLIBEXT=.dll
SHORTSUFFIX=symbian
endif
+ifeq ($(OS_TARGET),NativeNT)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=nativent
+endif
else
ifeq ($(OS_TARGET),go32v1)
PPUEXT=.pp1
@@ -2438,6 +2515,9 @@ endif
ifdef EXEFILES
override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
endif
+ifdef CLEAN_PROGRAMS
+override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+endif
ifdef CLEAN_UNITS
override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
endif
@@ -2485,6 +2565,9 @@ ifdef CLEANRSTFILES
-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
endif
endif
+ifdef CLEAN_FILES
+ -$(DEL) $(CLEAN_FILES)
+endif
-$(DELTREE) units
-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
ifneq ($(PPUEXT),.ppu)
@@ -2640,10 +2723,6 @@ SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
copyimpfiles:
$(COPY) $(IMPFILES) $(COMPILER_UNITTARGETDIR)
-nwpre$(OEXT) : nwpre.as
- $(AS) -o $(UNITTARGETDIRPREFIX)nwpre$(OEXT) nwpre.as
-prelude$(OEXT) : prelude.as
- $(AS) -o $(UNITTARGETDIRPREFIX)prelude$(OEXT) prelude.as
$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp nwsys.inc $(SYSDEPS)
$(COPY) $(IMPFILES) $(COMPILER_UNITTARGETDIR)
$(COMPILER) -Us -Sg $(SYSTEMUNIT).pp
@@ -2652,6 +2731,7 @@ objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc\
$(SYSTEMUNIT)$(PPUEXT)
+nwpre$(PPUEXT) : nwpre.pp $(SYSTEMUNIT)$(PPUEXT)
netware$(PPUEXT) : netware.pp $(SYSTEMUNIT)$(PPUEXT)
winsock$(PPUEXT) : winsock.pp $(SYSTEMUNIT)$(PPUEXT)
sockets$(PPUEXT) : sockets.pp netware$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
diff --git a/rtl/netware/Makefile.fpc b/rtl/netware/Makefile.fpc
index 97f585b46f..a70ff619e1 100644
--- a/rtl/netware/Makefile.fpc
+++ b/rtl/netware/Makefile.fpc
@@ -16,7 +16,7 @@ units=$(SYSTEMUNIT) objpas macpas iso7185 strings \
charset ucomplex variants \
rtlconsts math varutils freebidi utf8bidi \
mouse video keyboard cmem dynlibs sockets \
- aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes
+ aio nwsnut nwserv nwnit nwprot netware nwcalls ctypes nwpre
rsts=math varutils variants typinfo classes dateutils sysconst convutils rtlconsts
implicitunits=exeinfo
@@ -74,7 +74,8 @@ dsapi.imp dsevent.imp lib0.imp \
locnlm32.imp ndpsrpc.imp netnlm32.imp nit.imp \
nlmlib.imp nwpsrv3x.imp nwpsrv.imp nwsnut.imp \
requestr.imp socklib.imp streams.imp threads.imp \
-tli.imp vollib.imp ws2_32.imp ws2nlm.imp unicode.imp
+tli.imp vollib.imp ws2_32.imp ws2nlm.imp unicode.imp \
+nwpre.imp
[rules]
@@ -103,11 +104,11 @@ copyimpfiles:
# Loaders
#
-nwpre$(OEXT) : nwpre.as
- $(AS) -o $(UNITTARGETDIRPREFIX)nwpre$(OEXT) nwpre.as
+#nwpre$(OEXT) : nwpre.as
+# $(AS) -o $(UNITTARGETDIRPREFIX)nwpre$(OEXT) nwpre.as
-prelude$(OEXT) : prelude.as
- $(AS) -o $(UNITTARGETDIRPREFIX)prelude$(OEXT) prelude.as
+#prelude$(OEXT) : prelude.as
+# $(AS) -o $(UNITTARGETDIRPREFIX)prelude$(OEXT) prelude.as
#
# System Units (System, Objpas, Strings)
@@ -131,6 +132,8 @@ strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
# System Dependent Units
#
+nwpre$(PPUEXT) : nwpre.pp $(SYSTEMUNIT)$(PPUEXT)
+
netware$(PPUEXT) : netware.pp $(SYSTEMUNIT)$(PPUEXT)
winsock$(PPUEXT) : winsock.pp $(SYSTEMUNIT)$(PPUEXT)
diff --git a/rtl/netware/nwpre.imp b/rtl/netware/nwpre.imp
new file mode 100644
index 0000000000..8a3bc8b6d7
--- /dev/null
+++ b/rtl/netware/nwpre.imp
@@ -0,0 +1,6 @@
+#imports needed by nwpre, will be used by the
+#internal linker, ad 7 apr 2011
+ _SetupArgV_411
+ _TerminateNLM
+ _StartNLM
+ CSetB
diff --git a/rtl/netware/nwpre.pp b/rtl/netware/nwpre.pp
index 370e50560c..967f46e21c 100644
--- a/rtl/netware/nwpre.pp
+++ b/rtl/netware/nwpre.pp
@@ -1,151 +1,192 @@
-{
- This file is part of the Free Pascal run time library.
- Copyright (c) 1999-2000 by the Free Pascal development team
- Copyright (c) 2001 Armin Diehl
-
- This unit implements the startup code for a netware nlm. It must be the first object file
- linked. Currently the 'old-style', similar to novell's prelude.obj is used. With the newer
- way (novells nwpre.obj) i only got abends. Dont know what's different in novells nwpre.
-
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-**********************************************************************}
+(*
+# $Id: nwpre.as,v 1.3 2003/03/25 18:17:54 armin Exp $
+# This file is part of the Free Pascal run time library.
+# Copyright (c) 1999-2011 by the Free Pascal development team
+# Copyright (c) 2002-2011 Armin Diehl
+#
+# This is the (nwpre-like) startup code for netware (clib)
+#
+# See the file COPYING.FPC, included in this distribution,
+# for details about the copyright.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+#**********************************************************************
+# This version initializes BSS
+#
+# Imported functions will not be known by the linker because only the
+# generated object file will be included into the link process. The
+# ppu will not be read. Therefore the file nwpre.imp containing the
+# names of all imported functions needs to be created. This file
+# will be used by the internal linker to import the needed functions.
+#**********************************************************************
+*)
unit nwpre;
interface
-{ 2000/08/29 armin: first version, untested
- 2000/09/02 armin: Dont know why its not working with kNLMInfo...
- It always abends in TerminateNLM, so i am using the old style
- 2001/04/15 armin: Added comments, S-
- Removed dead code }
-
-{$DEFINE OldPrelude}
-
-FUNCTION _Prelude (NLMHandle : LONGINT;
- initErrorScreenID : LONGINT;
- cmdLineP : PCHAR;
- loadDirectoryPath : PCHAR;
- uninitializedDataLength : LONGINT;
- NLMFileHandle : LONGINT;
- readRoutineP : POINTER;
- customDataOffset : LONGINT;
- customDataSize : LONGINT) : LONGINT; CDECL;
-
-
implementation
-{$S-}
-
-FUNCTION _TerminateNLM (NLMInformation : POINTER;
- threadID, status : LONGINT) : LONGINT; CDECL; EXTERNAL;
-
-FUNCTION _SetupArgV_411 (MainProc : POINTER) : LONGINT; CDECL; EXTERNAL;
-
-FUNCTION _StartNLM (NLMHandle : LONGINT;
- initErrorScreenID : LONGINT;
- cmdLineP : PCHAR;
- loadDirectoryPath : PCHAR;
- uninitializedDataLength : LONGINT;
- NLMFileHandle : LONGINT;
- readRoutineP : POINTER;
- customDataOffset : LONGINT;
- customDataSize : LONGINT;
- NLMInformation : POINTER;
- userStartFunc : POINTER) : LONGINT; CDECL; EXTERNAL;
-
-
-{**************************************************************************************************}
-
-CONST TRADINIONAL_NLM_INFO_SIGNATURE = 0;
- TRADINIONAL_FLAVOR = 0;
- TRADINIONAL_VERSION = 0;
- LIBERTY_VERSION = 1;
- TERMINATE_BY_EXTERNAL_THREAD = 0;
- TERMINATE_BY_UNLOAD = 5;
-
-
-{$IFDEF OldPrelude}
-CONST NLMID : LONGINT = 0;
-{$ELSE}
-TYPE
- kNLMInfoT =
- PACKED RECORD
- Signature : ARRAY [0..3] OF CHAR; // LONG
- Flavor : LONGINT;
- Version : LONGINT;
- LongDoubleSize : LONGINT;
- wchar_tSize : LONGINT;
- END;
-
-CONST NLM_INFO_SIGNATURE = 'NLMI'; // 0x494d3c3e;
-
- kNLMInfo : kNLMInfoT =
- (Signature : NLM_INFO_SIGNATURE;
- Flavor : TRADINIONAL_FLAVOR; // 0
- Version : LIBERTY_VERSION; // 1
- LongDoubleSize : 8;
- wchar_tSize : 2);
-{$ENDIF}
-
-{**************************************************************************************************}
-
-{ _nlm_main is defined in system.pp. It sets command line parameters and calls PASCALMAIN }
-FUNCTION _nlm_main (Argc : LONGINT; ArgV : ARRAY OF PCHAR) : LONGINT; CDECL;
-EXTERNAL;
-
-
-FUNCTION _Stop : LONGINT; CDECL;
-BEGIN
- {$IFDEF OldPrelude}
- _Stop := _TerminateNLM (POINTER(NLMID),0,TERMINATE_BY_UNLOAD);
- {$ELSE}
- _Stop := _TerminateNLM (@kNLMInfo,0,TERMINATE_BY_UNLOAD);
- {$ENDIF}
-END;
-
-
-FUNCTION _cstart_ : LONGINT; CDECL;
-BEGIN
- _cstart_ := _SetupArgV_411 (@_nlm_main);
-END;
-
-
-FUNCTION _Prelude (NLMHandle : LONGINT;
- initErrorScreenID : LONGINT;
- cmdLineP : PCHAR;
- loadDirectoryPath : PCHAR;
- uninitializedDataLength : LONGINT;
- NLMFileHandle : LONGINT;
- readRoutineP : POINTER;
- customDataOffset : LONGINT;
- customDataSize : LONGINT) : LONGINT; CDECL;
-BEGIN
- _Prelude := _StartNLM
- (NLMHandle,
- initErrorScreenID,
- cmdLineP,
- loadDirectoryPath,
- uninitializedDataLength,
- NLMFileHandle,
- readRoutineP,
- customDataOffset,
- customDataSize,
- {$IFDEF OldPrelude}
- @NLMID,
- {$ELSE}
- @kNLMInfo,
- {$ENDIF}
- @_cstart_);
-END;
-
-
+procedure _SetupArgV_411 (startProc:pointer); cdecl; external 'clib' name '_SetupArgV_411';
+procedure _nlm_main; external name '_nlm_main';
+procedure FPC_NW_CHECKFUNCTION; external name 'FPC_NW_CHECKFUNCTION';
+function _StartNLM (NLMHandle : longint;
+ initErrorScreenID : longint;
+ cmdLineP : pchar;
+ loadDirectoryPath : pchar;
+ uninitializedDataLength : longint;
+ NLMFileHandle : longint;
+ readRoutineP : pointer;
+ customDataOffset : longint;
+ customDataSize : longint;
+ NLMInformation : pointer;
+ userStartFunc : pointer) : longint; cdecl; external '!clib' name '_StartNLM';
+
+
+function _TerminateNLM (NLMInformation : pointer;
+ threadID, status : longint) : longint; cdecl; external '!clib' name '_TerminateNLM';
+
+
+procedure _Stop; cdecl; forward;
+
+// This is the main program (not loader) Entry-Point that will be called by netware
+// it sets up the argc and argv and calls _nlm_main (in system.pp)
+
+procedure _pasStart; assembler; export; [alias:'_pasStart_'];
+asm
+ pushl $_nlm_main
+ call _SetupArgV_411
+ addl $4,%esp
+ ret
+// this is a hack to avoid that FPC_NW_CHECKFUNCTION will be
+// eleminated by the linker (with smartlinking)
+// TODO: change the internal linker to allow check and stop
+ call FPC_NW_CHECKFUNCTION
+ call _Stop
+end;
+
+
+// structure needed by clib
+type kNLMInfoT =
+ packed record
+ Signature : array [0..3] of char; // LONG 'NLMI'
+ Flavor : longint; // TRADINIONAL_FLAVOR = 0
+ Version : longint; // TRADINIONAL_VERSION = 0, LIBERTY_VERSION = 1
+ LongDoubleSize : longint; // gcc nwpre defines 12, watcom 8
+ wchar_tSize : longint;
+ end;
+
+var
+ _kNLMInfo:kNLMInfoT = (Signature:'NLMI';Flavor:0;Version:1;LongDoubleSize:8;wChar_tSize:2);
+
+
+// symbol is generated by the internal linker, when using ld in the future again,
+// the link script for ld needs to be modified to include this symbol
+ bss : ptruint; external name '__bss_start__';
+
+
+// fillchar
+// netware kernel function
+procedure CSetB(value:byte; var addr; count:longint); cdecl; external '!' name 'CSetB';
+
+
+// this will be called by the loader, we pass the address of _pasStart_ and
+// _kNLMInfo (needed by clib) and clib will call _pasStart within a newly
+// created thread
+function _Prelude (NLMHandle : longint;
+ initErrorScreenID : longint;
+ cmdLineP : pchar;
+ loadDirectoryPath : pchar;
+ uninitializedDataLength : longint;
+ NLMFileHandle : longint;
+ readRoutineP : pointer;
+ customDataOffset : longint;
+ customDataSize : longint) : longint; cdecl; export; [alias:'_Prelude'];
+begin
+ // initialize BSS
+ CSetB(0,bss,uninitializedDataLength);
+
+ // let clib setup a thread and call pasStart in this new thread
+ _Prelude := _StartNLM (NLMHandle,
+ initErrorScreenID,
+ cmdLineP,
+ loadDirectoryPath,
+ uninitializedDataLength,
+ NLMFileHandle,
+ readRoutineP,
+ customDataOffset,
+ customDataSize,
+ @_kNLMInfo,
+ @_pasStart);
+end;
+
+(*
+procedure _Prelude; assembler; export; [alias:'_Prelude'];
+asm
+ pushl %ebp
+ movl %esp,%ebp
+ pushl %edi
+ pushl %esi
+ pushl %ebx
+ movl 0x14(%ebp),%edi
+ movl 0x18(%ebp),%esi
+ movl %esi, __uninitializedDataSize
+ movl 0x1c(%ebp),%ebx
+ movl 0x20(%ebp),%ecx
+ movl 0x28(%ebp),%eax
+ pushl $_pasStart
+ pushl $_kNLMInfo
+ pushl %eax
+ movl 0x24(%ebp),%edx // 1b7f6
+ pushl %edx
+ pushl %ecx
+ pushl %ebx
+ pushl %esi // uninitialized data size
+ pushl %edi
+ movl 0x10(%ebp),%edx
+ pushl %edx
+ movl 0xc(%ebp),%edx
+ pushl %edx
+ movl 0x8(%ebp),%edx
+ pushl %edx
+ call _StartNLM
+ test %eax,%eax
+ jne .Lx1
+ xorl %eax,%eax // dont know why this is needed ?
+.Lx1:
+ lea 0xfffffff4(%ebp),%esp
+ popl %ebx
+ popl %esi
+ popl %edi
+ movl %ebp,%esp
+ popl %ebp
+ ret
+end;
+*)
+
+//# the global stop-function
+
+// fpc will generate an (unneeded) stack frame here, gcc does not
+(*
+procedure _Stop; cdecl; export; [alias:'_Stop'];
+begin
+ _TerminateNLM (@_kNLMInfo,0,5);
+end;
+*)
+
+procedure _Stop; cdecl; assembler; [alias:'_Stop'];
+asm
+ pushl $0x5
+ pushl $0x0
+ movl _kNLMInfo,%edx
+ pushl %edx
+ call _TerminateNLM
+ addl $0x0c,%esp
+ ret
+end;
end.
diff --git a/rtl/netware/system.pp b/rtl/netware/system.pp
index 0be2463215..2a45147f68 100644
--- a/rtl/netware/system.pp
+++ b/rtl/netware/system.pp
@@ -1,6 +1,7 @@
{
This file is part of the Free Pascal run time library.
Copyright (c) 1999-2000 by the Free Pascal development team.
+ Copyright (c) 2001-2011 by Armin Diehl.
See the file COPYING.FPC, included in this distribution,
for details about the copyright.
@@ -69,7 +70,6 @@ VAR
ArgV : ppchar;
NetwareCheckFunction : TNWCheckFunction;
NetwareMainThreadGroupID: longint;
- NetwareCodeStartAddress : dword;
NetwareUnloadProc : pointer = nil; {like exitProc but for nlm unload only}
CONST
@@ -97,6 +97,7 @@ procedure NWSysSetThreadFunctions (crs:TSysCloseAllRemainingSemaphores;
function NWGetCodeStart : pointer; // needed for lineinfo
+
implementation
{ Indicate that stack checking is taken care by OS}
{$DEFINE NO_GENERIC_STACK_CHECK}
@@ -115,26 +116,21 @@ procedure fpc_do_exit;external name 'FPC_DO_EXIT';
Startup
*****************************************************************************}
- function __GetBssStart : pointer; external name '__getBssStart';
- function __getUninitializedDataSize : longint; external name '__getUninitializedDataSize';
- //function __getDataStart : longint; external name '__getDataStart';
- function __GetTextStart : longint; external name '__getTextStart';
PROCEDURE nlm_main (_ArgC : LONGINT; _ArgV : ppchar); CDECL; [public,alias: '_nlm_main'];
BEGIN
- // Initialize BSS
- if __getUninitializedDataSize > 0 then
- fillchar (__getBssStart^,__getUninitializedDataSize,0);
- NetwareCodeStartAddress := __GetTextStart;
+ // Initialize of BSS now done in nwpre
ArgC := _ArgC;
ArgV := _ArgV;
fpc_threadvar_relocate_proc := nil;
PASCALMAIN;
END;
+var dottext : ptruint; external name '__text_start__';
+
function NWGetCodeStart : pointer; // needed for lineinfo
begin
- NWGetCodeStart := pointer(NetwareCodeStartAddress);
+ NWGetCodeStart := @dottext;
end;
diff --git a/rtl/objpas/classes/classesh.inc b/rtl/objpas/classes/classesh.inc
index 584f6796b5..a33117ebd0 100644
--- a/rtl/objpas/classes/classesh.inc
+++ b/rtl/objpas/classes/classesh.inc
@@ -816,7 +816,7 @@ type
constructor Create(const Stream: IStream);
function Read(var Buffer; Count: Longint): Longint; override;
function Write(const Buffer; Count: Longint): Longint; override;
- function Seek(Offset: Longint; Origin: Word): Longint; override;
+ function Seek(const Offset: int64; Origin: TSeekOrigin): int64; override;
procedure Check(err:longint); virtual;
end;
@@ -926,7 +926,7 @@ type
private
Res: TFPResourceHandle;
Handle: THandle;
- procedure Initialize(Instance: THandle; Name, ResType: PWideChar);
+ procedure Initialize(Instance: THandle; Name, ResType: PWideChar; NameIsID: Boolean);
public
constructor Create(Instance: THandle; const ResName: WideString; ResType: PWideChar);
constructor CreateFromID(Instance: THandle; ResID: Integer; ResType: PWideChar);
@@ -937,7 +937,7 @@ type
private
Res: TFPResourceHandle;
Handle: THandle;
- procedure Initialize(Instance: THandle; Name, ResType: PChar);
+ procedure Initialize(Instance: THandle; Name, ResType: PChar; NameIsID: Boolean);
public
constructor Create(Instance: THandle; const ResName: string; ResType: PChar);
constructor CreateFromID(Instance: THandle; ResID: Integer; ResType: PChar);
diff --git a/rtl/objpas/classes/streams.inc b/rtl/objpas/classes/streams.inc
index b5d3d69470..c3c139b7da 100644
--- a/rtl/objpas/classes/streams.inc
+++ b/rtl/objpas/classes/streams.inc
@@ -772,49 +772,61 @@ end;
{****************************************************************************}
{$ifdef UNICODE}
-procedure TResourceStream.Initialize(Instance: THandle; Name, ResType: PWideChar);
+procedure TResourceStream.Initialize(Instance: THandle; Name, ResType: PWideChar; NameIsID: Boolean);
begin
Res:=FindResource(Instance, Name, ResType);
if Res=0 then
- raise EResNotFound.CreateFmt(SResNotFound,[Name]);
+ if NameIsID then
+ raise EResNotFound.CreateFmt(SResNotFound,[IntToStr(PtrInt(Name))])
+ else
+ raise EResNotFound.CreateFmt(SResNotFound,[Name]);
Handle:=LoadResource(Instance,Res);
if Handle=0 then
- raise EResNotFound.CreateFmt(SResNotFound,[Name]);
+ if NameIsID then
+ raise EResNotFound.CreateFmt(SResNotFound,[IntToStr(PtrInt(Name))])
+ else
+ raise EResNotFound.CreateFmt(SResNotFound,[Name]);
SetPointer(LockResource(Handle),SizeOfResource(Instance,Res));
end;
constructor TResourceStream.Create(Instance: THandle; const ResName: WideString; ResType: PWideChar);
begin
inherited create;
- Initialize(Instance,PWideChar(ResName),ResType);
+ Initialize(Instance,PWideChar(ResName),ResType,False);
end;
constructor TResourceStream.CreateFromID(Instance: THandle; ResID: Integer; ResType: PWideChar);
begin
inherited create;
- Initialize(Instance,PWideChar(ResID),ResType);
+ Initialize(Instance,PWideChar(ResID),ResType,True);
end;
{$else UNICODE}
-procedure TResourceStream.Initialize(Instance: THandle; Name, ResType: PChar);
+procedure TResourceStream.Initialize(Instance: THandle; Name, ResType: PChar; NameIsID: Boolean);
begin
Res:=FindResource(Instance, Name, ResType);
if Res=0 then
- raise EResNotFound.CreateFmt(SResNotFound,[Name]);
+ if NameIsID then
+ raise EResNotFound.CreateFmt(SResNotFound,[IntToStr(PtrInt(Name))])
+ else
+ raise EResNotFound.CreateFmt(SResNotFound,[Name]);
Handle:=LoadResource(Instance,Res);
if Handle=0 then
- raise EResNotFound.CreateFmt(SResNotFound,[Name]);
+ if NameIsID then
+ raise EResNotFound.CreateFmt(SResNotFound,[IntToStr(PtrInt(Name))])
+ else
+ raise EResNotFound.CreateFmt(SResNotFound,[Name]);
SetPointer(LockResource(Handle),SizeOfResource(Instance,Res));
end;
constructor TResourceStream.Create(Instance: THandle; const ResName: string; ResType: PChar);
begin
inherited create;
- Initialize(Instance,pchar(ResName),ResType);
+ Initialize(Instance,pchar(ResName),ResType,False);
end;
constructor TResourceStream.CreateFromID(Instance: THandle; ResID: Integer; ResType: PChar);
begin
inherited create;
- Initialize(Instance,pchar(PtrInt(ResID)),ResType);
+ Initialize(Instance,pchar(PtrInt(ResID)),ResType,True);
end;
{$endif UNICODE}
@@ -1060,12 +1072,9 @@ begin
Check(FStream.Read(@Buffer, Count, @Result));
end;
-function TProxyStream.Seek(Offset: Longint; Origin: Word): Longint;
-var
- Pos: Int64;
+function TProxyStream. Seek(const Offset: int64; Origin: TSeekOrigin): int64;
begin
- Check(FStream.Seek(Offset, Origin, Pos));
- Result := Pos;
+ Check(FStream.Seek(Offset, ord(Origin), result));
end;
function TProxyStream.Write(const Buffer; Count: Longint): Longint;
diff --git a/rtl/objpas/cvarutil.inc b/rtl/objpas/cvarutil.inc
index acb4df178c..65c3a67f2c 100644
--- a/rtl/objpas/cvarutil.inc
+++ b/rtl/objpas/cvarutil.inc
@@ -833,25 +833,19 @@ var
begin
s := WideString(p);
- if not (TryStrToDateTime(s, Result) or
- TryStrToDate(s, Result) or
- TryStrToTime(s, Result)) then
+ if not TryStrToDateTime(s, Result) then
VariantTypeMismatch(varOleStr, varDate);
end;
Function LStrToDate(p: Pointer) : TDateTime;
begin
- if not (TryStrToDateTime(AnsiString(p), Result) or
- TryStrToDate(AnsiString(p), Result) or
- TryStrToTime(AnsiString(p), Result)) then
+ if not TryStrToDateTime(AnsiString(p), Result) then
VariantTypeMismatch(varString, varDate);
end;
Function UStrToDate(p: Pointer) : TDateTime;
begin
- if not (TryStrToDateTime(UnicodeString(p), Result) or
- TryStrToDate(UnicodeString(p), Result) or
- TryStrToTime(UnicodeString(p), Result)) then
+ if not TryStrToDateTime(UnicodeString(p), Result) then
VariantTypeMismatch(varUString, varDate);
end;
@@ -1287,6 +1281,14 @@ begin
end; {$ENDIF}
end;
+function VarDateToString(DT: TDateTime): AnsiString;
+begin
+ if Trunc(DT) = 0 then
+ Result := TimeToStr(DT)
+ else
+ Result := DateTimeToStr(DT);
+end;
+
{--- WideString ---}
Function VariantToWideString(const VargSrc : TVarData) : WideString;
@@ -1306,7 +1308,7 @@ begin
varSingle : Result := FloatToStr(vSingle);
varDouble : Result := FloatToStr(vDouble);
varCurrency : Result := FloatToStr(vCurrency);
- varDate : Result := FloatToStr(vDate);
+ varDate : Result := VarDateToString(vDate);
{$endif}
varBoolean : Result := BoolToStr(vBoolean, True);
varVariant : Result := VariantToWideString(PVarData(vPointer)^);
@@ -1329,7 +1331,7 @@ begin
varSingle : Result := FloatToStr(PSingle(vPointer)^);
varDouble : Result := FloatToStr(PDouble(vPointer)^);
varCurrency : Result := FloatToStr(PCurrency(vPointer)^);
- varDate : Result := FloatToStr(PDate(vPointer)^);
+ varDate : Result := VarDateToString(PDate(vPointer)^);
{$endif}
varBoolean : Result := BoolToStr(PWordBool(vPointer)^, True);
varVariant : Result := VariantToWideString(PVarData(vPointer)^);
@@ -1373,7 +1375,7 @@ begin
varSingle : Result := FloatToStr(vSingle);
varDouble : Result := FloatToStr(vDouble);
varCurrency : Result := FloatToStr(vCurrency);
- varDate : Result := DateToStr(vDate);
+ varDate : Result := VarDateToString(vDate);
{$endif}
varBoolean : Result := BoolToStr(vBoolean, True);
varVariant : Result := VariantToAnsiString(PVarData(vPointer)^);
@@ -1396,7 +1398,7 @@ begin
varSingle : Result := FloatToStr(PSingle(vPointer)^);
varDouble : Result := FloatToStr(PDouble(vPointer)^);
varCurrency : Result := FloatToStr(PCurrency(vPointer)^);
- varDate : Result := DateToStr(PDate(vPointer)^);
+ varDate : Result := VarDateToString(PDate(vPointer)^);
{$endif}
varBoolean : Result := BoolToStr(PWordBool(vPointer)^, True);
varVariant : Result := VariantToAnsiString(PVarData(vPointer)^);
@@ -1498,7 +1500,7 @@ Var
i: Integer;
begin
- Writeln(F,'---> ', aName, ' at $', IntToHex(Cardinal(@VargSrc), 8), ' <----------------');
+ Writeln(F,'---> ', aName, ' at $', HexStr(@VargSrc), ' <----------------');
with VargSrc do begin
if vType and varByRef = varByRef then
@@ -1526,7 +1528,7 @@ begin
WriteLn;
if vType and varArray = varArray then begin
- Writeln(F,'---< ', aName, ' at $', IntToHex(Cardinal(@VargSrc), 8), ' >----------------');
+ Writeln(F,'---< ', aName, ' at $', HexStr(@VargSrc), ' >----------------');
Writeln(F);
Exit;
end;
@@ -1537,7 +1539,7 @@ begin
if (vType and varByRef = varByRef) or (vType and varTypeMask = varVariant) then
if not Assigned(vPointer) then begin
WriteLn(F, 'nil]');
- Writeln(F,'---< ', aName, ' at $', IntToHex(Cardinal(@VargSrc), 8), ' >----------------');
+ Writeln(F,'---< ', aName, ' at $', HexStr(@VargSrc), ' >----------------');
Writeln(F);
Exit;
end;
@@ -1593,7 +1595,7 @@ begin
end;
end;
- Writeln(F,'---< ', aName, ' at $', IntToHex(Cardinal(@VargSrc), 8), ' >----------------');
+ Writeln(F,'---< ', aName, ' at $', HexStr(@VargSrc), ' >----------------');
Writeln(F);
end;
diff --git a/rtl/objpas/dateutil.inc b/rtl/objpas/dateutil.inc
index 22a3003f2e..436c221d88 100644
--- a/rtl/objpas/dateutil.inc
+++ b/rtl/objpas/dateutil.inc
@@ -21,7 +21,7 @@ interface
{$ifndef FPUNONE}
uses
- SysUtils, Math, Types;
+ SysUtils, Math;
{ ---------------------------------------------------------------------
Various constants
@@ -440,13 +440,13 @@ end;
Simple trimming functions.
---------------------------------------------------------------------}
-Function DateOf(const AValue: TDateTime): TDateTime;
+Function DateOf(const AValue: TDateTime): TDateTime; inline;
begin
Result:=Trunc(AValue);
end;
-Function TimeOf(const AValue: TDateTime): TDateTime;
+Function TimeOf(const AValue: TDateTime): TDateTime; inline;
begin
Result:=Frac(Avalue);
end;
@@ -458,24 +458,14 @@ end;
Function IsInLeapYear(const AValue: TDateTime): Boolean;
-
-Var
- D,Y,M : Word;
-
begin
- DecodeDate(AValue,Y,M,D);
- Result:=IsLeapYear(Y);
+ Result:=IsLeapYear(YearOf(AValue));
end;
-Function IsPM(const AValue: TDateTime): Boolean;
-
-Var
- H,M,S,MS : Word;
-
+Function IsPM(const AValue: TDateTime): Boolean; inline;
begin
- DecodeTime(AValue,H,M,S,MS);
- Result:=(H>=12);
+ Result:=(HourOf(AValue)>=12);
end;
@@ -535,13 +525,8 @@ end;
---------------------------------------------------------------------}
Function WeeksInYear(const AValue: TDateTime): Word;
-
-Var
- Y,M,D : Word;
-
begin
- DecodeDate(AValue,Y,M,D);
- Result:=WeeksInAYear(Y);
+ Result:=WeeksInAYear(YearOf(AValue));
end;
@@ -559,13 +544,8 @@ end;
Function DaysInYear(const AValue: TDateTime): Word;
-
-Var
- Y,M,D : Word;
-
begin
- DecodeDate(AValue,Y,M,D);
- Result:=DaysPerYear[IsLeapYear(Y)];
+ Result:=DaysPerYear[IsLeapYear(YearOf(AValue))];
end;
@@ -597,27 +577,27 @@ end;
---------------------------------------------------------------------}
-Function Today: TDateTime;
+Function Today: TDateTime; inline;
begin
- Result:=Date;
+ Result:=Date();
end;
Function Yesterday: TDateTime;
begin
- Result:=Date-1;
+ Result:=Date()-1;
end;
-Function Tomorrow: TDateTime;
+Function Tomorrow: TDateTime;
begin
- Result:=Date+1;
+ Result:=Date()+1;
end;
Function IsToday(const AValue: TDateTime): Boolean;
begin
- Result:=IsSameDay(AValue,Date);
+ Result:=IsSameDay(AValue,Date());
end;
@@ -669,7 +649,7 @@ begin
end;
-Function WeekOf(const AValue: TDateTime): Word;
+Function WeekOf(const AValue: TDateTime): Word; inline;
begin
Result:=WeekOfTheYear(AValue);
end;
@@ -711,7 +691,7 @@ Var
H,N,MS : Word;
begin
- DecodeTime(AVAlue,H,N,Result,MS);
+ DecodeTime(AValue,H,N,Result,MS);
end;
@@ -731,24 +711,14 @@ end;
Function StartOfTheYear(const AValue: TDateTime): TDateTime;
-
-Var
- Y,M,D : Word;
-
begin
- DecodeDate(AValue,Y,M,D);
- Result:=EncodeDate(Y,1,1);
+ Result:=EncodeDate(YearOf(AValue),1,1);
end;
Function EndOfTheYear(const AValue: TDateTime): TDateTime;
-
-Var
- Y,M,D : Word;
-
begin
- DecodeDate(AValue,Y,M,D);
- Result:=EncodeDateTime(Y,12,31,23,59,59,999);
+ Result:=EncodeDateTime(YearOf(AValue),12,31,23,59,59,999);
end;
@@ -791,7 +761,7 @@ begin
end;
-Function StartOfAMonth(const AYear, AMonth: Word): TDateTime;
+Function StartOfAMonth(const AYear, AMonth: Word): TDateTime; inline;
begin
Result:=EncodeDate(AYear,AMonth,1);
end;
@@ -827,13 +797,13 @@ begin
end;
-Function StartOfAWeek(const AYear, AWeekOfYear: Word): TDateTime; // ADayOFWeek 1
+Function StartOfAWeek(const AYear, AWeekOfYear: Word): TDateTime; inline; // ADayOFWeek 1
begin
Result:=StartOfAWeek(AYear,AWeekOfYear,1)
end;
-Function EndOfAWeek(const AYear, AWeekOfYear: Word; const ADayOfWeek: Word): TDateTime;
+Function EndOfAWeek(const AYear, AWeekOfYear: Word; const ADayOfWeek: Word): TDateTime; inline;
begin
Result := EndOfTheDay(EncodeDateWeek(AYear, AWeekOfYear, ADayOfWeek));
end;
@@ -850,7 +820,7 @@ end;
Start/End of day functions.
---------------------------------------------------------------------}
-Function StartOfTheDay(const AValue: TDateTime): TDateTime;
+Function StartOfTheDay(const AValue: TDateTime): TDateTime; inline;
begin
StartOfTheDay:=Trunc(Avalue);
end;
@@ -867,7 +837,7 @@ begin
end;
-Function StartOfADay(const AYear, AMonth, ADay: Word): TDateTime;
+Function StartOfADay(const AYear, AMonth, ADay: Word): TDateTime; inline;
begin
Result:=EncodeDate(AYear,AMonth,ADay);
end;
@@ -879,7 +849,7 @@ begin
end;
-Function EndOfADay(const AYear, AMonth, ADay: Word): TDateTime;
+Function EndOfADay(const AYear, AMonth, ADay: Word): TDateTime; inline;
begin
Result:=EndOfTheDay(EncodeDate(AYear,AMonth,ADay));
end;
@@ -897,13 +867,9 @@ end;
---------------------------------------------------------------------}
-Function MonthOfTheYear(const AValue: TDateTime): Word;
-
-Var
- Y,D : Word;
-
+Function MonthOfTheYear(const AValue: TDateTime): Word; inline;
begin
- DecodeDate(AValue,Y,Result,D);
+ Result:=MonthOf(AValue);
end;
@@ -1116,13 +1082,9 @@ end;
---------------------------------------------------------------------}
-Function HourOfTheDay(const AValue: TDateTime): Word;
-
-Var
- M,S,MS : Word;
-
+Function HourOfTheDay(const AValue: TDateTime): Word; inline;
begin
- DecodeTime(AValue,Result,M,S,MS);
+ Result:=HourOf(AValue);
end;
@@ -1163,13 +1125,9 @@ end;
---------------------------------------------------------------------}
-Function MinuteOfTheHour(const AValue: TDateTime): Word;
-
-Var
- H,S,MS : Word;
-
+Function MinuteOfTheHour(const AValue: TDateTime): Word; inline;
begin
- DecodeTime(AValue,H,Result,S,MS);
+ Result:=MinuteOf(AValue);
end;
@@ -1199,13 +1157,9 @@ end;
---------------------------------------------------------------------}
-Function SecondOfTheMinute(const AValue: TDateTime): Word;
-
-Var
- H,M,MS : Word;
-
+Function SecondOfTheMinute(const AValue: TDateTime): Word; inline;
begin
- DecodeTime(AValue,H,M,Result,MS);
+ Result:=SecondOf(AValue);
end;
@@ -1223,62 +1177,58 @@ end;
Part of second functions.
---------------------------------------------------------------------}
-Function MilliSecondOfTheSecond(const AValue: TDateTime): Word;
-
-Var
- H,M,S : Word;
-
+Function MilliSecondOfTheSecond(const AValue: TDateTime): Word; inline;
begin
- DecodeTime(AValue,H,M,S,Result);
+ Result:=MilliSecondOf(AValue);
end;
{ ---------------------------------------------------------------------
Range checking functions.
---------------------------------------------------------------------}
-Function WithinPastYears(const ANow, AThen: TDateTime; const AYears: Integer): Boolean;
+Function WithinPastYears(const ANow, AThen: TDateTime; const AYears: Integer): Boolean; inline;
begin
Result:=YearsBetween(ANow,AThen)<=AYears;
end;
-Function WithinPastMonths(const ANow, AThen: TDateTime; const AMonths: Integer): Boolean;
+Function WithinPastMonths(const ANow, AThen: TDateTime; const AMonths: Integer): Boolean; inline;
begin
Result:=MonthsBetween(ANow,AThen)<=AMonths;
end;
-Function WithinPastWeeks(const ANow, AThen: TDateTime; const AWeeks: Integer): Boolean;
+Function WithinPastWeeks(const ANow, AThen: TDateTime; const AWeeks: Integer): Boolean; inline;
begin
Result:=WeeksBetween(ANow,AThen)<=AWeeks;
end;
-Function WithinPastDays(const ANow, AThen: TDateTime; const ADays: Integer): Boolean;
+Function WithinPastDays(const ANow, AThen: TDateTime; const ADays: Integer): Boolean; inline;
begin
Result:=DaysBetween(ANow,AThen)<=ADays;
end;
-Function WithinPastHours(const ANow, AThen: TDateTime; const AHours: Int64): Boolean;
+Function WithinPastHours(const ANow, AThen: TDateTime; const AHours: Int64): Boolean; inline;
begin
Result:=HoursBetween(ANow,AThen)<=AHours;
end;
-Function WithinPastMinutes(const ANow, AThen: TDateTime; const AMinutes: Int64): Boolean;
+Function WithinPastMinutes(const ANow, AThen: TDateTime; const AMinutes: Int64): Boolean; inline;
begin
Result:=MinutesBetween(ANow,AThen)<=AMinutes;
end;
-Function WithinPastSeconds(const ANow, AThen: TDateTime; const ASeconds: Int64): Boolean;
+Function WithinPastSeconds(const ANow, AThen: TDateTime; const ASeconds: Int64): Boolean; inline;
begin
Result:=SecondsBetween(ANow,Athen)<=ASeconds;
end;
-Function WithinPastMilliSeconds(const ANow, AThen: TDateTime; const AMilliSeconds: Int64): Boolean;
+Function WithinPastMilliSeconds(const ANow, AThen: TDateTime; const AMilliSeconds: Int64): Boolean; inline;
begin
Result:=MilliSecondsBetween(ANow,AThen)<=AMilliSeconds;
end;
@@ -1888,7 +1838,7 @@ begin
end;
-Function SameDate(const A, B: TDateTime): Boolean;
+Function SameDate(const A, B: TDateTime): Boolean; inline;
begin
Result:=Trunc(A)=Trunc(B);
end;
diff --git a/rtl/objpas/fmtbcd.pp b/rtl/objpas/fmtbcd.pp
index 2cec6943a5..e6a9208494 100644
--- a/rtl/objpas/fmtbcd.pp
+++ b/rtl/objpas/fmtbcd.pp
@@ -142,7 +142,6 @@ INTERFACE
USES
SysUtils,
-{ dateutils,}
Variants;
const
@@ -2426,26 +2425,23 @@ writeln ( '> ', i4, ' ', bh.Singles[i4], ' ', Add );
{ TBCD variant creation utils }
procedure VarFmtBCDCreate ( var aDest : Variant;
const aBCD : tBCD );
-
begin
VarClear(aDest);
TVarData(aDest).Vtype:=FMTBcdFactory.Vartype;
TVarData(aDest).VPointer:=TFMTBcdVarData.create(aBCD);
- end;
+ end;
function VarFmtBCDCreate : Variant;
-
begin
VarFmtBCDCreate ( result, NullBCD );
- end;
+ end;
function VarFmtBCDCreate ( const aValue : FmtBCDStringtype;
Precision,
Scale : Word ) : Variant;
-
begin
VarFmtBCDCreate ( result, StrToBCD ( aValue ) );
- end;
+ end;
{$ifndef FPUNONE}
function VarFmtBCDCreate ( const aValue : myRealtype;
@@ -2471,7 +2467,6 @@ writeln ( '> ', i4, ' ', bh.Singles[i4], ' ', Add );
function VarFmtBCD : TVartype;
-
begin
Result:=FMTBcdFactory.VarType;
end;
@@ -2482,9 +2477,149 @@ writeln ( '> ', i4, ' ', bh.Singles[i4], ' ', Add );
Format : TFloatFormat;
const Precision,
Digits : Integer ) : FmtBCDStringtype;
+ var P, E: integer;
+ Negative: boolean;
+ DS, TS: char;
+
+ procedure RoundDecimalDigits(const D: integer);
+ var i,j: integer;
begin
- not_implemented;
- result:='';
+ j:=P+D;
+ if (Length(Result) > j) and (Result[j+1] >= '5') then
+ for i:=j downto 1+ord(Negative) do
+ begin
+ if Result[i] = '9' then
+ begin
+ Result[i] := '0';
+ if i = 1+ord(Negative) then
+ begin
+ Insert('1', Result, i);
+ inc(P);
+ inc(j);
+ end;
+ end
+ else if Result[i] <> DS then
+ begin
+ inc(Result[i]);
+ break;
+ end;
+ end;
+ Result := copy(Result, 1, j);
+ end;
+
+ procedure AddDecimalDigits;
+ var n,d: integer;
+ begin
+ if Digits < 0 then d := 2 else d := Digits;
+
+ n := d + P - Length(Result);
+
+ if n > 0 then
+ Result := Result + StringOfChar('0', n)
+ else if n < 0 then
+ RoundDecimalDigits(d);
+ end;
+
+ procedure AddThousandSeparators;
+ begin
+ Dec(P, 3);
+ While (P > 1) Do
+ Begin
+ If (Result[P - 1] <> '-') And (TS <> #0) Then
+ Insert(TS, Result, P);
+ Dec(P, 3);
+ End;
+ end;
+
+ begin
+ Result := BCDToStr(BCD);
+ if Format = ffGeneral then Exit;
+
+ SetDecimals(DS, TS);
+
+ Negative := Result[1] = '-';
+ P := Pos(DS, Result);
+ if P = 0 then
+ begin
+ P := Length(Result) + 1;
+ if Digits <> 0 then
+ Result := Result + DS;
+ end;
+
+ Case Format Of
+ ffExponent:
+ Begin
+ E := P - 2 - ord(Negative);
+
+ if (E = 0) and (Result[P-1] = '0') then
+ repeat
+ dec(E);
+ until (Length(Result) <= P-E) or (Result[P-E] <> '0');
+
+ if E <> 0 then
+ begin
+ System.Delete(Result, P, 1);
+ dec(P, E);
+ Insert(DS, Result, P);
+ end;
+
+ RoundDecimalDigits(Precision-1);
+
+ if E < 0 then
+ begin
+ System.Delete(Result, P+E-1, -E);
+ Result := Result + SysUtils.Format('E%.*d' , [Digits,E])
+ end
+ else
+ Result := Result + SysUtils.Format('E+%.*d', [Digits,E]);
+ End;
+
+ ffFixed:
+ Begin
+ AddDecimalDigits;
+ End;
+
+ ffNumber:
+ Begin
+ AddDecimalDigits;
+ AddThousandSeparators;
+ End;
+
+ ffCurrency:
+ Begin
+ //implementation based on FloatToStrFIntl()
+ if Negative then System.Delete(Result, 1, 1);
+
+ AddDecimalDigits;
+ AddThousandSeparators;
+
+ If Not Negative Then
+ Begin
+ Case CurrencyFormat Of
+ 0: Result := CurrencyString + Result;
+ 1: Result := Result + CurrencyString;
+ 2: Result := CurrencyString + ' ' + Result;
+ 3: Result := Result + ' ' + CurrencyString;
+ End
+ End
+ Else
+ Begin
+ Case NegCurrFormat Of
+ 0: Result := '(' + CurrencyString + Result + ')';
+ 1: Result := '-' + CurrencyString + Result;
+ 2: Result := CurrencyString + '-' + Result;
+ 3: Result := CurrencyString + Result + '-';
+ 4: Result := '(' + Result + CurrencyString + ')';
+ 5: Result := '-' + Result + CurrencyString;
+ 6: Result := Result + '-' + CurrencyString;
+ 7: Result := Result + CurrencyString + '-';
+ 8: Result := '-' + Result + ' ' + CurrencyString;
+ 9: Result := '-' + CurrencyString + ' ' + Result;
+ 10: Result := CurrencyString + ' ' + Result + '-';
+ End;
+ End;
+ End;
+ End;
end;
@@ -3871,9 +4006,14 @@ begin
begin
VarDataInit(v);
try
- v.vType:=varDouble;
- v.vDouble:=TFMTBcdVarData(Source.vPointer).BCD;
- VarDataCastTo(Dest, v, aVarType); //now cast Double to any requested type
+ if aVarType = varString then
+ VarDataFromStr(Dest, BCDToStr(TFMTBcdVarData(Source.vPointer).BCD))
+ else
+ begin
+ v.vType:=varDouble;
+ v.vDouble:=BCDToDouble(TFMTBcdVarData(Source.vPointer).BCD);
+ VarDataCastTo(Dest, v, aVarType); //now cast Double to any requested type
+ end;
finally
VarDataClear(v);
end;
diff --git a/rtl/objpas/sysutils/dati.inc b/rtl/objpas/sysutils/dati.inc
index 3723fc5fa2..db580cf03d 100644
--- a/rtl/objpas/sysutils/dati.inc
+++ b/rtl/objpas/sysutils/dati.inc
@@ -358,7 +358,7 @@ var
c:word;
dp,mp,yp,which : Byte;
s1:string[4];
- values:array[1..3] of longint;
+ values:array[0..3] of longint;
LocalTime:tsystemtime;
YearMoreThenTwoDigits : boolean;
begin
@@ -402,12 +402,6 @@ begin
end;
end;
end;
- if Which<>3 then
- begin
- FixErrorMsg(SErrIllegalDateFormatString,useformat);
- Exit;
- end;
-{ Get actual values }
for i := 1 to 3 do
values[i] := 0;
s1 := '';
@@ -448,6 +442,11 @@ begin
Exit;
end;
end ;
+ if (Which<3) and (N>Which) then
+ begin
+ FixErrorMsg(SInvalidDateFormat,s);
+ Exit;
+ end;
// Fill in values.
getLocalTime(LocalTime);
ly := LocalTime.Year;
diff --git a/rtl/objpas/sysutils/sysformt.inc b/rtl/objpas/sysutils/sysformt.inc
index ae953acc15..defd2d5314 100644
--- a/rtl/objpas/sysutils/sysformt.inc
+++ b/rtl/objpas/sysutils/sysformt.inc
@@ -28,7 +28,7 @@ Var ChPos,OldPos,ArgPos,DoArg,Len : SizeInt;
While (ChPos<=Len) and
(Fmt[ChPos]<='9') and (Fmt[ChPos]>='0') do inc(ChPos);
If ChPos>len then
- DoFormatError(feInvalidFormat);
+ DoFormatError(feInvalidFormat,Fmt);
If Fmt[ChPos]='*' then
begin
@@ -41,7 +41,7 @@ Var ChPos,OldPos,ArgPos,DoArg,Len : SizeInt;
end;
If (ChPos>OldPos) or (ArgN>High(Args)) then
- DoFormatError(feInvalidFormat);
+ DoFormatError(feInvalidFormat,Fmt);
ArgPos:=ArgN+1;
@@ -50,7 +50,7 @@ Var ChPos,OldPos,ArgPos,DoArg,Len : SizeInt;
vtInt64: Value := Args[ArgN].VInt64^;
vtQWord: Value := Args[ArgN].VQWord^;
else
- DoFormatError(feInvalidFormat);
+ DoFormatError(feInvalidFormat,Fmt);
end;
Inc(ChPos);
end
@@ -60,7 +60,7 @@ Var ChPos,OldPos,ArgPos,DoArg,Len : SizeInt;
begin
Val (Copy(Fmt,OldPos,ChPos-OldPos),value,code);
// This should never happen !!
- If Code>0 then DoFormatError (feInvalidFormat);
+ If Code>0 then DoFormatError (feInvalidFormat,Fmt);
end
else
Value:=-1;
@@ -76,7 +76,7 @@ Var ChPos,OldPos,ArgPos,DoArg,Len : SizeInt;
value:=0; // Delphi undocumented behaviour, assume 0, #11099
If Fmt[ChPos]=':' then
begin
- If Value=-1 then DoFormatError(feMissingArgument);
+ If Value=-1 then DoFormatError(feMissingArgument,fmt);
Index:=Value;
Value:=-1;
Inc(ChPos);
@@ -202,7 +202,7 @@ begin
If (Doarg>High(Args)) or (Args[Doarg].Vtype<>AT) then
begin
if err then
- DoFormatError(feInvalidArgindex);
+ DoFormatError(feInvalidArgindex,Fmt);
dec(ArgPos);
exit;
end;
diff --git a/rtl/objpas/sysutils/sysstr.inc b/rtl/objpas/sysutils/sysstr.inc
index 9fbd76ebc2..0cccd3add4 100644
--- a/rtl/objpas/sysutils/sysstr.inc
+++ b/rtl/objpas/sysutils/sysstr.inc
@@ -896,12 +896,12 @@ end;
{$endif}
-Procedure DoFormatError (ErrCode : Longint);
+Procedure DoFormatError (ErrCode : Longint;const fmt:ansistring);
Var
S : String;
begin
//!! must be changed to contain format string...
- S:='';
+ S:=fmt;
Case ErrCode of
feInvalidFormat : raise EConvertError.Createfmt(SInvalidFormat,[s]);
feMissingArgument : raise EConvertError.Createfmt(SArgumentMissing,[s]);
@@ -909,7 +909,6 @@ begin
end;
end;
-
{ we've no templates, but with includes we can simulate this :) }
{$macro on}
diff --git a/rtl/objpas/sysutils/sysutilh.inc b/rtl/objpas/sysutils/sysutilh.inc
index 6ad58f2204..a3ccbf6078 100644
--- a/rtl/objpas/sysutils/sysutilh.inc
+++ b/rtl/objpas/sysutils/sysutilh.inc
@@ -197,7 +197,7 @@ type
ESafecallException = class(Exception);
ENoThreadSupport = Class(Exception);
ENoWideStringSupport = Class(Exception);
-
+ ENotImplemented = class(Exception);
{ Exception handling routines }
function ExceptObject: TObject;
diff --git a/rtl/os2/sysutils.pp b/rtl/os2/sysutils.pp
index b5e6248ed7..181ccf25ae 100644
--- a/rtl/os2/sysutils.pp
+++ b/rtl/os2/sysutils.pp
@@ -777,7 +777,7 @@ end;
function SetCurrentDir (const NewDir: string): boolean;
begin
{$I-}
-{$WARNING Should be rewritten to avoid unit dos dependancy!}
+{$WARNING Should be rewritten to avoid unit dos dependency!}
ChDir (NewDir);
Result := (IOResult = 0);
{$I+}
@@ -787,7 +787,7 @@ end;
function CreateDir (const NewDir: string): boolean;
begin
{$I-}
-{$WARNING Should be rewritten to avoid unit dos dependancy!}
+{$WARNING Should be rewritten to avoid unit dos dependency!}
MkDir (NewDir);
Result := (IOResult = 0);
{$I+}
@@ -797,7 +797,7 @@ end;
function RemoveDir (const Dir: string): boolean;
begin
{$I-}
-{$WARNING Should be rewritten to avoid unit dos dependancy!}
+{$WARNING Should be rewritten to avoid unit dos dependency!}
RmDir (Dir);
Result := (IOResult = 0);
{$I+}
diff --git a/rtl/unix/aliasptp.inc b/rtl/unix/aliasptp.inc
index 72c04a1794..4760f77e59 100644
--- a/rtl/unix/aliasptp.inc
+++ b/rtl/unix/aliasptp.inc
@@ -74,6 +74,7 @@ type
pthread_t = UnixType.pthread_t;
tstatfs = UnixType.TStatFs;
+ pstatfs = UnixType.PStatFs;
CONST
ARG_MAX = UnixType.ARG_MAX;
diff --git a/rtl/unix/clocale.pp b/rtl/unix/clocale.pp
index 3d04e7f611..c616a7b2d0 100644
--- a/rtl/unix/clocale.pp
+++ b/rtl/unix/clocale.pp
@@ -92,7 +92,7 @@ Const
function setlocale(category: cint; locale: pchar): pchar; cdecl; external clib name 'setlocale';
function nl_langinfo(__item: cint):Pchar;cdecl;external clib name 'nl_langinfo';
-procedure GetFormatSettings;
+procedure GetFormatSettings(out fmts: TFormatSettings);
function GetLocaleStr(item: cint): string;
begin
@@ -231,56 +231,56 @@ begin
setlocale(__LC_ALL,'');
for i := 1 to 12 do
begin
- ShortMonthNames[i]:=GetLocaleStr(ABMON_1+i-1);
- LongMonthNames[i]:=GetLocaleStr(MON_1+i-1);
+ fmts.ShortMonthNames[i]:=GetLocaleStr(ABMON_1+i-1);
+ fmts.LongMonthNames[i]:=GetLocaleStr(MON_1+i-1);
end;
for i := 1 to 7 do
begin
- ShortDayNames[i]:=GetLocaleStr(ABDAY_1+i-1);
- LongDayNames[i]:=GetLocaleStr(DAY_1+i-1);
+ fmts.ShortDayNames[i]:=GetLocaleStr(ABDAY_1+i-1);
+ fmts.LongDayNames[i]:=GetLocaleStr(DAY_1+i-1);
end;
//Date stuff
- ShortDateFormat := GetLocaleStr(D_FMT);
+ fmts.ShortDateFormat := GetLocaleStr(D_FMT);
{$ifdef localedebug}
- OrgFormatSettings.ShortDateFormat:=shortdateformat;
+ OrgFormatSettings.ShortDateFormat:=fmts.shortdateformat;
{$endif}
- DateSeparator := FindSeparator(ShortDateFormat, DateSeparator);
- ShortDateFormat := TransformFormatStr(ShortDateFormat);
- LongDateFormat := GetLocaleStr(D_T_FMT);
+ fmts.DateSeparator := FindSeparator(fmts.ShortDateFormat, fmts.DateSeparator);
+ fmts.ShortDateFormat := TransformFormatStr(fmts.ShortDateFormat);
+ fmts.LongDateFormat := GetLocaleStr(D_T_FMT);
{$ifdef localedebug}
- OrgFormatSettings.LongDateFormat:=longdateformat;
+ OrgFormatSettings.LongDateFormat:=fmts.longdateformat;
{$endif}
- LongDateFormat := TransformFormatStr(LongDateFormat);
+ fmts.LongDateFormat := TransformFormatStr(fmts.LongDateFormat);
//Time stuff
- TimeAMString := GetLocaleStr(AM_STR);
- TimePMString := GetLocaleStr(PM_STR);
- ShortTimeFormat := GetLocaleStr(T_FMT);
+ fmts.TimeAMString := GetLocaleStr(AM_STR);
+ fmts.TimePMString := GetLocaleStr(PM_STR);
+ fmts.ShortTimeFormat := GetLocaleStr(T_FMT);
{$ifdef localedebug}
- OrgFormatSettings.ShortTimeFormat:=shorttimeformat;
+ OrgFormatSettings.ShortTimeFormat:=fmts.shorttimeformat;
{$endif}
- TimeSeparator := FindSeparator(ShortTimeFormat, TimeSeparator);
- ShortTimeFormat := TransformFormatStr(ShortTimeFormat);
- LongTimeFormat := GetLocaleStr(T_FMT_AMPM);
+ fmts.TimeSeparator := FindSeparator(fmts.ShortTimeFormat, fmts.TimeSeparator);
+ fmts.ShortTimeFormat := TransformFormatStr(fmts.ShortTimeFormat);
+ fmts.LongTimeFormat := GetLocaleStr(T_FMT_AMPM);
{$ifdef localedebug}
- OrgFormatSettings.LongTimeFormat:=longtimeformat;
+ OrgFormatSettings.LongTimeFormat:=fmts.longtimeformat;
{$endif}
- if (LongTimeFormat='') then
- LongTimeFormat:=ShortTimeFormat
+ if (fmts.LongTimeFormat='') then
+ fmts.LongTimeFormat:=fmts.ShortTimeFormat
else
- LongTimeFormat := TransformFormatStr(LongTimeFormat);
+ fmts.LongTimeFormat := TransformFormatStr(fmts.LongTimeFormat);
{$if defined(BSD) or defined(SUNOS)}
plocale:=localeconv;
// for these fields there is a separate BSD derived POSIX function.
if not assigned(plocale) then exit; // for now.
- CurrencyString:=plocale^.currency_symbol; // int_CURR_SYMBOL (in latin chars)
- if CurrencyString='' then
- CurrencyString:=plocale^.int_curr_symbol;
- CurrencyDecimals:=ord(plocale^.FRAC_DIGITS);
+ fmts.CurrencyString:=plocale^.currency_symbol; // int_CURR_SYMBOL (in latin chars)
+ if fmts.CurrencyString='' then
+ fmts.CurrencyString:=plocale^.int_curr_symbol;
+ fmts.CurrencyDecimals:=ord(plocale^.FRAC_DIGITS);
{$ifdef localedebug}
OrgFormatSettings.CurrencyString1:=plocale^.currency_symbol;
OrgFormatSettings.CurrencyString2:=plocale^.int_curr_symbol;
@@ -288,42 +288,42 @@ begin
prec:=ord(plocale^.P_CS_PRECEDES);
sep:=ord(plocale^.P_SEP_BY_SPACE);
if (prec<=1) and (sep<=1) then
- CurrencyFormat := byte(not boolean(prec)) + sep shl 1;
+ fmts.CurrencyFormat := byte(not boolean(prec)) + sep shl 1;
prec := ord(plocale^.N_CS_PRECEDES);
sep := ord(plocale^.N_SEP_BY_SPACE);
signp := ord(plocale^.N_SIGN_POSN);
if (signp in [0..4]) and (prec in [0, 1]) and (sep in [0, 1]) then
- NegCurrFormat := NegFormatsTable[signp, prec, sep];
+ fmts.NegCurrFormat := NegFormatsTable[signp, prec, sep];
//Number stuff
- ThousandSeparator:=plocale^.THOUSANDS_SEP[0];
+ fmts.ThousandSeparator:=plocale^.THOUSANDS_SEP[0];
{$else}
//Currency stuff
- CurrencyString := GetLocaleStr(_NL_MONETARY_CRNCYSTR);
+ fmts.CurrencyString := GetLocaleStr(_NL_MONETARY_CRNCYSTR);
{$ifdef localedebug}
- OrgFormatSettings.CurrencyString1:=currencystring;
+ OrgFormatSettings.CurrencyString1:=fmts.currencystring;
OrgFormatSettings.CurrencyString2:='';
{$endif}
- CurrencyString := Copy(CurrencyString, 2, Length(CurrencyString));
- CurrencyDecimals := StrToIntDef(GetLocaleStr(__FRAC_DIGITS), CurrencyDecimals);
+ fmts.CurrencyString := Copy(fmts.CurrencyString, 2, Length(fmts.CurrencyString));
+ fmts.CurrencyDecimals := StrToIntDef(GetLocaleStr(__FRAC_DIGITS), fmts.CurrencyDecimals);
prec := byte(GetLocaleChar(__P_CS_PRECEDES));
sep := byte(GetLocaleChar(__P_SEP_BY_SPACE));
if (prec<=1) and (sep<=1) then
- CurrencyFormat := byte(not boolean(prec)) + sep shl 1;
+ fmts.CurrencyFormat := byte(not boolean(prec)) + sep shl 1;
prec := byte(GetLocaleChar(__N_CS_PRECEDES));
sep := byte(GetLocaleChar(__N_SEP_BY_SPACE));
signp := byte(GetLocaleChar(__N_SIGN_POSN));
if (signp in [0..4]) and (prec in [0, 1]) and (sep in [0, 1]) then
- NegCurrFormat := NegFormatsTable[signp, prec, sep];
+ fmts.NegCurrFormat := NegFormatsTable[signp, prec, sep];
//Number stuff
- ThousandSeparator:=GetLocaleChar(__THOUSANDS_SEP);
+ fmts.ThousandSeparator:=GetLocaleChar(__THOUSANDS_SEP);
Sep := ord(GetLocaleChar(__MON_THOUSANDS_SEP));
- if ThousandSeparator=#0 then
- ThousandSeparator := char(Sep);
+ if fmts.ThousandSeparator=#0 then
+ fmts.ThousandSeparator := char(Sep);
{$endif}
- DecimalSeparator:=GetLocaleChar(RADIXCHAR);
+ fmts.DecimalSeparator:=GetLocaleChar(RADIXCHAR);
end;
initialization
- GetFormatSettings;
+ GetFormatSettings(DefaultFormatSettings);
end.
diff --git a/rtl/unix/sysutils.pp b/rtl/unix/sysutils.pp
index a719feeddc..34d9d99b2d 100644
--- a/rtl/unix/sysutils.pp
+++ b/rtl/unix/sysutils.pp
@@ -524,9 +524,9 @@ Function FileAge (Const FileName : String): Longint;
Var Info : Stat;
begin
- If fpstat (pointer(FileName),Info)<0 then
+ If (fpstat (pointer(FileName),Info)<0) or fpS_ISDIR(info.st_mode) then
exit(-1)
- else
+ else
Result:=UnixToWinAge(info.st_mtime);
end;
{$endif}
diff --git a/rtl/win/sysutils.pp b/rtl/win/sysutils.pp
index 0f24ea99b4..3352bbf4ac 100644
--- a/rtl/win/sysutils.pp
+++ b/rtl/win/sysutils.pp
@@ -72,7 +72,8 @@ procedure GetLocaleFormatSettings(LCID: Integer; var FormatSettings: TFormatSett
implementation
uses
- sysconst;
+ sysconst,
+ windirs;
function WinCheck(res:boolean):boolean;
begin
@@ -1060,109 +1061,12 @@ begin
GetDiskFreeSpaceEx:=TGetDiskFreeSpaceEx(GetProcAddress(kernel32dll,'GetDiskFreeSpaceExA'));
end;
-Const
- CSIDL_PROGRAMS = $0002; { %SYSTEMDRIVE%\Program Files }
- CSIDL_PERSONAL = $0005; { %USERPROFILE%\My Documents }
- CSIDL_FAVORITES = $0006; { %USERPROFILE%\Favorites }
- CSIDL_STARTUP = $0007; { %USERPROFILE%\Start menu\Programs\Startup }
- CSIDL_RECENT = $0008; { %USERPROFILE%\Recent }
- CSIDL_SENDTO = $0009; { %USERPROFILE%\Sendto }
- CSIDL_STARTMENU = $000B; { %USERPROFILE%\Start menu }
- CSIDL_MYMUSIC = $000D; { %USERPROFILE%\Documents\My Music }
- CSIDL_MYVIDEO = $000E; { %USERPROFILE%\Documents\My Videos }
- CSIDL_DESKTOPDIRECTORY = $0010; { %USERPROFILE%\Desktop }
- CSIDL_NETHOOD = $0013; { %USERPROFILE%\NetHood }
- CSIDL_TEMPLATES = $0015; { %USERPROFILE%\Templates }
- CSIDL_COMMON_STARTMENU = $0016; { %PROFILEPATH%\All users\Start menu }
- CSIDL_COMMON_PROGRAMS = $0017; { %PROFILEPATH%\All users\Start menu\Programs }
- CSIDL_COMMON_STARTUP = $0018; { %PROFILEPATH%\All users\Start menu\Programs\Startup }
- CSIDL_COMMON_DESKTOPDIRECTORY = $0019; { %PROFILEPATH%\All users\Desktop }
- CSIDL_APPDATA = $001A; { %USERPROFILE%\Application Data (roaming) }
- CSIDL_PRINTHOOD = $001B; { %USERPROFILE%\Printhood }
- CSIDL_LOCAL_APPDATA = $001C; { %USERPROFILE%\Local Settings\Application Data (non roaming) }
- CSIDL_COMMON_FAVORITES = $001F; { %PROFILEPATH%\All users\Favorites }
- CSIDL_INTERNET_CACHE = $0020; { %USERPROFILE%\Local Settings\Temporary Internet Files }
- CSIDL_COOKIES = $0021; { %USERPROFILE%\Cookies }
- CSIDL_HISTORY = $0022; { %USERPROFILE%\Local settings\History }
- CSIDL_COMMON_APPDATA = $0023; { %PROFILESPATH%\All Users\Application Data }
- CSIDL_WINDOWS = $0024; { %SYSTEMROOT% }
- CSIDL_SYSTEM = $0025; { %SYSTEMROOT%\SYSTEM32 (may be system on 95/98/ME) }
- CSIDL_PROGRAM_FILES = $0026; { %SYSTEMDRIVE%\Program Files }
- CSIDL_MYPICTURES = $0027; { %USERPROFILE%\My Documents\My Pictures }
- CSIDL_PROFILE = $0028; { %USERPROFILE% }
- CSIDL_PROGRAM_FILES_COMMON = $002B; { %SYSTEMDRIVE%\Program Files\Common }
- CSIDL_COMMON_TEMPLATES = $002D; { %PROFILEPATH%\All Users\Templates }
- CSIDL_COMMON_DOCUMENTS = $002E; { %PROFILEPATH%\All Users\Documents }
- CSIDL_COMMON_ADMINTOOLS = $002F; { %PROFILEPATH%\All Users\Start Menu\Programs\Administrative Tools }
- CSIDL_ADMINTOOLS = $0030; { %USERPROFILE%\Start Menu\Programs\Administrative Tools }
- CSIDL_COMMON_MUSIC = $0035; { %PROFILEPATH%\All Users\Documents\my music }
- CSIDL_COMMON_PICTURES = $0036; { %PROFILEPATH%\All Users\Documents\my pictures }
- CSIDL_COMMON_VIDEO = $0037; { %PROFILEPATH%\All Users\Documents\my videos }
- CSIDL_CDBURN_AREA = $003B; { %USERPROFILE%\Local Settings\Application Data\Microsoft\CD Burning }
- CSIDL_PROFILES = $003E; { %PROFILEPATH% }
-
- CSIDL_FLAG_CREATE = $8000; { (force creation of requested folder if it doesn't exist yet) }
-
-
-Type
- PFNSHGetFolderPath = Function(Ahwnd: HWND; Csidl: Integer; Token: THandle; Flags: DWord; Path: PChar): HRESULT; stdcall;
-
-
-var
- SHGetFolderPath : PFNSHGetFolderPath = Nil;
- CFGDLLHandle : THandle = 0;
-
-Procedure InitDLL;
-
-Var
- pathBuf: array[0..MAX_PATH-1] of char;
- pathLength: Integer;
-begin
- { Load shfolder.dll using a full path, in order to prevent spoofing (Mantis #18185)
- Don't bother loading shell32.dll because shfolder.dll itself redirects SHGetFolderPath
- to shell32.dll whenever possible. }
- pathLength:=GetSystemDirectory(pathBuf, MAX_PATH);
- if (pathLength>0) and (pathLength<MAX_PATH-14) then { 14=length('\shfolder.dll'#0) }
- begin
- StrLCopy(@pathBuf[pathLength],'\shfolder.dll',MAX_PATH-pathLength-1);
- CFGDLLHandle:=LoadLibrary(pathBuf);
-
- if (CFGDLLHandle<>0) then
- begin
- Pointer(ShGetFolderPath):=GetProcAddress(CFGDLLHandle,'SHGetFolderPathA');
- If @ShGetFolderPath=nil then
- begin
- FreeLibrary(CFGDLLHandle);
- CFGDllHandle:=0;
- end;
- end;
- end;
- If (@ShGetFolderPath=Nil) then
- Raise Exception.Create('Could not determine SHGetFolderPath Function');
-end;
-
-Function GetSpecialDir(ID : Integer) : String;
-
-Var
- APath : Array[0..MAX_PATH] of char;
-
-begin
- Result:='';
- if (CFGDLLHandle=0) then
- InitDLL;
- If (SHGetFolderPath<>Nil) then
- begin
- if SHGetFolderPath(0,ID or CSIDL_FLAG_CREATE,0,0,@APATH[0])=S_OK then
- Result:=IncludeTrailingPathDelimiter(StrPas(@APath[0]));
- end;
-end;
-
Function GetAppConfigDir(Global : Boolean) : String;
begin
If Global then
- Result:=GetSpecialDir(CSIDL_COMMON_APPDATA)
+ Result:=GetWindowsSpecialDir(CSIDL_COMMON_APPDATA)
else
- Result:=GetSpecialDir(CSIDL_LOCAL_APPDATA);
+ Result:=GetWindowsSpecialDir(CSIDL_LOCAL_APPDATA);
If (Result<>'') then
begin
if VendorName<>'' then
@@ -1182,7 +1086,7 @@ end;
Function GetUserDir : String;
begin
- Result:=GetSpecialDir(CSIDL_PROFILE);
+ Result:=GetWindowsSpecialDir(CSIDL_PROFILE);
end;
Procedure InitSysConfigDir;
@@ -1364,6 +1268,4 @@ Initialization
OnBeep:=@SysBeep;
Finalization
DoneExceptions;
- if CFGDLLHandle<>0 then
- FreeLibrary(CFGDllHandle);
end.
diff --git a/rtl/win/syswin.inc b/rtl/win/syswin.inc
index 9a1c839f5b..1ea914b43b 100644
--- a/rtl/win/syswin.inc
+++ b/rtl/win/syswin.inc
@@ -290,8 +290,11 @@ procedure InitWin32Widestrings;
end;
{$endif}
+ { Note: since WideChar=UnicodeChar and PWideChar=PUnicodeChar,
+ Wide2AnsiMoveProc is identical to Unicode2AnsiStrMoveProc. }
+
{ Widestring }
- widestringmanager.Wide2AnsiMoveProc:=@Win32Wide2AnsiMove;
+ widestringmanager.Wide2AnsiMoveProc:=@Win32Unicode2AnsiMove;
widestringmanager.Ansi2WideMoveProc:=@Win32Ansi2WideMove;
widestringmanager.UpperWideStringProc:=@Win32WideUpper;
widestringmanager.LowerWideStringProc:=@Win32WideLower;
diff --git a/rtl/win/tthread.inc b/rtl/win/tthread.inc
index aa6203d1e5..8bb90c4ebb 100644
--- a/rtl/win/tthread.inc
+++ b/rtl/win/tthread.inc
@@ -1,14 +1,5 @@
{ Thread management routines }
-type
- PRaiseFrame = ^TRaiseFrame;
- TRaiseFrame = record
- NextRaise: PRaiseFrame;
- ExceptAddr: Pointer;
- ExceptObject: TObject;
- ExceptionRecord: pointer; {PExceptionRecord}
- end;
-
constructor TThread.Create(CreateSuspended: Boolean;
const StackSize: SizeUInt = DefaultStackSize);
begin
@@ -20,7 +11,7 @@ begin
FHandle := BeginThread(nil, StackSize, @ThreadProc, pointer(self), CREATE_SUSPENDED,
FThreadID);
if FHandle = TThreadID(0) then
- raise EThread.create('Failed to create new thread, code:'+inttostr(getlasterror));
+ raise EThread.CreateFmt(SThreadCreateError, [SysErrorMessage(getlasterror)]);
FFatalException := nil;
end;
diff --git a/rtl/win/windirs.pp b/rtl/win/windirs.pp
new file mode 100644
index 0000000000..c3cfd122a2
--- /dev/null
+++ b/rtl/win/windirs.pp
@@ -0,0 +1,120 @@
+unit windirs;
+
+{$mode objfpc}
+{$H+}
+
+interface
+
+uses
+ windows,
+ strings;
+
+Const
+ CSIDL_PROGRAMS = $0002; { %SYSTEMDRIVE%\Program Files }
+ CSIDL_PERSONAL = $0005; { %USERPROFILE%\My Documents }
+ CSIDL_FAVORITES = $0006; { %USERPROFILE%\Favorites }
+ CSIDL_STARTUP = $0007; { %USERPROFILE%\Start menu\Programs\Startup }
+ CSIDL_RECENT = $0008; { %USERPROFILE%\Recent }
+ CSIDL_SENDTO = $0009; { %USERPROFILE%\Sendto }
+ CSIDL_STARTMENU = $000B; { %USERPROFILE%\Start menu }
+ CSIDL_MYMUSIC = $000D; { %USERPROFILE%\Documents\My Music }
+ CSIDL_MYVIDEO = $000E; { %USERPROFILE%\Documents\My Videos }
+ CSIDL_DESKTOPDIRECTORY = $0010; { %USERPROFILE%\Desktop }
+ CSIDL_NETHOOD = $0013; { %USERPROFILE%\NetHood }
+ CSIDL_TEMPLATES = $0015; { %USERPROFILE%\Templates }
+ CSIDL_COMMON_STARTMENU = $0016; { %PROFILEPATH%\All users\Start menu }
+ CSIDL_COMMON_PROGRAMS = $0017; { %PROFILEPATH%\All users\Start menu\Programs }
+ CSIDL_COMMON_STARTUP = $0018; { %PROFILEPATH%\All users\Start menu\Programs\Startup }
+ CSIDL_COMMON_DESKTOPDIRECTORY = $0019; { %PROFILEPATH%\All users\Desktop }
+ CSIDL_APPDATA = $001A; { %USERPROFILE%\Application Data (roaming) }
+ CSIDL_PRINTHOOD = $001B; { %USERPROFILE%\Printhood }
+ CSIDL_LOCAL_APPDATA = $001C; { %USERPROFILE%\Local Settings\Application Data (non roaming) }
+ CSIDL_COMMON_FAVORITES = $001F; { %PROFILEPATH%\All users\Favorites }
+ CSIDL_INTERNET_CACHE = $0020; { %USERPROFILE%\Local Settings\Temporary Internet Files }
+ CSIDL_COOKIES = $0021; { %USERPROFILE%\Cookies }
+ CSIDL_HISTORY = $0022; { %USERPROFILE%\Local settings\History }
+ CSIDL_COMMON_APPDATA = $0023; { %PROFILESPATH%\All Users\Application Data }
+ CSIDL_WINDOWS = $0024; { %SYSTEMROOT% }
+ CSIDL_SYSTEM = $0025; { %SYSTEMROOT%\SYSTEM32 (may be system on 95/98/ME) }
+ CSIDL_PROGRAM_FILES = $0026; { %SYSTEMDRIVE%\Program Files }
+ CSIDL_MYPICTURES = $0027; { %USERPROFILE%\My Documents\My Pictures }
+ CSIDL_PROFILE = $0028; { %USERPROFILE% }
+ CSIDL_PROGRAM_FILES_COMMON = $002B; { %SYSTEMDRIVE%\Program Files\Common }
+ CSIDL_COMMON_TEMPLATES = $002D; { %PROFILEPATH%\All Users\Templates }
+ CSIDL_COMMON_DOCUMENTS = $002E; { %PROFILEPATH%\All Users\Documents }
+ CSIDL_COMMON_ADMINTOOLS = $002F; { %PROFILEPATH%\All Users\Start Menu\Programs\Administrative Tools }
+ CSIDL_ADMINTOOLS = $0030; { %USERPROFILE%\Start Menu\Programs\Administrative Tools }
+ CSIDL_COMMON_MUSIC = $0035; { %PROFILEPATH%\All Users\Documents\my music }
+ CSIDL_COMMON_PICTURES = $0036; { %PROFILEPATH%\All Users\Documents\my pictures }
+ CSIDL_COMMON_VIDEO = $0037; { %PROFILEPATH%\All Users\Documents\my videos }
+ CSIDL_CDBURN_AREA = $003B; { %USERPROFILE%\Local Settings\Application Data\Microsoft\CD Burning }
+ CSIDL_PROFILES = $003E; { %PROFILEPATH% }
+
+ CSIDL_FLAG_CREATE = $8000; { (force creation of requested folder if it doesn't exist yet) }
+
+Function GetWindowsSpecialDir(ID : Integer) : String;
+
+implementation
+
+uses
+ sysutils;
+
+Type
+ PFNSHGetFolderPath = Function(Ahwnd: HWND; Csidl: Integer; Token: THandle; Flags: DWord; Path: PChar): HRESULT; stdcall;
+
+
+var
+ SHGetFolderPath : PFNSHGetFolderPath = Nil;
+ CFGDLLHandle : THandle = 0;
+
+Procedure InitDLL;
+
+Var
+ pathBuf: array[0..MAX_PATH-1] of char;
+ pathLength: Integer;
+begin
+ { Load shfolder.dll using a full path, in order to prevent spoofing (Mantis #18185)
+ Don't bother loading shell32.dll because shfolder.dll itself redirects SHGetFolderPath
+ to shell32.dll whenever possible. }
+ pathLength:=GetSystemDirectory(pathBuf, MAX_PATH);
+ if (pathLength>0) and (pathLength<MAX_PATH-14) then { 14=length('\shfolder.dll'#0) }
+ begin
+ StrLCopy(@pathBuf[pathLength],'\shfolder.dll',MAX_PATH-pathLength-1);
+ CFGDLLHandle:=LoadLibrary(pathBuf);
+
+ if (CFGDLLHandle<>0) then
+ begin
+ Pointer(ShGetFolderPath):=GetProcAddress(CFGDLLHandle,'SHGetFolderPathA');
+ If @ShGetFolderPath=nil then
+ begin
+ FreeLibrary(CFGDLLHandle);
+ CFGDllHandle:=0;
+ end;
+ end;
+ end;
+ If (@ShGetFolderPath=Nil) then
+ Raise Exception.Create('Could not determine SHGetFolderPath Function');
+end;
+
+Function GetWindowsSpecialDir(ID : Integer) : String;
+
+Var
+ APath : Array[0..MAX_PATH] of char;
+
+begin
+ Result:='';
+ if (CFGDLLHandle=0) then
+ InitDLL;
+ If (SHGetFolderPath<>Nil) then
+ begin
+ if SHGetFolderPath(0,ID or CSIDL_FLAG_CREATE,0,0,@APATH[0])=S_OK then
+ Result:=IncludeTrailingPathDelimiter(StrPas(@APath[0]));
+ end;
+end;
+
+Initialization
+Finalization
+ if CFGDLLHandle<>0 then
+ FreeLibrary(CFGDllHandle);
+end.
+
diff --git a/rtl/win/wininc/func.inc b/rtl/win/wininc/func.inc
index 9e3c24fa80..b9f90a286f 100644
--- a/rtl/win/wininc/func.inc
+++ b/rtl/win/wininc/func.inc
@@ -134,7 +134,7 @@ function GetExitCodeThread(hThread:HANDLE; lpExitCode:LPDWORD):WINBOOL; external
function GetThreadSelectorEntry(hThread:HANDLE; dwSelector:DWORD; lpSelectorEntry:LPLDT_ENTRY):WINBOOL; external 'kernel32' name 'GetThreadSelectorEntry';
function GetLastError:DWORD; external 'kernel32' name 'GetLastError';
procedure SetLastError(dwErrCode:DWORD); external 'kernel32' name 'SetLastError';
-function CreateIoCompletionPort(FileHandle:HANDLE; ExistingCompletionPort:HANDLE; CompletionKey:DWORD; NumberOfConcurrentThreads:DWORD):HANDLE; external 'kernel32' name 'CreateIoCompletionPort';
+function CreateIoCompletionPort(FileHandle:HANDLE; ExistingCompletionPort:HANDLE; CompletionKey:ULONG_PTR; NumberOfConcurrentThreads:DWORD):HANDLE; external 'kernel32' name 'CreateIoCompletionPort';
function SetErrorMode(uMode:UINT):UINT; external 'kernel32' name 'SetErrorMode';
function ReadProcessMemory(hProcess:HANDLE; lpBaseAddress:LPCVOID; lpBuffer:LPVOID; nSize:DWORD; lpNumberOfBytesRead:LPDWORD):WINBOOL; external 'kernel32' name 'ReadProcessMemory';
function WriteProcessMemory(hProcess:HANDLE; lpBaseAddress:LPVOID; lpBuffer:LPVOID; nSize:DWORD; lpNumberOfBytesWritten:LPDWORD):WINBOOL; external 'kernel32' name 'WriteProcessMemory';
diff --git a/rtl/win/wininc/messages.inc b/rtl/win/wininc/messages.inc
index 42ee3c65b9..6f48a6ac43 100644
--- a/rtl/win/wininc/messages.inc
+++ b/rtl/win/wininc/messages.inc
@@ -1287,11 +1287,12 @@
TWMQueryDragIcon = Windows.TWMQueryDragIcon;
TWMTimeChange = Windows.TWMTimeChange;
TWMUndo = Windows.TWMUndo;
+ TWMWindowPosChanged = TWMWindowPosMsg;
+ TWMWindowPosChanging= TWMWindowPosMsg;
TWMPaste = Windows.TWMPaste;
- TWMCut = Windows.TWMCut;
- TWMCopy = Windows.TWMCopy;
-
+ TWMCut = Windows.TWMCut;
+ TWMCopy = Windows.TWMCopy;
{$else}
{$ifdef cpu64}
@@ -1426,7 +1427,7 @@
FocusedWnd : HWND;
UnUsed : WPARAM;
Result : LRESULT;
- End;
+ end;
TWMSetCursor = record
Msg : UINT;
diff --git a/rtl/win/wininc/redef.inc b/rtl/win/wininc/redef.inc
index 943669c0de..e7a6289143 100644
--- a/rtl/win/wininc/redef.inc
+++ b/rtl/win/wininc/redef.inc
@@ -586,7 +586,7 @@ function GetProcessPriorityBoost(hThread: THandle; var DisablePriorityBoost: Boo
function GetProcessShutdownParameters(var lpdwLevel, lpdwFlags: DWORD): BOOL; external 'kernel32' name 'GetProcessShutdownParameters';
function GetProcessTimes(hProcess: THandle; var lpCreationTime, lpExitTime, lpKernelTime, lpUserTime: TFileTime): BOOL; external 'kernel32' name 'GetProcessTimes';
function GetProcessWorkingSetSize(hProcess: THandle; var lpMinimumWorkingSetSize, lpMaximumWorkingSetSize: DWORD): BOOL; external 'kernel32' name 'GetProcessWorkingSetSize';
-function GetQueuedCompletionStatus(CompletionPort: THandle; var lpNumberOfBytesTransferred, lpCompletionKey: DWORD; var lpOverlapped: POverlapped; dwMilliseconds: DWORD): BOOL; external 'kernel32' name 'GetQueuedCompletionStatus';
+function GetQueuedCompletionStatus(CompletionPort: THandle; var lpNumberOfBytesTransferred: DWORD; var lpCompletionKey: ULONG_PTR; var lpOverlapped: POverlapped; dwMilliseconds: DWORD): BOOL; external 'kernel32' name 'GetQueuedCompletionStatus';
function PostQueuedCompletionStatus(CompletionPort: THandle; NumberOfBytesTransferred:dword; dwCompletionKey: ULONG_PTR; lpOverlapped: POverlapped): BOOL; external 'kernel32' name 'PostQueuedCompletionStatus';
function GetRasterizerCaps(var p1: TRasterizerStatus; p2: UINT): BOOL; external 'gdi32' name 'GetRasterizerCaps';
function GetRgnBox(RGN: HRGN; var p2: TRect): Integer; external 'gdi32' name 'GetRgnBox';
diff --git a/rtl/win/wininc/struct.inc b/rtl/win/wininc/struct.inc
index 9bb065be53..df8e183d37 100644
--- a/rtl/win/wininc/struct.inc
+++ b/rtl/win/wininc/struct.inc
@@ -5052,8 +5052,8 @@ Const
POSVERSIONINFOW = ^OSVERSIONINFOW;
-
-
+ {$push}
+ {$packrecords 4}
TEXTMETRIC = record
tmHeight : LONG;
@@ -5113,9 +5113,9 @@ Const
tagTEXTMETRICW = TEXTMETRICW;
TTEXTMETRICW = TEXTMETRICW;
PTEXTMETRICW = ^TEXTMETRICW;
+ {$PACKRECORDS C}
-
- OUTLINETEXTMETRIC = record
+ OUTLINETEXTMETRICA = record
otmSize : UINT;
otmTextMetrics : TEXTMETRIC;
otmFiller : BYTE;
@@ -5149,11 +5149,64 @@ Const
otmpStyleName : PSTR;
otmpFullName : PSTR;
end;
- LPOUTLINETEXTMETRIC = ^OUTLINETEXTMETRIC;
- _OUTLINETEXTMETRIC = OUTLINETEXTMETRIC;
- TOUTLINETEXTMETRIC = OUTLINETEXTMETRIC;
- POUTLINETEXTMETRIC = ^OUTLINETEXTMETRIC;
+ LPOUTLINETEXTMETRICA = ^OUTLINETEXTMETRICA;
+ _OUTLINETEXTMETRICA = OUTLINETEXTMETRICA;
+ TOUTLINETEXTMETRICA = OUTLINETEXTMETRICA;
+ POUTLINETEXTMETRICA = ^OUTLINETEXTMETRICA;
+ OUTLINETEXTMETRICW = record
+ otmSize : UINT;
+ otmTextMetrics : TEXTMETRICW;
+ otmFiller : BYTE;
+ otmPanoseNumber : PANOSE;
+ otmfsSelection : UINT;
+ otmfsType : UINT;
+ otmsCharSlopeRise : longint;
+ otmsCharSlopeRun : longint;
+ otmItalicAngle : longint;
+ otmEMSquare : UINT;
+ otmAscent : longint;
+ otmDescent : longint;
+ otmLineGap : UINT;
+ otmsCapEmHeight : UINT;
+ otmsXHeight : UINT;
+ otmrcFontBox : RECT;
+ otmMacAscent : longint;
+ otmMacDescent : longint;
+ otmMacLineGap : UINT;
+ otmusMinimumPPEM : UINT;
+ otmptSubscriptSize : POINT;
+ otmptSubscriptOffset : POINT;
+ otmptSuperscriptSize : POINT;
+ otmptSuperscriptOffset : POINT;
+ otmsStrikeoutSize : UINT;
+ otmsStrikeoutPosition : longint;
+ otmsUnderscoreSize : longint;
+ otmsUnderscorePosition : longint;
+ otmpFamilyName : PSTR;
+ otmpFaceName : PSTR;
+ otmpStyleName : PSTR;
+ otmpFullName : PSTR;
+ end;
+ LPOUTLINETEXTMETRICW = ^OUTLINETEXTMETRICW;
+ _OUTLINETEXTMETRICW = OUTLINETEXTMETRICW;
+ TOUTLINETEXTMETRICW = OUTLINETEXTMETRICW;
+ POUTLINETEXTMETRICW = ^OUTLINETEXTMETRICW;
+
+ {$ifdef Unicode}
+ LPOUTLINETEXTMETRIC = ^OUTLINETEXTMETRICW;
+ _OUTLINETEXTMETRIC = OUTLINETEXTMETRICW;
+ TOUTLINETEXTMETRIC = OUTLINETEXTMETRICW;
+ POUTLINETEXTMETRIC = ^OUTLINETEXTMETRICW;
+ OUTLINETEXTMETRIC = OUTLINETEXTMETRICW;
+ {$else}
+ LPOUTLINETEXTMETRIC = ^OUTLINETEXTMETRICA;
+ _OUTLINETEXTMETRIC = OUTLINETEXTMETRICA;
+ TOUTLINETEXTMETRIC = OUTLINETEXTMETRICA;
+ POUTLINETEXTMETRIC = ^OUTLINETEXTMETRICA;
+ OUTLINETEXTMETRIC = OUTLINETEXTMETRICA;
+ {$endif}
+ {$POP}
OVERLAPPED = record
Internal : ULONG_PTR;
InternalHigh : ULONG_PTR;
@@ -7570,15 +7623,15 @@ type
//#endif /* WINVER >= 0x0500 */
-// Menubar information
+// Menubar information
type
tagMENUBARINFO = packed record
cbSize:DWORD;
- rcBar:Windows.RECT; // rect of bar, popup, item
- _hmenu:HMENU; // real menu handle of bar, popup
- hwndMenu:HWND; // hwnd of item submenu if one
-// fBarFocused:1:BOOL; // bar, popup has the focus
-// fFocused:1:BOOL; // item has the focus
+ rcBar:Windows.RECT; // rect of bar, popup, item
+ _hmenu:HMENU; // real menu handle of bar, popup
+ hwndMenu:HWND; // hwnd of item submenu if one
+// fBarFocused:1:BOOL; // bar, popup has the focus
+// fFocused:1:BOOL; // item has the focus
FocusedBits:DWORD;
end;
MENUBARINFO = tagMENUBARINFO;
diff --git a/rtl/win32/Makefile b/rtl/win32/Makefile
index 88dc96b911..7317a4e954 100644
--- a/rtl/win32/Makefile
+++ b/rtl/win32/Makefile
@@ -1,5 +1,5 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/09/29]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/02/17]
#
default: all
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
@@ -470,190 +470,190 @@ ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_UNITS+=system objpas macpas iso7185 buildrtl lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof ctypes strings heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo fgl classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem exeinfo fpintres windirs
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=$(LOADERS)
diff --git a/rtl/win32/Makefile.fpc b/rtl/win32/Makefile.fpc
index c97237cbae..6d4555de37 100644
--- a/rtl/win32/Makefile.fpc
+++ b/rtl/win32/Makefile.fpc
@@ -18,7 +18,7 @@ implicitunits=sysinitpas sysinitcyg sysinitgprof \
convutils stdconvs cpu mmx charset ucomplex getopts \
winevent sockets printer \
video mouse keyboard fmtbcd \
- winsysut sharemem exeinfo fpintres
+ winsysut sharemem exeinfo fpintres windirs
# shared=$(DLLS)
diff --git a/rtl/win32/buildrtl.pp b/rtl/win32/buildrtl.pp
index f9f4353284..4022af297c 100644
--- a/rtl/win32/buildrtl.pp
+++ b/rtl/win32/buildrtl.pp
@@ -13,7 +13,7 @@ unit buildrtl;
convutils, stdconvs, cpu, mmx, charset, ucomplex, getopts,
winevent, sockets, printer,
video, mouse, keyboard, fmtbcd,
- winsysut, sharemem, fpintres;
+ winsysut, sharemem, fpintres, windirs;
implementation
diff --git a/rtl/win32/system.pp b/rtl/win32/system.pp
index 8233cb8bdd..bb81f661c8 100644
--- a/rtl/win32/system.pp
+++ b/rtl/win32/system.pp
@@ -846,18 +846,6 @@ function CharLowerBuff(lpsz:LPWSTR; cchLength:DWORD):DWORD;
Widestring
******************************************************************************}
-procedure Win32Wide2AnsiMove(source:pwidechar;var dest:ansistring;len:SizeInt);
- var
- destlen: SizeInt;
- begin
- // retrieve length including trailing #0
- // not anymore, because this must also be usable for single characters
- destlen:=WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, source, len, nil, 0, nil, nil);
- // this will null-terminate
- setlength(dest, destlen);
- WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, source, len, @dest[1], destlen, nil, nil);
- end;
-
procedure Win32Ansi2WideMove(source:pchar;var dest:widestring;len:SizeInt);
var
destlen: SizeInt;
diff --git a/rtl/win64/Makefile b/rtl/win64/Makefile
index f34c3a5bbd..cca689055d 100644
--- a/rtl/win64/Makefile
+++ b/rtl/win64/Makefile
@@ -1,5 +1,5 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/11/01]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/02/17]
#
default: all
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
@@ -466,190 +466,190 @@ ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_UNITS+=system objpas macpas iso7185 buildrtl lineinfo lnfodwrf
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres cpu signals
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc matrix dos crt objects messages windows winsock winsock2 cmem dynlibs rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo fgl classes getopts stdconvs sockets printer charset ucomplex fmtbcd winevent video mouse keyboard sharemem exeinfo fpintres windirs cpu signals
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=$(LOADERS)
diff --git a/rtl/win64/Makefile.fpc b/rtl/win64/Makefile.fpc
index 03d8ad9c75..bcc4978e63 100644
--- a/rtl/win64/Makefile.fpc
+++ b/rtl/win64/Makefile.fpc
@@ -17,7 +17,7 @@ implicitunits=ctypes strings \
varutils variants typinfo fgl classes getopts \
stdconvs sockets printer charset ucomplex fmtbcd \
winevent video mouse keyboard \
- sharemem exeinfo fpintres \
+ sharemem exeinfo fpintres windirs \
cpu signals
# mmx
# fpcmemdll
diff --git a/rtl/win64/buildrtl.pp b/rtl/win64/buildrtl.pp
index e765431fcd..ca09e0f1cd 100644
--- a/rtl/win64/buildrtl.pp
+++ b/rtl/win64/buildrtl.pp
@@ -12,7 +12,7 @@ unit buildrtl;
convutils, stdconvs, charset, ucomplex, getopts,
winevent, sockets, printer,
video, mouse, keyboard, fmtbcd,
- sharemem, fpintres,
+ sharemem, fpintres, windirs,
cpu, signals;
implementation
diff --git a/rtl/win64/system.pp b/rtl/win64/system.pp
index 5cbbac549b..f2ebcad149 100644
--- a/rtl/win64/system.pp
+++ b/rtl/win64/system.pp
@@ -903,18 +903,6 @@ function CharLowerBuff(lpsz:LPWSTR; cchLength:DWORD):DWORD;
stdcall; external 'user32' name 'CharLowerBuffW';
-procedure Win32Wide2AnsiMove(source:pwidechar;var dest:ansistring;len:SizeInt);
- var
- destlen: SizeInt;
- begin
- // retrieve length including trailing #0
- // not anymore, because this must also be usable for single characters
- destlen:=WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, source, len, nil, 0, nil, nil);
- // this will null-terminate
- setlength(dest, destlen);
- WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, source, len, @dest[1], destlen, nil, nil);
- end;
-
procedure Win32Ansi2WideMove(source:pchar;var dest:widestring;len:SizeInt);
var
destlen: SizeInt;
diff --git a/rtl/x86_64/cpu.pp b/rtl/x86_64/cpu.pp
index 1b38cc4e3b..e6f6c5f1fe 100644
--- a/rtl/x86_64/cpu.pp
+++ b/rtl/x86_64/cpu.pp
@@ -18,15 +18,25 @@ unit cpu;
interface
+ {$ifdef freebsd} // FreeBSD 7/8 have binutils version that don't support cmpxchg16b
+ // Unless overridebinutils is defined (for ports usage), use db instead of the instruction
+ {$ifndef overridebinutils}
+ {$define oldbinutils}
+ {$endif}
+ {$endif}
+
uses
sysutils;
function InterlockedCompareExchange128Support : boolean;inline;
+ function AESSupport : boolean;inline;
+
function InterlockedCompareExchange128(var Target: Int128Rec; NewValue: Int128Rec; Comperand: Int128Rec): Int128Rec;
implementation
var
+ _AESSupport,
_InterlockedCompareExchange128Support : boolean;
function InterlockedCompareExchange128Support : boolean;inline;
@@ -34,6 +44,11 @@ unit cpu;
result:=_InterlockedCompareExchange128Support;
end;
+ function AESSupport : boolean;inline;
+ begin
+ result:=_AESSupport;
+ end;
+
function InterlockedCompareExchange128(var Target: Int128Rec; NewValue: Int128Rec; Comperand: Int128Rec): Int128Rec; assembler;
{
@@ -43,6 +58,7 @@ unit cpu;
r8 ... NewValue
r9 ... Comperand
}
+ {$ifdef win64}
asm
pushq %rbx
@@ -60,8 +76,11 @@ unit cpu;
movq (%r9),%rax
movq 8(%r9),%rdx
+ {$ifdef oldbinutils}
+ .byte 0xF0,0x49,0x0F,0xC7,0x08
+ {$else}
lock cmpxchg16b (%r8)
-
+ {$endif}
{ restore result pointer }
popq %rcx
@@ -71,7 +90,30 @@ unit cpu;
popq %rbx
end;
+ {$else win64}
+ {
+ linux:
+ rdi ... target
+ [rsi:rdx] ... NewValue
+ [rcx:r8] ... Comperand
+ [rdx:rax] ... result
+ }
+ asm
+ pushq %rbx
+
+ movq %rsi,%rbx // new value low
+ movq %rcx,%rax // comperand low
+ movq %rdx,%rcx // new value high
+ movq %r8,%rdx // comperand high
+ {$ifdef oldbinutils}
+ .byte 0xF0,0x48,0x0F,0xC7,0x0F
+ {$else}
+ lock cmpxchg16b (%rdi)
+ {$endif}
+ popq %rbx
+ end;
+ {$endif win64}
procedure SetupSupport;
var
@@ -85,6 +127,7 @@ unit cpu;
popq %rbx
end;
_InterlockedCompareExchange128Support:=(_ecx and $2000)<>0;
+ _AESSupport:=(_ecx and $2000000)<>0;
end;
diff --git a/rtl/x86_64/x86_64.inc b/rtl/x86_64/x86_64.inc
index 58c86ee6a3..5de65d2d23 100644
--- a/rtl/x86_64/x86_64.inc
+++ b/rtl/x86_64/x86_64.inc
@@ -72,183 +72,542 @@ asm
.Lg_a_null:
end ['RAX'];
-(*
+{$ifndef FPC_SYSTEM_HAS_MOVE}
{$define FPC_SYSTEM_HAS_MOVE}
-procedure Move(const source;var dest;count:longint);[public, alias: 'FPC_MOVE'];assembler;
- asm
- { rdi destination
- rsi source
- rdx count
- }
- pushq %rbx
- prefetcht0 (%rsi) // for more hopefully the hw prefetch will kick in
- movq %rdi,%rax
-
- movl %edi,%ecx
- andl $7,%ecx
- jnz .Lbad_alignment
-.Lafter_bad_alignment:
- movq %rdx,%rcx
- movl $64,%ebx
- shrq $6,%rcx
- jz .Lhandle_tail
-
-.Lloop_64:
- { no prefetch because we assume the hw prefetcher does it already
- and we have no specific temporal hint to give. XXX or give a nta
- hint for the source? }
- movq (%rsi),%r11
- movq 8(%rsi),%r8
- movq 2*8(%rsi),%r9
- movq 3*8(%rsi),%r10
- movnti %r11,(%rdi)
- movnti %r8,1*8(%rdi)
- movnti %r9,2*8(%rdi)
- movnti %r10,3*8(%rdi)
-
- movq 4*8(%rsi),%r11
- movq 5*8(%rsi),%r8
- movq 6*8(%rsi),%r9
- movq 7*8(%rsi),%r10
- movnti %r11,4*8(%rdi)
- movnti %r8,5*8(%rdi)
- movnti %r9,6*8(%rdi)
- movnti %r10,7*8(%rdi)
-
- addq %rbx,%rsi
- addq %rbx,%rdi
- loop .Lloop_64
-
-.Lhandle_tail:
- movl %edx,%ecx
- andl $63,%ecx
- shrl $3,%ecx
- jz .Lhandle_7
- movl $8,%ebx
-.Lloop_8:
- movq (%rsi),%r8
- movnti %r8,(%rdi)
- addq %rbx,%rdi
- addq %rbx,%rsi
- loop .Lloop_8
-
-.Lhandle_7:
- movl %edx,%ecx
- andl $7,%ecx
- jz .Lende
-.Lloop_1:
- movb (%rsi),%r8b
- movb %r8b,(%rdi)
- incq %rdi
- incq %rsi
- loop .Lloop_1
-
- jmp .Lende
-
- { align destination }
- { This is simpleminded. For bigger blocks it may make sense to align
- src and dst to their aligned subset and handle the rest separately }
-.Lbad_alignment:
- movl $8,%r9d
- subl %ecx,%r9d
- movl %r9d,%ecx
- subq %r9,%rdx
- js .Lsmall_alignment
- jz .Lsmall_alignment
-.Lalign_1:
- movb (%rsi),%r8b
- movb %r8b,(%rdi)
- incq %rdi
- incq %rsi
- loop .Lalign_1
- jmp .Lafter_bad_alignment
-.Lsmall_alignment:
- addq %r9,%rdx
- jmp .Lhandle_7
-
-.Lende:
- sfence
- popq %rbx
- end;
-*)
+procedure Move(const source;var dest;count:SizeInt);[public, alias: 'FPC_MOVE'];assembler;nostackframe;
+{ Linux: rdi source, rsi dest, rdx count
+ win64: rcx source, rdx dest, r8 count }
+asm
+{$ifndef win64}
+ mov %rdx, %r8
+ mov %rsi, %rdx
+ mov %rdi, %rcx
+{$endif win64}
-(*
+ mov %r8, %rax
+ sub %rdx, %rcx { rcx = src - dest }
+ jz .Lquit { exit if src=dest }
+ jnb .L1 { src>dest => forward move }
+
+ add %rcx, %rax { rcx is negative => r8+rcx > 0 if regions overlap }
+ jb .Lback { if no overlap, still do forward move }
+
+.L1:
+ cmp $8, %r8
+ jl .Lless8f { signed compare, negative count not allowed }
+ test $7, %dl
+ je .Ldestaligned
+
+ test $1, %dl { align dest by moving first 1+2+4 bytes }
+ je .L2f
+ mov (%rcx,%rdx,1),%al
+ dec %r8
+ mov %al, (%rdx)
+ add $1, %rdx
+.L2f:
+ test $2, %dl
+ je .L4f
+ mov (%rcx,%rdx,1),%ax
+ sub $2, %r8
+ mov %ax, (%rdx)
+ add $2, %rdx
+.L4f:
+ test $4, %dl
+ je .Ldestaligned
+ mov (%rcx,%rdx,1),%eax
+ sub $4, %r8
+ mov %eax, (%rdx)
+ add $4, %rdx
+
+.Ldestaligned:
+ mov %r8, %r9
+ shr $5, %r9
+ jne .Lmore32
+
+.Ltail:
+ mov %r8, %r9
+ shr $3, %r9
+ je .Lless8f
+
+ .balign 16
+.Lloop8f: { max. 8 iterations }
+ mov (%rcx,%rdx,1),%rax
+ mov %rax, (%rdx)
+ add $8, %rdx
+ dec %r9
+ jne .Lloop8f
+ and $7, %r8
+
+.Lless8f:
+ test %r8, %r8
+ jle .Lquit
+
+ .balign 16
+.Lloop1f:
+ mov (%rcx,%rdx,1),%al
+ mov %al,(%rdx)
+ inc %rdx
+ dec %r8
+ jne .Lloop1f
+.Lquit:
+ retq
+
+
+.Lmore32:
+ cmp $0x2000, %r9 { this limit must be processor-specific (1/2 L2 cache size) }
+ jnae .Lloop32
+ cmp $0x1000, %rcx { but don't bother bypassing cache if src and dest }
+ jnb .Lntloopf { are close to each other}
+
+ .balign 16
+.Lloop32:
+ add $32,%rdx
+ mov -32(%rcx,%rdx,1),%rax
+ mov -24(%rcx,%rdx,1),%r10
+ mov %rax,-32(%rdx)
+ mov %r10,-24(%rdx)
+ dec %r9
+ mov -16(%rcx,%rdx,1),%rax
+ mov -8(%rcx,%rdx,1),%r10
+ mov %rax,-16(%rdx)
+ mov %r10,-8(%rdx)
+ jne .Lloop32
+
+ and $0x1f, %r8
+ jmpq .Ltail
+
+.Lntloopf:
+ mov $32, %eax
+
+ .balign 16
+.Lpref:
+ prefetchnta (%rcx,%rdx,1)
+ prefetchnta 0x40(%rcx,%rdx,1)
+ add $0x80, %rdx
+ dec %eax
+ jne .Lpref
+
+ sub $0x1000, %rdx
+ mov $64, %eax
+
+ .balign 16
+.Loop64:
+ add $64, %rdx
+ mov -64(%rcx,%rdx,1), %r9
+ mov -56(%rcx,%rdx,1), %r10
+ movnti %r9, -64(%rdx)
+ movnti %r10, -56(%rdx)
+
+ mov -48(%rcx,%rdx,1), %r9
+ mov -40(%rcx,%rdx,1), %r10
+ movnti %r9, -48(%rdx)
+ movnti %r10, -40(%rdx)
+ dec %eax
+ mov -32(%rcx,%rdx,1), %r9
+ mov -24(%rcx,%rdx,1), %r10
+ movnti %r9, -32(%rdx)
+ movnti %r10, -24(%rdx)
+
+ mov -16(%rcx,%rdx,1), %r9
+ mov -8(%rcx,%rdx,1), %r10
+ movnti %r9, -16(%rdx)
+ movnti %r10, -8(%rdx)
+ jne .Loop64
+
+ sub $0x1000, %r8
+ cmp $0x1000, %r8
+ jae .Lntloopf
+
+ mfence
+ jmpq .Ldestaligned { go handle remaining bytes }
+
+{ backwards move }
+.Lback:
+ add %r8, %rdx { points to the end of dest }
+ cmp $8, %r8
+ jl .Lless8b { signed compare, negative count not allowed }
+ test $7, %dl
+ je .Ldestalignedb
+ test $1, %dl
+ je .L2b
+ dec %rdx
+ mov (%rcx,%rdx,1), %al
+ dec %r8
+ mov %al, (%rdx)
+.L2b:
+ test $2, %dl
+ je .L4b
+ sub $2, %rdx
+ mov (%rcx,%rdx,1), %ax
+ sub $2, %r8
+ mov %ax, (%rdx)
+.L4b:
+ test $4, %dl
+ je .Ldestalignedb
+ sub $4, %rdx
+ mov (%rcx,%rdx,1), %eax
+ sub $4, %r8
+ mov %eax, (%rdx)
+
+.Ldestalignedb:
+ mov %r8, %r9
+ shr $5, %r9
+ jne .Lmore32b
+
+.Ltailb:
+ mov %r8, %r9
+ shr $3, %r9
+ je .Lless8b
+
+.Lloop8b:
+ sub $8, %rdx
+ mov (%rcx,%rdx,1), %rax
+ dec %r9
+ mov %rax, (%rdx)
+ jne .Lloop8b
+ and $7, %r8
+
+.Lless8b:
+ test %r8, %r8
+ jle .Lquit2
+
+ .balign 16
+.Lsmallb:
+ dec %rdx
+ mov (%rcx,%rdx,1), %al
+ dec %r8
+ mov %al,(%rdx)
+ jnz .Lsmallb
+.Lquit2:
+ retq
+
+.Lmore32b:
+ cmp $0x2000, %r9
+ jnae .Lloop32b
+ cmp $0xfffffffffffff000,%rcx
+ jb .Lntloopb
+
+ .balign 16
+.Lloop32b:
+ sub $32, %rdx
+ mov 24(%rcx,%rdx,1), %rax
+ mov 16(%rcx,%rdx,1), %r10
+ mov %rax, 24(%rdx)
+ mov %r10, 16(%rdx)
+ dec %r9
+ mov 8(%rcx,%rdx,1),%rax
+ mov (%rcx,%rdx,1), %r10
+ mov %rax, 8(%rdx)
+ mov %r10, (%rdx)
+ jne .Lloop32b
+ and $0x1f, %r8
+ jmpq .Ltailb
+
+
+.Lntloopb:
+ mov $32, %eax
+
+ .balign 16
+.Lprefb:
+ sub $0x80, %rdx
+ prefetchnta (%rcx,%rdx,1)
+ prefetchnta 0x40(%rcx,%rdx,1)
+ dec %eax
+ jnz .Lprefb
+
+ add $0x1000, %rdx
+ mov $0x40, %eax
+
+ .balign 16
+.Lloop64b:
+ sub $64, %rdx
+ mov 56(%rcx,%rdx,1), %r9
+ mov 48(%rcx,%rdx,1), %r10
+ movnti %r9, 56(%rdx)
+ movnti %r10, 48(%rdx)
+
+ mov 40(%rcx,%rdx,1), %r9
+ mov 32(%rcx,%rdx,1), %r10
+ movnti %r9, 40(%rdx)
+ movnti %r10, 32(%rdx)
+ dec %eax
+ mov 24(%rcx,%rdx,1), %r9
+ mov 16(%rcx,%rdx,1), %r10
+ movnti %r9, 24(%rdx)
+ movnti %r10, 16(%rdx)
+
+ mov 8(%rcx,%rdx,1), %r9
+ mov (%rcx,%rdx,1), %r10
+ movnti %r9, 8(%rdx)
+ movnti %r10, (%rdx)
+ jne .Lloop64b
+
+ sub $0x1000, %r8
+ cmp $0x1000, %r8
+ jae .Lntloopb
+ mfence
+ jmpq .Ldestalignedb
+end;
+{$endif FPC_SYSTEM_HAS_MOVE}
+
+{$ifndef FPC_SYSTEM_HAS_FILLCHAR}
{$define FPC_SYSTEM_HAS_FILLCHAR}
-Procedure FillChar(var x;count:longint;value:byte);assembler;
+Procedure FillChar(var x;count:SizeInt;value:byte);assembler;nostackframe;
asm
- { rdi destination
- rsi value (char)
- rdx count (bytes)
- }
- movq %rdi,%r10
- movq %rdx,%r11
+{ win64: rcx dest, rdx count, r8b value
+ linux: rdi dest, rsi count, rdx value }
+{$ifndef win64}
+ mov %rdx, %r8
+ mov %rsi, %rdx
+ mov %rdi, %rcx
+{$endif win64}
+
+ cmp $8, %rdx
+ jl .Ltiny
{ expand byte value }
- movzbl %sil,%ecx
- movabs $0x0101010101010101,%rax
- mul %rcx { with rax, clobbers rdx }
-
- { align dst }
- movl %edi,%r9d
- andl $7,%r9d
- jnz .Lbad_alignment
-.Lafter_bad_alignment:
-
- movq %r11,%rcx
- movl $64,%r8d
- shrq $6,%rcx
- jz .Lhandle_tail
-
-.Lloop_64:
- movnti %rax,(%rdi)
- movnti %rax,8(%rdi)
- movnti %rax,16(%rdi)
- movnti %rax,24(%rdi)
- movnti %rax,32(%rdi)
- movnti %rax,40(%rdi)
- movnti %rax,48(%rdi)
- movnti %rax,56(%rdi)
- addq %r8,%rdi
- loop .Lloop_64
-
- { Handle tail in loops. The loops should be faster than hard
- to predict jump tables. }
-.Lhandle_tail:
- movl %r11d,%ecx
- andl $56,%ecx
- jz .Lhandle_7
- shrl $3,%ecx
-.Lloop_8:
- movnti %rax,(%rdi)
- addq $8,%rdi
- loop .Lloop_8
-.Lhandle_7:
- movl %r11d,%ecx
- andl $7,%ecx
- jz .Lende
-.Lloop_1:
- movb %al,(%rdi)
- addq $1,%rdi
- loop .Lloop_1
-
- jmp .Lende
-
-.Lbad_alignment:
- cmpq $7,%r11
- jbe .Lhandle_7
- movnti %rax,(%rdi) (* unaligned store *)
- movq $8,%r8
- subq %r9,%r8
- addq %r8,%rdi
- subq %r8,%r11
- jmp .Lafter_bad_alignment
-
-.Lende:
- movq %r10,%rax
+ movzbl %r8b, %r8
+ mov $0x0101010101010101,%r9
+ imul %r9, %r8
+
+ test $7, %cl
+ je .Laligned
+
+ { align dest to 8 bytes }
+ test $1, %cl
+ je .L2
+ movb %r8b, (%rcx)
+ add $1, %rcx
+ sub $1, %rdx
+.L2:
+ test $2, %cl
+ je .L4
+ movw %r8w, (%rcx)
+ add $2, %rcx
+ sub $2, %rdx
+.L4:
+ test $4, %cl
+ je .Laligned
+ movl %r8d, (%rcx)
+ add $4, %rcx
+ sub $4, %rdx
+
+.Laligned:
+ mov %rdx, %rax
+ and $0x3f, %rdx
+ shr $6, %rax
+ jne .Lmore64
+
+.Lless64:
+ mov %rdx, %rax
+ and $7, %rdx
+ shr $3, %rax
+ je .Ltiny
+
+ .balign 16
+.Lloop8: { max. 8 iterations }
+ mov %r8, (%rcx)
+ add $8, %rcx
+ dec %rax
+ jne .Lloop8
+.Ltiny:
+ test %rdx, %rdx
+ jle .Lquit
+.Lloop1:
+ movb %r8b, (%rcx)
+ inc %rcx
+ dec %rdx
+ jnz .Lloop1
+.Lquit:
+ retq
+
+.Lmore64:
+ cmp $0x2000,%rax
+ jae .Lloop64nti
+
+ .balign 16
+.Lloop64:
+ add $64, %rcx
+ mov %r8, -64(%rcx)
+ mov %r8, -56(%rcx)
+ mov %r8, -48(%rcx)
+ mov %r8, -40(%rcx)
+ dec %rax
+ mov %r8, -32(%rcx)
+ mov %r8, -24(%rcx)
+ mov %r8, -16(%rcx)
+ mov %r8, -8(%rcx)
+ jne .Lloop64
+ jmp .Lless64
+
+ .balign 16
+.Lloop64nti:
+ add $64, %rcx
+ movnti %r8, -64(%rcx)
+ movnti %r8, -56(%rcx)
+ movnti %r8, -48(%rcx)
+ movnti %r8, -40(%rcx)
+ dec %rax
+ movnti %r8, -32(%rcx)
+ movnti %r8, -24(%rcx)
+ movnti %r8, -16(%rcx)
+ movnti %r8, -8(%rcx)
+ jnz .Lloop64nti
+ mfence
+ jmp .Lless64
end;
-*)
+{$endif FPC_SYSTEM_HAS_FILLCHAR}
+
+{$ifndef FPC_SYSTEM_HAS_INDEXBYTE}
+{ based on libc/sysdeps/x86_64/memchr.S }
+{$define FPC_SYSTEM_HAS_INDEXBYTE}
+function IndexByte(Const buf;len:SizeInt;b:byte):SizeInt; assembler; nostackframe;
+{ win64: rcx buf, rdx len, r8b word
+ linux: rdi buf, rsi len, rdx word }
+asm
+{$ifdef win64}
+ movd %r8d, %xmm1
+{$else}
+ movd %edx, %xmm1
+ movq %rdi, %rcx
+ movq %rsi, %rdx
+{$endif}
+ mov %rcx, %rax { duplicate buf }
+ punpcklbw %xmm1, %xmm1
+ and $0xfffffffffffffff0, %rax
+ test %rdx, %rdx
+ punpcklbw %xmm1, %xmm1
+ jz .L3 { exit if len=0 }
+ orl $0xffffffff, %r8d
+ movdqa (%rax), %xmm0 { Fetch first 16 bytes (up to 15 bytes before target) }
+ pshufd $0, %xmm1, %xmm1
+ sub %rax, %rcx { rcx=misalignment }
+ pcmpeqb %xmm1, %xmm0
+ add %rcx, %rdx { add misalignment to length }
+ cmovb %r8, %rdx { if it overflows (happens when length=-1), set back to -1, }
+ { otherwise loop will terminate too early }
+ mov %rcx, %r9 { and save it, will subtract back in the end }
+ shl %cl, %r8d
+ pmovmskb %xmm0, %ecx
+ andl %r8d, %ecx { mask away matches before buffer start }
+ movl $16, %r8d
+ jnz .L1 { got a match within buffer -> we're done (almost) }
+ cmpq %r8, %rdx
+ jbe .L3
+
+ .balign 16
+.L2:
+ movdqa (%rax,%r8), %xmm0
+ lea 16(%r8), %r8
+ pcmpeqb %xmm1, %xmm0
+ pmovmskb %xmm0, %ecx
+ test %ecx, %ecx
+ jnz .L1
+ cmp %r8, %rdx
+ ja .L2
+
+.L3:
+ or $-1, %rax
+ jmp .Ldone
+
+.L1:
+ bsfl %ecx, %ecx { compute position of the first match }
+ lea -16(%rcx,%r8), %rax
+ cmp %rax, %rdx
+ jbe .L3 { if it is after the specified length, ignore it }
+ sub %r9, %rax
+.Ldone:
+end;
+{$endif FPC_SYSTEM_HAS_INDEXBYTE}
+{$ifndef FPC_SYSTEM_HAS_INDEXWORD}
+{$define FPC_SYSTEM_HAS_INDEXWORD}
+function IndexWord(Const buf;len:SizeInt;b:word):SizeInt; assembler; nostackframe;
+{ win64: rcx buf, rdx len, r8b word
+ linux: rdi buf, rsi len, rdx word }
+asm
+{$ifdef win64}
+ movd %r8d, %xmm1
+{$else}
+ movd %edx, %xmm1
+ movq %rdi, %rcx
+ movq %rsi, %rdx
+{$endif}
+ mov %rcx, %rax { duplicate buf }
+ punpcklwd %xmm1, %xmm1
+ and $0xfffffffffffffff0, %rax
+ test %rdx, %rdx
+ pshufd $0, %xmm1, %xmm1
+ jz .L3 { exit if len=0 }
+ orl $0xffffffff, %r8d
+ test $1, %cl { if buffer isn't aligned to word boundary, }
+ jnz .Lunaligned { fallback to slower unaligned loop }
+
+ movdqa (%rax), %xmm0 { Fetch first 16 bytes (up to 14 bytes before target) }
+ sub %rax, %rcx { rcx=misalignment }
+ pcmpeqw %xmm1, %xmm0
+
+ mov %rcx, %r9
+ shr $1, %r9 { save misalignment in words }
+
+ add %r9, %rdx { add misalignment to length }
+ cmovb %r8, %rdx { if it overflows (happens when length=-1), set back to -1, }
+ { otherwise loop will terminate too early }
+ shl %cl, %r8d
+ pmovmskb %xmm0, %ecx
+ andl %r8d, %ecx { mask away matches before buffer start }
+ movl $8, %r8d
+ jnz .L1 { got a match within buffer -> we're done (almost) }
+ cmpq %r8, %rdx
+ jbe .L3
+
+ .balign 16
+.L2:
+ movdqa (%rax,%r8,2), %xmm0
+ lea 8(%r8), %r8
+ pcmpeqw %xmm1, %xmm0
+ pmovmskb %xmm0, %ecx
+ test %ecx, %ecx
+ jnz .L1
+ cmp %r8, %rdx
+ ja .L2
+
+.L3:
+ or $-1, %rax
+ jmp .Ldone
+
+.L1:
+ bsfl %ecx, %ecx { compute position of the first match }
+ shr $1, %ecx { in words }
+ lea -8(%rcx,%r8), %rax
+ cmp %rax, %rdx
+ jbe .L3 { if it is after the specified length, ignore it }
+ sub %r9, %rax
+.Ldone:
+ retq
+
+{ TODO: aligned processing is still possible, but for now
+ use the simplest form }
+.Lunaligned:
+ xor %r9, %r9
+ xor %r8, %r8
+ mov %rcx, %rax
+
+ .balign 16
+.L2u:
+ movdqu (%rax,%r8,2), %xmm0
+ lea 8(%r8), %r8
+ pcmpeqw %xmm1, %xmm0
+ pmovmskb %xmm0, %ecx
+ test %ecx, %ecx
+ jnz .L1
+ cmp %r8, %rdx
+ ja .L2u
+ or $-1, %rax
+end;
+{$endif FPC_SYSTEM_HAS_INDEXWORD}
+{$asmmode att}
{$define FPC_SYSTEM_HAS_DECLOCKED_LONGINT}
{ does a thread save inc/dec }
function declocked(var l : longint) : boolean;assembler;