fpmake.inc 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. Const
  2. GraphDir = 'inc/graph/';
  3. SysUtilsDir = 'objpas/sysutils/';
  4. Unixes = [darwin,dragonfly,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. { Turbo Pascal RTL units }
  92. T:=AddUnit(OSDir+'dos.pp');
  93. T.Dependencies.Add('inc/dosh.inc');
  94. T:=AddUnit(OSDir+'crt.pp');
  95. T.Directory:=OSDir;
  96. T.Dependencies.Add('inc/crth.inc');
  97. T:=AddUnit(OSDir+'graph.pp');
  98. T.IncludePath.Add(GraphDir);
  99. With T.Dependencies do
  100. begin
  101. Add(GraphDir+'clip.inc');
  102. Add(GraphDir+'fontdata.inc');
  103. Add(GraphDir+'graph.inc');
  104. Add(GraphDir+'gtext.inc');
  105. Add(GraphDir+'modes.inc');
  106. Add(GraphDir+'fills.inc');
  107. Add(GraphDir+'graphh.inc');
  108. Add(GraphDir+'palette.inc');
  109. end;
  110. T:=AddUnit('inc/strings.pp');
  111. With T.Dependencies do
  112. begin
  113. Add(CPUDir+'strings.inc');
  114. Add(CPUDir+'stringss.inc');
  115. Add('inc/genstr.inc');
  116. Add('inc/genstrs.inc');
  117. Add('inc/stringsi.inc');
  118. end;
  119. { Delphi RTL units }
  120. T:=AddUnit('objpas/rtlconsts.pp');
  121. T.Resourcestrings:=True;
  122. T.Dependencies.Add('objpas/rtlconst.inc');
  123. T:=AddUnit(OSDir+'sysutils.pp');
  124. T.IncludePath.Add(SysUtilsDir);
  125. With T.Dependencies do
  126. begin
  127. Add(SysUtilsDir+'datih.inc');
  128. Add(SysUtilsDir+'finah.inc');
  129. Add(SysUtilsDir+'osutilsh.inc');
  130. Add(SysUtilsDir+'sysansi.inc');
  131. Add(SysUtilsDir+'syspchh.inc');
  132. Add(SysUtilsDir+'systhrdh.inc');
  133. Add(SysUtilsDir+'syswideh.inc');
  134. Add(SysUtilsDir+'sysunih.inc');
  135. Add(SysUtilsDir+'dati.inc');
  136. Add(SysUtilsDir+'fina.inc');
  137. Add(SysUtilsDir+'stre.inc');
  138. Add(SysUtilsDir+'sysformt.inc');
  139. Add(SysUtilsDir+'syspch.inc');
  140. Add(SysUtilsDir+'sysuintf.inc');
  141. Add(SysUtilsDir+'syswide.inc');
  142. Add(SysUtilsDir+'sysuni.inc');
  143. Add(SysUtilsDir+'diskh.inc');
  144. Add(SysUtilsDir+'intfh.inc');
  145. Add(SysUtilsDir+'strg.inc');
  146. Add(SysUtilsDir+'sysinth.inc');
  147. Add(SysUtilsDir+'sysstrh.inc');
  148. Add(SysUtilsDir+'sysutilh.inc');
  149. Add(SysUtilsDir+'filutilh.inc');
  150. Add(SysUtilsDir+'osutil.inc');
  151. Add(SysUtilsDir+'sysansih.inc');
  152. Add(SysUtilsDir+'sysint.inc');
  153. Add(SysUtilsDir+'sysstr.inc');
  154. Add(SysUtilsDir+'sysutils.inc');
  155. end;
  156. T:=AddUnit(OSDIR+'varutils.pp');
  157. T.ResourceStrings:=True;
  158. T.IncludePath.Add('objpas');
  159. T:=AddUnit('inc/variants.pp');
  160. With T.Dependencies do
  161. begin
  162. Add('math');
  163. Add('varutils');
  164. end;
  165. T.ResourceStrings:=True;
  166. T:=AddUnit('objpas/convutils.pp');
  167. T.Dependencies.Add('objpas/convutil.inc');
  168. T.ResourceStrings:=True;
  169. T:=AddUnit('objpas/dateutils.pp');
  170. T.Dependencies.Add('objpas/dateutil.inc');
  171. T:=AddUnit('objpas/strutils.pp');
  172. T.Dependencies.Add('sysutils');
  173. T:=AddUnit('objpas/math.pp');
  174. T.Dependencies.Add('sysutils');
  175. T.Dependencies.Add(CPUDir+'mathu.inc');
  176. T.ResourceStrings:=True;
  177. T:=AddUnit('objpas/sysconst.pp');
  178. T.Resourcestrings:=true;
  179. T:=AddUnit('objpas/types.pp');
  180. T:=AddUnit('objpas/typinfo.pp');
  181. T.Dependencies.Add('sysutils');
  182. T.Dependencies.Add('rtlconsts');
  183. T:=AddUnit('objpas/utf8bidi.pp');
  184. T:=AddUnit('objpas/character.pas');
  185. { Free Pascal additions}
  186. T:=AddUnit(OSDir+'keyboard.pp');
  187. With T.Dependencies do
  188. begin
  189. Add('inc/keybrdh.inc');
  190. Add('inc/keyboard.inc');
  191. Add('inc/keyscan.inc');
  192. end;
  193. T:=AddUnit(OSDir+'mouse.pp');
  194. With T.Dependencies do
  195. begin
  196. Add('inc/mouseh.inc');
  197. Add('inc/mouse.inc');
  198. end;
  199. T:=AddUnit(OSDir+'video.pp');
  200. With T.Dependencies do
  201. begin
  202. Add('inc/video.inc');
  203. Add('inc/videoh.inc');
  204. end;
  205. T:=AddUnit('inc/matrix.pp');
  206. T.Dependencies.Add('inc/mmatimp.inc');
  207. T:=AddUnit('inc/dynlibs.pp');
  208. T.Dependencies.Add(OSDir+'dynlibs.inc');
  209. T:=AddUnit('inc/getopts.pp');
  210. T:=AddUnit('inc/cmem.pp');
  211. T:=AddUnit('inc/ctypes.pp');
  212. T:=AddUnit('inc/softfpu.pp');
  213. T:=AddUnit('inc/ucomplex.pp');
  214. T:=AddUnit('inc/heaptrc.pp');
  215. T:=AddUnit('inc/lineinfo.pp');
  216. T:=AddUnit('inc/lnfodwrf.pp');
  217. T:=AddUnit('inc/charset.pp');
  218. // T:=AddUnit('inc/pagemem.pp');
  219. end;
  220. AddSystemDependencies(Installer.Targets);
  221. end;