fpmake.pp 16 KB

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