fpmake.inc 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. Const
  2. GraphDir = 'inc/graph/';
  3. SysUtilsDir = 'objpas/sysutils/';
  4. Unixes = [darwin,freebsd,linux,netbsd,openbsd];
  5. Function CurrentOS : String;
  6. begin
  7. Result:=OSToString(Defaults.OS);
  8. end;
  9. Function CurrentCPU : String;
  10. begin
  11. Result:=CPUToString(Defaults.CPU);
  12. end;
  13. Function OSDir(CorrectUnix : Boolean = True) : String;
  14. begin
  15. If CorrectUnix and (Defaults.OS in Unixes) then
  16. Result:='unix/'
  17. else
  18. Result:=IncludeTrailingPathDelimiter(CurrentOS);
  19. end;
  20. Function CPUDir : String;
  21. begin
  22. Result:=IncludeTrailingPathDelimiter(CurrentCPU);
  23. end;
  24. Procedure InitRTL(Installer : TInstaller);
  25. Var
  26. O : String;
  27. begin
  28. With Installer Do
  29. begin
  30. StartPackage('rtl');
  31. Version:={$i %FPCVERSION%};
  32. Author:='The FPC team';
  33. O:='-Fi'+OSDir(false)+' -Fiinc -Fi'+CurrentCPU;
  34. If Defaults.OS in Unixes then
  35. O:=O+' -Fiunix';
  36. DefaultPackage.Options:=O;
  37. end;
  38. end;
  39. Procedure AddSystemDependencies(Targets : TTargets);
  40. Var
  41. I : Integer;
  42. begin
  43. With Targets do
  44. For I:=0 to Count-1 do
  45. if (TargetItems[i].Name<>'system') then
  46. TargetItems[i].Dependencies.Add('system');
  47. end;
  48. Procedure AddCurrentOS(T : TTarget = Nil);
  49. Var
  50. I : Integer;
  51. O : TOSes;
  52. begin
  53. If (T<>Nil) then
  54. begin
  55. O:=T.OS;
  56. If (O<>[]) then
  57. Include(O,Defaults.OS)
  58. else
  59. // Don't do anything. If empty, all will be compiled.
  60. T.OS:=O;
  61. end
  62. else
  63. With Installer.Targets do
  64. For I:=0 to Count-1 do
  65. AddCurrentOS(TargetItems[i]);
  66. end;
  67. Procedure ExcludeCurrentOS(T : TTarget = Nil);
  68. Var
  69. I : Integer;
  70. O : TOSes;
  71. begin
  72. If (T<>Nil) then
  73. begin
  74. O:=T.OS;
  75. If (O=[]) then
  76. O:=AllOSs;
  77. Exclude(O,Defaults.OS);
  78. T.OS:=O;
  79. end
  80. else
  81. With Installer.Targets do
  82. For I:=0 to Count-1 do
  83. AddCurrentOS(TargetItems[i]);
  84. end;
  85. Procedure AddDefaultTargets(Installer : TInstaller);
  86. Var
  87. T : TTarget;
  88. begin
  89. With Installer.Targets do
  90. begin
  91. DefaultOS:=AllOSs;
  92. DefaultCPU:=AllCPUs;
  93. { System unit. For all platforms. }
  94. T:=AddUnit(OSDIR(False)+'system.pp');
  95. With T.Dependencies do
  96. begin
  97. // Headers
  98. Add(CPUDir+'setjumph.inc');
  99. Add('inc/systemh.inc');
  100. Add('inc/objpash.inc');
  101. Add('inc/dynarrh.inc');
  102. Add('inc/compproc.inc');
  103. Add('inc/heaph.inc');
  104. Add('inc/threadh.inc');
  105. Add('inc/varianth.inc');
  106. // Implementations
  107. Add(CPUDir+CurrentCPU+'.inc');
  108. Add(CPUDir+'set.inc');
  109. Add(CPUDir+'math.inc');
  110. Add(CPUDir+'int64p.inc');
  111. Add(CPUDir+'setjump.inc');
  112. Add(OSDir+'systhrd.inc');
  113. Add(OSDir(False)+'sysos.inc');
  114. Add(OSDir+'sysheap.inc');
  115. Add(OSDir+'sysdir.inc');
  116. Add('inc/filerec.inc');
  117. Add('inc/textrec.inc');
  118. Add('inc/generic.inc');
  119. Add('inc/genset.inc');
  120. Add('inc/genmath.inc');
  121. Add('inc/sstrings.inc');
  122. Add('inc/int64.inc');
  123. Add('inc/astrings.inc');
  124. Add('inc/wstrings.inc');
  125. Add('inc/aliases.inc');
  126. Add('inc/dynarr.inc');
  127. Add('inc/objpas.inc');
  128. Add('inc/variant.inc');
  129. Add('inc/rtti.inc');
  130. Add('inc/heap.inc');
  131. Add('inc/thread.inc');
  132. Add('inc/text.inc');
  133. Add('inc/file.inc');
  134. Add('inc/typefile.inc');
  135. end;
  136. T:=AddUnit('objpas/objpas.pp');
  137. T:=AddUnit('inc/macpas.pp');
  138. { Turbo Pascal RTL units }
  139. T:=AddUnit(OSDir+'dos.pp');
  140. T.Dependencies.Add('inc/dosh.inc');
  141. T:=AddUnit(OSDir+'crt.pp');
  142. T.Directory:=OSDir;
  143. T.Dependencies.Add('inc/crth.inc');
  144. T:=AddUnit(OSDir+'graph.pp');
  145. T.IncludePath.Add(GraphDir);
  146. With T.Dependencies do
  147. begin
  148. Add(GraphDir+'clip.inc');
  149. Add(GraphDir+'fontdata.inc');
  150. Add(GraphDir+'graph.inc');
  151. Add(GraphDir+'gtext.inc');
  152. Add(GraphDir+'modes.inc');
  153. Add(GraphDir+'fills.inc');
  154. Add(GraphDir+'graphh.inc');
  155. Add(GraphDir+'palette.inc');
  156. end;
  157. T:=AddUnit('inc/strings.pp');
  158. With T.Dependencies do
  159. begin
  160. Add(CPUDir+'strings.inc');
  161. Add(CPUDir+'stringss.inc');
  162. Add('inc/genstr.inc');
  163. Add('inc/genstrs.inc');
  164. Add('inc/stringsi.inc');
  165. end;
  166. { Delphi RTL units }
  167. T:=AddUnit('objpas/rtlconsts.pp');
  168. T.Resourcestrings:=True;
  169. T.Dependencies.Add('objpas/rtlconst.inc');
  170. T:=AddUnit(OSDir+'sysutils.pp');
  171. T.IncludePath.Add(SysUtilsDir);
  172. With T.Dependencies do
  173. begin
  174. Add(SysUtilsDir+'datih.inc');
  175. Add(SysUtilsDir+'finah.inc');
  176. Add(SysUtilsDir+'osutilsh.inc');
  177. Add(SysUtilsDir+'sysansi.inc');
  178. Add(SysUtilsDir+'syspchh.inc');
  179. Add(SysUtilsDir+'systhrdh.inc');
  180. Add(SysUtilsDir+'syswideh.inc');
  181. Add(SysUtilsDir+'dati.inc');
  182. Add(SysUtilsDir+'fina.inc');
  183. Add(SysUtilsDir+'stre.inc');
  184. Add(SysUtilsDir+'sysformt.inc');
  185. Add(SysUtilsDir+'syspch.inc');
  186. Add(SysUtilsDir+'sysuintf.inc');
  187. Add(SysUtilsDir+'syswide.inc');
  188. Add(SysUtilsDir+'diskh.inc');
  189. Add(SysUtilsDir+'intfh.inc');
  190. Add(SysUtilsDir+'strg.inc');
  191. Add(SysUtilsDir+'sysinth.inc');
  192. Add(SysUtilsDir+'sysstrh.inc');
  193. Add(SysUtilsDir+'sysutilh.inc');
  194. Add(SysUtilsDir+'filutilh.inc');
  195. Add(SysUtilsDir+'osutil.inc');
  196. Add(SysUtilsDir+'sysansih.inc');
  197. Add(SysUtilsDir+'sysint.inc');
  198. Add(SysUtilsDir+'sysstr.inc');
  199. Add(SysUtilsDir+'sysutils.inc');
  200. end;
  201. T:=AddUnit(OSDIR+'varutils.pp');
  202. T.ResourceStrings:=True;
  203. T.IncludePath.Add('objpas');
  204. T:=AddUnit('inc/variants.pp');
  205. With T.Dependencies do
  206. begin
  207. Add('math');
  208. Add('varutils');
  209. end;
  210. T.ResourceStrings:=True;
  211. T:=AddUnit('objpas/convutils.pp');
  212. T.Dependencies.Add('objpas/convutil.inc');
  213. T.ResourceStrings:=True;
  214. T:=AddUnit('objpas/dateutils.pp');
  215. T.Dependencies.Add('objpas/dateutil.inc');
  216. T:=AddUnit('objpas/strutils.pp');
  217. T.Dependencies.Add('sysutils');
  218. T:=AddUnit('objpas/math.pp');
  219. T.Dependencies.Add('sysutils');
  220. T.Dependencies.Add(CPUDir+'mathuh.inc');
  221. T.Dependencies.Add(CPUDir+'mathu.inc');
  222. T.ResourceStrings:=True;
  223. T:=AddUnit('objpas/sysconst.pp');
  224. T.Resourcestrings:=true;
  225. T:=AddUnit('objpas/types.pp');
  226. T:=AddUnit('objpas/typinfo.pp');
  227. T.Dependencies.Add('sysutils');
  228. T.Dependencies.Add('rtlconsts');
  229. T:=AddUnit('objpas/utf8bidi.pp');
  230. { Free Pascal additions}
  231. T:=AddUnit(OSDir+'keyboard.pp');
  232. With T.Dependencies do
  233. begin
  234. Add('inc/keybrdh.inc');
  235. Add('inc/keyboard.inc');
  236. Add('inc/keyscan.inc');
  237. end;
  238. T:=AddUnit(OSDir+'mouse.pp');
  239. With T.Dependencies do
  240. begin
  241. Add('inc/mouseh.inc');
  242. Add('inc/mouse.inc');
  243. end;
  244. T:=AddUnit(OSDir+'video.pp');
  245. With T.Dependencies do
  246. begin
  247. Add('inc/video.inc');
  248. Add('inc/videoh.inc');
  249. end;
  250. T:=AddUnit('inc/matrix.pp');
  251. T.Dependencies.Add('inc/mmatimp.inc');
  252. T:=AddUnit('inc/dynlibs.pp');
  253. T.Dependencies.Add(OSDir+'dynlibs.inc');
  254. T:=AddUnit('inc/getopts.pp');
  255. T:=AddUnit('inc/cmem.pp');
  256. T:=AddUnit('inc/ctypes.pp');
  257. T:=AddUnit('inc/softfpu.pp');
  258. T:=AddUnit('inc/ucomplex.pp');
  259. T:=AddUnit('inc/heaptrc.pp');
  260. T:=AddUnit('inc/lineinfo.pp');
  261. T:=AddUnit('inc/lnfodwrf.pp');
  262. T:=AddUnit('inc/charset.pp');
  263. // T:=AddUnit('inc/pagemem.pp');
  264. end;
  265. AddSystemDependencies(Installer.Targets);
  266. end;