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