fpmake.pp 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. {$ifndef ALLPACKAGES}
  2. {$mode objfpc}{$H+}
  3. program fpmake;
  4. uses {$ifdef unix}cthreads,{$endif} fpmkunit;
  5. {$endif ALLPACKAGES}
  6. procedure add_rtl_unicode(const ADirectory: string);
  7. Const
  8. // All Unices have full set of KVM+Crt in unix/ except QNX which is not
  9. // in workable state atm.
  10. // UnixLikes = AllUnixOSes -[QNX];
  11. CollationOSes = [aix,android,darwin,emx,freebsd,go32v2,linux,netbsd,openbsd,os2,solaris,win32,win64,dragonfly,haiku,freertos,watcom,wasip1,wasip1threads];
  12. CPUnits = [aix,amiga,aros,android,beos,darwin,iphonesim,ios,emx,gba,nds,freebsd,go32v2,haiku,linux,morphos,netbsd,netware,netwlibc,openbsd,os2,solaris,watcom,wii,win32,win64,wince,dragonfly,freertos,wasip1,wasip1threads];
  13. utf8bidiOSes = [netware,netwlibc];
  14. freebidiOSes = [netware,netwlibc];
  15. GraphemeBreakPropertyOSes = AllOSes-[embedded,zxspectrum,msxdos,amstradcpc];
  16. EastAsianWidthOSes = AllOSes-[embedded,zxspectrum,msxdos,amstradcpc];
  17. // Character not movable because fpwidestring depends on it.
  18. // CharacterOSes = [android,darwin,freebsd,linux,netbsd,openbsd,solaris,win32,win64,dragonfly];
  19. UnicodeAllOSes = CollationOSes + utf8bidiOSes + freebidiOSes + CPUnits + GraphemeBreakPropertyOSes + EastAsianWidthOSes;
  20. // Amiga has a crt in its RTL dir, but it is commented in the makefile
  21. Var
  22. P : TPackage;
  23. T : TTarget;
  24. begin
  25. With Installer do
  26. begin
  27. P:=AddPackage('rtl-unicode');
  28. P.ShortName:='rtlu';
  29. P.Directory:=ADirectory;
  30. P.Version:='3.3.1';
  31. P.Author := 'FPC core team';
  32. P.License := 'LGPL with modification, ';
  33. P.HomepageURL := 'www.freepascal.org';
  34. P.OSes:=unicodeAllOSes;
  35. if Defaults.CPU=jvm then
  36. P.OSes := P.OSes - [java,android];
  37. P.Email := '';
  38. P.Description := 'Rtl-unicode, misc Unicode units';
  39. P.NeedLibC:= false;
  40. P.SourcePath.Add('src/inc');
  41. P.SourcePath.Add('src/collations');
  42. P.IncludePath.Add('src/inc');
  43. P.IncludePath.Add('src/collations');
  44. T:=P.Targets.AddUnit('utf8utils.pp');
  45. T:=P.Targets.AddUnit('unicodeducet.pas',CollationOSes);
  46. with T.Dependencies do
  47. begin
  48. AddInclude('ucadata.inc');
  49. AddInclude('ucadata_le.inc');
  50. AddInclude('ucadata_be.inc');
  51. end;
  52. T:=P.Targets.AddUnit('buildcollations.pas',CollationOSes);
  53. T.Install:=False;
  54. with T.Dependencies do
  55. begin
  56. AddUnit('collation_ru');
  57. AddUnit('collation_de');
  58. AddUnit('collation_ja');
  59. AddUnit('collation_sv');
  60. AddUnit('collation_es');
  61. AddUnit('collation_ko');
  62. AddUnit('collation_fr_ca');
  63. AddUnit('collation_zh');
  64. end;
  65. T:=P.Targets.AddImplicitUnit('collation_ru.pas',CollationOSes);
  66. T:=P.Targets.AddImplicitUnit('collation_de.pas',CollationOSes);
  67. with T.Dependencies do
  68. begin
  69. AddInclude('collation_de_le.inc');
  70. end;
  71. T:=P.Targets.AddImplicitUnit('collation_ja.pas',CollationOSes);
  72. with T.Dependencies do
  73. begin
  74. AddInclude('collation_ja_le.inc');
  75. AddInclude('collation_ja_be.inc');
  76. end;
  77. T:=P.Targets.AddImplicitUnit('collation_sv.pas',CollationOSes);
  78. with T.Dependencies do
  79. begin
  80. AddInclude('collation_sv_be.inc');
  81. AddInclude('collation_sv_le.inc');
  82. end;
  83. T:=P.Targets.AddImplicitUnit('collation_es.pas',CollationOSes);
  84. with T.Dependencies do
  85. begin
  86. AddInclude('collation_es_le.inc');
  87. AddInclude('collation_es_be.inc');
  88. end;
  89. T:=P.Targets.AddImplicitUnit('collation_ko.pas',CollationOSes);
  90. with T.Dependencies do
  91. begin
  92. AddInclude('collation_ko_be.inc');
  93. AddInclude('collation_ko_le.inc');
  94. end;
  95. T:=P.Targets.AddImplicitUnit('collation_fr_ca.pas',CollationOSes);
  96. T:=P.Targets.AddImplicitUnit('collation_zh.pas',CollationOSes);
  97. with T.Dependencies do
  98. begin
  99. AddInclude('collation_zh_be.inc');
  100. AddInclude('collation_zh_le.inc');
  101. end;
  102. T:=P.Targets.AddUnit('freebidi.pp',freebidiOSes);
  103. T:=P.Targets.AddUnit('utf8bidi.pp',utf8bidiOSes);
  104. with T.Dependencies do
  105. AddUnit('freebidi');
  106. T:=P.Targets.AddUnit('cpbuildu.pp',CPUnits);
  107. T.Install:=False;
  108. with T.Dependencies do
  109. begin
  110. AddUnit('cp895',CPUnits);
  111. AddUnit('cp932',CPUnits);
  112. AddUnit('cp936',CPUnits);
  113. AddUnit('cp949',CPUnits);
  114. AddUnit('cp950',CPUnits);
  115. end;
  116. T:=P.Targets.AddImplicitUnit('cp895.pas',CPUnits);
  117. T:=P.Targets.AddImplicitUnit('cp932.pas',CPUnits);
  118. T:=P.Targets.AddImplicitUnit('cp936.pas',CPUnits);
  119. T:=P.Targets.AddImplicitUnit('cp949.pas',CPUnits);
  120. T:=P.Targets.AddImplicitUnit('cp950.pas',CPUnits);
  121. // T:=P.Targets.AddUnit('character.pp',characterOSes);
  122. T:=P.Targets.AddUnit('graphemebreakproperty.pp',GraphemeBreakPropertyOSes);
  123. with T.Dependencies do
  124. begin
  125. AddInclude('graphemebreakproperty_code.inc');
  126. end;
  127. T:=P.Targets.AddUnit('eastasianwidth.pp',EastAsianWidthOSes);
  128. with T.Dependencies do
  129. begin
  130. AddInclude('eastasianwidth_code.inc');
  131. end;
  132. P.NamespaceMap:='namespaces.lst';
  133. end
  134. end;
  135. {$ifndef ALLPACKAGES}
  136. begin
  137. add_rtl_unicode('');
  138. Installer.Run;
  139. end.
  140. {$endif ALLPACKAGES}