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