1#
2#   Makefile.fpc for Free Pascal Linux RTL
3#
4
5[package]
6main=rtl
7
8[target]
9loaders=$(LOADERS)
10units=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) \
11      uuchar unixtype ctypes baseunix strings objpas macpas iso7185 extpas syscall unixutil \
12      fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem \
13      linuxvcs sysutils typinfo math charset cpall character \
14      getopts errors dl dynlibs \
15      types  sysconst cthreads classes fgl  \
16      rtlconsts dos cwstring fpcylix unixcp fpwidestring
17implicitunits=exeinfo \
18      cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
19      cp437 cp646 cp737 cp775 cp850 cp852 cp855 cp856 cp857 cp860 cp861 cp862 \
20      cp863 cp864 cp865 cp866 cp869 cp874 cp3021 cp8859_1 cp8859_2 cp8859_3 cp8859_4 \
21      cp8859_5 cp8859_6 cp8859_7 cp8859_8 cp8859_9 cp8859_10 cp8859_11 \
22      cp8859_13 cp8859_14 cp8859_15 cp8859_16 cpkoi8_r cpkoi8_u \
23      unicodedata  unicodenumtable
24rsts=math  typinfo  sysconst rtlconsts
25
26[require]
27nortl=y
28
29[clean]
30units=syslinux linux
31
32[install]
33fpcpackage=y
34
35[default]
36fpcdir=../..
37target=android
38
39[compiler]
40includedir=$(INC) $(PROCINC) $(UNIXINC) $(ARCH) $(LINUXINC) $(OSPROCINC)
41sourcedir=$(INC) $(PROCINC) $(UNIXINC) $(ARCH) $(COMMON) $(LINUXINC)
42targetdir=.
43
44[shared]
45libunits=$(SYSTEMUNIT) objpas strings dos \
46      unix baseunix unixtype unixutil \
47      sysutils typinfo math \
48      $(CPU_UNITS) getopts \
49      errors sockets \
50      classes fgl sysconst rtlconsts \
51
52[prerules]
53RTL=..
54INC=$(RTL)/inc
55COMMON=$(RTL)/common
56PROCINC=$(RTL)/$(ARCH)
57UNIXINC=$(RTL)/unix
58OSPROCINC=$(RTL)/linux/$(CPU_TARGET)
59LINUXINC=$(RTL)/linux
60
61UNITPREFIX=rtl
62
63CPU_UNITS=
64SYSINIT_UNITS=
65
66LOADERS=prt0 dllprt0
67
68ifeq ($(findstring $(ARCH),i386 x86_64 arm),$(ARCH))
69CPU_UNITS=cpu
70endif
71ifeq ($(ARCH),i386)
72CPU_UNITS+=mmx
73endif
74
75SYSTEMUNIT=system
76
77# Causes release PPU files not to be recompiled
78ifdef RELEASE
79override FPCOPT+=-Ur
80endif
81
82# Paths
83OBJPASDIR=$(RTL)/objpas
84
85[rules]
86.NOTPARALLEL:
87# Get the $(SYSTEMUNIT) independent include file names.
88# This will set the following variables :
89# SYSINCNAMES
90include $(INC)/makefile.inc
91SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
92SYSINCDEPS:=$(SYSINCDEPS) sysandroidh.inc sysandroid.inc
93
94# Get the processor dependent include file names.
95# This will set the following variables :
96# CPUINCNAMES
97include $(PROCINC)/makefile.cpu
98SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
99
100# Put $(SYSTEMUNIT) unit dependencies together.
101SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
102
103# Select 32/64 mode
104ifeq ($(ARCH),i386)
105  ASTARGET=--32
106endif
107
108# Select mips32 instruction set and PIC for MIPS
109ifeq ($(ARCH),mipsel)
110  ASTARGET=-mips32 -KPIC
111endif
112
113ifneq ($(findstring $(ARCH),aarch64 x86_64),)
114  CPUBITS=64
115else
116  CPUBITS=32
117endif
118
119#
120# Loaders
121#
122
123prt0$(OEXT) : prt0.as
124        $(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) --defsym CPU$(CPUBITS)=1 prt0.as
125
126dllprt0$(OEXT) : dllprt0.as
127        $(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)dllprt0$(OEXT) --defsym CPU$(CPUBITS)=1 dllprt0.as
128
129#
130# $(SYSTEMUNIT) Units ($(SYSTEMUNIT), Objpas, Strings)
131#
132
133$(SYSTEMUNIT)$(PPUEXT) : $(LINUXINC)/$(SYSTEMUNIT).pp $(SYSDEPS)
134        $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(LINUXINC)/$(SYSTEMUNIT).pp
135
136uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
137	$(COMPILER) $(INC)/uuchar.pp
138
139objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
140        $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
141
142strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
143                   $(PROCINC)/strings.inc $(PROCINC)/stringss.inc\
144                   $(SYSTEMUNIT)$(PPUEXT)
145	$(COMPILER) $(INC)/strings.pp
146
147#
148# $(SYSTEMUNIT) Dependent Units
149#
150
151unix$(PPUEXT) : $(UNIXINC)/unix.pp strings$(PPUEXT) baseunix$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \
152                 $(LINUXINC)/unxconst.inc $(UNIXINC)/timezone.inc $(SYSTEMUNIT)$(PPUEXT) \
153                 $(LINUXINC)/unxfunc.inc unixandroid.inc cwstring$(PPUEXT)
154        $(COMPILER) $(UNIXINC)/unix.pp
155
156syscall$(PPUEXT) : $(UNIXINC)/syscall.pp $(LINUXINC)/$(ARCH)/syscallh.inc $(LINUXINC)/$(ARCH)/sysnr.inc $(SYSTEMUNIT)$(PPUEXT)
157        $(COMPILER) $(UNIXINC)/syscall.pp
158
159unixutil$(PPUEXT) : $(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc $(SYSTEMUNIT)$(PPUEXT)
160        $(COMPILER) $(UNIXINC)/unixutil.pp
161
162unixtype$(PPUEXT) : $(UNIXINC)/unixtype.pp $(LINUXINC)/ptypes.inc $(UNIXINC)/ctypes.inc $(SYSTEMUNIT)$(PPUEXT)
163        $(COMPILER) $(UNIXINC)/unixtype.pp
164
165baseunix$(PPUEXT) : $(UNIXINC)/baseunix.pp $(LINUXINC)/errno.inc $(LINUXINC)/ptypes.inc $(UNIXINC)/ctypes.inc \
166  $(UNIXINC)/bunxh.inc \
167  $(LINUXINC)/bunxsysc.inc $(LINUXINC)/$(ARCH)/syscallh.inc $(LINUXINC)/$(ARCH)/sysnr.inc \
168  $(LINUXINC)/ostypes.inc $(LINUXINC)/osmacro.inc $(UNIXINC)/gensigset.inc \
169  $(UNIXINC)/genfuncs.inc $(SYSTEMUNIT)$(PPUEXT)
170        $(COMPILER) $(UNIXINC)/baseunix.pp
171
172dl$(PPUEXT) : $(UNIXINC)/dl.pp $(SYSTEMUNIT)$(PPUEXT) ctypes$(PPUEXT) dlandroid.inc
173        $(COMPILER) $(UNIXINC)/dl.pp
174
175dynlibs$(PPUEXT) : $(INC)/dynlibs.pas $(UNIXINC)/dynlibs.inc dl$(PPUEXT) objpas$(PPUEXT)
176        $(COMPILER) $(INC)/dynlibs.pas
177
178initc$(PPUEXT) : $(UNIXINC)/initc.pp ctypes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
179        $(COMPILER) $(UNIXINC)/initc.pp
180
181unixcp$(PPUEXT) : $(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) baseunix$(PPUEXT)
182        $(COMPILER) $(UNIXINC)/unixcp.pp
183
184#
185# TP7 Compatible RTL Units
186#
187
188dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
189               unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
190        $(COMPILER) $(UNIXINC)/dos.pp
191
192#
193# Delphi Compatible Units
194#
195
196sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
197                    objpas$(PPUEXT) unix$(PPUEXT) errors$(PPUEXT) sysconst$(PPUEXT)
198        $(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
199
200classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
201                   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) fgl$(PPUEXT)
202        $(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
203
204typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) sysutils$(PPUEXT) rtlconsts$(PPUEXT)
205        $(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
206
207character$(PPUEXT): $(OBJPASDIR)/character.pas objpas$(PPUEXT) sysutils$(PPUEXT) rtlconsts$(PPUEXT)
208        $(COMPILER) $(OBJPASDIR)/character.pas
209
210math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
211        $(COMPILER) $(OBJPASDIR)/math.pp
212
213fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
214        $(COMPILER) $(OBJPASDIR)/fgl.pp
215
216types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
217        $(COMPILER) $(OBJPASDIR)/types.pp
218
219sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
220        $(COMPILER) $(OBJPASDIR)/sysconst.pp
221
222rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
223        $(COMPILER) $(OBJPASDIR)/rtlconsts.pp
224
225#
226# Mac Pascal Model
227#
228
229macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
230        $(COMPILER) $(INC)/macpas.pp $(REDIR)
231
232#
233# Other $(SYSTEMUNIT)-independent RTL Units
234#
235
236ifneq ($(findstring $(ARCH),x86_64 i386),)
237cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) sysutils$(PPUEXT)
238else
239cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
240endif
241        $(COMPILER) $(PROCINC)/cpu.pp
242
243mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
244        $(COMPILER) $(PROCINC)/mmx.pp
245
246getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
247        $(COMPILER) $(INC)/getopts.pp
248
249heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMUNIT)$(PPUEXT)
250        $(COMPILER) -Sg $(INC)/heaptrc.pp
251
252lineinfo$(PPUEXT) : $(INC)/lineinfo.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
253        $(COMPILER) $(INC)/lineinfo.pp
254
255lnfodwrf$(PPUEXT) : $(INC)/lnfodwrf.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) lineinfo$(PPUEXT)
256        $(COMPILER) $(INC)/lnfodwrf.pp
257
258charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
259        $(COMPILER) $(INC)/charset.pp
260
261cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
262        $(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
263
264iso7185$(PPUEXT) : $(INC)/iso7185.pp $(SYSTEMUNIT)$(PPUEXT)
265        $(COMPILER) $(INC)/iso7185.pp
266
267extpas$(PPUEXT) : $(INC)/extpas.pp dos$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
268        $(COMPILER) $(INC)/extpas.pp
269
270fpintres$(PPUEXT) : $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT)
271        $(COMPILER) $(INC)/fpintres.pp
272
273fpwidestring$(PPUEXT): $(OBJPASDIR)/fpwidestring.pp character$(PPUEXT) unixcp$(PPUEXT)
274        $(COMPILER) $(OBJPASDIR)/fpwidestring.pp
275#
276# Other $(SYSTEMUNIT)-dependent RTL Units
277#
278
279errors$(PPUEXT) : $(UNIXINC)/errors.pp strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
280        $(COMPILER) $(UNIXINC)/errors.pp
281
282callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
283        $(COMPILER) $(INC)/callspec.pp
284
285cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
286        $(COMPILER) $(INC)/cmem.pp
287
288cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp $(SYSTEMUNIT)$(PPUEXT)
289        $(COMPILER) $(UNIXINC)/cthreads.pp
290
291cwstring$(PPUEXT) : cwstring.pp $(SYSTEMUNIT)$(PPUEXT) dynlibs$(PPUEXT)
292        $(COMPILER) cwstring.pp
293
294ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
295        $(COMPILER) $(INC)/ctypes.pp
296
297fpcylix$(PPUEXT) : $(LINUXINC)/fpcylix.pp cthreads$(PPUEXT) cwstring$(PPUEXT) dynlibs$(PPUEXT) objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
298        $(COMPILER) $(LINUXINC)/fpcylix.pp
299
300termio$(PPUEXT) : $(LINUXINC)/termio.pp $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT)
301        $(COMPILER) $(LINUXINC)/termio.pp
302
303linux$(PPUEXT) : $(LINUXINC)/linux.pp $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT) unixtype$(PPUEXT)
304        $(COMPILER) $(LINUXINC)/linux.pp
305
306linuxvcs$(PPUEXT) : $(LINUXINC)/linuxvcs.pp $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT) strings$(PPUEXT)
307        $(COMPILER) $(LINUXINC)/linuxvcs.pp
308
309