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