mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-07-19 12:19:28 +02:00

* also made lnfodwrf dependent on lineinfo for all platforms, because both units implicitly depend on the exeinfo unit and if both are compiled at the same time they can fall over each other while writing its .ppu or .s file git-svn-id: trunk@33039 -
298 lines
9.3 KiB
Makefile
298 lines
9.3 KiB
Makefile
#
|
|
# Makefile.fpc for Free Pascal Linux RTL
|
|
#
|
|
|
|
[package]
|
|
main=rtl
|
|
|
|
[target]
|
|
loaders=$(LOADERS)
|
|
units=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) \
|
|
uuchar unixtype ctypes baseunix strings objpas macpas iso7185 extpas syscall unixutil \
|
|
fpintres heaptrc lineinfo lnfodwrf termio unix linux initc cmem \
|
|
linuxvcs sysutils typinfo math charset cpall character \
|
|
getopts errors dl dynlibs \
|
|
types sysconst cthreads classes fgl \
|
|
rtlconsts dos cwstring fpcylix unixcp fpwidestring
|
|
implicitunits=exeinfo \
|
|
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
|
|
cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 \
|
|
unicodedata unicodenumtable
|
|
rsts=math typinfo sysconst rtlconsts
|
|
|
|
[require]
|
|
nortl=y
|
|
|
|
[clean]
|
|
units=syslinux linux
|
|
|
|
[install]
|
|
fpcpackage=y
|
|
|
|
[default]
|
|
fpcdir=../..
|
|
target=android
|
|
|
|
[compiler]
|
|
includedir=$(INC) $(PROCINC) $(UNIXINC) $(ARCH) $(LINUXINC) $(OSPROCINC)
|
|
sourcedir=$(INC) $(PROCINC) $(UNIXINC) $(ARCH) $(COMMON) $(LINUXINC)
|
|
targetdir=.
|
|
|
|
[shared]
|
|
libunits=$(SYSTEMUNIT) objpas strings dos \
|
|
unix baseunix unixtype unixutil \
|
|
sysutils typinfo math \
|
|
$(CPU_UNITS) getopts \
|
|
errors sockets \
|
|
classes fgl sysconst rtlconsts \
|
|
|
|
[prerules]
|
|
RTL=..
|
|
INC=$(RTL)/inc
|
|
COMMON=$(RTL)/common
|
|
PROCINC=$(RTL)/$(ARCH)
|
|
UNIXINC=$(RTL)/unix
|
|
OSPROCINC=$(RTL)/linux/$(CPU_TARGET)
|
|
LINUXINC=$(RTL)/linux
|
|
|
|
UNITPREFIX=rtl
|
|
|
|
CPU_UNITS=
|
|
SYSINIT_UNITS=
|
|
|
|
LOADERS=prt0 dllprt0
|
|
|
|
ifeq ($(ARCH),i386)
|
|
CPU_UNITS=cpu mmx
|
|
endif
|
|
|
|
SYSTEMUNIT=system
|
|
|
|
# Causes release PPU files not to be recompiled
|
|
ifdef RELEASE
|
|
override FPCOPT+=-Ur
|
|
endif
|
|
|
|
# Paths
|
|
OBJPASDIR=$(RTL)/objpas
|
|
|
|
[rules]
|
|
.NOTPARALLEL:
|
|
# Get the $(SYSTEMUNIT) independent include file names.
|
|
# This will set the following variables :
|
|
# SYSINCNAMES
|
|
include $(INC)/makefile.inc
|
|
SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
|
|
SYSINCDEPS:=$(SYSINCDEPS) sysandroid.inc
|
|
|
|
# Get the processor dependent include file names.
|
|
# This will set the following variables :
|
|
# CPUINCNAMES
|
|
include $(PROCINC)/makefile.cpu
|
|
SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
|
|
|
|
# Put $(SYSTEMUNIT) unit dependencies together.
|
|
SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
|
|
|
|
# Select 32/64 mode
|
|
ifeq ($(ARCH),i386)
|
|
ASTARGET=--32
|
|
endif
|
|
|
|
# Select mips32 instruction set and PIC for MIPS
|
|
ifeq ($(ARCH),mipsel)
|
|
ASTARGET=-mips32 -KPIC
|
|
endif
|
|
|
|
|
|
#
|
|
# Loaders
|
|
#
|
|
|
|
prt0$(OEXT) : $(ARCH)/prt0.as
|
|
$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) $(ARCH)/prt0.as
|
|
|
|
dllprt0$(OEXT) : $(ARCH)/dllprt0.as
|
|
$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)dllprt0$(OEXT) $(ARCH)/dllprt0.as
|
|
|
|
#
|
|
# $(SYSTEMUNIT) Units ($(SYSTEMUNIT), Objpas, Strings)
|
|
#
|
|
|
|
$(SYSTEMUNIT)$(PPUEXT) : $(LINUXINC)/$(SYSTEMUNIT).pp $(SYSDEPS)
|
|
$(COMPILER) -Us -Sg $(LINUXINC)/$(SYSTEMUNIT).pp
|
|
|
|
uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
|
|
$(COMPILER) $(INC)/uuchar.pp
|
|
|
|
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
|
|
|
|
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
|
|
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc\
|
|
$(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(INC)/strings.pp
|
|
|
|
#
|
|
# $(SYSTEMUNIT) Dependent Units
|
|
#
|
|
|
|
unix$(PPUEXT) : $(UNIXINC)/unix.pp strings$(PPUEXT) baseunix$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \
|
|
$(LINUXINC)/unxconst.inc $(UNIXINC)/timezone.inc $(SYSTEMUNIT)$(PPUEXT) \
|
|
$(LINUXINC)/unxfunc.inc
|
|
$(COMPILER) $(UNIXINC)/unix.pp
|
|
|
|
syscall$(PPUEXT) : $(UNIXINC)/syscall.pp $(LINUXINC)/$(ARCH)/syscallh.inc $(LINUXINC)/$(ARCH)/sysnr.inc $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(UNIXINC)/syscall.pp
|
|
|
|
unixutil$(PPUEXT) : $(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(UNIXINC)/unixutil.pp
|
|
|
|
unixtype$(PPUEXT) : $(UNIXINC)/unixtype.pp $(LINUXINC)/ptypes.inc $(UNIXINC)/ctypes.inc $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(UNIXINC)/unixtype.pp
|
|
|
|
baseunix$(PPUEXT) : $(UNIXINC)/baseunix.pp $(LINUXINC)/errno.inc $(LINUXINC)/ptypes.inc $(UNIXINC)/ctypes.inc \
|
|
$(UNIXINC)/bunxh.inc \
|
|
$(LINUXINC)/bunxsysc.inc $(LINUXINC)/$(ARCH)/syscallh.inc $(LINUXINC)/$(ARCH)/sysnr.inc \
|
|
$(LINUXINC)/ostypes.inc $(LINUXINC)/osmacro.inc $(UNIXINC)/gensigset.inc \
|
|
$(UNIXINC)/genfuncs.inc $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(UNIXINC)/baseunix.pp
|
|
|
|
dl$(PPUEXT) : $(UNIXINC)/dl.pp $(SYSTEMUNIT)$(PPUEXT) dlandroid.inc
|
|
$(COMPILER) $(UNIXINC)/dl.pp
|
|
|
|
dynlibs$(PPUEXT) : $(INC)/dynlibs.pas $(UNIXINC)/dynlibs.inc dl$(PPUEXT) objpas$(PPUEXT)
|
|
$(COMPILER) $(INC)/dynlibs.pas
|
|
|
|
initc$(PPUEXT) : $(UNIXINC)/initc.pp ctypes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(UNIXINC)/initc.pp
|
|
|
|
unixcp$(PPUEXT) : $(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) baseunix$(PPUEXT)
|
|
$(COMPILER) $(UNIXINC)/unixcp.pp
|
|
|
|
#
|
|
# TP7 Compatible RTL Units
|
|
#
|
|
|
|
dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
|
|
unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(UNIXINC)/dos.pp
|
|
|
|
#
|
|
# Delphi Compatible Units
|
|
#
|
|
|
|
sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
|
|
objpas$(PPUEXT) unix$(PPUEXT) errors$(PPUEXT) sysconst$(PPUEXT)
|
|
$(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
|
|
|
|
classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
|
|
sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) fgl$(PPUEXT)
|
|
$(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
|
|
|
|
typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) sysutils$(PPUEXT) rtlconsts$(PPUEXT)
|
|
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
|
|
|
|
character$(PPUEXT): $(OBJPASDIR)/character.pas objpas$(PPUEXT) sysutils$(PPUEXT) rtlconsts$(PPUEXT)
|
|
$(COMPILER) $(OBJPASDIR)/character.pas
|
|
|
|
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
|
|
$(COMPILER) $(OBJPASDIR)/math.pp
|
|
|
|
fgl$(PPUEXT) : $(OBJPASDIR)/fgl.pp objpas$(PPUEXT) types$(PPUEXT) system$(PPUEXT) sysutils$(PPUEXT)
|
|
$(COMPILER) $(OBJPASDIR)/fgl.pp
|
|
|
|
types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(OBJPASDIR)/types.pp
|
|
|
|
sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(OBJPASDIR)/sysconst.pp
|
|
|
|
rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
|
|
|
|
#
|
|
# Mac Pascal Model
|
|
#
|
|
|
|
macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
|
|
$(COMPILER) $(INC)/macpas.pp $(REDIR)
|
|
|
|
#
|
|
# Other $(SYSTEMUNIT)-independent RTL Units
|
|
#
|
|
|
|
ifneq ($(findstring $(ARCH),x86_64 i386),)
|
|
cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) sysutils$(PPUEXT)
|
|
else
|
|
cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
|
|
endif
|
|
$(COMPILER) $(PROCINC)/cpu.pp
|
|
|
|
mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(PROCINC)/mmx.pp
|
|
|
|
getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(INC)/getopts.pp
|
|
|
|
heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) -Sg $(INC)/heaptrc.pp
|
|
|
|
lineinfo$(PPUEXT) : $(INC)/lineinfo.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
|
|
$(COMPILER) $(INC)/lineinfo.pp
|
|
|
|
lnfodwrf$(PPUEXT) : $(INC)/lnfodwrf.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) lineinfo$(PPUEXT)
|
|
$(COMPILER) $(INC)/lnfodwrf.pp
|
|
|
|
charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(INC)/charset.pp
|
|
|
|
cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) charset$(PPUEXT)
|
|
$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
|
|
|
|
iso7185$(PPUEXT) : $(INC)/iso7185.pp $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(INC)/iso7185.pp
|
|
|
|
extpas$(PPUEXT) : $(INC)/extpas.pp dos$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(INC)/extpas.pp
|
|
|
|
fpintres$(PPUEXT) : $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(INC)/fpintres.pp
|
|
|
|
fpwidestring$(PPUEXT): $(OBJPASDIR)/fpwidestring.pp character$(PPUEXT) unixcp$(PPUEXT)
|
|
$(COMPILER) $(OBJPASDIR)/fpwidestring.pp
|
|
#
|
|
# Other $(SYSTEMUNIT)-dependent RTL Units
|
|
#
|
|
|
|
errors$(PPUEXT) : $(UNIXINC)/errors.pp strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(UNIXINC)/errors.pp
|
|
|
|
callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(INC)/callspec.pp
|
|
|
|
cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(INC)/cmem.pp
|
|
|
|
cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(UNIXINC)/cthreads.pp
|
|
|
|
cwstring$(PPUEXT) : cwstring.pp $(SYSTEMUNIT)$(PPUEXT) dynlibs$(PPUEXT)
|
|
$(COMPILER) cwstring.pp
|
|
|
|
ctypes$(PPUEXT) : $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(INC)/ctypes.pp
|
|
|
|
fpcylix$(PPUEXT) : $(LINUXINC)/fpcylix.pp cthreads$(PPUEXT) cwstring$(PPUEXT) dynlibs$(PPUEXT) objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
|
|
$(COMPILER) $(LINUXINC)/fpcylix.pp
|
|
|
|
termio$(PPUEXT) : $(LINUXINC)/termio.pp $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT)
|
|
$(COMPILER) $(LINUXINC)/termio.pp
|
|
|
|
linux$(PPUEXT) : $(LINUXINC)/linux.pp $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT) unixtype$(PPUEXT)
|
|
$(COMPILER) $(LINUXINC)/linux.pp
|
|
|
|
linuxvcs$(PPUEXT) : $(LINUXINC)/linuxvcs.pp $(SYSTEMUNIT)$(PPUEXT) baseunix$(PPUEXT) strings$(PPUEXT)
|
|
$(COMPILER) $(LINUXINC)/linuxvcs.pp
|
|
|