# # Makefile generated by fpcmake v0.99.13 on 1999-12-23 21:01 # defaultrule: info ##################################################################### # Autodetect OS (Linux or Dos or Windows NT) # define inlinux when running under linux # define inWinNT when running under WinNT ##################################################################### # We need only / in the path override PATH:=$(subst \,/,$(PATH)) # Search for PWD and determine also if we are under linux PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(subst ;, ,$(PATH))))) ifeq ($(PWD),) PWD:=$(strip $(wildcard $(addsuffix /pwd,$(subst :, ,$(PATH))))) ifeq ($(PWD),) nopwd: @echo You need the GNU utils package to use this Makefile! @echo Get ftp://ftp.freepascal.org/pub/fpc/dist/go32v2/utilgo32.zip @exit else inlinux=1 endif else PWD:=$(firstword $(PWD)) endif # Detect NT - NT sets OS to Windows_NT ifndef inlinux ifeq ($(OS),Windows_NT) inWinNT=1 endif endif # Detect OS/2 - OS/2 has OS2_SHELL defined ifndef inlinux ifndef inWinNT ifdef OS2_SHELL inOS2=1 endif endif endif # The extension of executables ifdef inlinux EXEEXT= else EXEEXT=.exe endif # The path which is search separated by spaces ifdef inlinux SEARCHPATH=$(subst :, ,$(PATH)) else SEARCHPATH=$(subst ;, ,$(PATH)) endif ##################################################################### # FPC version/target Detection ##################################################################### # What compiler to use ? ifndef FPC # Compatibility with old makefiles ifdef PP export FPC=$(PP) else ifdef inOS2 export FPC=ppos2$(EXEEXT) else export FPC=ppc386$(EXEEXT) endif endif endif # Target OS ifndef OS_TARGET export OS_TARGET:=$(shell $(FPC) -iTO) endif # Source OS ifndef OS_SOURCE export OS_SOURCE:=$(shell $(FPC) -iSO) endif # Target CPU ifndef CPU_TARGET export CPU_TARGET:=$(shell $(FPC) -iTP) endif # Source CPU ifndef CPU_SOURCE export CPU_SOURCE:=$(shell $(FPC) -iSP) endif # FPC version ifndef FPC_VERSION export FPC_VERSION:=$(shell $(FPC) -iV) endif ##################################################################### # Default Settings ##################################################################### # Release ? Then force OPT and don't use extra opts via commandline ifndef REDIRFILE REDIRFILE=log endif ifdef RELEASE override OPT:=-Xs -OG2p3 -n endif # Verbose settings (warning,note,info) ifdef VERBOSE override OPT+=-vwni endif ifdef REDIR ifndef inlinux override FPC=redir -eo $(FPC) endif # set the verbosity to max override OPT+=-va override REDIR:= >> $(REDIRFILE) endif ##################################################################### # User Settings ##################################################################### # Targets override DIROBJECTS+=$(wildcard compiler rtl utils packages fcl ide) # Clean # Install ZIPTARGET=install # Defaults # Directories ifndef FPCDIR FPCDIR=$(BASEDIR) endif ifndef PACKAGEDIR PACKAGEDIR=$(FPCDIR)/packages endif ifndef COMPONENTDIR COMPONENTDIR=$(FPCDIR)/components endif # Packages # Libraries # Post Settings export RELEASE=1 ##################################################################### # Default Directories ##################################################################### # Base dir ifdef PWD BASEDIR:=$(shell $(PWD)) else BASEDIR=. endif # this can be set to 'rtl' when the RTL units are installed ifndef UNITPREFIX UNITPREFIX=units endif # set the prefix directory where to install everything ifndef PREFIXINSTALLDIR ifdef inlinux export PREFIXINSTALLDIR=/usr else export PREFIXINSTALLDIR=/pp endif endif # create fcldir,rtldir,unitdir ifdef FPCDIR override FPCDIR:=$(subst \,/,$(FPCDIR)) ifneq ($(FPCDIR),.) override RTLDIR=$(FPCDIR)/rtl/$(OS_TARGET) override FCLDIR=$(FPCDIR)/fcl/$(OS_TARGET) override UNITSDIR=$(FPCDIR)/units/$(OS_TARGET) endif endif ##################################################################### # Install Directories ##################################################################### # set the base directory where to install everything ifndef BASEINSTALLDIR ifdef inlinux BASEINSTALLDIR=$(PREFIXINSTALLDIR)/lib/fpc/$(FPC_VERSION) else BASEINSTALLDIR=$(PREFIXINSTALLDIR) endif endif # set the directory where to install the binaries ifndef BININSTALLDIR ifdef inlinux BININSTALLDIR=$(PREFIXINSTALLDIR)/bin else BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET) endif endif # set the directory where to install the units. ifndef UNITINSTALLDIR UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET) endif # Where to install shared libraries ifndef LIBINSTALLDIR ifdef inlinux LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib else LIBINSTALLDIR=$(UNITINSTALLDIR) endif endif # Where the source files will be stored ifndef SOURCEINSTALLDIR ifdef inlinux SOURCEINSTALLDIR=$(PREFIXINSTALLDIR)/src/fpc-$(FPC_VERSION) else SOURCEINSTALLDIR=$(BASEINSTALLDIR)/source endif endif # Where the doc files will be stored ifndef DOCINSTALLDIR ifdef inlinux DOCINSTALLDIR=$(PREFIXINSTALLDIR)/doc/fpc/$(FPC_VERSION) else DOCINSTALLDIR=$(BASEINSTALLDIR)/doc endif endif # Where the some extra (data)files will be stored ifndef EXTRAINSTALLDIR EXTRAINSTALLDIR=$(BASEINSTALLDIR) endif ##################################################################### # Shell tools ##################################################################### # To copy pograms ifndef COPY export COPY:=cp -fp endif # Copy a whole tree ifndef COPYTREE export COPYTREE:=cp -rfp endif # To move pograms ifndef MOVE export MOVE:=mv -f endif # Check delete program ifndef DEL export DEL:=rm -f endif # Check deltree program ifndef DELTREE export DELTREE:=rm -rf endif # To install files ifndef INSTALL ifdef inlinux export INSTALL:=install -m 644 else export INSTALL:=$(COPY) endif endif # To install programs ifndef INSTALLEXE ifdef inlinux export INSTALLEXE:=install -m 755 else export INSTALLEXE:=$(COPY) endif endif # To make a directory. ifndef MKDIR ifdef inlinux export MKDIR:=install -m 755 -d else export MKDIR:=ginstall -m 755 -d endif endif ##################################################################### # Default Tools ##################################################################### # assembler, redefine it if cross compiling ifndef AS AS=as endif # linker, but probably not used ifndef LD LD=ld endif # ppas.bat / ppas.sh ifdef inlinux PPAS=ppas.sh else ifdef inOS2 PPAS=ppas.cmd else PPAS=ppas.bat endif endif # also call ppas if with command option -s ifeq (,$(findstring -s ,$(COMPILER))) EXECPPAS= else EXECPPAS:=@$(PPAS) endif # ldconfig to rebuild .so cache ifdef inlinux LDCONFIG=ldconfig else LDCONFIG= endif # echo ifndef ECHO ECHO:=$(strip $(wildcard $(addsuffix /echo$(EXEEXT),$(SEARCHPATH)))) ifeq ($(ECHO),) export ECHO:=echo else export ECHO:=$(firstword $(ECHO)) endif endif # ppdep ifndef PPDEP PPDEP:=$(strip $(wildcard $(addsuffix /ppdep$(EXEEXT),$(SEARCHPATH)))) ifeq ($(PPDEP),) PPDEP= else export PPDEP:=$(firstword $(PPDEP)) endif endif # ppumove ifndef PPUMOVE PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(EXEEXT),$(SEARCHPATH)))) ifeq ($(PPUMOVE),) PPUMOVE= else export PPUMOVE:=$(firstword $(PPUMOVE)) endif endif # ppufiles ifndef PPUFILES PPUFILES:=$(strip $(wildcard $(addsuffix /ppufiles$(EXEEXT),$(SEARCHPATH)))) ifeq ($(PPUFILES),) PPUFILES= else export PPUFILES:=$(firstword $(PPUFILES)) endif endif # Look if UPX is found for go32v2 and win32. We can't use $UPX becuase # upx uses that one itself (PFV) ifndef UPXPROG ifeq ($(OS_TARGET),go32v2) UPXPROG:=1 endif ifeq ($(OS_TARGET),win32) UPXPROG:=1 endif ifdef UPXPROG UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(EXEEXT),$(SEARCHPATH)))) ifeq ($(UPXPROG),) UPXPROG= else export UPXPROG:=$(firstword $(UPXPROG)) endif else UPXPROG= endif endif # gdate/date ifndef DATE DATE:=$(strip $(wildcard $(addsuffix /date$(EXEEXT),$(SEARCHPATH)))) ifeq ($(DATE),) DATE:=$(strip $(wildcard $(addsuffix /gdate$(EXEEXT),$(SEACHPATH)))) ifeq ($(DATE),) DATE= else export DATE:=$(firstword $(DATE)) endif else export DATE:=$(firstword $(DATE)) endif endif ifdef DATE DATESTR:=$(shell $(DATE) +%Y%m%d) else DATESTR= endif # ZipProg, you can't use Zip as the var name (PFV) ifndef ZIPPROG ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(EXEEXT),$(SEARCHPATH)))) ifeq ($(ZIPPROG),) ZIPPROG= else export ZIPPROG:=$(firstword $(ZIPPROG)) -D9 -r endif endif ifndef ZIPEXT ZIPEXT=.zip endif ##################################################################### # Default extensions ##################################################################### # Default needed extensions (Go32v2,Linux) LOADEREXT=.as PPLEXT=.ppl PPUEXT=.ppu OEXT=.o ASMEXT=.s SMARTEXT=.sl STATICLIBEXT=.a SHAREDLIBEXT=.so PACKAGESUFFIX= FPCMADE=fpcmade # Go32v1 ifeq ($(OS_TARGET),go32v1) PPUEXT=.pp1 OEXT=.o1 ASMEXT=.s1 SMARTEXT=.sl1 STATICLIBEXT=.a1 SHAREDLIBEXT=.so1 PACKAGESUFFIX=v1 FPCMADE=fpcmade.v1 endif # Go32v2 ifeq ($(OS_TARGET),go32v2) PACKAGESUFFIX=go32 FPCMADE=fpcmade.dos endif # Linux ifeq ($(OS_TARGET),linux) PACKAGESUFFIX=linux FPCMADE=fpcmade.lnx endif # Win32 ifeq ($(OS_TARGET),win32) PPUEXT=.ppw OEXT=.ow ASMEXT=.sw SMARTEXT=.slw STATICLIBEXT=.aw SHAREDLIBEXT=.dll PACKAGESUFFIX=win32 FPCMADE=fpcmade.w32 endif # OS/2 ifeq ($(OS_TARGET),os2) PPUEXT=.ppo ASMEXT=.so2 OEXT=.oo2 SMARTEXT=.so STATICLIBEXT=.ao2 SHAREDLIBEXT=.dll PACKAGESUFFIX=os2 FPCMADE=fpcmade.os2 endif # library prefix LIBPREFIX=lib ifeq ($(OS_TARGET),go32v2) LIBPREFIX= endif ifeq ($(OS_TARGET),go32v1) LIBPREFIX= endif # determine which .pas extension is used ifndef PASEXT ifdef EXEOBJECTS override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(EXEOBJECTS))))) else override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(UNITOBJECTS))))) endif ifeq ($(TESTPAS),) PASEXT=.pp else PASEXT=.pas endif endif ##################################################################### # Standard rules ##################################################################### all: $(addsuffix _all,$(DIROBJECTS)) debug: $(addsuffix _debug,$(DIROBJECTS)) examples: $(addsuffix _examples,$(DIROBJECTS)) test: $(addsuffix _test,$(DIROBJECTS)) smart: $(addsuffix _smart,$(DIROBJECTS)) shared: $(addsuffix _shared,$(DIROBJECTS)) showinstall: $(addsuffix _showinstall,$(DIROBJECTS)) install: $(addsuffix _install,$(DIROBJECTS)) sourceinstall: $(addsuffix _sourceinstall,$(DIROBJECTS)) clean: $(addsuffix _clean,$(DIROBJECTS)) cleanall: $(addsuffix _cleanall,$(DIROBJECTS)) depend: $(addsuffix _depend,$(DIROBJECTS)) .PHONY: all debug examples test smart shared showinstall install sourceinstall clean cleanall depend ##################################################################### # Package depends ##################################################################### ifneq ($(wildcard $(RTLDIR)),) ifeq ($(wildcard $(RTLDIR)/$(FPCMADE)),) override COMPILEPACKAGES+=rtl rtl_package: $(MAKE) -C $(RTLDIR) all endif endif .PHONY: rtl_package # Target Dirs OBJECTDIRCOMPILER=1 OBJECTDIRRTL=1 OBJECTDIRUTILS=1 OBJECTDIRPACKAGES=1 OBJECTDIRFCL=1 OBJECTDIRIDE=1 # Dir compiler ifdef OBJECTDIRCOMPILER .PHONY: compiler_all compiler_debug compiler_examples compiler_test compiler_smart compiler_shared compiler_showinstall compiler_install compiler_sourceinstall compiler_zipinstall compiler_zipinstalladd compiler_clean compiler_cleanall compiler_depend compiler_info compiler_all: $(MAKE) -C compiler all compiler_debug: $(MAKE) -C compiler debug compiler_examples: $(MAKE) -C compiler examples compiler_test: $(MAKE) -C compiler test compiler_smart: $(MAKE) -C compiler smart compiler_shared: $(MAKE) -C compiler shared compiler_showinstall: $(MAKE) -C compiler showinstall compiler_install: $(MAKE) -C compiler install compiler_sourceinstall: $(MAKE) -C compiler sourceinstall compiler_zipinstall: $(MAKE) -C compiler zipinstall compiler_zipinstalladd: $(MAKE) -C compiler zipinstalladd compiler_clean: $(MAKE) -C compiler clean compiler_cleanall: $(MAKE) -C compiler cleanall compiler_depend: $(MAKE) -C compiler depend compiler_info: $(MAKE) -C compiler info endif # Dir rtl ifdef OBJECTDIRRTL .PHONY: rtl_all rtl_debug rtl_examples rtl_test rtl_smart rtl_shared rtl_showinstall rtl_install rtl_sourceinstall rtl_zipinstall rtl_zipinstalladd rtl_clean rtl_cleanall rtl_depend rtl_info rtl_all: $(MAKE) -C rtl all rtl_debug: $(MAKE) -C rtl debug rtl_examples: $(MAKE) -C rtl examples rtl_test: $(MAKE) -C rtl test rtl_smart: $(MAKE) -C rtl smart rtl_shared: $(MAKE) -C rtl shared rtl_showinstall: $(MAKE) -C rtl showinstall rtl_install: $(MAKE) -C rtl install rtl_sourceinstall: $(MAKE) -C rtl sourceinstall rtl_zipinstall: $(MAKE) -C rtl zipinstall rtl_zipinstalladd: $(MAKE) -C rtl zipinstalladd rtl_clean: $(MAKE) -C rtl clean rtl_cleanall: $(MAKE) -C rtl cleanall rtl_depend: $(MAKE) -C rtl depend rtl_info: $(MAKE) -C rtl info endif # Dir utils ifdef OBJECTDIRUTILS .PHONY: utils_all utils_debug utils_examples utils_test utils_smart utils_shared utils_showinstall utils_install utils_sourceinstall utils_zipinstall utils_zipinstalladd utils_clean utils_cleanall utils_depend utils_info utils_all: $(MAKE) -C utils all utils_debug: $(MAKE) -C utils debug utils_examples: $(MAKE) -C utils examples utils_test: $(MAKE) -C utils test utils_smart: $(MAKE) -C utils smart utils_shared: $(MAKE) -C utils shared utils_showinstall: $(MAKE) -C utils showinstall utils_install: $(MAKE) -C utils install utils_sourceinstall: $(MAKE) -C utils sourceinstall utils_zipinstall: $(MAKE) -C utils zipinstall utils_zipinstalladd: $(MAKE) -C utils zipinstalladd utils_clean: $(MAKE) -C utils clean utils_cleanall: $(MAKE) -C utils cleanall utils_depend: $(MAKE) -C utils depend utils_info: $(MAKE) -C utils info endif # Dir packages ifdef OBJECTDIRPACKAGES .PHONY: packages_all packages_debug packages_examples packages_test packages_smart packages_shared packages_showinstall packages_install packages_sourceinstall packages_zipinstall packages_zipinstalladd packages_clean packages_cleanall packages_depend packages_info packages_all: $(MAKE) -C packages all packages_debug: $(MAKE) -C packages debug packages_examples: $(MAKE) -C packages examples packages_test: $(MAKE) -C packages test packages_smart: $(MAKE) -C packages smart packages_shared: $(MAKE) -C packages shared packages_showinstall: $(MAKE) -C packages showinstall packages_install: $(MAKE) -C packages install packages_sourceinstall: $(MAKE) -C packages sourceinstall packages_zipinstall: $(MAKE) -C packages zipinstall packages_zipinstalladd: $(MAKE) -C packages zipinstalladd packages_clean: $(MAKE) -C packages clean packages_cleanall: $(MAKE) -C packages cleanall packages_depend: $(MAKE) -C packages depend packages_info: $(MAKE) -C packages info endif # Dir fcl ifdef OBJECTDIRFCL .PHONY: fcl_all fcl_debug fcl_examples fcl_test fcl_smart fcl_shared fcl_showinstall fcl_install fcl_sourceinstall fcl_zipinstall fcl_zipinstalladd fcl_clean fcl_cleanall fcl_depend fcl_info fcl_all: $(MAKE) -C fcl all fcl_debug: $(MAKE) -C fcl debug fcl_examples: $(MAKE) -C fcl examples fcl_test: $(MAKE) -C fcl test fcl_smart: $(MAKE) -C fcl smart fcl_shared: $(MAKE) -C fcl shared fcl_showinstall: $(MAKE) -C fcl showinstall fcl_install: $(MAKE) -C fcl install fcl_sourceinstall: $(MAKE) -C fcl sourceinstall fcl_zipinstall: $(MAKE) -C fcl zipinstall fcl_zipinstalladd: $(MAKE) -C fcl zipinstalladd fcl_clean: $(MAKE) -C fcl clean fcl_cleanall: $(MAKE) -C fcl cleanall fcl_depend: $(MAKE) -C fcl depend fcl_info: $(MAKE) -C fcl info endif # Dir ide ifdef OBJECTDIRIDE .PHONY: ide_all ide_debug ide_examples ide_test ide_smart ide_shared ide_showinstall ide_install ide_sourceinstall ide_zipinstall ide_zipinstalladd ide_clean ide_cleanall ide_depend ide_info ide_all: $(MAKE) -C ide all ide_debug: $(MAKE) -C ide debug ide_examples: $(MAKE) -C ide examples ide_test: $(MAKE) -C ide test ide_smart: $(MAKE) -C ide smart ide_shared: $(MAKE) -C ide shared ide_showinstall: $(MAKE) -C ide showinstall ide_install: $(MAKE) -C ide install ide_sourceinstall: $(MAKE) -C ide sourceinstall ide_zipinstall: $(MAKE) -C ide zipinstall ide_zipinstalladd: $(MAKE) -C ide zipinstalladd ide_clean: $(MAKE) -C ide clean ide_cleanall: $(MAKE) -C ide cleanall ide_depend: $(MAKE) -C ide depend ide_info: $(MAKE) -C ide info endif ##################################################################### # Users rules ##################################################################### ##################################################################### # Main targets ##################################################################### .PHONY: compiler_cycle \ idezips ide_allzip ide_gdbzip ide_fullzip ide_fullgdbzip \ fclzip gtkzip fvzip compilerzip utilszip info: @echo @echo Please use one of the following targets: @echo @echo $(DIROBJECTS) @echo @echo All targets can follow after a _ with: @echo all,clean,install,staticinstall,sharedinstall @echo @echo example: make api_staticinstall @exit ##################################################################### # Dependencies ##################################################################### ####################################### # Compiler ####################################### compiler_cycle: $(MAKE) -C compiler cycle ####################################### # IDE ####################################### ide_gdb: $(MAKE) -C ide gdb ide_full: $(MAKE) -C ide full ide_fullgdb: $(MAKE) -C ide fullgdb ####################################### # Install targets ####################################### demo_install: $(MAKE) -C demo installdemo man_install: $(MAKE) -C man installman ####################################### # Packaging targets ####################################### export DESTZIPDIR:=$(BASEDIR) idezips: clean ide_allzip ide_gdbzip ide_fullzip ide_fullgdbzip ide_allzip: $(MAKE) ide_clean $(MAKE) ide_all $(MAKE) -C ide/text zipinstall ZIPNAME=ide-fake-$(PACKAGESUFFIX) ide_gdbzip: $(MAKE) ide_clean $(MAKE) ide_gdb $(MAKE) -C ide/text zipinstall ZIPNAME=ide-gdb-$(PACKAGESUFFIX) ide_fullzip: $(MAKE) compiler_clean $(MAKE) ide_clean $(MAKE) ide_full $(MAKE) -C ide/text zipinstall ZIPNAME=ide-comp-$(PACKAGESUFFIX) ide_fullgdbzip: $(MAKE) ide_clean $(MAKE) ide_fullgdb $(MAKE) -C ide/text zipinstall ZIPNAME=ide-full-$(PACKAGESUFFIX) fvzip: rtl_clean $(MAKE) -C packages api_clean $(MAKE) -C packages fv_clean $(MAKE) -C packages fv_all $(MAKE) -C packages api_zipinstall ZIPNAME=fv-$(PACKAGESUFFIX) $(MAKE) -C packages fv_zipinstalladd ZIPNAME=fv-$(PACKAGESUFFIX) gtkzip: rtl_clean $(MAKE) -C packages gtk_clean $(MAKE) -C packages gtk_all $(MAKE) -C packages gtk_zipinstall ZIPNAME=gtk-$(PACKAGESUFFIX) compilerzip: compiler_clean rtl_clean $(MAKE) rtl_all $(MAKE) compiler_all $(MAKE) compiler_zipinstall ZIPTARGET=quickinstall ZIPNAME=compiler-$(PACKAGESUFFIX) $(MAKE) rtl_zipinstalladd ZIPNAME=compiler-$(PACKAGESUFFIX) fclzip: rtl_clean fcl_clean $(MAKE) fcl_all $(MAKE) fcl_zipinstall ZIPNAME=fcl-$(PACKAGESUFFIX) utilszip: utils_clean rtl_clean fcl_clean $(MAKE) utils_all $(MAKE) utils_zipinstall ZIPNAME=utils-$(PACKAGESUFFIX)