fpmake.pp 15 KB

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