fpmake.pp 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519
  1. {$ifndef ALLPACKAGES}
  2. {$mode objfpc}{$H+}
  3. program fpmake;
  4. uses {$ifdef unix}cthreads,{$endif} fpmkunit;
  5. {$endif ALLPACKAGES}
  6. procedure add_fcl_web(const ADirectory: string);
  7. Const
  8. LibMicroHttpdOSes = AllUnixOSes + [win32,win64];
  9. SqldbConnectionOSes = [aix,beos,haiku,linux,freebsd,darwin,iphonesim,ios,netbsd,openbsd,solaris,win32,win64,wince,android,dragonfly];
  10. SqliteOSes = [aix,beos,haiku,linux,freebsd,darwin,iphonesim,ios,netbsd,openbsd,solaris,win32,win64,wince,android,dragonfly];
  11. Var
  12. T : TTarget;
  13. P : TPackage;
  14. begin
  15. With Installer do
  16. begin
  17. P:=AddPackage('fcl-web');
  18. P.ShortName:='fclw';
  19. P.Directory:=ADirectory;
  20. P.Version:='3.3.1';
  21. P.OSes := [beos,haiku,freebsd,darwin,iphonesim,ios,solaris,netbsd,openbsd,linux,win32,win64,wince,aix,amiga,aros,morphos,dragonfly,android];
  22. if Defaults.CPU=jvm then
  23. P.OSes := P.OSes - [java,android];
  24. P.Dependencies.Add('fcl-base');
  25. P.Dependencies.Add('fcl-db');
  26. P.Dependencies.Add('fcl-xml');
  27. P.Dependencies.Add('fcl-json');
  28. P.Dependencies.Add('fcl-net');
  29. P.Dependencies.Add('fcl-process');
  30. P.Dependencies.Add('fcl-fpcunit');
  31. P.Dependencies.Add('fcl-hash');
  32. P.Dependencies.Add('hash');
  33. P.Dependencies.Add('fcl-registry',AllWindowsOSes);
  34. P.Dependencies.Add('openssl',AllUnixOSes+AllWindowsOSes);
  35. P.Dependencies.Add('fastcgi');
  36. P.Dependencies.Add('httpd22', AllOses - [amiga,aros,morphos]);
  37. P.Dependencies.Add('httpd24', AllOses - [amiga,aros,morphos]);
  38. P.Dependencies.Add('winunits-base', [Win32,Win64]);
  39. // (Temporary) indirect dependencies, not detected by fpcmake:
  40. P.Dependencies.Add('univint',[MacOSX,iphonesim,ios]);
  41. P.Dependencies.Add('libmicrohttpd',LibMicroHttpdOSes);
  42. P.Author := 'FreePascal development team';
  43. P.License := 'LGPL with modification, ';
  44. P.HomepageURL := 'www.freepascal.org';
  45. P.Email := '';
  46. P.Description := 'Web(app) related parts of Free Component Libraries (FCL), FPC''s OOP library.';
  47. P.NeedLibC:= false;
  48. P.SourcePath.Add('src/base');
  49. P.SourcePath.Add('src/webdata');
  50. P.SourcePath.Add('src/jwt');
  51. P.SourcePath.Add('src/jsonrpc');
  52. P.SourcePath.Add('src/hpack');
  53. P.SourcePath.Add('src/restbridge');
  54. P.SourcePath.Add('src/websocket');
  55. T:=P.Targets.addUnit('fpmimetypes.pp');
  56. T:=P.Targets.AddUnit('httpdefs.pp');
  57. T.ResourceStrings:=true;
  58. T.Dependencies.AddUnit('httpprotocol');
  59. T:=P.Targets.AddUnit('httproute.pp');
  60. T.ResourceStrings:=true;
  61. T.Dependencies.AddUnit('httpdefs');
  62. T:=P.Targets.AddUnit('httpjson.pp');
  63. T.ResourceStrings:=true;
  64. T.Dependencies.AddUnit('httpdefs');
  65. T.Dependencies.AddUnit('httpprotocol');
  66. T:=P.Targets.AddUnit('cgiapp.pp');
  67. T.ResourceStrings:=true;
  68. T:=P.Targets.AddUnit('custcgi.pp');
  69. T.ResourceStrings:=true;
  70. with T.Dependencies do
  71. begin
  72. AddUnit('httpprotocol');
  73. AddUnit('cgiprotocol');
  74. AddUnit('httpdefs');
  75. end;
  76. T:=P.Targets.AddUnit('ezcgi.pp');
  77. T:=P.Targets.AddUnit('fpcgi.pp');
  78. with T.Dependencies do
  79. begin
  80. AddUnit('httpdefs');
  81. AddUnit('fphttp');
  82. end;
  83. T:=P.Targets.AddUnit('fpdatasetform.pp');
  84. with T.Dependencies do
  85. begin
  86. AddUnit('fphtml');
  87. end;
  88. T:=P.Targets.AddUnit('fphtml.pp');
  89. T.ResourceStrings:=true;
  90. with T.Dependencies do
  91. begin
  92. AddUnit('httpdefs');
  93. AddUnit('fphttp');
  94. end;
  95. T:=P.Targets.AddUnit('fphttp.pp');
  96. T.ResourceStrings:=true;
  97. with T.Dependencies do
  98. begin
  99. AddUnit('httpdefs');
  100. end;
  101. T:=P.Targets.AddUnit('fpweb.pp');
  102. T.ResourceStrings:=true;
  103. with T.Dependencies do
  104. begin
  105. AddUnit('httpdefs');
  106. AddUnit('fphttp');
  107. AddUnit('websession');
  108. end;
  109. T:=P.Targets.AddUnit('httpprotocol.pp');
  110. T:=P.Targets.AddUnit('cgiprotocol.pp');
  111. T:=P.Targets.AddUnit('iniwebsession.pp');
  112. T.ResourceStrings:=true;
  113. with T.Dependencies do
  114. begin
  115. AddUnit('fphttp');
  116. AddUnit('httpdefs');
  117. end;
  118. T:=P.Targets.AddUnit('websession.pp');
  119. with T.Dependencies do
  120. begin
  121. AddUnit('iniwebsession');
  122. end;
  123. T:=P.Targets.AddUnit('webutil.pp');
  124. with T.Dependencies do
  125. begin
  126. AddUnit('httpdefs');
  127. end;
  128. with P.Targets.AddUnit('custweb.pp') do
  129. begin
  130. ResourceStrings:=true;
  131. Dependencies.AddUnit('httpdefs');
  132. Dependencies.AddUnit('httproute');
  133. Dependencies.AddUnit('fphttp');
  134. end;
  135. with P.Targets.AddUnit('webpage.pp') do
  136. begin
  137. Dependencies.AddUnit('httpdefs');
  138. Dependencies.AddUnit('fphtml');
  139. Dependencies.AddUnit('fpweb');
  140. end;
  141. with P.Targets.AddUnit('fpfcgi.pp') do
  142. begin
  143. OSes:=AllOses-[wince,darwin,iphonesim,ios,aix,amiga,aros,morphos];
  144. Dependencies.AddUnit('custfcgi');
  145. end;
  146. with P.Targets.AddUnit('custfcgi.pp') do
  147. begin
  148. OSes:=AllOses-[wince,darwin,iphonesim,ios,aix,amiga,aros,morphos];
  149. Dependencies.AddUnit('httpprotocol');
  150. Dependencies.AddUnit('cgiprotocol');
  151. Dependencies.AddUnit('custcgi');
  152. Dependencies.AddUnit('httpdefs');
  153. Dependencies.AddUnit('custweb');
  154. ResourceStrings:=true;
  155. end;
  156. with P.Targets.AddUnit('custapache.pp') do
  157. begin
  158. OSes:=AllOses-[amiga,aros,morphos];
  159. Dependencies.AddUnit('httpprotocol');
  160. Dependencies.AddUnit('fphttp');
  161. Dependencies.AddUnit('custweb');
  162. ResourceStrings:=true;
  163. end;
  164. with P.Targets.AddUnit('fpapache.pp') do
  165. begin
  166. OSes:=AllOses-[amiga,aros,morphos];
  167. Dependencies.AddUnit('custapache');
  168. end;
  169. with P.Targets.AddUnit('custapache24.pp') do
  170. begin
  171. OSes:=AllOses-[amiga,aros,morphos];
  172. Dependencies.AddUnit('fphttp');
  173. Dependencies.AddUnit('custweb');
  174. ResourceStrings:=true;
  175. end;
  176. with P.Targets.AddUnit('fpapache24.pp') do
  177. begin
  178. OSes:=AllOses-[amiga,aros,morphos];
  179. Dependencies.AddUnit('custapache24');
  180. end;
  181. with P.Targets.AddUnit('custhttpsys.pp') do
  182. begin
  183. OSes:=[Win32,Win64];
  184. Dependencies.AddUnit('custweb');
  185. Dependencies.AddUnit('httpdefs');
  186. Dependencies.AddUnit('httpprotocol');
  187. ResourceStrings:=true;
  188. end;
  189. with P.Targets.AddUnit('fphttpsys.pp') do
  190. begin
  191. OSes:=[Win32,Win64];
  192. Dependencies.AddUnit('custhttpsys');
  193. end;
  194. with P.Targets.AddUnit('custmicrohttpapp.pp') do
  195. begin
  196. Dependencies.AddUnit('custweb');
  197. Dependencies.AddUnit('httpdefs');
  198. Dependencies.AddUnit('httpprotocol');
  199. ResourceStrings:=true;
  200. OSes := LibMicroHttpdOSes;
  201. if Defaults.CPU=jvm then
  202. OSes := OSes - [java,android];
  203. end;
  204. with P.Targets.AddUnit('microhttpapp.pp') do
  205. begin
  206. Dependencies.AddUnit('custweb');
  207. Dependencies.AddUnit('httpdefs');
  208. Dependencies.AddUnit('httpprotocol');
  209. Dependencies.AddUnit('custmicrohttpapp');
  210. OSes := LibMicroHttpdOSes;
  211. if Defaults.CPU=jvm then
  212. OSes := OSes - [java,android];
  213. end;
  214. with P.Targets.AddUnit('fphttpstatus.pas') do
  215. begin
  216. Dependencies.AddUnit('fphttpserver');
  217. Dependencies.AddUnit('HTTPDefs');
  218. end;
  219. T:=P.Targets.AddUnit('fcgigate.pp');
  220. T.ResourceStrings:=true;
  221. With T.Dependencies do
  222. begin
  223. AddUnit('httpdefs');
  224. AddUnit('custcgi');
  225. end;
  226. T:=P.Targets.AddUnit('fphttpserver.pp');
  227. T.ResourceStrings:=true;
  228. with T.Dependencies do
  229. begin
  230. AddUnit('httpdefs');
  231. end;
  232. T:=P.Targets.AddUnit('fphttpclient.pp');
  233. T.ResourceStrings:=true;
  234. T:=P.Targets.AddUnit('custhttpapp.pp');
  235. // T.ResourceStrings:=true;
  236. T:=P.Targets.AddUnit('fphttpapp.pp');
  237. T:=P.Targets.AddUnit('fpwebfile.pp');
  238. With T.Dependencies do
  239. begin
  240. AddUnit('fphttp');
  241. AddUnit('httpdefs');
  242. AddUnit('httproute');
  243. end;
  244. T:=P.Targets.AddUnit('fpwebproxy.pp');
  245. With T.Dependencies do
  246. begin
  247. AddUnit('fphttp');
  248. AddUnit('httpdefs');
  249. AddUnit('httpprotocol');
  250. AddUnit('fphttpclient');
  251. end;
  252. T.ResourceStrings:=true;
  253. T:=P.Targets.AddUnit('fpwebdata.pp');
  254. T.ResourceStrings:=true;
  255. With T.Dependencies do
  256. begin
  257. AddUnit('httpdefs');
  258. AddUnit('fphttp');
  259. AddUnit('websession');
  260. end;
  261. T:=P.Targets.AddUnit('sqldbwebdata.pp');
  262. T.ResourceStrings:=true;
  263. T.OSes:=SqldbConnectionOSes;
  264. With T.Dependencies do
  265. begin
  266. AddUnit('fpwebdata');
  267. AddUnit('fphttp');
  268. end;
  269. T:=P.Targets.AddUnit('fpextjs.pp');
  270. T.ResourceStrings:=true;
  271. With T.Dependencies do
  272. begin
  273. AddUnit('fpwebdata');
  274. AddUnit('httpdefs');
  275. AddUnit('fphttp');
  276. end;
  277. T:=P.Targets.AddUnit('extjsxml.pp');
  278. T.ResourceStrings:=true;
  279. With T.Dependencies do
  280. begin
  281. AddUnit('fpwebdata');
  282. AddUnit('httpdefs');
  283. AddUnit('fpextjs');
  284. end;
  285. T:=P.Targets.AddUnit('extjsjson.pp');
  286. T.ResourceStrings:=true;
  287. With T.Dependencies do
  288. begin
  289. AddUnit('fpwebdata');
  290. AddUnit('httpdefs');
  291. AddUnit('fpextjs');
  292. end;
  293. T:=P.Targets.AddUnit('fprpcstrings.pp');
  294. T.ResourceStrings:=true;
  295. T:=P.Targets.AddUnit('fpjsonrpc.pp');
  296. T:=P.Targets.AddUnit('webjsonrpc.pp');
  297. With T.Dependencies do
  298. begin
  299. AddUnit('fpjsonrpc');
  300. end;
  301. T:=P.Targets.AddUnit('fprpcrtti.pp');
  302. With T.Dependencies do
  303. begin
  304. AddUnit('fpjsonrpc');
  305. end;
  306. T:=P.Targets.AddUnit('fprpcclient.pp');
  307. T:=P.Targets.AddUnit('fprpccodegen.pp');
  308. T:=P.Targets.AddUnit('fpdispextdirect.pp');
  309. With T.Dependencies do
  310. begin
  311. AddUnit('fpjsonrpc');
  312. end;
  313. T:=P.Targets.AddUnit('fpextdirect.pp');
  314. With T.Dependencies do
  315. begin
  316. AddUnit('fpdispextdirect');
  317. AddUnit('webjsonrpc');
  318. AddUnit('httpdefs');
  319. end;
  320. T:=P.Targets.AddUnit('fpwebclient.pp');
  321. T:=P.Targets.AddUnit('fpjwt.pp');
  322. T:=P.Targets.AddUnit('fpoauth2.pp');
  323. T.ResourceStrings:=true;
  324. T.Dependencies.AddUnit('fpwebclient');
  325. T.Dependencies.AddUnit('fpjwt');
  326. T:=P.Targets.AddUnit('fpoauth2ini.pp');
  327. T.Dependencies.AddUnit('fpoauth2');
  328. T:=P.Targets.AddUnit('fpjwasha256.pp');
  329. T.Dependencies.AddUnit('fpjwt');
  330. T:=P.Targets.AddUnit('fpjwasha512.pp');
  331. T.Dependencies.AddUnit('fpjwt');
  332. T:=P.Targets.AddUnit('fpjwasha384.pp');
  333. T.Dependencies.AddUnit('fpjwt');
  334. T:=P.Targets.AddUnit('fpjwaes256.pp');
  335. T.Dependencies.AddUnit('fpjwt');
  336. T:=P.Targets.AddUnit('fpjwarsa.pp');
  337. T.Dependencies.AddUnit('fpjwt');
  338. T:=P.Targets.AddUnit('fphttpwebclient.pp');
  339. T.Dependencies.AddUnit('fpwebclient');
  340. T:=P.Targets.AddUnit('restbase.pp');
  341. T:=P.Targets.AddUnit('restcodegen.pp');
  342. T:=P.Targets.AddUnit('uhpacktables.pp');
  343. T:=P.Targets.AddUnit('uhpackimp.pp');
  344. With T.Dependencies do
  345. AddUnit('uhpacktables');
  346. T:=P.Targets.AddUnit('uhpack.pp');
  347. With T.Dependencies do
  348. begin
  349. AddUnit('uhpackimp');
  350. end;
  351. T:=P.Targets.AddUnit('sqldbrestconst.pp');
  352. T.ResourceStrings:=true;
  353. T.OSes:=SqldbConnectionOSes;
  354. T:=P.Targets.AddUnit('sqldbrestschema.pp');
  355. T.OSes:=SqldbConnectionOSes;
  356. With T.Dependencies do
  357. begin
  358. AddUnit('sqldbrestconst');
  359. end;
  360. T:=P.Targets.AddUnit('sqldbrestio.pp');
  361. T.OSes:=SqldbConnectionOSes;
  362. With T.Dependencies do
  363. begin
  364. AddUnit('sqldbrestconst');
  365. AddUnit('sqldbrestschema');
  366. end;
  367. T:=P.Targets.AddUnit('sqldbrestdata.pp');
  368. T.OSes:=SqldbConnectionOSes;
  369. With T.Dependencies do
  370. begin
  371. AddUnit('sqldbrestconst');
  372. AddUnit('sqldbrestschema');
  373. AddUnit('sqldbrestio');
  374. end;
  375. T:=P.Targets.AddUnit('sqldbrestauth.pp');
  376. T.OSes:=SqldbConnectionOSes;
  377. With T.Dependencies do
  378. begin
  379. AddUnit('sqldbrestconst');
  380. AddUnit('sqldbrestio');
  381. AddUnit('sqldbrestschema');
  382. end;
  383. T:=P.Targets.AddUnit('sqldbrestjson.pp');
  384. T.OSes:=SqldbConnectionOSes;
  385. With T.Dependencies do
  386. begin
  387. AddUnit('sqldbrestio');
  388. AddUnit('sqldbrestschema');
  389. AddUnit('sqldbrestconst');
  390. end;
  391. T:=P.Targets.AddUnit('sqldbrestbridge.pp');
  392. T.OSes:=SqldbConnectionOSes;
  393. With T.Dependencies do
  394. begin
  395. AddUnit('sqldbrestio');
  396. AddUnit('sqldbrestdata');
  397. AddUnit('sqldbrestschema');
  398. AddUnit('sqldbrestconst');
  399. end;
  400. T:=P.Targets.AddUnit('sqldbrestcds.pp');
  401. T.OSes:=SqldbConnectionOSes;
  402. With T.Dependencies do
  403. begin
  404. AddUnit('sqldbrestio');
  405. AddUnit('sqldbrestschema');
  406. AddUnit('sqldbrestconst');
  407. end;
  408. T:=P.Targets.AddUnit('sqldbrestcsv.pp');
  409. T.OSes:=SqldbConnectionOSes;
  410. With T.Dependencies do
  411. begin
  412. AddUnit('sqldbrestio');
  413. AddUnit('sqldbrestschema');
  414. AddUnit('sqldbrestconst');
  415. end;
  416. T:=P.Targets.AddUnit('sqldbrestxml.pp');
  417. T.OSes:=SqldbConnectionOSes;
  418. With T.Dependencies do
  419. begin
  420. AddUnit('sqldbrestio');
  421. AddUnit('sqldbrestschema');
  422. AddUnit('sqldbrestconst');
  423. end;
  424. T:=P.Targets.AddUnit('sqldbrestado.pp');
  425. T.OSes:=SqldbConnectionOSes;
  426. With T.Dependencies do
  427. begin
  428. AddUnit('sqldbrestio');
  429. AddUnit('sqldbrestschema');
  430. AddUnit('sqldbrestconst');
  431. end;
  432. T:=P.Targets.AddUnit('sqldbrestini.pp');
  433. T.OSes:=SqldbConnectionOSes;
  434. With T.Dependencies do
  435. begin
  436. AddUnit('sqldbrestbridge');
  437. AddUnit('sqldbrestschema');
  438. AddUnit('sqldbrestconst');
  439. end;
  440. T:=P.Targets.AddUnit('sqldbrestauthini.pp');
  441. T.OSes:=SqldbConnectionOSes;
  442. With T.Dependencies do
  443. begin
  444. AddUnit('sqldbrestauth');
  445. AddUnit('sqldbrestschema');
  446. AddUnit('sqldbrestconst');
  447. end;
  448. T:=P.Targets.AddUnit('sqldbrestmodule.pp');
  449. T.OSes:=SqldbConnectionOSes;
  450. With T.Dependencies do
  451. begin
  452. AddUnit('sqldbrestbridge');
  453. AddUnit('sqldbrestconst');
  454. end;
  455. T:=P.Targets.AddUnit('fpwebsocket.pp');
  456. T.Resourcestrings:=True;
  457. T:=P.Targets.AddUnit('fpcustwsserver.pp');
  458. With T.Dependencies do
  459. begin
  460. AddUnit('fpwebsocket');
  461. end;
  462. T:=P.Targets.AddUnit('fpwebsocketserver.pp');
  463. With T.Dependencies do
  464. begin
  465. AddUnit('fpwebsocket');
  466. AddUnit('fpcustwsserver');
  467. end;
  468. T:=P.Targets.AddUnit('fpwebsocketclient.pp');
  469. With T.Dependencies do
  470. begin
  471. AddUnit('fpwebsocket');
  472. end;
  473. T:=P.Targets.AddUnit('wsupgrader.pp');
  474. With T.Dependencies do
  475. begin
  476. AddUnit('fpwebsocket');
  477. AddUnit('fpcustwsserver');
  478. end;
  479. end;
  480. T:=P.Targets.AddUnit('fphttpclientpool.pas');
  481. T.Resourcestrings:=True;
  482. With T.Dependencies do
  483. begin
  484. AddUnit('fphttpclient');
  485. end;
  486. T:=P.Targets.AddUnit('fphttpclientasyncpool.pas');
  487. With T.Dependencies do
  488. begin
  489. AddUnit('fphttpclient');
  490. AddUnit('fphttpclientpool');
  491. end;
  492. P.NamespaceMap:='namespaces.lst';
  493. end;
  494. {$ifndef ALLPACKAGES}
  495. begin
  496. add_fcl_web('');
  497. Installer.Run;
  498. end.
  499. {$endif ALLPACKAGES}