# # Makefile generated by fpcmake v1.00 [2000/09/01] # defaultrule: all ##################################################################### # 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 searched separated by spaces ifdef inlinux SEARCHPATH=$(subst :, ,$(PATH)) else SEARCHPATH=$(subst ;, ,$(PATH)) endif # Base dir ifdef PWD BASEDIR:=$(shell $(PWD)) else BASEDIR=. endif ##################################################################### # FPC version/target Detection ##################################################################### # What compiler to use ? ifndef FPC # Compatibility with old makefiles ifdef PP FPC=$(PP) else ifdef inOS2 FPC=ppos2 else FPC=ppc386 endif endif endif override FPC:=$(subst $(EXEEXT),,$(FPC)) override FPC:=$(subst \,/,$(FPC))$(EXEEXT) # Target OS ifndef OS_TARGET OS_TARGET:=$(shell $(FPC) -iTO) endif # Source OS ifndef OS_SOURCE OS_SOURCE:=$(shell $(FPC) -iSO) endif # Target CPU ifndef CPU_TARGET CPU_TARGET:=$(shell $(FPC) -iTP) endif # Source CPU ifndef CPU_SOURCE CPU_SOURCE:=$(shell $(FPC) -iSP) endif # FPC version ifndef FPC_VERSION FPC_VERSION:=$(shell $(FPC) -iV) endif export FPC OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FPC_VERSION ##################################################################### # FPCDIR Setting ##################################################################### # Test FPCDIR to look if the RTL dir exists ifdef FPCDIR override FPCDIR:=$(subst \,/,$(FPCDIR)) ifeq ($(wildcard $(FPCDIR)/rtl),) ifeq ($(wildcard $(FPCDIR)/units),) override FPCDIR=wrong endif endif else override FPCDIR=wrong endif # Detect FPCDIR ifeq ($(FPCDIR),wrong) ifdef inlinux override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION) ifeq ($(wildcard $(FPCDIR)/units),) override FPCDIR=/usr/lib/fpc/$(FPC_VERSION) endif else override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH)))))) override FPCDIR:=$(FPCDIR)/.. ifeq ($(wildcard $(FPCDIR)/rtl),) ifeq ($(wildcard $(FPCDIR)/units),) override FPCDIR:=$(FPCDIR)/.. ifeq ($(wildcard $(FPCDIR)/rtl),) ifeq ($(wildcard $(FPCDIR)/units),) override FPCDIR=c:/pp endif endif endif endif endif endif ##################################################################### # User Settings ##################################################################### # Targets override DIROBJECTS+=$(wildcard go32v2 linux win32 os2 go32v1) # Clean # Install PACKAGENAME=rtl ZIPTARGET=install # Defaults # Directories # Packages # Libraries ##################################################################### # Shell tools ##################################################################### # echo ifndef ECHO ECHO:=$(strip $(wildcard $(addsuffix /gecho$(EXEEXT),$(SEARCHPATH)))) ifeq ($(ECHO),) ECHO:=$(strip $(wildcard $(addsuffix /echo$(EXEEXT),$(SEARCHPATH)))) ifeq ($(ECHO),) ECHO:=echo ECHOE:=echo else ECHO:=$(firstword $(ECHO)) ECHOE=$(ECHO) -E endif else ECHO:=$(firstword $(ECHO)) ECHOE=$(ECHO) -E endif endif # To copy pograms ifndef COPY COPY:=cp -fp endif # Copy a whole tree ifndef COPYTREE COPYTREE:=cp -rfp endif # To move pograms ifndef MOVE MOVE:=mv -f endif # Check delete program ifndef DEL DEL:=rm -f endif # Check deltree program ifndef DELTREE DELTREE:=rm -rf endif # To install files ifndef INSTALL ifdef inlinux INSTALL:=install -m 644 else INSTALL:=$(COPY) endif endif # To install programs ifndef INSTALLEXE ifdef inlinux INSTALLEXE:=install -m 755 else INSTALLEXE:=$(COPY) endif endif # To make a directory. ifndef MKDIR ifdef inlinux MKDIR:=install -m 755 -d else MKDIR:=ginstall -m 755 -d endif endif export ECHO ECHOE COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR ##################################################################### # 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 # ldconfig to rebuild .so cache ifdef inlinux LDCONFIG=ldconfig else LDCONFIG= 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 ZIPPROG:=$(firstword $(ZIPPROG)) endif endif export ZIPPROG ZIPOPT=-9 ZIPEXT=.zip # Tar ifndef TARPROG TARPROG:=$(strip $(wildcard $(addsuffix /tar$(EXEEXT),$(SEARCHPATH)))) ifeq ($(TARPROG),) TARPROG= else TARPROG:=$(firstword $(TARPROG)) endif endif export TARPROG ifeq ($(USETAR),bz2) TAROPT=vI TAREXT=.tar.bz2 else TAROPT=vz TAREXT=.tar.gz endif ##################################################################### # Default Directories ##################################################################### # set the prefix directory where to install everything ifndef PREFIXINSTALLDIR ifdef inlinux PREFIXINSTALLDIR=/usr else PREFIXINSTALLDIR=/pp endif endif export PREFIXINSTALLDIR # Where to place the resulting zip files ifndef DESTZIPDIR DESTZIPDIR:=$(BASEDIR) endif export DESTZIPDIR ##################################################################### # 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)/units/$(OS_TARGET) ifdef UNITSUBDIR UNITINSTALLDIR:=$(UNITINSTALLDIR)/$(UNITSUBDIR) endif 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 ifdef SOURCESUBDIR SOURCEINSTALLDIR:=$(SOURCEINSTALLDIR)/$(SOURCESUBDIR) 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 to install the examples, under linux we use the doc dir # because the copytree command will create a subdir itself ifndef EXAMPLEINSTALLDIR ifdef inlinux EXAMPLEINSTALLDIR=$(DOCINSTALLDIR)/examples else EXAMPLEINSTALLDIR=$(BASEINSTALLDIR)/examples endif ifdef EXAMPLESUBDIR EXAMPLEINSTALLDIR:=$(EXAMPLEINSTALLDIR)/$(EXAMPLESUBDIR) endif endif # Where the some extra (data)files will be stored ifndef DATAINSTALLDIR DATAINSTALLDIR=$(BASEINSTALLDIR) endif ##################################################################### # Redirection ##################################################################### ifndef REDIRFILE REDIRFILE=log endif ifdef REDIR ifndef inlinux override FPC=redir -eo $(FPC) endif # set the verbosity to max override FPCOPT+=-va override REDIR:= >> $(REDIRFILE) endif ##################################################################### # Standard rules ##################################################################### all: $(addsuffix _all,$(OS_TARGET)) debug: $(addsuffix _debug,$(OS_TARGET)) smart: $(addsuffix _smart,$(OS_TARGET)) shared: $(addsuffix _shared,$(OS_TARGET)) showinstall: $(addsuffix _showinstall,$(OS_TARGET)) install: $(addsuffix _install,$(OS_TARGET)) sourceinstall: fpc_sourceinstall zipinstall: fpc_zipinstall zipsourceinstall: fpc_zipsourceinstall clean: $(addsuffix _clean,$(OS_TARGET)) distclean: $(addsuffix _distclean,$(OS_TARGET)) cleanall: $(addsuffix _cleanall,$(OS_TARGET)) require: $(addsuffix _require,$(OS_TARGET)) .PHONY: all debug smart shared showinstall install sourceinstall zipinstall zipsourceinstall clean distclean cleanall require ##################################################################### # SourceInstall rules ##################################################################### .PHONY: fpc_sourceinstall ifndef SOURCETOPDIR SOURCETOPDIR=$(BASEDIR) endif fpc_sourceinstall: clean $(MKDIR) $(SOURCEINSTALLDIR) $(COPYTREE) $(SOURCETOPDIR) $(SOURCEINSTALLDIR) ##################################################################### # Zip ##################################################################### .PHONY: fpc_zipinstall # Create suffix to add ifndef PACKAGESUFFIX PACKAGESUFFIX=$(OS_TARGET) ifeq ($(OS_TARGET),go32v2) PACKAGESUFFIX=go32 endif ifeq ($(OS_TARGET),win32) PACKAGESUFFIX=w32 endif endif # Temporary path to pack a file ifndef PACKDIR ifndef inlinux PACKDIR=$(BASEDIR)/pack_tmp else PACKDIR=/tmp/fpc-pack endif endif # Maybe create default zipname from packagename ifndef ZIPNAME ifdef PACKAGENAME ZIPNAME=$(PACKAGEPREFIX)$(PACKAGENAME)$(PACKAGESUFFIX) endif endif # Use tar by default under linux ifndef USEZIP ifdef inlinux USETAR=1 endif endif fpc_zipinstall: ifndef ZIPNAME @$(ECHO) "Please specify ZIPNAME!" @exit 1 else $(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR) ifdef USETAR $(DEL) $(DESTZIPDIR)/$(ZIPNAME)$(TAREXT) cd $(PACKDIR) ; $(TARPROG) c$(TAROPT) --file $(DESTZIPDIR)/$(ZIPNAME)$(TAREXT) * ; cd $(BASEDIR) else $(DEL) $(DESTZIPDIR)/$(ZIPNAME)$(ZIPEXT) cd $(PACKDIR) ; $(ZIPPROG) -Dr $(ZIPOPT) $(DESTZIPDIR)/$(ZIPNAME)$(ZIPEXT) * ; cd $(BASEDIR) endif $(DELTREE) $(PACKDIR) endif .PHONY: fpc_zipsourceinstall fpc_zipsourceinstall: $(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall PACKAGESUFFIX=src ##################################################################### # Directories ##################################################################### OBJECTDIRGO32V2=1 OBJECTDIRLINUX=1 OBJECTDIRWIN32=1 OBJECTDIROS2=1 OBJECTDIRGO32V1=1 # Dir go32v2 ifdef OBJECTDIRGO32V2 .PHONY: go32v2_all go32v2_debug go32v2_examples go32v2_test go32v2_smart go32v2_shared go32v2_showinstall go32v2_install go32v2_sourceinstall go32v2_exampleinstall go32v2_zipinstall go32v2_zipsourceinstall go32v2_zipexampleinstall go32v2_clean go32v2_distclean go32v2_cleanall go32v2_require go32v2_info go32v2_all: $(MAKE) -C go32v2 all go32v2_debug: $(MAKE) -C go32v2 debug go32v2_examples: $(MAKE) -C go32v2 examples go32v2_test: $(MAKE) -C go32v2 test go32v2_smart: $(MAKE) -C go32v2 smart go32v2_shared: $(MAKE) -C go32v2 shared go32v2_showinstall: $(MAKE) -C go32v2 showinstall go32v2_install: $(MAKE) -C go32v2 install go32v2_sourceinstall: $(MAKE) -C go32v2 sourceinstall go32v2_exampleinstall: $(MAKE) -C go32v2 exampleinstall go32v2_zipinstall: $(MAKE) -C go32v2 zipinstall go32v2_zipsourceinstall: $(MAKE) -C go32v2 zipsourceinstall go32v2_zipexampleinstall: $(MAKE) -C go32v2 zipexampleinstall go32v2_clean: $(MAKE) -C go32v2 clean go32v2_distclean: $(MAKE) -C go32v2 distclean go32v2_cleanall: $(MAKE) -C go32v2 cleanall go32v2_require: $(MAKE) -C go32v2 require go32v2_info: $(MAKE) -C go32v2 info endif # Dir linux ifdef OBJECTDIRLINUX .PHONY: linux_all linux_debug linux_examples linux_test linux_smart linux_shared linux_showinstall linux_install linux_sourceinstall linux_exampleinstall linux_zipinstall linux_zipsourceinstall linux_zipexampleinstall linux_clean linux_distclean linux_cleanall linux_require linux_info linux_all: $(MAKE) -C linux all linux_debug: $(MAKE) -C linux debug linux_examples: $(MAKE) -C linux examples linux_test: $(MAKE) -C linux test linux_smart: $(MAKE) -C linux smart linux_shared: $(MAKE) -C linux shared linux_showinstall: $(MAKE) -C linux showinstall linux_install: $(MAKE) -C linux install linux_sourceinstall: $(MAKE) -C linux sourceinstall linux_exampleinstall: $(MAKE) -C linux exampleinstall linux_zipinstall: $(MAKE) -C linux zipinstall linux_zipsourceinstall: $(MAKE) -C linux zipsourceinstall linux_zipexampleinstall: $(MAKE) -C linux zipexampleinstall linux_clean: $(MAKE) -C linux clean linux_distclean: $(MAKE) -C linux distclean linux_cleanall: $(MAKE) -C linux cleanall linux_require: $(MAKE) -C linux require linux_info: $(MAKE) -C linux info endif # Dir win32 ifdef OBJECTDIRWIN32 .PHONY: win32_all win32_debug win32_examples win32_test win32_smart win32_shared win32_showinstall win32_install win32_sourceinstall win32_exampleinstall win32_zipinstall win32_zipsourceinstall win32_zipexampleinstall win32_clean win32_distclean win32_cleanall win32_require win32_info win32_all: $(MAKE) -C win32 all win32_debug: $(MAKE) -C win32 debug win32_examples: $(MAKE) -C win32 examples win32_test: $(MAKE) -C win32 test win32_smart: $(MAKE) -C win32 smart win32_shared: $(MAKE) -C win32 shared win32_showinstall: $(MAKE) -C win32 showinstall win32_install: $(MAKE) -C win32 install win32_sourceinstall: $(MAKE) -C win32 sourceinstall win32_exampleinstall: $(MAKE) -C win32 exampleinstall win32_zipinstall: $(MAKE) -C win32 zipinstall win32_zipsourceinstall: $(MAKE) -C win32 zipsourceinstall win32_zipexampleinstall: $(MAKE) -C win32 zipexampleinstall win32_clean: $(MAKE) -C win32 clean win32_distclean: $(MAKE) -C win32 distclean win32_cleanall: $(MAKE) -C win32 cleanall win32_require: $(MAKE) -C win32 require win32_info: $(MAKE) -C win32 info endif # Dir os2 ifdef OBJECTDIROS2 .PHONY: os2_all os2_debug os2_examples os2_test os2_smart os2_shared os2_showinstall os2_install os2_sourceinstall os2_exampleinstall os2_zipinstall os2_zipsourceinstall os2_zipexampleinstall os2_clean os2_distclean os2_cleanall os2_require os2_info os2_all: $(MAKE) -C os2 all os2_debug: $(MAKE) -C os2 debug os2_examples: $(MAKE) -C os2 examples os2_test: $(MAKE) -C os2 test os2_smart: $(MAKE) -C os2 smart os2_shared: $(MAKE) -C os2 shared os2_showinstall: $(MAKE) -C os2 showinstall os2_install: $(MAKE) -C os2 install os2_sourceinstall: $(MAKE) -C os2 sourceinstall os2_exampleinstall: $(MAKE) -C os2 exampleinstall os2_zipinstall: $(MAKE) -C os2 zipinstall os2_zipsourceinstall: $(MAKE) -C os2 zipsourceinstall os2_zipexampleinstall: $(MAKE) -C os2 zipexampleinstall os2_clean: $(MAKE) -C os2 clean os2_distclean: $(MAKE) -C os2 distclean os2_cleanall: $(MAKE) -C os2 cleanall os2_require: $(MAKE) -C os2 require os2_info: $(MAKE) -C os2 info endif # Dir go32v1 ifdef OBJECTDIRGO32V1 .PHONY: go32v1_all go32v1_debug go32v1_examples go32v1_test go32v1_smart go32v1_shared go32v1_showinstall go32v1_install go32v1_sourceinstall go32v1_exampleinstall go32v1_zipinstall go32v1_zipsourceinstall go32v1_zipexampleinstall go32v1_clean go32v1_distclean go32v1_cleanall go32v1_require go32v1_info go32v1_all: $(MAKE) -C go32v1 all go32v1_debug: $(MAKE) -C go32v1 debug go32v1_examples: $(MAKE) -C go32v1 examples go32v1_test: $(MAKE) -C go32v1 test go32v1_smart: $(MAKE) -C go32v1 smart go32v1_shared: $(MAKE) -C go32v1 shared go32v1_showinstall: $(MAKE) -C go32v1 showinstall go32v1_install: $(MAKE) -C go32v1 install go32v1_sourceinstall: $(MAKE) -C go32v1 sourceinstall go32v1_exampleinstall: $(MAKE) -C go32v1 exampleinstall go32v1_zipinstall: $(MAKE) -C go32v1 zipinstall go32v1_zipsourceinstall: $(MAKE) -C go32v1 zipsourceinstall go32v1_zipexampleinstall: $(MAKE) -C go32v1 zipexampleinstall go32v1_clean: $(MAKE) -C go32v1 clean go32v1_distclean: $(MAKE) -C go32v1 distclean go32v1_cleanall: $(MAKE) -C go32v1 cleanall go32v1_require: $(MAKE) -C go32v1 require go32v1_info: $(MAKE) -C go32v1 info endif ##################################################################### # Local Makefile ##################################################################### ifneq ($(wildcard fpcmake.loc),) include fpcmake.loc endif