diff options
| author | florian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2011-04-10 19:20:48 +0000 |
|---|---|---|
| committer | florian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2011-04-10 19:20:48 +0000 |
| commit | 160cc1e115eeb75638dce6effdd16b2bc810ddb4 (patch) | |
| tree | b791a95695a7cf674e61a6153139c6f9c6c491fa /rtl | |
| parent | 3843727e74b31bbf2a34e7e3b89ee422269f770e (diff) | |
| parent | 413a6aa6469e6c297780217a27ca91363c637944 (diff) | |
| download | fpc-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')
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; |
