fpc/packages/fcl-web/fpmake.pp

573 lines
16 KiB
ObjectPascal

{$ifndef ALLPACKAGES}
{$mode objfpc}{$H+}
program fpmake;
uses {$ifdef unix}cthreads,{$endif} fpmkunit;
{$endif ALLPACKAGES}
procedure add_fcl_web(const ADirectory: string);
Const
LibMicroHttpdOSes = AllUnixOSes + [win32,win64];
SqldbConnectionOSes = [aix,beos,haiku,linux,freebsd,darwin,iphonesim,ios,netbsd,openbsd,solaris,win32,win64,wince,android,dragonfly];
SqliteOSes = [aix,beos,haiku,linux,freebsd,darwin,iphonesim,ios,netbsd,openbsd,solaris,win32,win64,wince,android,dragonfly];
NoSocketsOSes = [amiga,aros,morphos,wasi];
NoApacheOSes = [amiga,aros,morphos,wasi];
ApacheOSes = AllOSes - NoApacheOSes;
SocketsOSes = AllOSes - NoSocketsOSes;
Var
T : TTarget;
P : TPackage;
begin
With Installer do
begin
P:=AddPackage('fcl-web');
P.ShortName:='fclw';
P.Directory:=ADirectory;
P.Version:='3.3.1';
P.OSes := [beos,haiku,freebsd,darwin,iphonesim,ios,solaris,netbsd,openbsd,linux,win32,win64,wince,aix,amiga,aros,morphos,dragonfly,android,wasi];
if Defaults.CPU=jvm then
P.OSes := P.OSes - [java,android];
P.Dependencies.Add('fcl-base');
P.Dependencies.Add('fcl-db');
P.Dependencies.Add('fcl-xml');
P.Dependencies.Add('fcl-json');
P.Dependencies.Add('fcl-net',SocketsOSes);
P.Dependencies.Add('fcl-process',SocketsOSes); // FGI-gate
P.Dependencies.Add('fcl-fpcunit');
P.Dependencies.Add('fcl-hash');
P.Dependencies.Add('hash');
P.Dependencies.Add('fcl-registry', AllWindowsOSes);
P.Dependencies.Add('openssl', AllUnixOSes+AllWindowsOSes);
P.Dependencies.Add('fastcgi',SocketsOSes);
{$ifndef ALLPACKAGES}
P.Dependencies.Add('httpd20', ApacheOSes);
{$endif ALLPACKAGES}
P.Dependencies.Add('httpd22', ApacheOSes);
P.Dependencies.Add('httpd24', ApacheOSes);
P.Dependencies.Add('winunits-base', [Win32,Win64]);
// (Temporary) indirect dependencies, not detected by fpcmake:
P.Dependencies.Add('univint', [MacOSX,iphonesim,ios]);
P.Dependencies.Add('libmicrohttpd', LibMicroHttpdOSes);
P.Author := 'FreePascal development team';
P.License := 'LGPL with modification, ';
P.HomepageURL := 'www.freepascal.org';
P.Email := '';
P.Description := 'Web(app) related parts of Free Component Libraries (FCL), FPC''s OOP library.';
P.NeedLibC:= false;
P.SourcePath.Add('src/base');
P.SourcePath.Add('src/webdata');
P.SourcePath.Add('src/jwt');
P.SourcePath.Add('src/jsonrpc');
P.SourcePath.Add('src/hpack');
P.SourcePath.Add('src/restbridge');
P.SourcePath.Add('src/websocket');
P.SourcePath.Add('src/fcm');
T:=P.Targets.addUnit('fpmimetypes.pp');
T:=P.Targets.AddUnit('httpdefs.pp');
T.ResourceStrings:=true;
T.Dependencies.AddUnit('httpprotocol');
T:=P.Targets.AddUnit('httproute.pp');
T.ResourceStrings:=true;
T.Dependencies.AddUnit('httpdefs');
T:=P.Targets.AddUnit('httpjson.pp');
T.ResourceStrings:=true;
T.Dependencies.AddUnit('httpdefs');
T.Dependencies.AddUnit('httpprotocol');
T:=P.Targets.AddUnit('cgiapp.pp');
T.ResourceStrings:=true;
T:=P.Targets.AddUnit('custcgi.pp');
T.ResourceStrings:=true;
with T.Dependencies do
begin
AddUnit('httpprotocol');
AddUnit('cgiprotocol');
AddUnit('httpdefs');
end;
T:=P.Targets.AddUnit('ezcgi.pp');
T:=P.Targets.AddUnit('fpcgi.pp');
with T.Dependencies do
begin
AddUnit('httpdefs');
AddUnit('fphttp');
end;
T:=P.Targets.AddUnit('fpdatasetform.pp');
with T.Dependencies do
begin
AddUnit('fphtml');
end;
T:=P.Targets.AddUnit('fphtml.pp');
T.ResourceStrings:=true;
with T.Dependencies do
begin
AddUnit('httpdefs');
AddUnit('fphttp');
end;
T:=P.Targets.AddUnit('fphttp.pp');
T.ResourceStrings:=true;
with T.Dependencies do
begin
AddUnit('httpdefs');
end;
T:=P.Targets.AddUnit('fpweb.pp');
T.ResourceStrings:=true;
with T.Dependencies do
begin
AddUnit('httpdefs');
AddUnit('fphttp');
AddUnit('websession');
end;
T:=P.Targets.AddUnit('httpprotocol.pp');
T:=P.Targets.AddUnit('cgiprotocol.pp');
T:=P.Targets.AddUnit('iniwebsession.pp');
T.ResourceStrings:=true;
with T.Dependencies do
begin
AddUnit('fphttp');
AddUnit('httpdefs');
end;
T:=P.Targets.AddUnit('websession.pp');
with T.Dependencies do
begin
AddUnit('iniwebsession');
end;
T:=P.Targets.AddUnit('webutil.pp');
with T.Dependencies do
begin
AddUnit('httpdefs');
end;
with P.Targets.AddUnit('custweb.pp') do
begin
ResourceStrings:=true;
Dependencies.AddUnit('httpdefs');
Dependencies.AddUnit('httproute');
Dependencies.AddUnit('fphttp');
end;
with P.Targets.AddUnit('webpage.pp') do
begin
Dependencies.AddUnit('httpdefs');
Dependencies.AddUnit('fphtml');
Dependencies.AddUnit('fpweb');
end;
with P.Targets.AddUnit('fpfcgi.pp') do
begin
OSes:=SocketsOSes;
Dependencies.AddUnit('custfcgi');
end;
with P.Targets.AddUnit('custfcgi.pp') do
begin
OSes:=SocketsOSes;
Dependencies.AddUnit('httpprotocol');
Dependencies.AddUnit('cgiprotocol');
Dependencies.AddUnit('custcgi');
Dependencies.AddUnit('httpdefs');
Dependencies.AddUnit('custweb');
ResourceStrings:=true;
end;
with P.Targets.AddUnit('custapache.pp') do
begin
OSes:=ApacheOses;
Dependencies.AddUnit('httpprotocol');
Dependencies.AddUnit('fphttp');
Dependencies.AddUnit('custweb');
ResourceStrings:=true;
end;
with P.Targets.AddUnit('fpapache.pp') do
begin
OSes:=ApacheOSes;
Dependencies.AddUnit('custapache');
end;
with P.Targets.AddUnit('custapache24.pp') do
begin
OSes:=ApacheOSes;
Dependencies.AddUnit('fphttp');
Dependencies.AddUnit('custweb');
ResourceStrings:=true;
end;
with P.Targets.AddUnit('fpapache24.pp') do
begin
OSes:=ApacheOSes;
Dependencies.AddUnit('custapache24');
end;
with P.Targets.AddUnit('custhttpsys.pp') do
begin
OSes:=[Win32,Win64];
Dependencies.AddUnit('custweb');
Dependencies.AddUnit('httpdefs');
Dependencies.AddUnit('httpprotocol');
ResourceStrings:=true;
end;
with P.Targets.AddUnit('fphttpsys.pp') do
begin
OSes:=[Win32,Win64];
Dependencies.AddUnit('custhttpsys');
end;
with P.Targets.AddUnit('custmicrohttpapp.pp') do
begin
Dependencies.AddUnit('custweb');
Dependencies.AddUnit('httpdefs');
Dependencies.AddUnit('httpprotocol');
ResourceStrings:=true;
OSes := LibMicroHttpdOSes;
if Defaults.CPU=jvm then
OSes := OSes - [java,android];
end;
with P.Targets.AddUnit('microhttpapp.pp') do
begin
Dependencies.AddUnit('custweb');
Dependencies.AddUnit('httpdefs');
Dependencies.AddUnit('httpprotocol');
Dependencies.AddUnit('custmicrohttpapp');
OSes := LibMicroHttpdOSes;
if Defaults.CPU=jvm then
OSes := OSes - [java,android];
end;
with P.Targets.AddUnit('fphttpstatus.pas') do
begin
OSes:=SocketsOSes;
Dependencies.AddUnit('fphttpserver');
Dependencies.AddUnit('HTTPDefs');
end;
T:=P.Targets.AddUnit('fcgigate.pp');
T.ResourceStrings:=true;
T.OSes:=SocketsOSes;
With T.Dependencies do
begin
AddUnit('httpdefs');
AddUnit('custcgi');
end;
T:=P.Targets.AddUnit('fphttpserver.pp');
T.ResourceStrings:=true;
T.OSes:=SocketsOSes;
with T.Dependencies do
begin
AddUnit('httpdefs');
end;
T:=P.Targets.AddUnit('fphttpclient.pp');
T.OSes:=SocketsOSes;
T.ResourceStrings:=true;
T:=P.Targets.AddUnit('custhttpapp.pp');
T.OSes:=SocketsOSes;
// T.ResourceStrings:=true;
T:=P.Targets.AddUnit('fphttpapp.pp');
T.OSes:=SocketsOSes;
T:=P.Targets.AddUnit('fpwebfile.pp');
With T.Dependencies do
begin
AddUnit('fphttp');
AddUnit('httpdefs');
AddUnit('httproute');
end;
T:=P.Targets.AddUnit('fpdebugcapturesvc.pp');
With T.Dependencies do
begin
AddUnit('fphttp');
AddUnit('httpdefs');
AddUnit('httproute');
end;
T:=P.Targets.AddUnit('fpwebproxy.pp');
T.OSes:=SocketsOSes;
With T.Dependencies do
begin
AddUnit('fphttp');
AddUnit('httpdefs');
AddUnit('httpprotocol');
AddUnit('fphttpclient');
end;
T.ResourceStrings:=true;
T:=P.Targets.AddUnit('fpwebdata.pp');
T.ResourceStrings:=true;
With T.Dependencies do
begin
AddUnit('httpdefs');
AddUnit('fphttp');
AddUnit('websession');
end;
T:=P.Targets.AddUnit('sqldbwebdata.pp');
T.ResourceStrings:=true;
T.OSes:=SqldbConnectionOSes;
With T.Dependencies do
begin
AddUnit('fpwebdata');
AddUnit('fphttp');
end;
T:=P.Targets.AddUnit('fpextjs.pp');
T.ResourceStrings:=true;
With T.Dependencies do
begin
AddUnit('fpwebdata');
AddUnit('httpdefs');
AddUnit('fphttp');
end;
T:=P.Targets.AddUnit('extjsxml.pp');
T.ResourceStrings:=true;
With T.Dependencies do
begin
AddUnit('fpwebdata');
AddUnit('httpdefs');
AddUnit('fpextjs');
end;
T:=P.Targets.AddUnit('extjsjson.pp');
T.ResourceStrings:=true;
With T.Dependencies do
begin
AddUnit('fpwebdata');
AddUnit('httpdefs');
AddUnit('fpextjs');
end;
T:=P.Targets.AddUnit('fprpcstrings.pp');
T.ResourceStrings:=true;
T:=P.Targets.AddUnit('fpjsonrpc.pp');
T:=P.Targets.AddUnit('webjsonrpc.pp');
With T.Dependencies do
begin
AddUnit('fpjsonrpc');
end;
T:=P.Targets.AddUnit('fprpcrtti.pp');
With T.Dependencies do
begin
AddUnit('fpjsonrpc');
end;
T:=P.Targets.AddUnit('fprpcclient.pp');
T.OSes:=SocketsOSes;
T.Dependencies.AddUnit('fpwebclient');
T.Dependencies.AddUnit('fphttpwebclient');
T:=P.Targets.AddUnit('fprpccodegen.pp');
T:=P.Targets.AddUnit('fpdispextdirect.pp');
T.OSes:=AllOSes-[wasi];
With T.Dependencies do
begin
AddUnit('fpjsonrpc');
end;
T:=P.Targets.AddUnit('fpextdirect.pp');
T.OSes:=AllOSes-[wasi];
With T.Dependencies do
begin
AddUnit('fpdispextdirect');
AddUnit('webjsonrpc');
AddUnit('httpdefs');
end;
T:=P.Targets.AddUnit('fpwebclient.pp');
T:=P.Targets.AddUnit('fpjwt.pp');
T:=P.Targets.AddUnit('fpoauth2.pp');
T.ResourceStrings:=true;
T.Dependencies.AddUnit('fpwebclient');
T.Dependencies.AddUnit('fpjwt');
T:=P.Targets.AddUnit('fpoauth2ini.pp');
T.Dependencies.AddUnit('fpoauth2');
T:=P.Targets.AddUnit('fpjwasha256.pp');
T.Dependencies.AddUnit('fpjwt');
T:=P.Targets.AddUnit('fpjwasha512.pp');
T.Dependencies.AddUnit('fpjwt');
T:=P.Targets.AddUnit('fpjwasha384.pp');
T.Dependencies.AddUnit('fpjwt');
T:=P.Targets.AddUnit('fpjwaes256.pp');
T.Dependencies.AddUnit('fpjwt');
T:=P.Targets.AddUnit('fpjwarsa.pp');
T.Dependencies.AddUnit('fpjwt');
T:=P.Targets.AddUnit('fphttpwebclient.pp');
T.oses:=SocketsOSes;
T.Dependencies.AddUnit('fpwebclient');
T:=P.Targets.AddUnit('restbase.pp');
T:=P.Targets.AddUnit('restcodegen.pp');
T:=P.Targets.AddUnit('uhpacktables.pp');
T:=P.Targets.AddUnit('uhpackimp.pp');
With T.Dependencies do
AddUnit('uhpacktables');
T:=P.Targets.AddUnit('uhpack.pp');
With T.Dependencies do
begin
AddUnit('uhpackimp');
end;
T:=P.Targets.AddUnit('sqldbrestconst.pp');
T.ResourceStrings:=true;
T.OSes:=SqldbConnectionOSes;
T:=P.Targets.AddUnit('sqldbrestschema.pp');
T.OSes:=SqldbConnectionOSes;
With T.Dependencies do
begin
AddUnit('sqldbrestconst');
end;
T:=P.Targets.AddUnit('sqldbrestio.pp');
T.OSes:=SqldbConnectionOSes;
With T.Dependencies do
begin
AddUnit('sqldbrestconst');
AddUnit('sqldbrestschema');
end;
T:=P.Targets.AddUnit('sqldbrestdata.pp');
T.OSes:=SqldbConnectionOSes;
With T.Dependencies do
begin
AddUnit('sqldbrestconst');
AddUnit('sqldbrestschema');
AddUnit('sqldbrestio');
end;
T:=P.Targets.AddUnit('sqldbrestauth.pp');
T.OSes:=SqldbConnectionOSes;
With T.Dependencies do
begin
AddUnit('sqldbrestconst');
AddUnit('sqldbrestio');
AddUnit('sqldbrestschema');
end;
T:=P.Targets.AddUnit('sqldbrestjson.pp');
T.OSes:=SqldbConnectionOSes;
With T.Dependencies do
begin
AddUnit('sqldbrestio');
AddUnit('sqldbrestschema');
AddUnit('sqldbrestconst');
end;
T:=P.Targets.AddUnit('sqldbrestbridge.pp');
T.OSes:=SqldbConnectionOSes;
With T.Dependencies do
begin
AddUnit('sqldbrestio');
AddUnit('sqldbrestdata');
AddUnit('sqldbrestschema');
AddUnit('sqldbrestconst');
end;
T:=P.Targets.AddUnit('sqldbrestcds.pp');
T.OSes:=SqldbConnectionOSes;
With T.Dependencies do
begin
AddUnit('sqldbrestio');
AddUnit('sqldbrestschema');
AddUnit('sqldbrestconst');
end;
T:=P.Targets.AddUnit('sqldbrestcsv.pp');
T.OSes:=SqldbConnectionOSes;
With T.Dependencies do
begin
AddUnit('sqldbrestio');
AddUnit('sqldbrestschema');
AddUnit('sqldbrestconst');
end;
T:=P.Targets.AddUnit('sqldbrestxml.pp');
T.OSes:=SqldbConnectionOSes;
With T.Dependencies do
begin
AddUnit('sqldbrestio');
AddUnit('sqldbrestschema');
AddUnit('sqldbrestconst');
end;
T:=P.Targets.AddUnit('sqldbrestado.pp');
T.OSes:=SqldbConnectionOSes;
With T.Dependencies do
begin
AddUnit('sqldbrestio');
AddUnit('sqldbrestschema');
AddUnit('sqldbrestconst');
end;
T:=P.Targets.AddUnit('sqldbrestini.pp');
T.OSes:=SqldbConnectionOSes;
With T.Dependencies do
begin
AddUnit('sqldbrestbridge');
AddUnit('sqldbrestschema');
AddUnit('sqldbrestconst');
end;
T:=P.Targets.AddUnit('sqldbrestauthini.pp');
T.OSes:=SqldbConnectionOSes;
With T.Dependencies do
begin
AddUnit('sqldbrestauth');
AddUnit('sqldbrestschema');
AddUnit('sqldbrestconst');
end;
T:=P.Targets.AddUnit('sqldbrestmodule.pp');
T.OSes:=SqldbConnectionOSes;
With T.Dependencies do
begin
AddUnit('sqldbrestbridge');
AddUnit('sqldbrestconst');
end;
T:=P.Targets.AddUnit('fpwebsocket.pp');
T.OSes:=SocketsOSes;
T.Resourcestrings:=True;
T:=P.Targets.AddUnit('fpcustwsserver.pp');
T.OSes:=SocketsOSes;
With T.Dependencies do
begin
AddUnit('fpwebsocket');
end;
T:=P.Targets.AddUnit('fpwebsocketserver.pp');
T.OSes:=SocketsOSes;
With T.Dependencies do
begin
AddUnit('fpwebsocket');
AddUnit('fpcustwsserver');
end;
T:=P.Targets.AddUnit('fpwebsocketclient.pp');
T.OSes:=SocketsOSes;
With T.Dependencies do
begin
AddUnit('fpwebsocket');
end;
T:=P.Targets.AddUnit('wsupgrader.pp');
T.OSes:=SocketsOSes;
With T.Dependencies do
begin
AddUnit('fpwebsocket');
AddUnit('fpcustwsserver');
end;
end;
T:=P.Targets.AddUnit('fphttpclientpool.pas');
T.OSes:=SocketsOSes;
T.Resourcestrings:=True;
With T.Dependencies do
begin
AddUnit('fphttpclient');
end;
T:=P.Targets.AddUnit('fphttpclientasyncpool.pas');
T.OSes:=SocketsOSes;
With T.Dependencies do
begin
AddUnit('fphttpclient');
AddUnit('fphttpclientpool');
end;
P.NamespaceMap:='namespaces.lst';
T:=P.Targets.AddUnit('fpfcmstrings.pp');
T:=P.Targets.AddUnit('fpfcmtypes.pp');
With T.Dependencies do
begin
AddUnit('fpjwt');
AddUnit('fpfcmstrings');
end;
T:=P.Targets.AddUnit('fpfcmclient.pp');
With T.Dependencies do
begin
AddUnit('fpfcmstrings');
AddUnit('fpfcmtypes');
end;
end;
{$ifndef ALLPACKAGES}
begin
add_fcl_web('');
Installer.Run;
end.
{$endif ALLPACKAGES}