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