123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- {$ifndef ALLPACKAGES}
- {$mode objfpc}{$H+}
- program fpmake;
- uses fpmkunit;
- {$endif ALLPACKAGES}
- procedure add_rtl_extra(const ADirectory: string);
- Const
- // All Unices have full set of KVM+Crt in unix/ except QNX which is not
- // in workable state atm.
- UnixLikes = AllUnixOSes -[QNX]; // qnx never was active in 2.x afaik
- ClocaleOSes = UnixLikes -[android];
- CLocaleIncOSes= [Aix,freebsd,netbsd,openbsd,solaris,darwin,iphonesim,dragonfly];
- IPCOSes = UnixLikes-[aix,android,beos,haiku];
- IPCBSDs = [FreeBSD,NetBSD,OpenBSD,DragonFly];
- // IPCcdeclOSes = [Darwin,iphonesim];
- PrinterOSes = [go32v2,msdos,os2,win32,win64]+unixlikes-[beos,haiku,morphos];
- SerialOSes = [android,linux,netbsd,openbsd,win32,win64];
- UComplexOSes = [atari,embedded,emx,gba,go32v2,msdos,nativent,nds,netware,netwlibc,os2,symbian,watcom,wii,wince,win32,win64]+UnixLikes+AllAmigaLikeOSes;
- MatrixOSes = [atari,embedded,emx,gba,go32v2,msdos,nativent,nds,netware,netwlibc,os2,symbian,watcom,wii,win32,win64,wince]+UnixLikes+AllAmigaLikeOSes;
- ObjectsOSes = [atari,embedded,emx,gba,go32v2,macos,msdos,nds,netware,netwlibc,os2,symbian,watcom,wii,win16,win32,win64,wince]+UnixLikes+AllAmigaLikeOSes;
- WinsockOSes = [win32,win64,wince,os2,emx,netware,netwlibc];
- WinSock2OSes = [win32,win64,wince];
- SocketsOSes = UnixLikes+AllAmigaLikeOSes+[netware,netwlibc,os2,emx,wince,win32,win64];
- Socksyscall = [beos,freebsd,haiku,linux,netbsd,openbsd,dragonfly];
- Socklibc = unixlikes-socksyscall;
- gpmOSes = [Linux,Android];
- AllTargetsextra = ObjectsOSes + UComplexOSes + MatrixOSes+
- SerialOSes +PrinterOSes+SocketsOSes+gpmOSes;
- Var
- P : TPackage;
- T : TTarget;
- begin
- With Installer do
- begin
- P:=AddPackage('rtl-extra');
- P.ShortName:='rtle';
- P.Directory:=ADirectory;
- P.Version:='3.3.1';
- P.Author := 'FPC core team';
- P.License := 'LGPL with modification, ';
- P.HomepageURL := 'www.freepascal.org';
- P.OSes:=AllTargetsextra;
- if Defaults.CPU=jvm then
- P.OSes := P.OSes - [java,android];
- P.Email := '';
- P.Description := 'Rtl-extra, RTL not needed for bootstrapping';
- P.NeedLibC:= false;
- P.Dependencies.Add('morphunits',[morphos]);
- P.Dependencies.Add('arosunits',[aros]);
- if Defaults.CPU=m68k then
- P.Dependencies.Add('amunits',[amiga]);
- if Defaults.CPU=powerpc then
- P.Dependencies.Add('os4units',[amiga]);
- P.SourcePath.Add('src/inc');
- P.SourcePath.Add('src/$(OS)');
- P.SourcePath.Add('src/darwin',[iphonesim]);
- P.SourcePath.Add('src/unix',AllUnixOSes);
- P.SourcePath.Add('src/bsd',AllBSDOSes);
- P.SourcePath.Add('src/os2commn',[os2,emx]);
- P.SourcePath.Add('src/netwcomn',[netware,netwlibc]);
- // We also need the win/ directory for WinCE as this uses the sockets
- // unit from that directory. Maybe we should try to merge the WinSock(2)
- // units to remove the wince directory completely...
- P.SourcePath.Add('src/win',[win32,win64,wince]);
- P.SourcePath.Add('src/amiga',[morphos]);
- P.IncludePath.Add('src/bsd',AllBSDOSes);
- P.IncludePath.Add('src/inc');
- P.IncludePath.Add('src/os2commn',[os2,emx]);
- P.IncludePath.Add('../../rtl/os2',[os2,emx]);
- P.IncludePath.Add('src/netwcomn',[netware,netwlibc]);
- P.IncludePath.Add('src/unix',AllUnixOSes);
- P.IncludePath.Add('src/$(OS)');
- P.IncludePath.Add('src/darwin',[iphonesim]);
- P.IncludePath.Add('src/win',AllWindowsOSes);
- // Add clocale for Android first in order to compile the source file
- // from the 'android' dir, not the 'unix' dir.
- T:=P.Targets.AddUnit('real48utils.pp',AllTargetsextra-[msdos,win16] { msdos,win16 excluded temporarily, until bitpacked records containing longints on 16-bit targets are fixed }
- -[embedded]); { at least avr has no floats }
- if Defaults.CPU<>jvm then
- T:=P.Targets.AddUnit('clocale.pp',[android]);
- T:=P.Targets.AddUnit('ucomplex.pp',UComplexOSes);
- T:=P.Targets.AddUnit('objects.pp',ObjectsOSes);
- T:=P.Targets.AddUnit('printer.pp',PrinterOSes);
- T.Dependencies.AddInclude('printerh.inc',PrinterOSes);
- T.Dependencies.AddInclude('printer.inc',PrinterOSes);
- T:=P.Targets.AddUnit('matrix.pp',MatrixOSes);
- with T.Dependencies do
- begin
- AddInclude('mvecimp.inc');
- AddInclude('mmatimp.inc');
- end;
- T:=P.Targets.AddUnit('winsock.pp',WinSockOSes);
- with T.Dependencies do
- begin
- AddInclude('qos.inc',[netware,netwlibc]);
- AddInclude('netwsockh.inc',[netware,netwlibc]);
- end;
- T:=P.Targets.AddUnit('winsock2.pp',WinSock2OSes);
- T:=P.Targets.AddUnit('gpm.pp',gpmOSes);
- with T.Dependencies do
- AddUnit('sockets');
- T:=P.Targets.AddUnit('serial.pp',SerialOSes);
- T:=P.Targets.AddUnit('sockets.pp',SocketsOSes);
- with T.Dependencies do
- begin
- addinclude('osdefs.inc',AllUnixOSes);
- addinclude('socketsh.inc');
- addinclude('fpwinsockh.inc',AllWindowsOSes);
- addinclude('sockets.inc');
- addinclude('sockovl.inc');
- addinclude('unxsockh.inc',UnixLikes);
- addinclude('stdsock.inc',socklibc);
- addinclude('unixsock.inc',socksyscall);
- end;
- T:=P.Targets.AddUnit('ipc.pp',IPCOSes);
- with T.Dependencies do
- begin
- addinclude('osdefs.inc');
- addinclude('ipcbsd.inc',IPCBSDs);
- addinclude('ipcsys.inc',[Linux]);
- addinclude('ipccall.inc',[Linux]);
- // addinclude('ipccdecl.inc',IPCcdeclOSes); // not used?
- end;
- T:=P.Targets.AddUnit('src/unix/clocale.pp',CLocaleOSes);
- with T.Dependencies do
- begin
- addinclude('clocale.inc',clocaleincOSes);
- end;
- T:=P.Targets.AddUnit('sortalgs.pp');
- end
- end;
- {$ifndef ALLPACKAGES}
- begin
- add_rtl_extra('');
- Installer.Run;
- end.
- {$endif ALLPACKAGES}
|