mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-07-06 04:26:27 +02:00
* beos support from Olivier Coursiere
git-svn-id: trunk@7443 -
This commit is contained in:
parent
6a51ea7eac
commit
dd3fdac68e
@ -206,6 +206,12 @@ FOR FPC THESE ARE THE TRANSLATIONS
|
|||||||
{$DEFINE OS_UNIX}
|
{$DEFINE OS_UNIX}
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
|
{$IFDEF BEOS}
|
||||||
|
{$UNDEF OS_DOS}
|
||||||
|
{$DEFINE OS_BEOS}
|
||||||
|
{$DEFINE OS_UNIX}
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
{------------------------------------------------}
|
{------------------------------------------------}
|
||||||
{ FPC Netware COMPILER changes operating system }
|
{ FPC Netware COMPILER changes operating system }
|
||||||
{------------------------------------------------}
|
{------------------------------------------------}
|
||||||
|
@ -16,6 +16,8 @@ dirs_netbsd=gdbint libasync \
|
|||||||
mysql ibase postgres oracle odbc imagemagick httpd
|
mysql ibase postgres oracle odbc imagemagick httpd
|
||||||
dirs_openbsd=gdbint libasync \
|
dirs_openbsd=gdbint libasync \
|
||||||
mysql ibase postgres oracle odbc imagemagick httpd
|
mysql ibase postgres oracle odbc imagemagick httpd
|
||||||
|
dirs_beos=gdbint libasync graph \
|
||||||
|
mysql ibase postgres odbc sqlite pthreads imagemagick
|
||||||
dirs_freebsd=gdbint libasync graph \
|
dirs_freebsd=gdbint libasync graph \
|
||||||
mysql ibase postgres oracle odbc sqlite pthreads imagemagick httpd
|
mysql ibase postgres oracle odbc sqlite pthreads imagemagick httpd
|
||||||
dirs_darwin=libasync \
|
dirs_darwin=libasync \
|
||||||
|
@ -219,6 +219,30 @@ interface
|
|||||||
{$LINKLIB user32}
|
{$LINKLIB user32}
|
||||||
{$endif win32}
|
{$endif win32}
|
||||||
|
|
||||||
|
{$ifdef beos}
|
||||||
|
{ still need some work... stollen from netbsd}
|
||||||
|
{$undef NotImplemented}
|
||||||
|
{$LINKLIB gdb}
|
||||||
|
{$ifdef GDB_HAS_SIM}
|
||||||
|
{$LINKLIB sim}
|
||||||
|
{$endif GDB_HAS_SIM}
|
||||||
|
{$LINKLIB bfd}
|
||||||
|
{$LINKLIB readline}
|
||||||
|
{$LINKLIB opcodes}
|
||||||
|
{$LINKLIB history}
|
||||||
|
{$LINKLIB iberty}
|
||||||
|
{$LINKLIB ncurses}
|
||||||
|
{$LINKLIB m}
|
||||||
|
{$LINKLIB iberty}
|
||||||
|
{$LINKLIB intl}
|
||||||
|
{$ifdef GDB_USES_EXPAT_LIB}
|
||||||
|
{$LINKLIB expat}
|
||||||
|
{$endif GDB_USES_EXPAT_LIB}
|
||||||
|
{ does not seem to exist on netbsd LINKLIB dl}
|
||||||
|
{$LINKLIB c}
|
||||||
|
{$LINKLIB gcc}
|
||||||
|
{$endif beos}
|
||||||
|
|
||||||
{$ifdef go32v2}
|
{$ifdef go32v2}
|
||||||
{$define supportexceptions}
|
{$define supportexceptions}
|
||||||
{$endif go32v2}
|
{$endif go32v2}
|
||||||
|
@ -14,6 +14,7 @@ fpcpackage=y
|
|||||||
|
|
||||||
[compiler]
|
[compiler]
|
||||||
sourcedir_linux=unix
|
sourcedir_linux=unix
|
||||||
|
sourcedir_beos=unix
|
||||||
sourcedir_freebsd=unix
|
sourcedir_freebsd=unix
|
||||||
sourcedir_darwin=unix
|
sourcedir_darwin=unix
|
||||||
sourcedir_solaris=unix
|
sourcedir_solaris=unix
|
||||||
|
@ -9,6 +9,7 @@ version=2.0.0
|
|||||||
[require]
|
[require]
|
||||||
packages=paszlib hash
|
packages=paszlib hash
|
||||||
packages_linux=netdb libasync pthreads
|
packages_linux=netdb libasync pthreads
|
||||||
|
packages_beos=netdb libasync pthreads
|
||||||
packages_freebsd=netdb libasync pthreads
|
packages_freebsd=netdb libasync pthreads
|
||||||
packages_darwin=netdb libasync pthreads
|
packages_darwin=netdb libasync pthreads
|
||||||
packages_solaris=netdb libasync pthreads
|
packages_solaris=netdb libasync pthreads
|
||||||
@ -34,6 +35,7 @@ units=contnrs inifiles ezcgi pipes rtfpars idea base64 gettext \
|
|||||||
iostream zstream cachecls avl_tree \
|
iostream zstream cachecls avl_tree \
|
||||||
eventlog custapp cgiapp wformat whtml wtex rttiutils bufstream \
|
eventlog custapp cgiapp wformat whtml wtex rttiutils bufstream \
|
||||||
streamex blowfish zipper streamio inicol pooledmm libtar streamcoll
|
streamex blowfish zipper streamio inicol pooledmm libtar streamcoll
|
||||||
|
units_beos=process ssockets resolve fpasync syncobjs simpleipc dbugmsg dbugintf
|
||||||
units_freebsd=process ssockets resolve fpasync syncobjs simpleipc dbugmsg dbugintf daemonapp
|
units_freebsd=process ssockets resolve fpasync syncobjs simpleipc dbugmsg dbugintf daemonapp
|
||||||
units_darwin=process ssockets resolve fpasync syncobjs simpleipc dbugmsg dbugintf daemonapp
|
units_darwin=process ssockets resolve fpasync syncobjs simpleipc dbugmsg dbugintf daemonapp
|
||||||
units_solaris=process ssockets resolve fpasync syncobjs simpleipc dbugmsg dbugintf daemonapp
|
units_solaris=process ssockets resolve fpasync syncobjs simpleipc dbugmsg dbugintf daemonapp
|
||||||
|
@ -815,8 +815,45 @@ end;
|
|||||||
{$ifdef beos}
|
{$ifdef beos}
|
||||||
|
|
||||||
{$i osposixh.inc}
|
{$i osposixh.inc}
|
||||||
{$i syscall.inc}
|
|
||||||
{$i beos.inc}
|
{ ------------------------- Images --------------------------- }
|
||||||
|
|
||||||
|
type
|
||||||
|
// Descriptive formats
|
||||||
|
status_t = Longint;
|
||||||
|
team_id = Longint;
|
||||||
|
image_id = Longint;
|
||||||
|
|
||||||
|
{ image types }
|
||||||
|
const
|
||||||
|
B_APP_IMAGE = 1;
|
||||||
|
B_LIBRARY_IMAGE = 2;
|
||||||
|
B_ADD_ON_IMAGE = 3;
|
||||||
|
B_SYSTEM_IMAGE = 4;
|
||||||
|
|
||||||
|
type
|
||||||
|
image_info = packed record
|
||||||
|
id : image_id;
|
||||||
|
_type : longint;
|
||||||
|
sequence: longint;
|
||||||
|
init_order: longint;
|
||||||
|
init_routine: pointer;
|
||||||
|
term_routine: pointer;
|
||||||
|
device: dev_t;
|
||||||
|
node: ino_t;
|
||||||
|
name: array[0..MAXPATHLEN-1] of char;
|
||||||
|
{ name: string[255];
|
||||||
|
name2: string[255];
|
||||||
|
name3: string[255];
|
||||||
|
name4: string[255];
|
||||||
|
name5: string[5];
|
||||||
|
}
|
||||||
|
text: pointer;
|
||||||
|
data: pointer;
|
||||||
|
text_size: longint;
|
||||||
|
data_size: longint;
|
||||||
|
end;
|
||||||
|
|
||||||
function get_next_image_info(team: team_id; var cookie:longint; var info:image_info; size: size_t) : status_t;cdecl; external 'root' name '_get_next_image_info';
|
function get_next_image_info(team: team_id; var cookie:longint; var info:image_info; size: size_t) : status_t;cdecl; external 'root' name '_get_next_image_info';
|
||||||
|
|
||||||
function LoadElf32Beos:boolean;
|
function LoadElf32Beos:boolean;
|
||||||
|
@ -72,6 +72,10 @@ function geterrnolocation: pcint; cdecl;external clib name '__error';
|
|||||||
function geterrnolocation: pcint; cdecl;external clib name '___errno';
|
function geterrnolocation: pcint; cdecl;external clib name '___errno';
|
||||||
{$endif}
|
{$endif}
|
||||||
|
|
||||||
|
{$ifdef beos}
|
||||||
|
function geterrnolocation: pcint; cdecl;external 'root' name '_errnop';
|
||||||
|
{$endif}
|
||||||
|
|
||||||
function fpgetCerrno:cint;
|
function fpgetCerrno:cint;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
@ -75,7 +75,11 @@ const
|
|||||||
function fpmmap (addr:pointer;len:size_t;prot:cint;flags:cint;fd:cint;ofs:off_t):pointer; cdecl; external clib name 'mmap'+suffix64bit;
|
function fpmmap (addr:pointer;len:size_t;prot:cint;flags:cint;fd:cint;ofs:off_t):pointer; cdecl; external clib name 'mmap'+suffix64bit;
|
||||||
function fpmunmap (addr:pointer;len:size_t):cint; cdecl; external clib name 'munmap';
|
function fpmunmap (addr:pointer;len:size_t):cint; cdecl; external clib name 'munmap';
|
||||||
function FpIOCtl (Handle:cint;Ndx: culong;Data: Pointer):cint; cdecl; external clib name 'ioctl';
|
function FpIOCtl (Handle:cint;Ndx: culong;Data: Pointer):cint; cdecl; external clib name 'ioctl';
|
||||||
|
{$ifdef beos}
|
||||||
|
Function FPSelect (N:cint;readfds,writefds,exceptfds:pfdSet;TimeOut:PTimeVal):cint; cdecl; external 'net' name 'select';
|
||||||
|
{$else}
|
||||||
Function FPSelect (N:cint;readfds,writefds,exceptfds:pfdSet;TimeOut:PTimeVal):cint; cdecl; external clib name 'select';
|
Function FPSelect (N:cint;readfds,writefds,exceptfds:pfdSet;TimeOut:PTimeVal):cint; cdecl; external clib name 'select';
|
||||||
|
{$endif}
|
||||||
function fpgetenv (name : pchar):pchar; cdecl; external clib name 'getenv';
|
function fpgetenv (name : pchar):pchar; cdecl; external clib name 'getenv';
|
||||||
Function FpKill (pid : TPid; sig: cInt): cInt; cdecl; external clib name 'kill';
|
Function FpKill (pid : TPid; sig: cInt): cInt; cdecl; external clib name 'kill';
|
||||||
Function FpGetpid : TPid; cdecl;external clib name 'getpid';
|
Function FpGetpid : TPid; cdecl;external clib name 'getpid';
|
||||||
@ -99,7 +103,10 @@ const
|
|||||||
{$linklib aio}
|
{$linklib aio}
|
||||||
Function FPnanosleep (const rqtp: ptimespec; rmtp: ptimespec): cint; cdecl; external 'rt' name 'nanosleep';
|
Function FPnanosleep (const rqtp: ptimespec; rmtp: ptimespec): cint; cdecl; external 'rt' name 'nanosleep';
|
||||||
{$else solaris}
|
{$else solaris}
|
||||||
|
{$ifndef beos}
|
||||||
Function FPnanosleep (const rqtp: ptimespec; rmtp: ptimespec): cint; cdecl; external clib name 'nanosleep';
|
Function FPnanosleep (const rqtp: ptimespec; rmtp: ptimespec): cint; cdecl; external clib name 'nanosleep';
|
||||||
|
{$else}
|
||||||
|
{$endif}
|
||||||
{$endif solaris}
|
{$endif solaris}
|
||||||
function fpNice (N:cint):cint; cdecl; external clib name 'nice';
|
function fpNice (N:cint):cint; cdecl; external clib name 'nice';
|
||||||
Function fpGetPriority (Which,Who:cint):cint; cdecl; external clib name 'getpriority';
|
Function fpGetPriority (Which,Who:cint):cint; cdecl; external clib name 'getpriority';
|
||||||
@ -107,7 +114,11 @@ const
|
|||||||
Function fpSymlink (oldname,newname:pchar):cint; cdecl; external clib name 'symlink';
|
Function fpSymlink (oldname,newname:pchar):cint; cdecl; external clib name 'symlink';
|
||||||
Function fpReadLink (name,linkname:pchar;maxlen:size_t):cint; cdecl; external clib name 'readlink';
|
Function fpReadLink (name,linkname:pchar;maxlen:size_t):cint; cdecl; external clib name 'readlink';
|
||||||
Function FpUmask (cmask : TMode): TMode; cdecl; external clib name 'umask';
|
Function FpUmask (cmask : TMode): TMode; cdecl; external clib name 'umask';
|
||||||
|
{$ifndef beos}
|
||||||
function fpsettimeofday(tp:ptimeval;tzp:ptimezone):cint; cdecl; external clib name 'settimeofday';
|
function fpsettimeofday(tp:ptimeval;tzp:ptimezone):cint; cdecl; external clib name 'settimeofday';
|
||||||
|
{$else}
|
||||||
|
// function fpsettimeofday(tp:ptimeval;tzp:ptimezone):cint;
|
||||||
|
{$endif}
|
||||||
function FpGetRLimit(resource : cInt; rlim : PRLimit) : cInt; cdecl; external clib name 'getrlimit';
|
function FpGetRLimit(resource : cInt; rlim : PRLimit) : cInt; cdecl; external clib name 'getrlimit';
|
||||||
{$ifdef HAS_UGETRLIMIT}
|
{$ifdef HAS_UGETRLIMIT}
|
||||||
{ there is no ugetrlimit libc call, just map it to the getrlimit call in these cases }
|
{ there is no ugetrlimit libc call, just map it to the getrlimit call in these cases }
|
||||||
|
@ -44,10 +44,14 @@ const
|
|||||||
EsockEINVAL = EsysEINVAL;
|
EsockEINVAL = EsysEINVAL;
|
||||||
EsockEACCESS = ESysEAcces;
|
EsockEACCESS = ESysEAcces;
|
||||||
EsockEMFILE = ESysEmfile;
|
EsockEMFILE = ESysEmfile;
|
||||||
|
{$ifndef beos}
|
||||||
EsockEMSGSIZE = ESysEMsgSize;
|
EsockEMSGSIZE = ESysEMsgSize;
|
||||||
|
{$endif beos}
|
||||||
EsockENOBUFS = ESysENoBufs;
|
EsockENOBUFS = ESysENoBufs;
|
||||||
EsockENOTCONN = ESysENotConn;
|
EsockENOTCONN = ESysENotConn;
|
||||||
|
{$ifndef beos}
|
||||||
EsockENOTSOCK = ESysENotSock;
|
EsockENOTSOCK = ESysENotSock;
|
||||||
|
{$endif beos}
|
||||||
EsockEPROTONOSUPPORT = ESysEProtoNoSupport;
|
EsockEPROTONOSUPPORT = ESysEProtoNoSupport;
|
||||||
EsockEWOULDBLOCK = ESysEWouldBlock;
|
EsockEWOULDBLOCK = ESysEWouldBlock;
|
||||||
|
|
||||||
|
@ -55,6 +55,7 @@ var
|
|||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
end
|
end
|
||||||
|
{$ifndef beos}
|
||||||
else if (ino_t(d^.d_fileno)=myino) and (st.st_dev=mydev) then
|
else if (ino_t(d^.d_fileno)=myino) and (st.st_dev=mydev) then
|
||||||
begin
|
begin
|
||||||
fpclosedir(dirstream^);
|
fpclosedir(dirstream^);
|
||||||
@ -62,6 +63,7 @@ var
|
|||||||
mysearch:=true;
|
mysearch:=true;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
{$endif}
|
||||||
end;
|
end;
|
||||||
d:=fpReaddir(dirstream^);
|
d:=fpReaddir(dirstream^);
|
||||||
end;
|
end;
|
||||||
@ -73,8 +75,10 @@ begin
|
|||||||
TTYName:='';
|
TTYName:='';
|
||||||
if (fpfstat(handle,st)=-1) or (isatty (handle)<>1) then
|
if (fpfstat(handle,st)=-1) or (isatty (handle)<>1) then
|
||||||
exit;
|
exit;
|
||||||
|
{$ifndef beos}
|
||||||
mydev:=st.st_dev;
|
mydev:=st.st_dev;
|
||||||
myino:=st.st_ino;
|
myino:=st.st_ino;
|
||||||
|
{$endif}
|
||||||
mysearch('/dev');
|
mysearch('/dev');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -570,13 +570,17 @@ end;
|
|||||||
|
|
||||||
Function fpFlock (var T : text;mode : cint) : cint;
|
Function fpFlock (var T : text;mode : cint) : cint;
|
||||||
begin
|
begin
|
||||||
|
{$ifndef beos}
|
||||||
fpFlock:=fpFlock(TextRec(T).Handle,mode);
|
fpFlock:=fpFlock(TextRec(T).Handle,mode);
|
||||||
|
{$endif}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
Function fpFlock (var F : File;mode : cint) :cint;
|
Function fpFlock (var F : File;mode : cint) :cint;
|
||||||
begin
|
begin
|
||||||
|
{$ifndef beos}
|
||||||
fpFlock:=fpFlock(FileRec(F).Handle,mode);
|
fpFlock:=fpFlock(FileRec(F).Handle,mode);
|
||||||
|
{$endif}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Function SelectText(var T:Text;TimeOut :PTimeval):cint;
|
Function SelectText(var T:Text;TimeOut :PTimeval):cint;
|
||||||
@ -623,11 +627,13 @@ begin
|
|||||||
fpseterrno(ESysEBADF);
|
fpseterrno(ESysEBADF);
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
{$if not(defined(bsd)) and not(defined(solaris)) }
|
{$if not(defined(bsd)) and not(defined(solaris)) and not(defined(beos)) }
|
||||||
p^.dd_nextoff:=fplseek(p^.dd_fd,loc,seek_set);
|
p^.dd_nextoff:=fplseek(p^.dd_fd,loc,seek_set);
|
||||||
{$endif}
|
{$endif}
|
||||||
|
{$if not(defined(beos))}
|
||||||
p^.dd_size:=0;
|
p^.dd_size:=0;
|
||||||
p^.dd_loc:=0;
|
p^.dd_loc:=0;
|
||||||
|
{$endif}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TellDir(p:pdir):TOff;
|
function TellDir(p:pdir):TOff;
|
||||||
@ -638,7 +644,9 @@ begin
|
|||||||
telldir:=-1;
|
telldir:=-1;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
{$ifndef beos}
|
||||||
telldir:=fplseek(p^.dd_fd,0,seek_cur)
|
telldir:=fplseek(p^.dd_fd,0,seek_cur)
|
||||||
|
{$endif}
|
||||||
{ We could try to use the nextoff field here, but on my 1.2.13
|
{ We could try to use the nextoff field here, but on my 1.2.13
|
||||||
kernel, this gives nothing... This may have to do with
|
kernel, this gives nothing... This may have to do with
|
||||||
the readdir implementation of libc... I also didn't find any trace of
|
the readdir implementation of libc... I also didn't find any trace of
|
||||||
|
@ -18,11 +18,18 @@ type filedesarray=array[0..1] of cint;
|
|||||||
{$ifdef solaris}
|
{$ifdef solaris}
|
||||||
Function fpFlock (fd,mode : longint) : cint;{$ifdef IN_SYSTEM}forward;{$endif IN_SYSTEM}
|
Function fpFlock (fd,mode : longint) : cint;{$ifdef IN_SYSTEM}forward;{$endif IN_SYSTEM}
|
||||||
{$else solaris}
|
{$else solaris}
|
||||||
|
{$ifndef beos}
|
||||||
Function fpFlock (fd,mode : longint) : cint; cdecl; external clib name 'flock';
|
Function fpFlock (fd,mode : longint) : cint; cdecl; external clib name 'flock';
|
||||||
|
{$endif beos}
|
||||||
{$endif solaris}
|
{$endif solaris}
|
||||||
|
|
||||||
|
{$ifndef beos}
|
||||||
Function fStatFS(Fd:Longint;Var Info:tstatfs):cint; cdecl; external clib name 'fstatfs';
|
Function fStatFS(Fd:Longint;Var Info:tstatfs):cint; cdecl; external clib name 'fstatfs';
|
||||||
|
{$endif beos}
|
||||||
|
|
||||||
Function fsync (fd : cint) : cint; cdecl; external clib name 'fsync';
|
Function fsync (fd : cint) : cint; cdecl; external clib name 'fsync';
|
||||||
|
{$ifndef beos}
|
||||||
Function StatFS (Path:pchar;Var Info:tstatfs):cint; cdecl; external clib name 'statfs';
|
Function StatFS (Path:pchar;Var Info:tstatfs):cint; cdecl; external clib name 'statfs';
|
||||||
|
{$endif beos}
|
||||||
function pipe (var fildes: filedesarray):cint; cdecl; external clib name 'pipe';
|
function pipe (var fildes: filedesarray):cint; cdecl; external clib name 'pipe';
|
||||||
function fpgettimeofday(tp: ptimeval;tzp:ptimezone):cint; cdecl; external clib name 'gettimeofday';
|
function fpgettimeofday(tp: ptimeval;tzp:ptimezone):cint; cdecl; external clib name 'gettimeofday';
|
||||||
|
Loading…
Reference in New Issue
Block a user