2
# Makefile generated by fpcmake v1.00 [2000/12/19]
7
#####################################################################
8
# Autodetect OS (Linux or Dos or Windows NT or OS/2)
9
# define inUnix when running under Unix (Linux,FreeBSD)
10
# define inWinNT when running under WinNT
11
# define inOS2 when running under OS/2
12
#####################################################################
14
# We need only / in the path
15
override PATH:=$(subst \,/,$(PATH))
17
# Search for PWD and determine also if we are under linux
18
PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(subst ;, ,$(PATH)))))
20
PWD:=$(strip $(wildcard $(addsuffix /pwd,$(subst :, ,$(PATH)))))
23
@echo You need the GNU utils package to use this Makefile!
24
@echo Get ftp://ftp.freepascal.org/pub/fpc/dist/go32v2/utilgo32.zip
28
PWD:=$(firstword $(PWD))
31
PWD:=$(firstword $(PWD))
34
# Detect NT - NT sets OS to Windows_NT
35
# Detect OS/2 - OS/2 has OS2_SHELL defined
37
ifeq ($(OS),Windows_NT)
46
# The extension of executables
53
# The path which is searched separated by spaces
55
SEARCHPATH=$(subst :, ,$(PATH))
57
SEARCHPATH=$(subst ;, ,$(PATH))
62
BASEDIR:=$(shell $(PWD))
67
#####################################################################
69
#####################################################################
71
override OS_TARGET:=go32v2
72
override CPU_TARGET:=i386
74
#####################################################################
75
# FPC version/target Detection
76
#####################################################################
78
# What compiler to use ?
80
# Compatibility with old makefiles
87
override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
88
override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
92
OS_TARGET:=$(shell $(FPC) -iTO)
97
OS_SOURCE:=$(shell $(FPC) -iSO)
102
CPU_TARGET:=$(shell $(FPC) -iTP)
107
CPU_SOURCE:=$(shell $(FPC) -iSP)
112
FPC_VERSION:=$(shell $(FPC) -iV)
115
export FPC OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FPC_VERSION
117
#####################################################################
119
#####################################################################
123
PROCINC=../$(CPU_TARGET)
128
OBJPASDIR=$(RTL)/objpas
129
GRAPHDIR=$(INC)/graph
131
# Define Go32v2 Units
134
# Insert exception handler in system unit
135
ifdef EXCEPTIONS_IN_SYSTEM
136
override FPCOPT+=-dEXCEPTIONS_IN_SYSTEM
139
# Insert exception handler in system unit
140
ifdef NO_EXCEPTIONS_IN_SYSTEM
141
override FPCOPT+=-dNO_EXCEPTIONS_IN_SYSTEM
143
#####################################################################
145
#####################################################################
147
# Test FPCDIR to look if the RTL dir exists
149
override FPCDIR:=$(subst \,/,$(FPCDIR))
150
ifeq ($(wildcard $(FPCDIR)/rtl),)
151
ifeq ($(wildcard $(FPCDIR)/units),)
152
override FPCDIR=wrong
156
override FPCDIR=wrong
160
ifeq ($(FPCDIR),wrong)
162
ifeq ($(wildcard $(FPCDIR)/rtl),)
163
ifeq ($(wildcard $(FPCDIR)/units),)
164
override FPCDIR=wrong
170
ifeq ($(FPCDIR),wrong)
172
override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
173
ifeq ($(wildcard $(FPCDIR)/units),)
174
override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
177
override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
178
override FPCDIR:=$(FPCDIR)/..
179
ifeq ($(wildcard $(FPCDIR)/rtl),)
180
ifeq ($(wildcard $(FPCDIR)/units),)
181
override FPCDIR:=$(FPCDIR)/..
182
ifeq ($(wildcard $(FPCDIR)/rtl),)
183
ifeq ($(wildcard $(FPCDIR)/units),)
184
override FPCDIR=c:/pp
192
#####################################################################
194
#####################################################################
199
override LOADEROBJECTS+=prt0 exceptn fpu
200
override UNITOBJECTS+=$(SYSTEMUNIT) objpas strings go32 dpmiexcp initc ports profile dxeload emu387 dos crt objects printer graph sysutils math typinfo cpu mmx getopts heaptrc lineinfo msmouse
201
override RSTOBJECTS+=math
216
override NEEDINCDIR=$(INC) $(PROCINC)
229
INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall
231
#####################################################################
233
#####################################################################
235
SYSTEMPPU=$(addsuffix $(PPUEXT),$(SYSTEMUNIT))
237
# Get the system independent include file names.
238
# This will set the following variables :
240
include $(INC)/makefile.inc
241
SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
243
# Get the processor dependent include file names.
244
# This will set the following variables :
246
include $(PROCINC)/makefile.cpu
247
SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
249
# Put system unit dependencies together.
250
SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
252
#####################################################################
254
#####################################################################
258
ECHO:=$(strip $(wildcard $(addsuffix /gecho$(EXEEXT),$(SEARCHPATH))))
260
ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
265
ECHO:=$(firstword $(ECHO))
269
ECHO:=$(firstword $(ECHO))
289
# Check delete program
294
# Check deltree program
302
INSTALL:=install -c -m 644
308
# To install programs
311
INSTALLEXE:=install -c -m 755
317
# To make a directory.
320
MKDIR:=install -m 755 -d
322
MKDIR:=ginstall -m 755 -d
326
export ECHO ECHOE COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
328
#####################################################################
330
#####################################################################
332
# assembler, redefine it if cross compiling
337
# linker, but probably not used
353
# ldconfig to rebuild .so cache
362
PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
366
PPUMOVE:=$(firstword $(PPUMOVE))
373
PPUFILES:=$(strip $(wildcard $(addsuffix /ppufiles$(SRCEXEEXT),$(SEARCHPATH))))
377
PPUFILES:=$(firstword $(PPUFILES))
382
# Look if UPX is found for go32v2 and win32. We can't use $UPX becuase
383
# upx uses that one itself (PFV)
385
ifeq ($(OS_TARGET),go32v2)
388
ifeq ($(OS_TARGET),win32)
392
UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
396
UPXPROG:=$(firstword $(UPXPROG))
404
# ZipProg, you can't use Zip as the var name (PFV)
406
ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
410
ZIPPROG:=$(firstword $(ZIPPROG))
420
TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
424
TARPROG:=$(firstword $(TARPROG))
437
#####################################################################
439
#####################################################################
441
# Default needed extensions (Go32v2,Linux)
455
ifeq ($(OS_TARGET),go32v1)
466
ifeq ($(OS_TARGET),go32v2)
471
ifeq ($(OS_TARGET),linux)
478
ifeq ($(OS_TARGET),freebsd)
481
FPCMADE=fpcmade.freebsd
485
ifeq ($(OS_TARGET),win32)
496
ifeq ($(OS_TARGET),os2)
508
ifeq ($(OS_TARGET),go32v2)
511
ifeq ($(OS_TARGET),go32v1)
515
# determine which .pas extension is used
518
override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(EXEOBJECTS)))))
520
override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(UNITOBJECTS)))))
531
#####################################################################
532
# Default Directories
533
#####################################################################
535
# Linux and freebsd use unix dirs with /usr/bin, /usr/lib
536
# When zipping use the target as default, when normal install then
537
# use the source os as default
540
ifeq ($(OS_TARGET),linux)
543
ifeq ($(OS_TARGET),freebsd)
548
ifeq ($(OS_SOURCE),linux)
551
ifeq ($(OS_SOURCE),freebsd)
556
# set the prefix directory where to install everything
557
ifndef PREFIXINSTALLDIR
559
PREFIXINSTALLDIR=/usr
564
export PREFIXINSTALLDIR
566
# Where to place the resulting zip files
568
DESTZIPDIR:=$(BASEDIR)
572
#####################################################################
573
# Install Directories
574
#####################################################################
576
# set the base directory where to install everything
577
ifndef BASEINSTALLDIR
579
BASEINSTALLDIR=$(PREFIXINSTALLDIR)/lib/fpc/$(FPC_VERSION)
581
BASEINSTALLDIR=$(PREFIXINSTALLDIR)
585
# set the directory where to install the binaries
588
BININSTALLDIR=$(PREFIXINSTALLDIR)/bin
590
BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET)
594
# set the directory where to install the units.
595
ifndef UNITINSTALLDIR
596
UNITINSTALLDIR=$(BASEINSTALLDIR)/units/$(OS_TARGET)
598
UNITINSTALLDIR:=$(UNITINSTALLDIR)/$(UNITSUBDIR)
602
# Where to install shared libraries
605
LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
607
LIBINSTALLDIR=$(UNITINSTALLDIR)
611
# Where the source files will be stored
612
ifndef SOURCEINSTALLDIR
614
SOURCEINSTALLDIR=$(PREFIXINSTALLDIR)/src/fpc-$(FPC_VERSION)
616
SOURCEINSTALLDIR=$(BASEINSTALLDIR)/source
619
SOURCEINSTALLDIR:=$(SOURCEINSTALLDIR)/$(SOURCESUBDIR)
623
# Where the doc files will be stored
626
DOCINSTALLDIR=$(PREFIXINSTALLDIR)/doc/fpc-$(FPC_VERSION)
628
DOCINSTALLDIR=$(BASEINSTALLDIR)/doc
632
# Where to install the examples, under linux we use the doc dir
633
# because the copytree command will create a subdir itself
634
ifndef EXAMPLEINSTALLDIR
636
EXAMPLEINSTALLDIR=$(DOCINSTALLDIR)/examples
638
EXAMPLEINSTALLDIR=$(BASEINSTALLDIR)/examples
641
EXAMPLEINSTALLDIR:=$(EXAMPLEINSTALLDIR)/$(EXAMPLESUBDIR)
645
# Where the some extra (data)files will be stored
646
ifndef DATAINSTALLDIR
647
DATAINSTALLDIR=$(BASEINSTALLDIR)
650
#####################################################################
652
#####################################################################
660
override FPC=redir -eo $(FPC)
662
# set the verbosity to max
664
override REDIR:= >> $(REDIRFILE)
668
#####################################################################
669
# Compiler Command Line
670
#####################################################################
672
# Load commandline OPTDEF and add FPC_CPU define
673
override FPCOPTDEF:=-d$(CPU_TARGET)
675
# Load commandline OPT and add target and unit dir to be sure
676
ifneq ($(OS_TARGET),$(OS_SOURCE))
677
override FPCOPT+=-T$(OS_TARGET)
680
# User dirs should be first, so they are looked at first
682
override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
685
override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
688
override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
691
override FPCOPT+=$(addprefix -Fi,$(INCDIR))
699
# Smartlinking creation
706
override FPCOPT+=-gl -dDEBUG
709
# Release mode (strip, optimize and don't load ppc386.cfg)
710
# 0.99.12b has a bug in the optimizer so don't use it by default
712
ifeq ($(FPC_VERSION),0.99.12)
713
override FPCOPT+=-Xs -OGp3 -n
715
override FPCOPT+=-Xs -OG2p3 -n
726
override FPCOPT+=-OG2p3
729
# Verbose settings (warning,note,info)
731
override FPCOPT+=-vwni
735
override FPCOPT+=-Fu$(UNITSDIR)
739
override FPCOPT+=$(addprefix -Fi,$(NEEDINCDIR))
743
# Target dirs and the prefix to use for clean/install
745
override FPCOPT+=-FE$(TARGETDIR)
746
ifeq ($(TARGETDIR),.)
747
override TARGETDIRPREFIX=
749
override TARGETDIRPREFIX=$(TARGETDIR)/
753
override FPCOPT+=-FU$(UNITTARGETDIR)
754
ifeq ($(UNITTARGETDIR),.)
755
override UNITTARGETDIRPREFIX=
757
override UNITTARGETDIRPREFIX=$(TARGETDIR)/
761
override UNITTARGETDIR=$(TARGETDIR)
762
override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
766
# Add commandline options last so they can override
768
override FPCOPT+=$(OPT)
771
# Add defines from FPCOPTDEF to FPCOPT
773
override FPCOPT+=$(FPCOPTDEF)
778
override FPCOPT+=-Fr$(ERRORFILE)
781
# Was a config file specified ?
783
override FPCOPT+=@$(CFGFILE)
786
# For win32 the options are passed using the environment FPCEXTCMD
787
ifeq ($(OS_SOURCE),win32)
788
override FPCEXTCMD:=$(FPCOPT)
789
override FPCOPT:=!FPCEXTCMD
793
# Compiler commandline
794
override COMPILER:=$(FPC) $(FPCOPT)
796
# also call ppas if with command option -s
797
# but only if the OS_SOURCE and OS_TARGE are equal
798
ifeq (,$(findstring -s ,$(COMPILER)))
801
ifeq ($(OS_SOURCE),$(OS_TARGET))
806
#####################################################################
808
#####################################################################
818
showinstall: fpc_showinstall
822
sourceinstall: fpc_sourceinstall
824
exampleinstall: fpc_exampleinstall
826
zipinstall: fpc_zipinstall
828
zipsourceinstall: fpc_zipsourceinstall
830
zipexampleinstall: fpc_zipexampleinstall
834
distclean: fpc_distclean
836
cleanall: fpc_cleanall
840
.PHONY: all debug smart shared showinstall install sourceinstall exampleinstall zipinstall zipsourceinstall zipexampleinstall clean distclean cleanall info
842
#####################################################################
844
#####################################################################
848
%$(OEXT): %$(LOADEREXT)
849
$(AS) -o $*$(OEXT) $<
851
override ALLTARGET+=fpc_loaders
852
override CLEANTARGET+=fpc_loaders_clean
853
override SHOWINSTALLTARGET+=fpc_loaders_showinstall
854
override INSTALLTARGET+=fpc_loaders_install
856
override LOADEROFILES:=$(addsuffix $(OEXT),$(LOADEROBJECTS))
858
fpc_loaders: $(LOADEROFILES)
861
-$(DEL) $(LOADEROFILES)
863
fpc_loaders_showinstall:
864
@$(ECHO) -e $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
867
$(MKDIR) $(UNITINSTALLDIR)
868
$(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
870
#####################################################################
872
#####################################################################
876
override ALLTARGET+=fpc_units
878
override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
879
override INSTALLPPUFILES+=$(UNITPPUFILES)
880
override CLEANPPUFILES+=$(UNITPPUFILES)
882
fpc_units: $(UNITPPUFILES)
884
#####################################################################
886
#####################################################################
889
override RSTFILES=$(addsuffix $(RSTEXT),$(RSTOBJECTS))
891
override CLEANRSTFILES+=$(RSTFILES)
894
#####################################################################
895
# General compile rules
896
#####################################################################
898
.PHONY: fpc_packages fpc_all fpc_debug
900
$(FPCMADE): $(ALLTARGET)
901
@$(ECHO) Compiled > $(FPCMADE)
903
fpc_packages: $(COMPILEPACKAGES)
905
fpc_all: fpc_packages $(FPCMADE)
910
# Search paths for .ppu if targetdir is set
912
vpath %$(PPUEXT) $(UNITTARGETDIR)
915
# General compile rules, available for both possible PASEXT
917
.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
920
$(COMPILER) $< $(REDIR)
924
$(COMPILER) $< $(REDIR)
928
$(COMPILER) $< $(REDIR)
932
$(COMPILER) $< $(REDIR)
935
#####################################################################
937
#####################################################################
939
.PHONY: fpc_smart fpc_shared
942
LIBFULLNAME=$(LIBNAME).$(LIBVERSION)
944
LIBFULLNAME=$(LIBNAME)
947
# Default sharedlib units are all unit objects
948
ifndef SHAREDLIBUNITOBJECTS
949
SHAREDLIBUNITOBJECTS:=$(UNITOBJECTS)
953
$(MAKE) all LINKSMART=1 CREATESMART=1
958
@$(ECHO) "LIBNAME not set"
960
$(PPUMOVE) $(SHAREDLIBUNITOBJECTS) -o$(LIBFULLNAME)
963
@$(ECHO) "Shared Libraries not supported"
966
#####################################################################
968
#####################################################################
970
.PHONY: fpc_showinstall fpc_install
972
ifdef EXTRAINSTALLUNITS
973
override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS))
976
ifdef INSTALLPPUFILES
977
override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPUFILES))
979
INSTALLPPULINKFILES:=$(shell $(PPUFILES) -S -O $(INSTALLPPUFILES))
981
INSTALLPPULINKFILES:=$(wildcard $(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(LIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))))
983
override INSTALLPPULINKFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPULINKFILES))
986
ifdef INSTALLEXEFILES
987
override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(INSTALLEXEFILES))
990
fpc_showinstall: $(SHOWINSTALLTARGET)
991
ifdef INSTALLEXEFILES
992
@$(ECHO) -e $(addprefix "\n"$(BININSTALLDIR)/,$(INSTALLEXEFILES))
994
ifdef INSTALLPPUFILES
995
@$(ECHO) -e $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPUFILES))
996
ifneq ($(INSTALLPPULINKFILES),)
997
@$(ECHO) -e $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPULINKFILES))
999
ifneq ($(wildcard $(LIBFULLNAME)),)
1000
@$(ECHO) $(LIBINSTALLDIR)/$(LIBFULLNAME)
1002
@$(ECHO) $(LIBINSTALLDIR)/$(LIBNAME)
1006
ifdef EXTRAINSTALLFILES
1007
@$(ECHO) -e $(addprefix "\n"$(DATAINSTALLDIR)/,$(EXTRAINSTALLFILES))
1010
fpc_install: $(INSTALLTARGET)
1011
# Create UnitInstallFiles
1012
ifdef INSTALLEXEFILES
1013
$(MKDIR) $(BININSTALLDIR)
1014
# Compress the exes if upx is defined
1016
-$(UPXPROG) $(INSTALLEXEFILES)
1018
$(INSTALLEXE) $(INSTALLEXEFILES) $(BININSTALLDIR)
1020
ifdef INSTALLPPUFILES
1021
$(MKDIR) $(UNITINSTALLDIR)
1022
$(INSTALL) $(INSTALLPPUFILES) $(UNITINSTALLDIR)
1023
ifneq ($(INSTALLPPULINKFILES),)
1024
$(INSTALL) $(INSTALLPPULINKFILES) $(UNITINSTALLDIR)
1026
ifneq ($(wildcard $(LIBFULLNAME)),)
1027
$(MKDIR) $(LIBINSTALLDIR)
1028
$(INSTALL) $(LIBFULLNAME) $(LIBINSTALLDIR)
1030
ln -sf $(LIBFULLNAME) $(LIBINSTALLDIR)/$(LIBNAME)
1034
ifdef EXTRAINSTALLFILES
1035
$(MKDIR) $(DATAINSTALLDIR)
1036
$(INSTALL) $(EXTRAINSTALLFILES) $(DATAINSTALLDIR)
1039
#####################################################################
1040
# SourceInstall rules
1041
#####################################################################
1043
.PHONY: fpc_sourceinstall
1046
SOURCETOPDIR=$(BASEDIR)
1049
fpc_sourceinstall: clean
1050
$(MKDIR) $(SOURCEINSTALLDIR)
1051
$(COPYTREE) $(SOURCETOPDIR) $(SOURCEINSTALLDIR)
1053
#####################################################################
1054
# exampleinstall rules
1055
#####################################################################
1057
.PHONY: fpc_exampleinstall
1059
fpc_exampleinstall: $(addsuffix _clean,$(EXAMPLEDIROBJECTS))
1060
ifdef EXAMPLESOURCEFILES
1061
$(MKDIR) $(EXAMPLEINSTALLDIR)
1062
$(COPY) $(EXAMPLESOURCEFILES) $(EXAMPLEINSTALLDIR)
1064
ifdef EXAMPLEDIROBJECTS
1065
ifndef EXAMPLESOURCEFILES
1066
$(MKDIR) $(EXAMPLEINSTALLDIR)
1068
$(COPYTREE) $(addsuffix /*,$(EXAMPLEDIROBJECTS)) $(EXAMPLEINSTALLDIR)
1071
#####################################################################
1073
#####################################################################
1075
.PHONY: fpc_zipinstall
1077
# Create suffix to add
1078
ifndef PACKAGESUFFIX
1079
PACKAGESUFFIX=$(OS_TARGET)
1080
ifeq ($(OS_TARGET),go32v2)
1083
ifeq ($(OS_TARGET),win32)
1086
ifeq ($(OS_TARGET),os2)
1091
# Temporary path to pack a file
1094
PACKDIR=$(BASEDIR)/pack_tmp
1096
PACKDIR=/tmp/fpc-pack
1100
# Maybe create default zipname from packagename
1103
ZIPNAME=$(PACKAGEPREFIX)$(PACKAGENAME)$(PACKAGESUFFIX)
1107
# Use tar by default under linux
1116
@$(ECHO) "Please specify ZIPNAME!"
1119
$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
1121
$(DEL) $(DESTZIPDIR)/$(ZIPNAME)$(TAREXT)
1122
cd $(PACKDIR) ; $(TARPROG) cf$(TAROPT) $(DESTZIPDIR)/$(ZIPNAME)$(TAREXT) * ; cd $(BASEDIR)
1124
$(DEL) $(DESTZIPDIR)/$(ZIPNAME)$(ZIPEXT)
1125
cd $(PACKDIR) ; $(ZIPPROG) -Dr $(ZIPOPT) $(DESTZIPDIR)/$(ZIPNAME)$(ZIPEXT) * ; cd $(BASEDIR)
1127
$(DELTREE) $(PACKDIR)
1130
.PHONY: fpc_zipsourceinstall
1132
fpc_zipsourceinstall:
1133
$(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall PACKAGESUFFIX=src
1135
.PHONY: fpc_zipexampleinstall
1137
fpc_zipexampleinstall:
1138
$(MAKE) fpc_zipinstall ZIPTARGET=exampleinstall PACKAGESUFFIX=exm
1140
#####################################################################
1142
#####################################################################
1144
.PHONY: fpc_clean fpc_cleanall fpc_distclean
1147
override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
1150
ifdef EXTRACLEANUNITS
1151
override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRACLEANUNITS))
1155
override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
1156
# Get the .o and .a files created for the units
1158
CLEANPPULINKFILES:=$(shell $(PPUFILES) $(CLEANPPUFILES))
1160
CLEANPPULINKFILES:=$(wildcard $(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(LIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))))
1162
override CLEANPPULINKFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES))
1165
fpc_clean: $(CLEANTARGET)
1167
-$(DEL) $(CLEANEXEFILES)
1170
-$(DEL) $(CLEANPPUFILES)
1172
ifneq ($(CLEANPPULINKFILES),)
1173
-$(DEL) $(CLEANPPULINKFILES)
1176
-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
1178
ifdef EXTRACLEANFILES
1179
-$(DEL) $(EXTRACLEANFILES)
1182
-$(DEL) $(LIBNAME) $(LIBFULLNAME)
1184
-$(DEL) $(FPCMADE) $(PPAS) link.res $(FPCEXTFILE) $(REDIRFILE)
1186
fpc_distclean: fpc_clean
1188
# Also run clean first if targetdir is set. Unittargetdir is always
1189
# set if targetdir or unittargetdir is specified
1191
TARGETDIRCLEAN=fpc_clean
1194
fpc_cleanall: $(CLEANTARGET) $(TARGETDIRCLEAN)
1196
-$(DEL) $(CLEANEXEFILES)
1198
-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
1199
-$(DELTREE) *$(SMARTEXT)
1200
-$(DEL) $(FPCMADE) $(PPAS) link.res $(FPCEXTFILE) $(REDIRFILE)
1202
#####################################################################
1204
#####################################################################
1206
.PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
1209
fpc_info: $(INFOTARGET)
1213
@$(ECHO) == Configuration info ==
1215
@$(ECHO) FPC....... $(FPC)
1216
@$(ECHO) Version... $(FPC_VERSION)
1217
@$(ECHO) CPU....... $(CPU_TARGET)
1218
@$(ECHO) Source.... $(OS_SOURCE)
1219
@$(ECHO) Target.... $(OS_TARGET)
1224
@$(ECHO) == Object info ==
1226
@$(ECHO) LoaderObjects..... $(LOADEROBJECTS)
1227
@$(ECHO) UnitObjects....... $(UNITOBJECTS)
1228
@$(ECHO) ExeObjects........ $(EXEOBJECTS)
1230
@$(ECHO) ExtraCleanUnits... $(EXTRACLEANUNITS)
1231
@$(ECHO) ExtraCleanFiles... $(EXTRACLEANFILES)
1233
@$(ECHO) ExtraInstallUnits. $(EXTRAINSTALLUNITS)
1234
@$(ECHO) ExtraInstallFiles. $(EXTRAINSTALLFILES)
1239
@$(ECHO) == Install info ==
1242
@$(ECHO) DateStr.............. $(DATESTR)
1245
@$(ECHO) PackagePrefix........ $(PACKAGEPREFIX)
1248
@$(ECHO) PackageName.......... $(PACKAGENAME)
1250
@$(ECHO) PackageSuffix........ $(PACKAGESUFFIX)
1252
@$(ECHO) BaseInstallDir....... $(BASEINSTALLDIR)
1253
@$(ECHO) BinInstallDir........ $(BININSTALLDIR)
1254
@$(ECHO) LibInstallDir........ $(LIBINSTALLDIR)
1255
@$(ECHO) UnitInstallDir....... $(UNITINSTALLDIR)
1256
@$(ECHO) SourceInstallDir..... $(SOURCEINSTALLDIR)
1257
@$(ECHO) DocInstallDir........ $(DOCINSTALLDIR)
1258
@$(ECHO) DataInstallDir....... $(DATAINSTALLDIR)
1260
@$(ECHO) DestZipDir........... $(DESTZIPDIR)
1261
@$(ECHO) ZipName.............. $(ZIPNAME)
1264
#####################################################################
1266
#####################################################################
1268
ifneq ($(wildcard fpcmake.loc),)
1272
#####################################################################
1274
#####################################################################
1276
vpath %$(PASEXT) $(INC) $(PROCINC)
1282
prt0$(OEXT) : v2prt0.as
1283
$(AS) -o prt0$(OEXT) v2prt0.as
1286
# System Units (System, Objpas, Strings)
1289
$(SYSTEMPPU) : system.pp $(SYSDEPS)
1290
$(COMPILER) -Us -Sg system.pp $(REDIR)
1292
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMPPU)
1293
$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp $(REDIR)
1295
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
1296
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc \
1300
# System Dependent Units
1303
go32$(PPUEXT) : go32.pp $(SYSTEMPPU)
1305
dpmiexcp$(PPUEXT) : dpmiexcp.pp exceptn$(OEXT) $(SYSTEMPPU)
1306
$(COMPILER) -Sg dpmiexcp.pp $(REDIR)
1308
initc$(PPUEXT) : initc.pp $(SYSTEMPPU)
1310
profile$(PPUEXT) : profile.pp dpmiexcp$(PPUEXT) go32$(PPUEXT)
1312
dxeload$(PPUEXT) : dxeload.pp $(SYSTEMPPU)
1314
emu387$(PPUEXT) : emu387.pp fpu$(OEXT) strings$(PPUEXT) dxeload$(PPUEXT) \
1317
ports$(PPUEXT) : ports.pp objpas$(PPUEXT) $(SYSTEMPPU)
1320
# TP7 Compatible RTL Units
1323
dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc \
1324
go32$(PPUEXT) strings$(PPUEXT) $(SYSTEMPPU)
1326
crt$(PPUEXT) : crt.pp $(INC)/textrec.inc go32$(PPUEXT) $(SYSTEMPPU)
1328
objects$(PPUEXT) : $(INC)/objects.pp objinc.inc $(SYSTEMPPU)
1330
printer$(PPUEXT) : printer.pp $(SYSTEMPPU)
1336
include $(GRAPHDIR)/makefile.inc
1337
GRAPHINCDEPS=$(addprefix $(GRAPHDIR)/,$(GRAPHINCNAMES))
1339
graph$(PPUEXT) : graph.pp go32$(PPUEXT) ports$(PPUEXT) $(SYSTEMPPU) \
1340
$(GRAPHINCDEPS) vesa.inc vesah.inc dpmi.inc
1341
$(COMPILER) -I$(GRAPHDIR) graph.pp $(REDIR)
1344
# Delphi Compatible Units
1347
sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/*.inc) \
1348
objpas$(PPUEXT) dos$(PPUEXT) go32$(PPUEXT)
1349
$(COMPILER) -I$(OBJPASDIR) sysutils.pp $(REDIR)
1351
typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
1352
$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp $(REDIR)
1354
math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
1355
$(COMPILER) $(OBJPASDIR)/math.pp $(REDIR)
1358
# Other system-independent RTL Units
1361
cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMPPU)
1363
mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMPPU)
1365
getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMPPU)
1367
heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMPPU)
1368
$(COMPILER) -Sg $(INC)/heaptrc.pp $(REDIR)
1370
lineinfo$(PPUEXT) : $(INC)/lineinfo.pp $(SYSTEMPPU)
1374
# Other system-dependent RTL Units
1377
msmouse$(PPUEXT) : msmouse.pp $(SYSTEMPPU)