fpmake.pp 15 KB

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