Selaa lähdekoodia

Merged revisions 8804-8806,8822,8831,8848-8849,8851,8879,8885-8889,8891-8893,8895,8897,8912,8917,8942,8950,8994-8995 via svnmerge from
http://svn.freepascal.org/svn/fpc/trunk

........
r8804 | florian | 2007-10-14 20:33:24 +0200 (Sun, 14 Oct 2007) | 5 lines

o forgotten BeOS patch by Olivier Coursiere:
+ rtl/beos/i386/sighnd.inc
+ packages/base/pthreads/pthrbeos.inc (basically a verbatim copy of the bsd one, just to compile as pthread support is limited under BeOS)
* utils/fppkg/Makefile.fpc
........
r8805 | florian | 2007-10-14 20:36:31 +0200 (Sun, 14 Oct 2007) | 3 lines

o another BeOS Patch by Olivier Coursiere:
* fix a compilation error since a recent change
........
r8806 | florian | 2007-10-14 20:37:00 +0200 (Sun, 14 Oct 2007) | 3 lines

o BeOS patch by Olivier Coursiere:
* reenable creating shared object using the libc based rtl. I have also added gc-sections support.
........
r8994 | florian | 2007-10-29 20:00:32 +0100 (Mon, 29 Oct 2007) | 7 lines

o new BeOS patch by Olivier Coursiere:
* correctly define the stack size for BeOS,
+ implement a minimum nl_langinfo function to correctly initialize WideString support
+ add fgl unit in the BeOS RTL makefile
* SysOSAlloc now return nil when the system can not allocate the asked memory,
* HAS_SYSOSFREE is no more defined with an empty implementation under BeOS. This was preventing FPC to reuse memory.
+ there is now a basic implementation of CheckPointer under BeOS.
........
r8995 | florian | 2007-10-29 22:23:14 +0100 (Mon, 29 Oct 2007) | 1 line

- $Log$ killed
........

git-svn-id: branches/fixes_2_2@9081 -

peter 18 vuotta sitten
vanhempi
commit
106eb72387

+ 2 - 0
.gitattributes

@@ -1468,6 +1468,7 @@ packages/base/pthreads/Makefile svneol=native#text/plain
 packages/base/pthreads/Makefile.fpc svneol=native#text/plain
 packages/base/pthreads/fpmake.inc svneol=native#text/plain
 packages/base/pthreads/fpmake.pp svneol=native#text/plain
+packages/base/pthreads/pthrbeos.inc svneol=native#text/plain
 packages/base/pthreads/pthrbsd.inc svneol=native#text/plain
 packages/base/pthreads/pthreads.pp svneol=native#text/plain
 packages/base/pthreads/pthrlinux.inc svneol=native#text/plain
@@ -4454,6 +4455,7 @@ rtl/beos/i386/dllprt.as svneol=native#text/plain
 rtl/beos/i386/dllprt.cpp -text
 rtl/beos/i386/func.as svneol=native#text/plain
 rtl/beos/i386/prt0.as svneol=native#text/plain
+rtl/beos/i386/sighnd.inc svneol=native#text/plain
 rtl/beos/osmacro.inc svneol=native#text/plain
 rtl/beos/ossysc.inc svneol=native#text/plain
 rtl/beos/ostypes.inc svneol=native#text/plain

+ 11 - 1
compiler/systems/i_beos.pas

@@ -82,7 +82,17 @@ unit i_beos;
                 maxCrecordalign : 4
               );
             first_parm_offset : 8;
-            stacksize    : 8192;
+            { Stack size used to be 256 K under BeOS. So, it was the value 
+              used in previous version of FPC for BeOS (but lost in the road 
+              to 2.* ;-).
+              According to buildtools/gcc/gcc/config/i386/beos-elf.h in the 
+              Haiku's repository, this value was increased to 1Mb since r4.1b3.
+              Under R5, this value is even greater. listarea report a default 
+              size of 16 Mb for the user stack of the main thread.
+              People who still use BeOS nowadays should use R5 (or Haiku), 
+              so i use this new value.  
+            }
+            stacksize    : 16 * 1024 * 1024;
           );
 
   implementation

+ 18 - 5
compiler/systems/t_beos.pas

@@ -279,8 +279,8 @@ begin
      if prtobj<>'' then
       LinkRes.AddFileName(FindObjectFile(prtobj,'',false));
 
-     if isdll then
-      LinkRes.AddFileName(FindObjectFile('func.o','',false));
+//     if isdll then
+//      LinkRes.AddFileName(FindObjectFile('func.o','',false));
 
      if librarysearchpath.FindFile('init_term_dyn.o',false,s) then
       LinkRes.AddFileName(s);
@@ -361,9 +361,10 @@ end;
 function TLinkerBeOS.MakeExecutable:boolean;
 var
   binstr,
-  cmdstr  : TCmdStr;
+  cmdstr : TCmdStr;
   success : boolean;
   DynLinkStr : string[60];
+  GCSectionsStr,
   StaticStr,
   StripStr   : string[40];
 begin
@@ -374,10 +375,16 @@ begin
   StaticStr:='';
   StripStr:='';
   DynLinkStr:='';
+  GCSectionsStr:='';
   if (cs_link_staticflag in current_settings.globalswitches) then
    StaticStr:='-static';
   if (cs_link_strip in current_settings.globalswitches) then
    StripStr:='-s';
+
+  if (cs_link_smart in current_settings.globalswitches) and
+     (tf_smartlink_sections in target_info.flags) then
+      GCSectionsStr:='--gc-sections';
+
   If (cs_profile in current_settings.moduleswitches) or
      ((Info.DynamicLinker<>'') and (not SharedLibFiles.Empty)) then
    begin
@@ -398,6 +405,7 @@ begin
   Replace(cmdstr,'$RES',maybequoted(outputexedir+Info.ResName));
   Replace(cmdstr,'$STATIC',StaticStr);
   Replace(cmdstr,'$STRIP',StripStr);
+  Replace(cmdstr,'$GCSECTIONS',GCSectionsStr);
   Replace(cmdstr,'$DYNLINK',DynLinkStr);
   success:=DoExec(FindUtil(utilsprefix+BinStr),CmdStr,true,true);
 
@@ -412,7 +420,8 @@ end;
 Function TLinkerBeOS.MakeSharedLibrary:boolean;
 var
   binstr,
-  cmdstr  : TCmdStr;
+  cmdstr,
+  SoNameStr : TCmdStr;
   success : boolean;
   DynLinkStr : string[60];
   StaticStr,
@@ -443,14 +452,18 @@ var
 { Write used files and libraries }
   WriteResponseFile(true,true);
 
+  SoNameStr:='-soname '+ExtractFileName(current_module.sharedlibfilename^);
+
 { Call linker }
   SplitBinCmd(Info.DllCmd[1],binstr,cmdstr);
-  Replace(cmdstr,'$EXE',maybequoted(current_module.exefilename^));
+  Replace(cmdstr,'$EXE',maybequoted(current_module.sharedlibfilename^));
   Replace(cmdstr,'$OPT',Info.ExtraOptions);
   Replace(cmdstr,'$RES',maybequoted(outputexedir+Info.ResName));
   Replace(cmdstr,'$STATIC',StaticStr);
   Replace(cmdstr,'$STRIP',StripStr);
   Replace(cmdstr,'$DYNLINK',DynLinkStr);
+  Replace(cmdstr,'$SONAME',SoNameStr);
+
   success:=DoExec(FindUtil(utilsprefix+binstr),cmdstr,true,true);
 
 { Strip the library ? }

+ 357 - 0
packages/base/pthreads/pthrbeos.inc

@@ -0,0 +1,357 @@
+{
+   This file is part of the Free Pascal run time library.
+   Copyright (c) 1999-2000 by Michael Van Canneyt,
+   BSD parts (c) 2000 by Marco van de Voort
+   members of the Free Pascal development team.
+
+   New linux unit. Linux only calls only. Will be renamed to linux.pp
+   when 1.0.x support is killed off.
+
+   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.
+
+**********************************************************************}
+
+{
+  Automatically converted by H2Pas 0.99.15 from pthrwrk2.h
+}
+
+{$linklib pthread}      // The compiler changes this to c_r if needed.
+{$linklib c}            // (parameter -Xf)
+
+{$PACKRECORDS C}
+
+
+  {
+     Copyright (c) 1993, 1994 by Chris Provenzano, [email protected]
+     Copyright (c) 1995-1998 by John Birrell <[email protected]>
+     All rights reserved.
+
+     Redistribution and use in source and binary forms, with or without
+     modification, are permitted provided that the following conditions
+     are met:
+     1. Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+     2. Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+     3. All advertising materials mentioning features or use of this software
+        must display the following acknowledgement:
+      This product includes software developed by Chris Provenzano.
+     4. The name of Chris Provenzano may not be used to endorse or promote
+          products derived from this software without specific prior written
+          permission.
+
+     THIS SOFTWARE IS PROVIDED BY CHRIS PROVENZANO ``AS IS'' AND
+     ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+     IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+     ARE DISCLAIMED.  IN NO EVENT SHALL CHRIS PROVENZANO BE LIABLE FOR ANY
+     DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+     SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+     CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+     LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+     OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+     SUCH DAMAGE.
+
+     $FreeBSD: src/include/pthread.h,v 1.20.2.4 2003/05/27 18:18:01 jdp Exp $
+    }
+
+    {
+     Run-time invariant values:
+    }
+
+
+CONST ULONG_MAX= high(culong);
+
+type
+
+     psize_t   = ^size_t;
+     psigset_t = ^sigset_t;
+
+const
+    PTHREAD_MUTEX_NORMAL     = _PTHREAD_MUTEX_NORMAL;
+    PTHREAD_MUTEX_ERRORCHECK = _PTHREAD_MUTEX_ERRORCHECK;
+    PTHREAD_MUTEX_RECURSIVE  = _PTHREAD_MUTEX_RECURSIVE;
+
+     PTHREAD_MUTEX_DEFAULT    = _PTHREAD_MUTEX_NORMAL;
+     MUTEX_TYPE_FAST          = _PTHREAD_MUTEX_NORMAL;
+     MUTEX_TYPE_COUNTING_FAST = _PTHREAD_MUTEX_RECURSIVE;
+
+
+     PTHREAD_DESTRUCTOR_ITERATIONS = 4;
+     PTHREAD_KEYS_MAX              = _PTHREAD_KEYS_MAX;
+     PTHREAD_STACK_MIN             = _PTHREAD_STACK_MIN;
+     PTHREAD_THREADS_MAX           = ULONG_MAX;
+    {
+     Flags for threads and thread attributes.
+    }
+     PTHREAD_DETACHED              = $1;
+     PTHREAD_SCOPE_SYSTEM          = $2;
+     PTHREAD_INHERIT_SCHED         = $4;
+     PTHREAD_NOFLOAT               = $8;
+     PTHREAD_CREATE_DETACHED       = PTHREAD_DETACHED;
+     PTHREAD_CREATE_JOINABLE       = 0;
+     PTHREAD_SCOPE_PROCESS         = 0;
+     PTHREAD_EXPLICIT_SCHED        = 0;
+
+    {
+     Flags for read/write lock attributes
+    }
+     PTHREAD_PROCESS_PRIVATE       = 0;
+     PTHREAD_PROCESS_SHARED        = 1;
+    {
+     Flags for cancelling threads
+    }
+     PTHREAD_CANCEL_ENABLE         = 0;
+     PTHREAD_CANCEL_DISABLE        = 1;
+     PTHREAD_CANCEL_DEFERRED       = 0;
+     PTHREAD_CANCEL_ASYNCHRONOUS   = 2;
+     PTHREAD_CANCELED              = pointer(1);
+
+  {
+     Forward structure definitions.
+
+     These are mostly opaque to the user.
+    }
+
+  type
+{ from semaphore.h }
+
+     psem_t = ^sem_t;
+     TSemaphore         = sem_t;
+     PSemaphore   = ^TSemaphore;
+
+    {
+     Primitive system data type definitions required by P1003.1c.
+
+     Note that P1003.1c specifies that there are no defined comparison
+     or assignment operators for the types pthread_attr_t, pthread_cond_t,
+     pthread_condattr_t, pthread_mutex_t, pthread_mutexattr_t.
+    }
+
+     TThreadID = pthread_t;
+     PThreadID = ^TThreadID;
+     TThreadAttr = pthread_attr_t;
+     PThreadAttr = ^TThreadAttr;
+     TPthreadMutex = pthread_mutex_t;
+     PTpthreadmutex= ^TPthreadMutex;
+     TMutexAttribute = pthread_mutexattr_t;
+     PMutexAttribute = ^TMutexAttribute;
+     TPthreadCondattr = pthread_condattr_t;
+     PPthreadCondattr = ^TPthreadCondattr;
+
+{added, adjust these if hdr conv went wrong}
+     {from sched.h}
+
+     sched_param =  record
+                      sched_priority : cint;
+                    end;
+
+     {for pthread.h}
+     ppthread_attr_t            = ^pthread_attr_t;
+     ppthread_cond_t            = ^pthread_cond_t;
+     ppthread_condattr_t        = ^pthread_condattr_t;
+     ppthread_mutex_t           = ^pthread_mutex_t;
+     ppthread_t                 = ^pthread_t;
+     ppthread_key_t             = ^pthread_key_t;
+     ppthread_mutexattr_t       = ^pthread_mutexattr_t;
+     ppthread_rwlock_t          = ^pthread_rwlock_t;
+     ppthread_rwlockattr_t      = ^pthread_rwlockattr_t;
+     ppthread_once_t            = ^pthread_once_t;
+     psched_param               = ^sched_param;
+     TSchedParam = sched_param;
+     PSchedParam = ^TSchedParam;
+
+    {
+     Additional type definitions:
+
+     Note that P1003.1c reserves the prefixes pthread_ and PTHREAD_ for
+     use in header symbols.
+    }
+
+     pthread_addr_t             = packed record end;
+     pthread_startroutine_t     = procedure; cdecl;
+
+    {
+     Once definitions.
+    }
+     _pthread_once = record
+          state : cint;
+          mutex : pthread_mutex_t;
+       end;
+
+     pthread_once_t             = _pthread_once;
+
+    {
+     Flags for once initialization.
+    }
+
+  const
+     PTHREAD_NEEDS_INIT         = 0;
+     PTHREAD_DONE_INIT          = 1;
+  {
+     Static once initialization values.
+  }
+
+  { ????
+#define PTHREAD_ONCE_INIT   ( PTHREAD_NEEDS_INIT, NULL )
+  }
+
+
+      {
+        Static initialization values.
+      }
+       PTHREAD_MUTEX_INITIALIZER        = NIL;
+       PTHREAD_COND_INITIALIZER         = NIL;
+       PTHREAD_RWLOCK_INITIALIZER       = NIL;
+    {
+       Default attribute arguments (draft 4, deprecated).
+    }
+
+{$ifndef PTHREAD_KERNEL}
+    const
+       pthread_condattr_default         = NIL;
+       pthread_mutexattr_default        = NIL;
+       pthread_attr_default             = NiL;
+{$endif}
+
+    const
+       PTHREAD_PRIO_NONE                = 0;
+       PTHREAD_PRIO_INHERIT             = 1;
+       PTHREAD_PRIO_PROTECT             = 2;
+
+    {
+       Thread function prototype definitions:
+      }
+
+function pthread_attr_destroy (p : ppthread_attr_t ):cint; cdecl; external;
+
+function pthread_attr_getstack (p : ppthread_attr_t; stackaddr : ppointer;
+                        stacksize : psize_t):cint; cdecl; external;
+
+function pthread_attr_getstacksize(_para1:Ppthread_attr_t; _para2:Psize_t):cint;cdecl; external;
+function pthread_attr_getstackaddr(_para1:Ppthread_attr_t; _para2:Ppointer):cint;cdecl;external;
+function pthread_attr_getdetachstate(_para1:Ppthread_attr_t; _para2:Pcint):cint;cdecl; external;
+function pthread_attr_init(_para1:Ppthread_attr_t):cint;cdecl;external;
+function pthread_attr_setstack(_para1:Ppthread_attr_t; _para2:pointer; _para3:size_t):cint;cdecl;external;
+function pthread_attr_setstacksize(_para1:Ppthread_attr_t; _para2:size_t):cint;cdecl;external;
+function pthread_attr_setstackaddr(_para1:Ppthread_attr_t; _para2:pointer):cint;cdecl;external;
+function pthread_attr_setdetachstate(_para1:Ppthread_attr_t; _para2:cint):cint;cdecl;external;
+procedure pthread_cleanup_pop(_para1:cint);cdecl;external;
+
+type cleanuproutine= function (a:pointer):pointer;cdecl;
+
+procedure pthread_cleanup_push(_para1:cleanuproutine; routine_arg:pointer);cdecl;external;
+function pthread_condattr_destroy(_para1:Ppthread_condattr_t):cint;cdecl;external;
+function pthread_condattr_init(_para1:Ppthread_condattr_t):cint;cdecl;external;
+
+{$ifdef POSIX_THREAD_PROCESS_SHARED}
+function pthread_condattr_getpshared(_para1:Ppthread_condattr_t; _para2:Pcint):cint;cdecl;external;
+function pthread_condattr_setpshared(_para1:Ppthread_condattr_t; _para2:cint):cint;cdecl;external;
+{$endif}
+
+function pthread_cond_broadcast(_para1:Ppthread_cond_t):cint;cdecl;external;
+function pthread_cond_destroy(_para1:Ppthread_cond_t):cint;cdecl;external;
+function pthread_cond_init(_para1:Ppthread_cond_t; _para2:Ppthread_condattr_t):cint;cdecl;external;
+function pthread_cond_signal(_para1:Ppthread_cond_t):cint;cdecl;external;
+function pthread_cond_timedwait(_para1:Ppthread_cond_t; _para2:Ppthread_mutex_t; _para3:Ptimespec):cint;cdecl;external;
+function pthread_cond_wait(_para1:Ppthread_cond_t; _para2:Ppthread_mutex_t):cint;cdecl;external;
+type pthreadcreateroutine = function (p:pointer):pointer; cdecl;
+function pthread_create(_para1:Ppthread_t; _para2:Ppthread_attr_t; _para3:Pthreadcreateroutine; _para4:pointer):cint;cdecl;external;
+function pthread_detach(_para1:pthread_t):cint;cdecl;external;
+function pthread_equal(_para1:pthread_t; _para2:pthread_t):cint;cdecl;external;
+procedure pthread_exit  ( p: pointer); cdecl;external;  { __dead2}
+function pthread_getspecific(_para1:pthread_key_t):pointer;cdecl;external;
+function pthread_join(_para1:pthread_t; _para2:Ppointer):cint;cdecl;external;
+type pthreadkeycreateroutine = function (p:pointer):pointer; cdecl;
+function pthread_key_create(_para1:Ppthread_key_t; _para2:pthreadkeycreateroutine):cint;cdecl;external;
+function pthread_key_delete(_para1:pthread_key_t):cint;cdecl;external;
+function pthread_kill(_para1:pthread_t; _para2:cint):cint;cdecl;external;
+function pthread_mutexattr_init(_para1:Ppthread_mutexattr_t):cint;cdecl;external;
+function pthread_mutexattr_destroy(_para1:Ppthread_mutexattr_t):cint;cdecl;external;
+function pthread_mutexattr_gettype(_para1:Ppthread_mutexattr_t; _para2:Pcint):cint;cdecl;external;
+function pthread_mutexattr_settype(_para1:Ppthread_mutexattr_t; _para2:cint):cint;cdecl;external;
+
+function pthread_mutex_destroy(_para1:Ppthread_mutex_t):cint;cdecl;external;
+function pthread_mutex_init(_para1:Ppthread_mutex_t; _para2:Ppthread_mutexattr_t):cint;cdecl;external;
+function pthread_mutex_lock(_para1:Ppthread_mutex_t):cint;cdecl;external;
+function pthread_mutex_trylock(_para1:Ppthread_mutex_t):cint;cdecl;external;
+function pthread_mutex_unlock(_para1:Ppthread_mutex_t):cint;cdecl;external;
+type pthreadonceroutine = procedure (p:pointer); cdecl;
+function pthread_once(_para1:Ppthread_once_t; _para2:pthreadonceroutine ):cint;cdecl;external;
+function pthread_rwlock_destroy(_para1:Ppthread_rwlock_t):cint;cdecl;external;
+function pthread_rwlock_init(_para1:Ppthread_rwlock_t; _para2:Ppthread_rwlockattr_t):cint;cdecl;external;
+function pthread_rwlock_rdlock(_para1:Ppthread_rwlock_t):cint;cdecl;external;
+function pthread_rwlock_tryrdlock(_para1:Ppthread_rwlock_t):cint;cdecl;external;
+function pthread_rwlock_trywrlock(_para1:Ppthread_rwlock_t):cint;cdecl;external;
+function pthread_rwlock_unlock(_para1:Ppthread_rwlock_t):cint;cdecl;external;
+function pthread_rwlock_wrlock(_para1:Ppthread_rwlock_t):cint;cdecl;external;
+function pthread_rwlockattr_init(_para1:Ppthread_rwlockattr_t):cint;cdecl;external;
+function pthread_rwlockattr_getpshared(_para1:Ppthread_rwlockattr_t; _para2:Pcint):cint;cdecl;external;
+function pthread_rwlockattr_setpshared(_para1:Ppthread_rwlockattr_t; _para2:cint):cint;cdecl;external;
+function pthread_rwlockattr_destroy(_para1:Ppthread_rwlockattr_t):cint;cdecl;external;
+function pthread_self:pthread_t;cdecl;external;
+function pthread_setspecific(_para1:pthread_key_t; _para2:pointer):cint;cdecl;external;
+function pthread_sigmask(_para1:cint; _para2:Psigset_t; _para3:Psigset_t):cint;cdecl;external;
+function pthread_cancel(_para1:pthread_t):cint;cdecl;external;
+function pthread_setcancelstate(_para1:cint; _para2:Pcint):cint;cdecl;external;
+function pthread_setcanceltype(_para1:cint; _para2:Pcint):cint;cdecl;external;
+procedure pthread_testcancel;cdecl;external;
+function pthread_getprio(_para1:pthread_t):cint;cdecl;external;
+function pthread_setprio(_para1:pthread_t; _para2:cint):cint;cdecl;external;
+procedure pthread_yield;cdecl;external;
+
+{$ifdef POSIX_THREAD_PROCESS_SHARED}
+function pthread_mutexattr_getpshared(_para1:Ppthread_mutexattr_t; pshared:Pcint):cint;cdecl;external;
+function pthread_mutexattr_setpshared(_para1:Ppthread_mutexattr_t; pshared:cint):cint;cdecl;external;
+{$endif}
+
+function pthread_mutexattr_getprioceiling(_para1:Ppthread_mutexattr_t; _para2:Pcint):cint;cdecl;external;
+function pthread_mutexattr_setprioceiling(_para1:Ppthread_mutexattr_t; _para2:cint):cint;cdecl;external;
+function pthread_mutex_getprioceiling(_para1:Ppthread_mutex_t; _para2:Pcint):cint;cdecl;external;
+function pthread_mutex_setprioceiling(_para1:Ppthread_mutex_t; _para2:cint; _para3:Pcint):cint;cdecl;external;
+function pthread_mutexattr_getprotocol(_para1:Ppthread_mutexattr_t; _para2:Pcint):cint;cdecl;external;
+function pthread_mutexattr_setprotocol(_para1:Ppthread_mutexattr_t; _para2:cint):cint;cdecl;external;
+function pthread_attr_getinheritsched(_para1:Ppthread_attr_t; _para2:Pcint):cint;cdecl;external;
+function pthread_attr_getschedparam(_para1:Ppthread_attr_t; _para2:Psched_param):cint;cdecl;external;
+function pthread_attr_getschedpolicy(_para1:Ppthread_attr_t; _para2:Pcint):cint;cdecl;external;
+function pthread_attr_getscope(_para1:Ppthread_attr_t; _para2:Pcint):cint;cdecl;external;
+function pthread_attr_setinheritsched(_para1:Ppthread_attr_t; _para2:cint):cint;cdecl;external;
+function pthread_attr_setschedparam(_para1:Ppthread_attr_t; _para2:Psched_param):cint;cdecl;external;
+function pthread_attr_setschedpolicy(_para1:Ppthread_attr_t; _para2:cint):cint;cdecl;external;
+function pthread_attr_setscope(_para1:Ppthread_attr_t; _para2:cint):cint;cdecl;external;
+function pthread_getschedparam(pthread:pthread_t; _para2:Pcint; _para3:Psched_param):cint;cdecl;external;
+function pthread_setschedparam(_para1:pthread_t; _para2:cint; _para3:Psched_param):cint;cdecl;external;
+function pthread_getconcurrency:cint;cdecl;external;
+function pthread_setconcurrency(_para1:cint):cint;cdecl;external;
+function pthread_attr_setfloatstate(_para1:Ppthread_attr_t; _para2:cint):cint;cdecl;external;
+function pthread_attr_getfloatstate(_para1:Ppthread_attr_t; _para2:Pcint):cint;cdecl;external;
+
+{ semaphore.h }
+
+
+  function sem_init(__sem:Psem_t; __pshared:cint;__value:dword):cint;cdecl; external;
+  function sem_destroy(__sem:Psem_t):cint;cdecl;external ;
+  function sem_close(__sem:Psem_t):cint;cdecl;external ;
+  function sem_unlink(__name:Pchar):cint;cdecl;external ;
+  function sem_wait(__sem:Psem_t):cint;cdecl;external ;
+  function sem_trywait(__sem:Psem_t):cint;cdecl;external ;
+  function sem_post(__sem:Psem_t):cint;cdecl;external ;
+  function sem_getvalue(__sem:Psem_t; __sval:Pcint):cint;cdecl;external;
+
+
+  function sem_init(var __sem: sem_t; __pshared:cint; __value:dword):cint cdecl;external;
+  function sem_destroy(var __sem: sem_t):cint;cdecl;external;
+  function sem_close(var __sem: sem_t):cint;cdecl;external;
+  function sem_wait(var __sem: sem_t):cint;cdecl;external;
+  function sem_trywait(var __sem: sem_t):cint;cdecl;external;
+  function sem_post(var __sem: sem_t):cint;cdecl;external;
+  function sem_getvalue(var __sem: sem_t; var __sval:cint):cint;cdecl;external;
+
+
+

+ 5 - 921
rtl/beos/Makefile

@@ -2,7 +2,7 @@
 # Don't edit, this file is generated by FPCMake Version 2.0.0 [2007/10/21]
 #
 default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos 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-win64 x86_64-embedded arm-linux arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded
+MAKEFILETARGETS=i386-beos
 BSDs = freebsd netbsd openbsd darwin
 UNIXs = linux $(BSDs) solaris qnx
 LIMIT83fs = go32v2 os2 emx watcom
@@ -245,941 +245,23 @@ endif
 override FPCOPT+= -dHASUNIX -n -dFPC_USE_LIBC -Si
 OBJPASDIR=$(RTL)/objpas
 GRAPHDIR=$(INC)/graph
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
-endif
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
+override TARGET_UNITS+=system baseunix unixtype ctypes objpas macpas strings errors dos dl objects sysconst sysutils types charset ucomplex typinfo classes fgl math varutils cpu mmx getopts heaptrc lineinfo lnfodwrf variants rtlconsts syscall unix unixutil strutils termio initc cmem crt video mouse keyboard dateutils fmtbcd sockets dynlibs cwstring
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 override TARGET_LOADERS+=prt0 cprt0 func dllprt
 endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_LOADERS+=prt0 cprt0 func dllprt
-endif
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
 ifeq ($(FULL_TARGET),i386-beos)
 override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
 endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_RSTS+=math varutils typinfo variants sysconst rtlconsts dateutils
-endif
 override INSTALL_FPCPACKAGE=y
-ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
+ifeq ($(FULL_TARGET),i386-beos)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
 override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
-endif
-ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override COMPILER_TARGETDIR+=.
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
 override COMPILER_TARGETDIR+=.
 endif
 ifdef REQUIRE_UNITSDIR
@@ -2504,6 +1586,8 @@ sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
 classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
 		   sysutils$(PPUEXT) $(OBJPASDIR)/typinfo$(PPUEXT) types$(PPUEXT) $(OBJPASDIR)/rtlconsts$(PPUEXT) 
 	$(COMPILER) -Fi$(OBJPASDIR) -Fi$(OBJPASDIR)/classes classes.pp
+fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
+	$(COMPILER) $(OBJPASDIR)/fgl.pp
 typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
 	$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
 math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)

+ 5 - 1
rtl/beos/Makefile.fpc

@@ -11,7 +11,7 @@ units=system baseunix unixtype ctypes objpas macpas strings \
 #      beos \
       errors dos dl objects \
       sysconst sysutils \
-      types charset ucomplex typinfo classes math varutils \
+      types charset ucomplex typinfo classes fgl math varutils \
       cpu mmx getopts heaptrc lineinfo lnfodwrf variants \
       rtlconsts syscall unix unixutil strutils termio initc \
       cmem crt video mouse keyboard \
@@ -167,6 +167,9 @@ classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
 #                   $(UNIXINC)/systhrd$(PPUEXT)
         $(COMPILER) -Fi$(OBJPASDIR) -Fi$(OBJPASDIR)/classes classes.pp
 
+fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
+        $(COMPILER) $(OBJPASDIR)/fgl.pp
+
 typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
         $(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
 
@@ -250,3 +253,4 @@ variants$(PPUEXT) : $(INC)/variants.pp sysutils$(PPUEXT) sysconst$(PPUEXT) varut
 cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT)
 
 
+

+ 85 - 0
rtl/beos/i386/sighnd.inc

@@ -0,0 +1,85 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 1999-2000 by Michael Van Canneyt,
+    member of the Free Pascal development team.
+
+    Signal handler is arch dependant due to processor to language
+    exception conversion.
+
+    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.
+
+ **********************************************************************}
+
+
+procedure SignalToRunerror(sig : longint; SigContext: PSigContextRec; uContext: Pvregs);cdecl;
+var
+  res,fpustate : word;
+begin
+  res:=0;
+  case sig of
+    SIGFPE :
+      begin
+        { this is not allways necessary but I don't know yet
+          how to tell if it is or not PM }
+        res:=200;
+        // fp_status always here under BeOS and x86 CPU
+        // (fp_status is not behind a pointer in the BeOS context record)
+        FpuState:=ucontext^.xregs.state.old_format.fp_status;
+            
+        if (FpuState and FPU_ExceptionMask) <> 0 then
+          begin
+            { first check the more precise options }
+            if (FpuState and FPU_DivisionByZero)<>0 then
+              res:=200
+            else if (FpuState and (FPU_StackOverflow or FPU_StackUnderflow or FPU_Invalid))<>0 Then
+              res:=207
+            else if (FpuState and FPU_Overflow)<>0 then
+              res:=205
+            else if (FpuState and FPU_Underflow)<>0 then
+              res:=206
+            else if (FpuState and FPU_Denormal)<>0 then
+              res:=216
+            else
+              res:=207;  {'Coprocessor Error'}
+          end;
+        with ucontext^.xregs.state.old_format do
+        begin
+          fp_status := fp_status and not FPU_ExceptionMask;
+        end;
+        SysResetFPU;
+      end;
+(*    SIGBUS: {Same as SIGSEGV under BeOS}
+      begin
+        res:=214;
+      end; *)
+    SIGILL:
+      begin
+      if sse_check then
+        begin
+          os_supports_sse := false;
+          res := 0;
+          inc(ucontext^.eip, 3);
+        end
+      else
+        res:=216;
+      end;
+    SIGSEGV :
+      begin
+        res:=216;
+      end;
+  end;
+  reenable_signal(sig);
+{ give runtime error at the position where the signal was raised }
+  if res<>0 then
+  begin
+    HandleErrorAddrFrame(res, pointer(ucontext^.eip),
+                              pointer(ucontext^.ebp));    
+  end;
+end;
+
+

+ 1 - 0
rtl/beos/ptypes.inc

@@ -45,6 +45,7 @@ type
     gid_t    = cuint32;         { used for group IDs           }
     TGid     = gid_t;
     pGid     = ^gid_t;
+    TIOCtlRequest = cuLong;
 
     ino_t    = clonglong;           { used for file serial numbers }
     TIno     = ino_t;

+ 0 - 15
rtl/beos/syscall.inc

@@ -76,18 +76,3 @@ begin
      errno := 0;
    end;
 end;
-
-
-{
-  $Log: syscall.inc,v $
-  Revision 1.1  2003/01/08 22:32:28  marco
-   * Small fixes and quick merge with 1.0.x. At least the compiler builds now,
-      but it could crash hard, since there are lots of unimplemented funcs.
-
-  Revision 1.1.2.2  2001/08/15 01:08:25  carl
-  * added SysCall(0 routine here as well as argument declarations
-
-  Revision 1.1.2.1  2001/07/13 03:16:03  carl
-  + static kernel call interface (CPU specific)
-
-}

+ 3 - 20
rtl/beos/sysheap.inc

@@ -18,36 +18,19 @@ function sbrk2 (size : longint):pointer; cdecl; external name 'sbrk';
 
 function SysOSAlloc(size: ptruint): pointer;
 begin
+{  result:=Fpmmap(nil,Size,3,MAP_PRIVATE+MAP_ANONYMOUS,-1,0);}
   result := sbrk2(size);
-{  result:=Fpmmap(nil,Size,3,MAP_PRIVATE+MAP_ANONYMOUS,-1,0);
   if result=pointer(-1) then
     result:=nil
   else
     seterrno(0);
-}
 end;
 
-{$define HAS_SYSOSFREE}
+{ $ define HAS_SYSOSFREE}
 
 procedure SysOSFree(p: pointer; size: ptruint);
 begin
-//  fpmunmap(p, size);
-//  WriteLn('TODO : SysOSFree');
+  //  fpmunmap(p, size);
 end;
 
 
-
-{
-   $Log: sysheap.inc,v $
-   Revision 1.1  2005/02/07 22:04:55  peter
-     * moved to unix
-
-   Revision 1.1  2005/02/06 16:57:18  peter
-     * threads for go32v2,os,emx,netware
-
-   Revision 1.1  2005/02/06 13:06:20  peter
-     * moved file and dir functions to sysfile/sysdir
-     * win32 thread in systemunit
-
-}
-

+ 17 - 0
rtl/inc/heaptrc.pp

@@ -811,6 +811,16 @@ var
    ebss : ptruint; external name '__bss_end__';
 {$endif}
 
+{$ifdef BEOS}
+const
+  B_ERROR = -1;
+
+type
+  area_id   = Longint;
+
+function area_for(addr : Pointer) : area_id;
+            cdecl; external 'root' name 'area_for'; 
+{$endif BEOS}
 
 procedure CheckPointer(p : pointer); [public, alias : 'FPC_CHECKPOINTER'];
 var
@@ -904,6 +914,13 @@ begin
   exit;
   {$endif}
 
+{$ifdef BEOS}
+  // if we find the address in a known area in our current process, 
+  // then it is a valid one
+  if area_for(p) <> B_ERROR then
+    goto _exit;  
+{$endif BEOS}
+
   { first try valid list faster }
 
 {$ifdef EXTRA}

+ 9 - 1
rtl/unix/cwstring.pp

@@ -125,7 +125,15 @@ threadvar
 function nl_langinfo(__item:nl_item):pchar;
 begin
   {$warning TODO BeOS nl_langinfo or more uptodate port of iconv...}  
-  Result := '';
+  // Now implement the minimum required to correctly initialize WideString support
+  case __item of
+    CODESET : Result := 'UTF-8'; // BeOS use UTF-8
+    else
+    begin
+      Assert(False, 'nl_langinfo was called with an unknown nl_item value');
+      Result := '';
+    end;    
+  end;
 end;
 {$endif}
 

+ 0 - 11
rtl/win/sysdir.inc

@@ -111,14 +111,3 @@ begin
   Dir:='\';
 {$endif WINCE}
 end;
-
-{
-  $Log: sysdir.inc,v $
-  Revision 1.2  2005/02/14 17:13:32  peter
-    * truncate log
-
-  Revision 1.1  2005/02/06 13:06:20  peter
-    * moved file and dir functions to sysfile/sysdir
-    * win32 thread in systemunit
-
-}

+ 1 - 0
utils/fppkg/Makefile.fpc

@@ -10,6 +10,7 @@ version=2.2.1
 programs=fppkg
 implicitunits=fprepos fpxmlrep pkgoptions pkgglobals pkgmessages pkghandler pkgmkconv pkgdownload pkgarchive pkgfpmake pkgcommands
 units_linux=pkgwget  pkglnet $(PKGCURL)
+units_beos=pkgwget pkglnet $(PKGCURL)
 units_freebsd=pkgwget pkglnet $(PKGCURL)
 units_netbsd=pkgwget pkglnet $(PKGCURL)
 units_openbsd=pkgwget pkglnet $(PKGCURL)