# # Don't edit, this file is generated by FPCMake Version 2.0.0 # default: allexectests MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android i386-aros m68k-linux m68k-netbsd m68k-amiga m68k-atari m68k-palmos m68k-macosclassic m68k-embedded m68k-sinclairql m68k-human68k powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macosclassic powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-haiku x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-iphonesim x86_64-android x86_64-aros x86_64-dragonfly arm-linux arm-netbsd arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android arm-aros arm-freertos arm-ios powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android mipsel-ps1 mips64-linux mips64el-linux jvm-java jvm-android i8086-embedded i8086-msdos i8086-win16 aarch64-linux aarch64-freebsd aarch64-darwin aarch64-win64 aarch64-embedded aarch64-iphonesim aarch64-android aarch64-ios wasm32-embedded wasm32-wasi sparc64-linux riscv32-linux riscv32-embedded riscv32-freertos riscv64-linux riscv64-embedded xtensa-linux xtensa-embedded xtensa-freertos z80-embedded z80-zxspectrum z80-msxdos z80-amstradcpc loongarch64-linux BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos win16 atari human68k OSNeedsComspecToRunBatch = go32v2 watcom FORCE: .PHONY: FORCE lc = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1)))))))))))))))))))))))))) override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH))) ifneq ($(findstring darwin,$(OSTYPE)),) inUnix=1 #darwin SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH))) else ifeq ($(findstring ;,$(PATH)),) inUnix=1 SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH))) else SEARCHPATH:=$(subst ;, ,$(PATH)) endif endif SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE)))) PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH)))) ifeq ($(PWD),) PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH)))) ifeq ($(PWD),) $(error You need the GNU utils package to use this Makefile) else PWD:=$(firstword $(PWD)) SRCEXEEXT= endif else PWD:=$(firstword $(PWD)) SRCEXEEXT=.exe endif ifndef inUnix ifeq ($(OS),Windows_NT) inWinNT=1 else ifdef OS2_SHELL inOS2=1 endif endif else ifneq ($(findstring cygdrive,$(PATH)),) inCygWin=1 endif endif ifdef inUnix SRCBATCHEXT=.sh else ifdef inOS2 SRCBATCHEXT=.cmd else SRCBATCHEXT=.bat endif endif ifdef COMSPEC ifneq ($(filter $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),) ifndef RUNBATCH RUNBATCH=$(COMSPEC) /C endif endif endif ifdef inUnix PATHSEP=/ else PATHSEP:=$(subst /,\,/) ifdef inCygWin PATHSEP=/ endif endif ifdef PWD BASEDIR:=$(subst \,/,$(shell $(PWD))) ifdef inCygWin ifneq ($(findstring /cygdrive/,$(BASEDIR)),) BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR)) BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR))) BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR)) endif endif else BASEDIR=. endif ifdef inOS2 ifndef ECHO ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH)))) ifeq ($(ECHO),) ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH)))) ifeq ($(ECHO),) ECHO=echo else ECHO:=$(firstword $(ECHO)) endif else ECHO:=$(firstword $(ECHO)) endif endif export ECHO endif override DEFAULT_FPCDIR=.. ifndef FPC ifdef PP FPC=$(PP) endif endif ifndef FPC FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH)))) ifneq ($(FPCPROG),) FPCPROG:=$(firstword $(FPCPROG)) ifneq ($(CPU_TARGET),) FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB) else FPC:=$(shell $(FPCPROG) -PB) endif ifneq ($(findstring Error,$(FPC)),) override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH))))) else ifeq ($(strip $(wildcard $(FPC))),) FPC:=$(firstword $(FPCPROG)) endif endif else override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH))))) endif endif override FPC:=$(subst $(SRCEXEEXT),,$(FPC)) override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT) FOUNDFPC:=$(strip $(wildcard $(FPC))) ifeq ($(FOUNDFPC),) FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH)))) ifeq ($(FOUNDFPC),) $(error Compiler $(FPC) not found) endif endif ifndef FPC_COMPILERINFO FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO) endif ifndef FPC_VERSION FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO)) endif export FPC FPC_VERSION FPC_COMPILERINFO unexport CHECKDEPEND ALLDEPENDENCIES ifndef CPU_TARGET ifdef CPU_TARGET_DEFAULT CPU_TARGET=$(CPU_TARGET_DEFAULT) endif endif ifndef OS_TARGET ifdef OS_TARGET_DEFAULT OS_TARGET=$(OS_TARGET_DEFAULT) endif endif ifndef CPU_SOURCE CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO)) endif ifndef CPU_TARGET CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO)) endif ifndef OS_SOURCE OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO)) endif ifndef OS_TARGET OS_TARGET:=$(word 5,$(FPC_COMPILERINFO)) endif CPU_OS_TARGET=$(CPU_TARGET)-$(OS_TARGET) ifdef SUB_TARGET L_SUB_TARGET=$(call lc,$(SUB_TARGET)) FULL_TARGET:=$(CPU_TARGET)-$(OS_TARGET)-$(L_SUB_TARGET) else FULL_TARGET:=$(CPU_TARGET)-$(OS_TARGET) endif CPU_OS_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE) ifdef SUB_SOURCE L_SUB_SOURCE=$(call lc,$(SUB_SOURCE)) FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)-$(L_SUB_SOURCE) else FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE) endif ifeq ($(CPU_TARGET),armeb) ARCH=arm override FPCOPT+=-Cb else ifeq ($(CPU_TARGET),armel) ARCH=arm override FPCOPT+=-CaEABI else ARCH=$(CPU_TARGET) endif endif ifeq ($(CPU_OS_TARGET),aarch64-embedded) endif ifdef SUB_TARGET FPCOPT+=-t$(SUB_TARGET) FPMAKE_OPT+=--subtarget=$(SUB_TARGET) endif ifeq ($(CPU_OS_TARGET),arm-embedded) ifeq ($(SUBARCH),) $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t or SUBARCH=armv7m) must be defined) endif override FPCOPT+=-Cp$(SUBARCH) endif ifeq ($(CPU_OS_TARGET),avr-embedded) ifeq ($(SUBARCH),) $(error When compiling for avr-embedded, a sub-architecture (e.g. SUBARCH=avr25 or SUBARCH=avr35) must be defined) endif override FPCOPT+=-Cp$(SUBARCH) endif ifeq ($(CPU_OS_TARGET),mipsel-embedded) ifeq ($(SUBARCH),) $(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) endif override FPCOPT+=-Cp$(SUBARCH) endif ifeq ($(CPU_OS_TARGET),xtensa-embedded) ifeq ($(SUBARCH),) $(error When compiling for xtensa-embedded, a sub-architecture (e.g. SUBARCH=lx106 or SUBARCH=lx6) must be defined) endif override FPCOPT+=-Cp$(SUBARCH) endif ifeq ($(CPU_OS_TARGET),xtensa-freertos) ifeq ($(SUBARCH),) $(error When compiling for xtensa-freertos, a sub-architecture (e.g. SUBARCH=lx106 or SUBARCH=lx6) must be defined) endif override FPCOPT+=-Cp$(SUBARCH) endif ifeq ($(CPU_OS_TARGET),arm-freertos) ifeq ($(SUBARCH),) $(error When compiling for arm-freertos, a sub-architecture (e.g. SUBARCH=armv6m or SUBARCH=armv7em) must be defined) endif override FPCOPT+=-Cp$(SUBARCH) endif ifneq ($(filter $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) else ifneq ($(filter $(OS_TARGET),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) else TARGETSUFFIX=$(FULL_TARGET) endif SOURCESUFFIX=$(FULL_SOURCE) endif ifneq ($(CPU_OS_TARGET),$(CPU_OS_SOURCE)) CROSSCOMPILE=1 endif ifeq ($(findstring makefile,$(MAKECMDGOALS)),) ifeq ($(filter $(CPU_OS_TARGET),$(MAKEFILETARGETS)),) $(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first) endif endif ifneq ($(filter $(OS_TARGET),$(BSDs)),) BSDhier=1 endif ifeq ($(OS_TARGET),linux) linuxHier=1 endif ifndef CROSSCOMPILE BUILDFULLNATIVE=1 export BUILDFULLNATIVE endif ifdef BUILDFULLNATIVE BUILDNATIVE=1 export BUILDNATIVE endif export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE SUB_TARGET SUB_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE CPU_OS_TARGET CPU_OS_SOURCE ifdef FPCDIR override FPCDIR:=$(subst \,/,$(FPCDIR)) ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl)),) override FPCDIR=wrong endif else override FPCDIR=wrong endif ifdef DEFAULT_FPCDIR ifeq ($(FPCDIR),wrong) override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR)) ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl)),) override FPCDIR=wrong endif endif endif ifeq ($(FPCDIR),wrong) ifdef inUnix 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 $(addprefix $(FPCDIR)/,rtl)),) override FPCDIR:=$(FPCDIR)/.. ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl)),) override FPCDIR:=$(BASEDIR) ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl)),) override FPCDIR=c:/pp endif endif endif endif endif ifndef CROSSBINDIR CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX)) endif ifneq ($(filter $(OS_TARGET),darwin iphonesim ios),) ifneq ($(filter $(OS_SOURCE),darwin ios),) DARWIN2DARWIN=1 endif endif ifndef BINUTILSPREFIX ifndef CROSSBINDIR ifdef CROSSCOMPILE ifneq ($(OS_TARGET),msdos) ifndef DARWIN2DARWIN ifneq ($(CPU_TARGET),jvm) BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)- ifeq ($(OS_TARGET),android) ifeq ($(CPU_TARGET),arm) BINUTILSPREFIX=arm-linux-androideabi- else ifeq ($(CPU_TARGET),i386) BINUTILSPREFIX=i686-linux-android- else BINUTILSPREFIX=$(CPU_TARGET)-linux-android- endif endif endif endif endif else BINUTILSPREFIX=$(OS_TARGET)- endif endif endif endif UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX)) ifeq ($(UNITSDIR),) UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET)) endif PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages) ifndef FPCFPMAKE ifdef CROSSCOMPILE ifeq ($(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))),) FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH)))) ifneq ($(FPCPROG),) FPCPROG:=$(firstword $(FPCPROG)) FPCFPMAKE:=$(shell $(FPCPROG) -PB) ifeq ($(strip $(wildcard $(FPCFPMAKE))),) FPCFPMAKE:=$(firstword $(FPCPROG)) endif else override FPCFPMAKE=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH))))) endif else FPCFPMAKE=$(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))) FPMAKE_SKIP_CONFIG=-n export FPCFPMAKE export FPMAKE_SKIP_CONFIG endif else FPMAKE_SKIP_CONFIG=-n FPCFPMAKE=$(FPC) endif endif ifeq ($(CPU_OS_TARGET),i386-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-go32v2) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-win32) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-os2) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-freebsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-beos) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-haiku) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-netbsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-solaris) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-netware) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-openbsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-wdosx) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-darwin) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-emx) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-watcom) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-netwlibc) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-wince) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-symbian) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-nativent) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-iphonesim) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-android) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i386-aros) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),m68k-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),m68k-netbsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),m68k-amiga) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),m68k-atari) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),m68k-palmos) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),m68k-macosclassic) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),m68k-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),m68k-sinclairql) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),m68k-human68k) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),powerpc-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),powerpc-netbsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),powerpc-amiga) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),powerpc-macosclassic) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),powerpc-darwin) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),powerpc-morphos) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),powerpc-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),powerpc-wii) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),powerpc-aix) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),sparc-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),sparc-netbsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),sparc-solaris) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),sparc-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),x86_64-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),x86_64-freebsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),x86_64-haiku) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),x86_64-netbsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),x86_64-solaris) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),x86_64-openbsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),x86_64-darwin) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),x86_64-win64) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),x86_64-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),x86_64-iphonesim) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),x86_64-android) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),x86_64-aros) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),x86_64-dragonfly) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),arm-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),arm-netbsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),arm-palmos) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),arm-wince) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),arm-gba) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),arm-nds) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),arm-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),arm-symbian) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),arm-android) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),arm-aros) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),arm-freertos) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),arm-ios) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),powerpc64-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),powerpc64-darwin) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),powerpc64-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),powerpc64-aix) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),avr-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),armeb-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),armeb-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),mips-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),mipsel-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),mipsel-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),mipsel-android) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),mipsel-ps1) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),mips64-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),mips64el-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),jvm-java) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),jvm-android) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i8086-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i8086-msdos) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),i8086-win16) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),aarch64-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),aarch64-freebsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),aarch64-darwin) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),aarch64-win64) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),aarch64-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),aarch64-iphonesim) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),aarch64-android) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),aarch64-ios) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),wasm32-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),wasm32-wasi) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),sparc64-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),riscv32-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),riscv32-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),riscv32-freertos) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),riscv64-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),riscv64-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),xtensa-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),xtensa-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),xtensa-freertos) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),z80-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),z80-zxspectrum) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),z80-msxdos) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),z80-amstradcpc) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(CPU_OS_TARGET),loongarch64-linux) override TARGET_PROGRAMS+=gparmake createlst endif override INSTALL_FPCPACKAGE=y ifdef REQUIRE_UNITSDIR override UNITSDIR+=$(REQUIRE_UNITSDIR) endif ifdef REQUIRE_PACKAGESDIR override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR) endif ifdef ZIPINSTALL ifneq ($(filter $(OS_TARGET),$(UNIXs)),) UNIXHier=1 endif else ifneq ($(filter $(OS_SOURCE),$(UNIXs)),) UNIXHier=1 endif endif ifndef INSTALL_PREFIX ifdef PREFIX INSTALL_PREFIX=$(PREFIX) endif endif ifndef INSTALL_PREFIX ifdef UNIXHier INSTALL_PREFIX=/usr/local else ifdef INSTALL_FPCPACKAGE INSTALL_BASEDIR:=/pp else INSTALL_BASEDIR:=/$(PACKAGE_NAME) endif endif endif export INSTALL_PREFIX ifdef INSTALL_FPCSUBDIR export INSTALL_FPCSUBDIR endif ifndef DIST_DESTDIR DIST_DESTDIR:=$(BASEDIR) endif export DIST_DESTDIR ifndef COMPILER_UNITTARGETDIR ifdef PACKAGEDIR_MAIN COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX) else COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX) endif endif ifndef COMPILER_TARGETDIR COMPILER_TARGETDIR=. endif ifndef INSTALL_BASEDIR ifdef UNIXHier ifdef INSTALL_FPCPACKAGE INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION) else INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME) endif else INSTALL_BASEDIR:=$(INSTALL_PREFIX) endif endif ifndef INSTALL_BINDIR ifdef UNIXHier INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin else INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin ifdef INSTALL_FPCPACKAGE ifdef CROSSCOMPILE ifdef CROSSINSTALL INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX) else INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX) endif else INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX) endif endif endif endif ifndef INSTALL_UNITDIR INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX) ifdef INSTALL_FPCPACKAGE ifdef PACKAGE_NAME INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME) endif endif endif ifndef INSTALL_LIBDIR ifdef UNIXHier INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib else INSTALL_LIBDIR:=$(INSTALL_UNITDIR) endif endif ifndef INSTALL_SOURCEDIR ifdef UNIXHier ifdef BSDhier SRCPREFIXDIR=share/src else ifdef linuxHier SRCPREFIXDIR=share/src else SRCPREFIXDIR=src endif endif ifdef INSTALL_FPCPACKAGE ifdef INSTALL_FPCSUBDIR INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME) else INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) endif else INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION) endif else ifdef INSTALL_FPCPACKAGE ifdef INSTALL_FPCSUBDIR INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME) else INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME) endif else INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source endif endif endif ifndef INSTALL_DOCDIR ifdef UNIXHier ifdef BSDhier DOCPREFIXDIR=share/doc else ifdef linuxHier DOCPREFIXDIR=share/doc else DOCPREFIXDIR=doc endif endif ifdef INSTALL_FPCPACKAGE INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) else INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION) endif else ifdef INSTALL_FPCPACKAGE INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME) else INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc endif endif endif ifndef INSTALL_EXAMPLEDIR ifdef UNIXHier ifdef INSTALL_FPCPACKAGE ifdef BSDhier INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) else ifdef linuxHier INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples else INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME) endif endif else ifdef BSDhier INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION) else ifdef linuxHier INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION) else INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION) endif endif endif else ifdef INSTALL_FPCPACKAGE INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME) else INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples endif endif endif ifndef INSTALL_DATADIR INSTALL_DATADIR=$(INSTALL_BASEDIR) endif ifndef INSTALL_SHAREDDIR INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib endif ifdef CROSSCOMPILE ifndef CROSSBINDIR CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX)) ifeq ($(CROSSBINDIR),) CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE)) endif endif else CROSSBINDIR= endif ifeq ($(OS_SOURCE),linux) ifndef GCCLIBDIR ifeq ($(CPU_TARGET),i386) ifneq ($(filter x86_64,$(shell uname -a)),) ifeq ($(BINUTILSPREFIX),) GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`) else CROSSGCCOPT=-m32 endif endif endif ifeq ($(CPU_TARGET),powerpc) ifeq ($(BINUTILSPREFIX),) GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`) else CROSSGCCOPT=-m32 endif endif ifeq ($(CPU_TARGET),powerpc64) ifeq ($(BINUTILSPREFIX),) GCCLIBDIR:=$(shell dirname `gcc -m64 -print-libgcc-file-name`) else CROSSGCCOPT=-m64 endif endif ifeq ($(CPU_TARGET),sparc) ifneq ($(filter sparc64,$(shell uname -a)),) ifeq ($(BINUTILSPREFIX),) GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`) else CROSSGCCOPT=-m32 endif endif endif ifneq ($(filter $(CPU_TARGET),mips64 mipsel64),) ifeq ($(BINUTILSPREFIX),) GCCLIBDIR:=$(shell dirname `gcc -mabi=64 -print-libgcc-file-name`) else CROSSGCCOPT=-mabi=64 endif endif ifneq ($(filter $(CPU_TARGET),mips mipsel),) ifeq ($(BINUTILSPREFIX),) GCCLIBDIR:=$(shell dirname `gcc -mabi=32 -print-libgcc-file-name`) else CROSSGCCOPT=-mabi=32 endif endif ifeq ($(BINUTILSPREFIX),) ifeq ($(GCCLIBDIR),) GCCLIBDIR:=$(shell dirname `gcc -print-libgcc-file-name`) endif else ifeq ($(CROSSGCCOPT),) CROSSGCCOPT=-g endif endif endif ifdef FPCFPMAKE FPCFPMAKE_CPU_TARGET=$(shell $(FPCFPMAKE) -iTP) ifeq ($(CPU_TARGET),$(FPCFPMAKE_CPU_TARGET)) FPCMAKEGCCLIBDIR:=$(GCCLIBDIR) else ifneq ($(filter $(FPCFPMAKE_CPU_TARGET),aarch64 powerpc64 riscv64 sparc64 x86_64 loongarch64),) FPCMAKE_CROSSGCCOPT=-m64 else ifneq ($(filter $(FPCFPMAKE_CPU_TARGET),mips64 mips64el),) FPCMAKE_CROSSGCCOPT=-mabi=64 else ifneq ($(filter $(FPCFPMAKE_CPU_TARGET),mips mipsel),) FPCMAKE_CROSSGCCOPT=-mabi=32 else ifeq ($(FPCFPMAKE_CPU_TARGET),riscv64) FPCMAKE_CROSSGCCOPT=-mabi=lp64 else ifeq ($(FPCFPMAKE_CPU_TARGET),riscv32) FPCMAKE_CROSSGCCOPT=-mabi=ilp32 else ifeq ($(FPCFPMAKE_CPU_TARGET),loongarch64) FPCMAKE_CROSSGCCOPT=-mabi=lp64d else FPCMAKE_CROSSGCCOPT=-m32 endif endif endif endif endif endif FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`) endif endif ifndef FPCMAKEGCCLIBDIR FPCMAKEGCCLIBDIR:=$(shell dirname `gcc -print-libgcc-file-name`) endif ifndef GCCLIBDIR CROSSGCC=$(strip $(wildcard $(addsuffix /$(BINUTILSPREFIX)gcc$(SRCEXEEXT),$(SEARCHPATH)))) ifneq ($(CROSSGCC),) GCCLIBDIR:=$(shell dirname `$(CROSSGCC) $(CROSSGCCOPT) -print-libgcc-file-name`) endif endif endif ifdef inUnix ifeq ($(OS_SOURCE),netbsd) OTHERLIBDIR:=/usr/pkg/lib endif export GCCLIBDIR FPCMAKEGCCLIBDIR OTHERLIBDIR endif BATCHEXT=.bat LOADEREXT=.as EXEEXT=.exe PPLEXT=.ppl PPUEXT=.ppu OEXT=.o LTOEXT=.bc ASMEXT=.s SMARTEXT=.sl STATICLIBEXT=.a SHAREDLIBEXT=.so SHAREDLIBPREFIX=libfp STATICLIBPREFIX=libp IMPORTLIBPREFIX=libimp RSTEXT=.rst EXEDBGEXT=.dbg ifeq ($(OS_TARGET),go32v1) STATICLIBPREFIX= SHORTSUFFIX=v1 endif ifeq ($(OS_TARGET),go32v2) STATICLIBPREFIX= SHORTSUFFIX=dos IMPORTLIBPREFIX= endif ifeq ($(OS_TARGET),watcom) STATICLIBPREFIX= OEXT=.obj ASMEXT=.asm SHAREDLIBEXT=.dll SHORTSUFFIX=wat IMPORTLIBPREFIX= endif ifneq ($(CPU_TARGET),jvm) ifeq ($(OS_TARGET),android) BATCHEXT=.sh EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif endif ifeq ($(OS_TARGET),linux) BATCHEXT=.sh EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif ifeq ($(OS_TARGET),dragonfly) BATCHEXT=.sh EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=df endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=fbs endif ifeq ($(OS_TARGET),netbsd) BATCHEXT=.sh EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=nbs endif ifeq ($(OS_TARGET),openbsd) BATCHEXT=.sh EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=obs endif ifeq ($(OS_TARGET),win32) SHAREDLIBEXT=.dll SHORTSUFFIX=w32 endif ifeq ($(OS_TARGET),os2) BATCHEXT=.cmd AOUTEXT=.out STATICLIBPREFIX= SHAREDLIBEXT=.dll SHORTSUFFIX=os2 ECHO=echo IMPORTLIBPREFIX= endif ifeq ($(OS_TARGET),emx) BATCHEXT=.cmd AOUTEXT=.out STATICLIBPREFIX= SHAREDLIBEXT=.dll SHORTSUFFIX=emx ECHO=echo IMPORTLIBPREFIX= endif ifeq ($(OS_TARGET),amiga) EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif ifeq ($(OS_TARGET),aros) EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=aros endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=mos endif ifeq ($(OS_TARGET),atari) EXEEXT=.ttp SHORTSUFFIX=ata endif ifeq ($(OS_TARGET),beos) BATCHEXT=.sh EXEEXT= SHORTSUFFIX=be endif ifeq ($(OS_TARGET),haiku) BATCHEXT=.sh EXEEXT= SHORTSUFFIX=hai endif ifeq ($(OS_TARGET),solaris) BATCHEXT=.sh EXEEXT= SHORTSUFFIX=sun endif ifeq ($(OS_TARGET),qnx) BATCHEXT=.sh EXEEXT= SHORTSUFFIX=qnx endif ifeq ($(OS_TARGET),netware) EXEEXT=.nlm STATICLIBPREFIX= SHORTSUFFIX=nw IMPORTLIBPREFIX=imp endif ifeq ($(OS_TARGET),netwlibc) EXEEXT=.nlm STATICLIBPREFIX= SHORTSUFFIX=nwl IMPORTLIBPREFIX=imp endif ifeq ($(OS_TARGET),macosclassic) BATCHEXT= EXEEXT= DEBUGSYMEXT=.xcoff SHORTSUFFIX=mac IMPORTLIBPREFIX=imp endif ifneq ($(filter $(OS_TARGET),darwin iphonesim ios),) BATCHEXT=.sh EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=dwn EXEDBGEXT=.dSYM endif ifeq ($(OS_TARGET),gba) EXEEXT=.gba SHAREDLIBEXT=.so SHORTSUFFIX=gba endif ifeq ($(OS_TARGET),symbian) SHAREDLIBEXT=.dll SHORTSUFFIX=symbian endif ifeq ($(OS_TARGET),NativeNT) SHAREDLIBEXT=.dll SHORTSUFFIX=nativent endif ifeq ($(OS_TARGET),wii) EXEEXT=.dol SHAREDLIBEXT=.so SHORTSUFFIX=wii endif ifeq ($(OS_TARGET),aix) BATCHEXT=.sh EXEEXT= SHAREDLIBEXT=.a SHORTSUFFIX=aix endif ifeq ($(OS_TARGET),java) OEXT=.class ASMEXT=.j SHAREDLIBEXT=.jar SHORTSUFFIX=java endif ifeq ($(CPU_TARGET),jvm) ifeq ($(OS_TARGET),android) OEXT=.class ASMEXT=.j SHAREDLIBEXT=.jar SHORTSUFFIX=android endif endif ifeq ($(OS_TARGET),msdos) STATICLIBPREFIX= STATICLIBEXT=.a SHORTSUFFIX=d16 endif ifeq ($(OS_TARGET),msxdos) STATICLIBPREFIX= STATICLIBEXT=.a SHORTSUFFIX=msd endif ifeq ($(OS_TARGET),embedded) ifeq ($(CPU_TARGET),i8086) STATICLIBPREFIX= STATICLIBEXT=.a else EXEEXT=.bin endif ifeq ($(CPU_TARGET),z80) OEXT=.rel endif SHORTSUFFIX=emb endif ifeq ($(OS_TARGET),win16) STATICLIBPREFIX= STATICLIBEXT=.a SHAREDLIBEXT=.dll SHORTSUFFIX=w16 endif ifeq ($(OS_TARGET),zxspectrum) OEXT=.rel endif ifeq ($(OS_TARGET),wasi) EXEEXT=.wasm endif ifneq ($(filter $(OS_SOURCE),$(LIMIT83fs)),) FPCMADE=fpcmade.$(SHORTSUFFIX) ZIPSUFFIX=$(SHORTSUFFIX) ZIPCROSSPREFIX= ZIPSOURCESUFFIX=src ZIPEXAMPLESUFFIX=exm else FPCMADE=fpcmade.$(TARGETSUFFIX) ZIPSOURCESUFFIX=.source ZIPEXAMPLESUFFIX=.examples ifdef CROSSCOMPILE ZIPSUFFIX=.$(SOURCESUFFIX) ZIPCROSSPREFIX=$(TARGETSUFFIX)- else ZIPSUFFIX=.$(TARGETSUFFIX) ZIPCROSSPREFIX= endif endif ifndef ECHO ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH)))) ifeq ($(ECHO),) ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH)))) ifeq ($(ECHO),) ECHO= __missing_command_ECHO else ECHO:=$(firstword $(ECHO)) endif else ECHO:=$(firstword $(ECHO)) endif endif export ECHO ifndef DATE DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH)))) ifeq ($(DATE),) DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH)))) ifeq ($(DATE),) DATE= __missing_command_DATE else DATE:=$(firstword $(DATE)) endif else DATE:=$(firstword $(DATE)) endif endif export DATE ifndef GINSTALL GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH)))) ifeq ($(GINSTALL),) GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH)))) ifeq ($(GINSTALL),) GINSTALL= __missing_command_GINSTALL else GINSTALL:=$(firstword $(GINSTALL)) endif else GINSTALL:=$(firstword $(GINSTALL)) endif endif export GINSTALL ifndef CPPROG CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH)))) ifeq ($(CPPROG),) CPPROG= __missing_command_CPPROG else CPPROG:=$(firstword $(CPPROG)) endif endif export CPPROG ifndef RMPROG RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH)))) ifeq ($(RMPROG),) RMPROG= __missing_command_RMPROG else RMPROG:=$(firstword $(RMPROG)) endif endif export RMPROG ifndef MVPROG MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH)))) ifeq ($(MVPROG),) MVPROG= __missing_command_MVPROG else MVPROG:=$(firstword $(MVPROG)) endif endif export MVPROG ifndef MKDIRPROG MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH)))) ifeq ($(MKDIRPROG),) MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH)))) ifeq ($(MKDIRPROG),) MKDIRPROG= __missing_command_MKDIRPROG else MKDIRPROG:=$(firstword $(MKDIRPROG)) endif else MKDIRPROG:=$(firstword $(MKDIRPROG)) endif endif export MKDIRPROG ifndef ECHOREDIR ifndef inUnix ECHOREDIR=echo else ECHOREDIR=$(ECHO) endif endif ifndef COPY COPY:=$(CPPROG) -fp endif ifndef COPYTREE COPYTREE:=$(CPPROG) -Rfp endif ifndef MKDIRTREE MKDIRTREE:=$(MKDIRPROG) -p endif ifndef MOVE MOVE:=$(MVPROG) -f endif ifndef DEL DEL:=$(RMPROG) -f endif ifndef DELTREE DELTREE:=$(RMPROG) -rf endif ifndef INSTALL ifdef inUnix INSTALL:=$(GINSTALL) -c -m 644 else INSTALL:=$(COPY) endif endif ifndef INSTALLEXE ifdef inUnix INSTALLEXE:=$(GINSTALL) -c -m 755 else INSTALLEXE:=$(COPY) endif endif ifndef MKDIR MKDIR:=$(GINSTALL) -m 755 -d endif export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR ifndef PPUMOVE PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH)))) ifeq ($(PPUMOVE),) PPUMOVE= __missing_command_PPUMOVE else PPUMOVE:=$(firstword $(PPUMOVE)) endif endif export PPUMOVE ifndef FPCMAKE FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH)))) ifeq ($(FPCMAKE),) FPCMAKE= __missing_command_FPCMAKE else FPCMAKE:=$(firstword $(FPCMAKE)) endif endif export FPCMAKE ifndef ZIPPROG ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH)))) ifeq ($(ZIPPROG),) ZIPPROG= __missing_command_ZIPPROG else ZIPPROG:=$(firstword $(ZIPPROG)) endif endif export ZIPPROG ifndef TARPROG TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH)))) ifeq ($(TARPROG),) TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH)))) ifeq ($(TARPROG),) TARPROG= __missing_command_TARPROG else TARPROG:=$(firstword $(TARPROG)) endif else TARPROG:=$(firstword $(TARPROG)) endif endif export TARPROG ASNAME=$(BINUTILSPREFIX)as LDNAME=$(BINUTILSPREFIX)ld ARNAME=$(BINUTILSPREFIX)ar RCNAME=$(BINUTILSPREFIX)rc NASMNAME=$(BINUTILSPREFIX)nasm ifndef ASPROG ifdef CROSSBINDIR ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT) else ASPROG=$(ASNAME) endif endif ifndef LDPROG ifdef CROSSBINDIR LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT) else LDPROG=$(LDNAME) endif endif ifndef RCPROG ifdef CROSSBINDIR RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT) else RCPROG=$(RCNAME) endif endif ifndef ARPROG ifdef CROSSBINDIR ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT) else ARPROG=$(ARNAME) endif endif ifndef NASMPROG ifdef CROSSBINDIR NASMPROG=$(CROSSBINDIR)/$(NASMNAME)$(SRCEXEEXT) else NASMPROG=$(NASMNAME) endif endif AS=$(ASPROG) LD=$(LDPROG) RC=$(RCPROG) AR=$(ARPROG) NASM=$(NASMPROG) ifdef inUnix PPAS=./ppas$(SRCBATCHEXT) else PPAS=ppas$(SRCBATCHEXT) endif ifdef inUnix LDCONFIG=ldconfig else LDCONFIG= endif ifdef DATE DATESTR:=$(shell $(DATE) +%Y%m%d) else DATESTR= endif ZIPOPT=-9 ZIPEXT=.zip ifeq ($(USETAR),bz2) TAROPT=vj TAREXT=.tar.bz2 else TAROPT=vz TAREXT=.tar.gz endif override REQUIRE_PACKAGES=rtl ifeq ($(CPU_OS_TARGET),i386-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-go32v2) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-win32) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-os2) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-freebsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-beos) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-haiku) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-netbsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-solaris) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-netware) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-openbsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-wdosx) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-darwin) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-emx) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-watcom) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-netwlibc) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-wince) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-symbian) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-nativent) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-iphonesim) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-android) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i386-aros) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),m68k-netbsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),m68k-amiga) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),m68k-atari) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),m68k-palmos) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),m68k-macosclassic) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),m68k-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),m68k-sinclairql) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),m68k-human68k) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),powerpc-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),powerpc-netbsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),powerpc-amiga) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),powerpc-macosclassic) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),powerpc-darwin) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),powerpc-morphos) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),powerpc-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),powerpc-wii) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),powerpc-aix) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),sparc-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),sparc-netbsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),sparc-solaris) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),sparc-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),x86_64-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),x86_64-freebsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),x86_64-haiku) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),x86_64-netbsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),x86_64-solaris) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),x86_64-openbsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),x86_64-darwin) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),x86_64-win64) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),x86_64-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),x86_64-iphonesim) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),x86_64-android) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),x86_64-aros) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),x86_64-dragonfly) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),arm-netbsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),arm-palmos) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),arm-wince) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),arm-gba) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),arm-nds) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),arm-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),arm-symbian) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),arm-android) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),arm-aros) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),arm-freertos) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),arm-ios) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),powerpc64-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),powerpc64-darwin) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),powerpc64-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),powerpc64-aix) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),avr-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),armeb-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),armeb-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),mips-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),mipsel-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),mipsel-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),mipsel-ps1) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),mips64-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),mips64el-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),jvm-java) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),jvm-android) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i8086-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i8086-msdos) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),i8086-win16) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),aarch64-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),aarch64-freebsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),aarch64-darwin) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),aarch64-win64) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),aarch64-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),aarch64-iphonesim) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),aarch64-android) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),aarch64-ios) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),wasm32-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),wasm32-wasi) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),sparc64-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),riscv32-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),riscv32-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),riscv32-freertos) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),riscv64-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),riscv64-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),xtensa-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),xtensa-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),xtensa-freertos) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),z80-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),z80-zxspectrum) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),z80-msxdos) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),z80-amstradcpc) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(CPU_OS_TARGET),loongarch64-linux) REQUIRE_PACKAGES_RTL=1 endif ifdef REQUIRE_PACKAGES_RTL PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR)))))) ifeq ($(PACKAGEDIR_RTL),) PACKAGEDIR_RTL:=$(firstword $(subst /Makefile,,$(strip $(wildcard $(addsuffix /rtl/Makefile,$(PACKAGESDIR)))))) ifneq ($(PACKAGEDIR_RTL),) PACKAGEDIR_RTL:=$(firstword $(subst /fpmake.pp,,$(strip $(wildcard $(addsuffix /rtl/fpmake.pp,$(PACKAGESDIR)))))) endif endif ifneq ($(PACKAGEDIR_RTL),) ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),) UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX) else UNITDIR_RTL=$(PACKAGEDIR_RTL) endif ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)),) UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX) else ifneq ($(wildcard $(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)),) UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX) else UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL) endif endif ifdef CHECKDEPEND $(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE): $(MAKE) -C $(PACKAGEDIR_RTL)/$(OS_TARGET) $(FPCMADE) override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE) endif else PACKAGEDIR_RTL= UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR))))) ifneq ($(UNITDIR_RTL),) UNITDIR_RTL:=$(firstword $(UNITDIR_RTL)) else UNITDIR_RTL= endif endif ifdef UNITDIR_RTL override COMPILER_UNITDIR+=$(UNITDIR_RTL) endif ifdef UNITDIR_FPMAKE_RTL override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_RTL) endif endif ifndef NOCPUDEF override FPCOPTDEF=$(ARCH) endif ifneq ($(OS_TARGET),$(OS_SOURCE)) override FPCOPT+=-T$(OS_TARGET) endif ifneq ($(CPU_TARGET),$(CPU_SOURCE)) override FPCOPT+=-P$(ARCH) endif ifeq ($(OS_SOURCE),openbsd) override FPCOPT+=-FD$(NEW_BINUTILS_PATH) override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH) override FPMAKE_BUILD_OPT+=-FD$(NEW_BINUTILS_PATH) endif ifndef CROSSBOOTSTRAP ifneq ($(BINUTILSPREFIX),) override FPCOPT+=-XP$(BINUTILSPREFIX) ifneq ($(RLINKPATH),) override FPCOPT+=-Xr$(RLINKPATH) endif endif endif ifndef CROSSCOMPILE ifneq ($(BINUTILSPREFIX),) override FPCMAKEOPT+=-XP$(BINUTILSPREFIX) override FPMAKE_BUILD_OPT+=-XP$(BINUTILSPREFIX) endif endif ifdef UNITDIR override FPCOPT+=$(addprefix -Fu,$(UNITDIR)) endif ifdef LIBDIR override FPCOPT+=$(addprefix -Fl,$(LIBDIR)) endif ifdef OBJDIR override FPCOPT+=$(addprefix -Fo,$(OBJDIR)) endif ifdef INCDIR override FPCOPT+=$(addprefix -Fi,$(INCDIR)) endif ifdef LINKSMART override FPCOPT+=-XX endif ifdef CREATESMART override FPCOPT+=-CX endif ifdef DEBUG override FPCOPT+=-gl override FPCOPTDEF+=DEBUG endif ifdef RELEASE FPCCPUOPT:=-O2 override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n override FPCOPTDEF+=RELEASE endif ifdef STRIP override FPCOPT+=-Xs endif ifdef OPTIMIZE override FPCOPT+=-O2 endif ifdef VERBOSE override FPCOPT+=-vwni endif ifdef COMPILER_OPTIONS override FPCOPT+=$(COMPILER_OPTIONS) endif ifdef COMPILER_UNITDIR override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR)) endif ifdef COMPILER_LIBRARYDIR override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR)) endif ifdef COMPILER_OBJECTDIR override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR)) endif ifdef COMPILER_INCLUDEDIR override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR)) endif ifdef CROSSBINDIR override FPCOPT+=-FD$(CROSSBINDIR) endif ifdef COMPILER_TARGETDIR override FPCOPT+=-FE$(COMPILER_TARGETDIR) ifeq ($(COMPILER_TARGETDIR),.) override TARGETDIRPREFIX= else override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/ endif endif ifdef COMPILER_UNITTARGETDIR override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR) ifeq ($(COMPILER_UNITTARGETDIR),.) override UNITTARGETDIRPREFIX= else override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/ endif else ifdef COMPILER_TARGETDIR override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR) override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX) endif endif ifdef SYSROOTPATH override FPCOPT+=-XR$(SYSROOTPATH) else ifeq ($(OS_TARGET),$(OS_SOURCE)) ifeq ($(OS_TARGET),darwin) ifeq ($(CPU_TARGET),aarch64) ifneq ($(wildcard /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk),) override FPCOPT+=-XR/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk endif endif endif endif endif ifdef CREATESHARED override FPCOPT+=-Cg endif ifneq ($(filter $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifneq ($(filter $(CPU_TARGET),x86_64 mips mipsel mips64 mips64el riscv64 powerpc64),) override FPCOPT+=-Cg endif endif ifneq ($(filter $(CPU_TARGET),z80),) override FPCOPT+=-CX -XX endif ifdef LINKSHARED endif ifdef GCCLIBDIR override FPCOPT+=-Fl$(GCCLIBDIR) ifdef FPCMAKEGCCLIBDIR override FPCMAKEOPT+=-Fl$(FPCMAKEGCCLIBDIR) else override FPCMAKEOPT+=-Fl$(GCCLIBDIR) endif endif ifdef OTHERLIBDIR override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR)) endif ifdef OPT override FPCOPT+=$(OPT) endif ifdef FPMAKEBUILDOPT override FPMAKE_BUILD_OPT+=$(FPMAKEBUILDOPT) endif ifdef FPCOPTDEF override FPCOPT+=$(addprefix -d,$(FPCOPTDEF)) endif ifdef CFGFILE override FPCOPT+=@$(CFGFILE) endif ifdef USEENV override FPCEXTCMD:=$(FPCOPT) override FPCOPT:=!FPCEXTCMD export FPCEXTCMD endif override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET) override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE) ifneq ($(AFULL_TARGET),$(AFULL_SOURCE)) override ACROSSCOMPILE=1 endif ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) ifneq (,$(filter -sh,$(COMPILER))) UseEXECPPAS=1 endif ifneq (,$(filter -s,$(COMPILER))) ifeq ($(FULL_SOURCE),$(FULL_TARGET)) UseEXECPPAS=1 endif endif ifneq ($(UseEXECPPAS),1) EXECPPAS= else ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif .PHONY: fpc_exes ifndef CROSSINSTALL ifneq ($(TARGET_PROGRAMS),) override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS)) override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addsuffix $(LTOEXT),$(TARGET_PROGRAMS))$(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) override EXEDBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_PROGRAMS)) override ALLTARGET+=fpc_exes override INSTALLEXEFILES+=$(EXEFILES) override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) override CLEANEXEDBGFILES+=$(EXEDBGFILES) ifeq ($(OS_TARGET),os2) override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS)) endif ifeq ($(OS_TARGET),emx) override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS)) endif endif endif fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES) ifdef TARGET_RSTS override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) override CLEANRSTFILES+=$(RSTFILES) endif .PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared $(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET) @$(ECHOREDIR) Compiled > $(FPCMADE) fpc_all: $(FPCMADE) fpc_smart: $(MAKE) all LINKSMART=1 CREATESMART=1 fpc_debug: $(MAKE) all DEBUG=1 fpc_release: $(MAKE) all RELEASE=1 .SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) $(LTOEXT) .pas .lpr .dpr .pp .rc .res $(COMPILER_UNITTARGETDIR): $(MKDIRTREE) $(COMPILER_UNITTARGETDIR) $(COMPILER_TARGETDIR): $(MKDIRTREE) $(COMPILER_TARGETDIR) %$(PPUEXT): %.pp $(COMPILER) $< $(EXECPPAS) %$(PPUEXT): %.pas $(COMPILER) $< $(EXECPPAS) %$(EXEEXT): %.pp $(COMPILER) $< $(EXECPPAS) %$(EXEEXT): %.pas $(COMPILER) $< $(EXECPPAS) %$(EXEEXT): %.lpr $(COMPILER) $< $(EXECPPAS) %$(EXEEXT): %.dpr $(COMPILER) $< $(EXECPPAS) %.res: %.rc windres -i $< -o $@ vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) vpath %.inc $(COMPILER_INCLUDEDIR) vpath %$(OEXT) $(COMPILER_UNITTARGETDIR) vpath %$(LTOEXT) $(COMPILER_UNITTARGETDIR) vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR) .PHONY: fpc_shared override INSTALLTARGET+=fpc_shared_install ifndef SHARED_LIBVERSION SHARED_LIBVERSION=$(FPC_VERSION) endif ifndef SHARED_LIBNAME SHARED_LIBNAME=$(PACKAGE_NAME) endif ifndef SHARED_FULLNAME SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT) endif ifndef SHARED_LIBUNITS SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS) override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS)) endif fpc_shared: ifdef HASSHAREDLIB $(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1 ifneq ($(SHARED_BUILD),n) $(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR) -P$(BINUTILSPREFIX) endif else @$(ECHO) Shared Libraries not supported endif fpc_shared_install: ifneq ($(SHARED_BUILD),n) ifneq ($(SHARED_LIBUNITS),) ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),) $(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR) endif endif endif .PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall ifdef INSTALL_UNITS override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS)) endif ifdef INSTALL_BUILDUNIT override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES)) endif ifdef INSTALLPPUFILES ifneq ($(IMPORTLIBPREFIX)-$(STATICLIBEXT),$(STATICLIBPREFIX)-$(STATICLIBEXT)) override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(subst $(PPUEXT),$(LTOEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) else override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(subst $(PPUEXT),$(LTOEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) endif ifneq ($(UNITTARGETDIRPREFIX),) override INSTALLPPUFILENAMES:=$(notdir $(INSTALLPPUFILES)) override INSTALLPPULINKFILENAMES:=$(notdir $(INSTALLPPULINKFILES)) override INSTALLPPUFILES=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPUFILENAMES)) override INSTALLPPULINKFILES=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPULINKFILENAMES))) endif override INSTALL_CREATEPACKAGEFPC=1 endif ifdef INSTALLEXEFILES ifneq ($(TARGETDIRPREFIX),) override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES))) endif endif fpc_install: all $(INSTALLTARGET) ifdef INSTALLEXEFILES $(MKDIR) $(INSTALL_BINDIR) $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR) endif ifdef INSTALL_CREATEPACKAGEFPC ifdef FPCMAKE ifdef PACKAGE_VERSION ifneq ($(wildcard Makefile.fpc),) $(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc $(MKDIR) $(INSTALL_UNITDIR) $(INSTALL) Package.fpc $(INSTALL_UNITDIR) endif endif endif endif ifdef INSTALLPPUFILES $(MKDIR) $(INSTALL_UNITDIR) $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR) ifneq ($(INSTALLPPULINKFILES),) $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR) endif ifneq ($(wildcard $(LIB_FULLNAME)),) $(MKDIR) $(INSTALL_LIBDIR) $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR) ifdef inUnix ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME) endif endif endif ifdef INSTALL_FILES $(MKDIR) $(INSTALL_DATADIR) $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR) endif fpc_sourceinstall: distclean $(MKDIR) $(INSTALL_SOURCEDIR) $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR) fpc_exampleinstall: $(EXAMPLEINSTALLTARGET) $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS)) ifdef HASEXAMPLES $(MKDIR) $(INSTALL_EXAMPLEDIR) endif ifdef EXAMPLESOURCEFILES $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR) endif ifdef TARGET_EXAMPLEDIRS $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR) endif .PHONY: fpc_clean fpc_cleanall fpc_distclean ifdef EXEFILES override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES)) endif ifdef CLEAN_PROGRAMS override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS))) override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS))) endif ifdef CLEAN_UNITS override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS)) endif ifdef CLEANPPUFILES override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(subst $(PPUEXT),$(LTOEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) ifdef DEBUGSYMEXT override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES)) endif override CLEANPPUFILENAMES:=$(CLEANPPUFILES) override CLEANPPUFILES=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILENAMES)) override CLEANPPULINKFILENAMES:=$(CLEANPPULINKFILES) override CLEANPPULINKFILES=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILENAMES))) endif fpc_clean: $(CLEANTARGET) ifdef CLEANEXEFILES -$(DEL) $(CLEANEXEFILES) endif ifdef CLEANEXEDBGFILES -$(DELTREE) $(CLEANEXEDBGFILES) endif ifdef CLEANPPUFILES -$(DEL) $(CLEANPPUFILES) endif ifneq ($(CLEANPPULINKFILES),) -$(DEL) $(CLEANPPULINKFILES) endif ifdef CLEANRSTFILES -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES)) endif ifdef CLEAN_FILES -$(DEL) $(CLEAN_FILES) endif ifdef LIB_NAME -$(DEL) $(LIB_NAME) $(LIB_FULLNAME) endif -$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT) -$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res -$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT) fpc_cleanall: $(CLEANTARGET) ifdef CLEANEXEFILES -$(DEL) $(CLEANEXEFILES) endif ifdef COMPILER_UNITTARGETDIR ifdef CLEANPPUFILES -$(DEL) $(CLEANPPUFILES) endif ifneq ($(CLEANPPULINKFILES),) -$(DEL) $(CLEANPPULINKFILES) endif ifdef CLEANRSTFILES -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES)) endif endif ifdef CLEAN_FILES -$(DEL) $(CLEAN_FILES) endif -$(DELTREE) units -$(DELTREE) bin -$(DEL) *$(OEXT) *$(LTOEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT) ifneq ($(PPUEXT),.ppu) -$(DEL) *.o *.ppu *.a endif -$(DELTREE) *$(SMARTEXT) -$(DEL) fpcmade.* Package.fpc *.fpm -$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res -$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT) ifdef AOUTEXT -$(DEL) *$(AOUTEXT) endif ifdef DEBUGSYMEXT -$(DEL) *$(DEBUGSYMEXT) endif ifdef LOCALFPMAKEBIN -$(DEL) $(LOCALFPMAKEBIN) -$(DEL) $(FPMAKEBINOBJ) endif fpc_distclean: cleanall .PHONY: fpc_baseinfo override INFORULES+=fpc_baseinfo fpc_baseinfo: @$(ECHO) @$(ECHO) == Package info == @$(ECHO) Package Name..... $(PACKAGE_NAME) @$(ECHO) Package Version.. $(PACKAGE_VERSION) @$(ECHO) @$(ECHO) == Configuration info == @$(ECHO) @$(ECHO) FPC.......... $(FPC) @$(ECHO) FPC Version.. $(FPC_VERSION) @$(ECHO) Source CPU... $(CPU_SOURCE) @$(ECHO) Target CPU... $(CPU_TARGET) @$(ECHO) Source OS.... $(OS_SOURCE) @$(ECHO) Target OS.... $(OS_TARGET) @$(ECHO) Full Source.. $(FULL_SOURCE) @$(ECHO) Full Target.. $(FULL_TARGET) @$(ECHO) SourceSuffix. $(SOURCESUFFIX) @$(ECHO) TargetSuffix. $(TARGETSUFFIX) @$(ECHO) FPC fpmake... $(FPCFPMAKE) @$(ECHO) @$(ECHO) == Directory info == @$(ECHO) @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES) @$(ECHO) @$(ECHO) Basedir......... $(BASEDIR) @$(ECHO) FPCDir.......... $(FPCDIR) @$(ECHO) CrossBinDir..... $(CROSSBINDIR) @$(ECHO) UnitsDir........ $(UNITSDIR) @$(ECHO) PackagesDir..... $(PACKAGESDIR) @$(ECHO) @$(ECHO) GCC library..... $(GCCLIBDIR) @$(ECHO) Other library... $(OTHERLIBDIR) @$(ECHO) @$(ECHO) == Tools info == @$(ECHO) @$(ECHO) As........ $(AS) @$(ECHO) Ld........ $(LD) @$(ECHO) Ar........ $(AR) @$(ECHO) Rc........ $(RC) @$(ECHO) @$(ECHO) Mv........ $(MVPROG) @$(ECHO) Cp........ $(CPPROG) @$(ECHO) Rm........ $(RMPROG) @$(ECHO) GInstall.. $(GINSTALL) @$(ECHO) Echo...... $(ECHO) @$(ECHO) Shell..... $(SHELL) @$(ECHO) Date...... $(DATE) @$(ECHO) FPCMake... $(FPCMAKE) @$(ECHO) PPUMove... $(PPUMOVE) @$(ECHO) Zip....... $(ZIPPROG) @$(ECHO) @$(ECHO) == Object info == @$(ECHO) @$(ECHO) Target Loaders........ $(TARGET_LOADERS) @$(ECHO) Target Units.......... $(TARGET_UNITS) @$(ECHO) Target Implicit Units. $(TARGET_IMPLICITUNITS) @$(ECHO) Target Programs....... $(TARGET_PROGRAMS) @$(ECHO) Target Dirs........... $(TARGET_DIRS) @$(ECHO) Target Examples....... $(TARGET_EXAMPLES) @$(ECHO) Target ExampleDirs.... $(TARGET_EXAMPLEDIRS) @$(ECHO) @$(ECHO) Clean Units......... $(CLEAN_UNITS) @$(ECHO) Clean Files......... $(CLEAN_FILES) @$(ECHO) @$(ECHO) Install Units....... $(INSTALL_UNITS) @$(ECHO) Install Files....... $(INSTALL_FILES) @$(ECHO) @$(ECHO) == Install info == @$(ECHO) @$(ECHO) DateStr.............. $(DATESTR) @$(ECHO) ZipName.............. $(ZIPNAME) @$(ECHO) ZipPrefix............ $(ZIPPREFIX) @$(ECHO) ZipCrossPrefix....... $(ZIPCROSSPREFIX) @$(ECHO) ZipSuffix............ $(ZIPSUFFIX) @$(ECHO) FullZipName.......... $(FULLZIPNAME) @$(ECHO) Install FPC Package.. $(INSTALL_FPCPACKAGE) @$(ECHO) @$(ECHO) Install base dir..... $(INSTALL_BASEDIR) @$(ECHO) Install binary dir... $(INSTALL_BINDIR) @$(ECHO) Install library dir.. $(INSTALL_LIBDIR) @$(ECHO) Install units dir.... $(INSTALL_UNITDIR) @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR) @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR) @$(ECHO) Install example dir.. $(INSTALL_EXAMPLEDIR) @$(ECHO) Install data dir..... $(INSTALL_DATADIR) @$(ECHO) @$(ECHO) Dist destination dir. $(DIST_DESTDIR) @$(ECHO) Dist zip name........ $(DIST_ZIPNAME) @$(ECHO) .PHONY: fpc_info fpc_info: $(INFORULES) .PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \ fpc_makefile_dirs fpc_makefile: $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc fpc_makefile_sub1: ifdef TARGET_DIRS $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS)) endif ifdef TARGET_EXAMPLEDIRS $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS)) endif fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS)) fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2 fpc_makefiles: fpc_makefile fpc_makefile_dirs debug: fpc_debug smart: fpc_smart release: fpc_release units: fpc_units examples: shared: fpc_shared install: fpc_install sourceinstall: fpc_sourceinstall exampleinstall: fpc_exampleinstall distinstall: zipinstall: zipsourceinstall: zipexampleinstall: zipdistinstall: cleanall: fpc_cleanall makefiles: fpc_makefiles .PHONY: debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall cleanall makefiles ifneq ($(wildcard fpcmake.loc),) include fpcmake.loc endif unexport FPC_VERSION TEST_HOSTNAME:=$(firstword $(subst ., ,$(shell hostname))) override TEST_FPC:=$(subst \,/,$(TEST_FPC)) ifndef TEST_FPC TEST_FPC=$(wildcard $(dir $(CURDIR))compiler/$(notdir $(FPC))) ifeq ($(TEST_FPC), ) $(error "*** ERROR: TEST_FPC is missing ***") endif endif ifndef TEST_OPT TEST_OPT= endif ifndef TEST_DISABLE_LONGLOG TEST_USE_LONGLOG=1 endif override TEST_OPT+=-Fd ifndef TEST_FPC_VERSION TEST_FPC_COMPILERINFO:=$(shell $(TEST_FPC) -iVSPTPSOTODW) TEST_FPC_VERSION:=$(word 1,$(TEST_FPC_COMPILERINFO)) endif export TEST_FPC TEST_FPC_VERSION TEST_FPC_COMPILERINFO ifneq ($(words $(TEST_FPC_COMPILERINFO)),7) TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iSP) TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iTP) TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iSO) TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iTO) TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iD) TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iW) endif ifndef TEST_CPU_SOURCE TEST_CPU_SOURCE:=$(word 2,$(TEST_FPC_COMPILERINFO)) endif ifndef TEST_CPU_TARGET TEST_CPU_TARGET:=$(word 3,$(TEST_FPC_COMPILERINFO)) endif ifndef TEST_OS_SOURCE TEST_OS_SOURCE:=$(word 4,$(TEST_FPC_COMPILERINFO)) endif ifndef TEST_OS_TARGET TEST_OS_TARGET:=$(word 5,$(TEST_FPC_COMPILERINFO)) endif ifndef TEST_FPC_DATE TEST_FPC_DATE:=$(word 6,$(TEST_FPC_COMPILERINFO)) endif ifndef TEST_FPC_FULLVERSION TEST_FPC_FULLVERSION:=$(word 7,$(TEST_FPC_COMPILERINFO)) endif TEST_FULL_TARGET=$(TEST_CPU_TARGET)-$(TEST_OS_TARGET) ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TEST_TARGETSUFFIX=$(TEST_OS_TARGET) else ifneq ($(findstring $(TEST_OS_TARGET),$(LIMIT83fs)),) TEST_TARGETSUFFIX=$(TEST_OS_TARGET) else TEST_TARGETSUFFIX=$(TEST_FULL_TARGET) endif endif ifndef TEST_CCOMPILER ifeq ($(CPU_TARGET),$(TEST_CPU_TARGET)) ifeq ($(OS_TARGET),$(TEST_OS_TARGET)) TEST_CCOMPILER:=$(strip $(wildcard $(addsuffix /gcc$(SRCEXEEXT),$(SEARCHPATH)))) ifneq ($(TEST_CCOMPILER),) TEST_CCOMPILER:=$(firstword $(TEST_CCOMPILER)) endif endif endif endif ifeq ($(TEST_OS_TARGET),msdos) override TEST_OPT+=-XX endif TEST_OUTPUTDIR=output/$(TEST_TARGETSUFFIX) C_SUBDIR=$(TEST_OS_TARGET)/$(TEST_CPU_TARGET) ifneq ($(DATE),__missing_command_DATE) TEST_DATETIME:=$(shell $(DATE) -u +%Y%m%d%H%M) else TEST_DATETIME="No-date" endif ifndef TEST_USER TEST_USER=$(USER) ifeq ($(TEST_USER),) TEST_USER=$(USERNAME) endif endif DB_TARGZ=$(TEST_HOSTNAME)-$(TEST_DATETIME).tar.gz DB_HOST=fpc@www.freepascal.org DB_UPLOADDIR=/home/fpc/testsuite/incoming ifdef inWinNT inWinDOS=1 endif ifeq ($(OS_SOURCE),go32v2) inWinDOS=1 inDOS=1 SINGLEDOTESTRUNS=1 endif ifndef FAILLIST export FAILLIST:=$(TEST_OUTPUTDIR)/faillist endif export TEST_FAILLIST:=$(TEST_OUTPUTDIR)/faillist ifndef LONGLOG export LONGLOG:=$(TEST_OUTPUTDIR)/longlog endif export TEST_LONGLOG:=$(TEST_OUTPUTDIR)/longlog ifndef LOG export LOG:=$(TEST_OUTPUTDIR)/log endif export TEST_LOG:=$(TEST_OUTPUTDIR)/log ifndef TEST_SEPLOG ifdef MAKEINC_SEPARATE export TEST_SEPLOG:=$(TEST_OUTPUTDIR)/seplog endif endif LOGFILES=$(TEST_LOG) $(TEST_LONGLOG) $(TEST_FAILLIST) $(TEST_SEPLOG) LOGEXT=.testlog .tbslog .tbflog .webtbslog .webtbflog TESTUNITDIRS=system dos crt objects strings sysutils math sharemem strutils matrix lineinfo ucomplex fpwidestring cpu fmtbcd windows classes character dateutil fpcunit softfpu variants sortbase sortalgs linux unixutil types nullable contnrs convutils TESTDIRECTDIRS= TESTSUBDIRS=cg cg/variants cg/cdecl cpu8/avr cpu16 cpu16/i8086 library opt wasm $(addprefix units/,$(TESTUNITDIRS)) TESTPACKAGESDIRS=bzip2 cocoaint fcl-base fcl-db fcl-image fcl-registry fcl-xml hash rtl-objpas univint webtbs win-base zlib TESTPACKAGESUBDIRS=$(addprefix packages/,$(TESTPACKAGESDIRS)) TESTPACKAGESDIRECTDIRS=rtl-objpas rtl-generics hash regexpr fcl-registry fcl-passrc fcl-json fcl-image pastojs fcl-process TESTPACKAGESDIRECTSUBDIRS=$(addprefix ../packages/,$(addsuffix /tests,$(TESTPACKAGESDIRECTDIRS))) ifdef QUICKTEST export QUICKTEST else override TESTSUBDIRS+=$(TESTPACKAGESUBDIRS) alglib override TESTDIRECTDIRS+=$(TESTPACKAGESDIRECTSUBDIRS) endif ifndef CHUNKSIZE export CHUNKSIZE:=100 endif TESTDIRS:=test $(addprefix test/,$(TESTSUBDIRS)) $(TESTDIRECTDIRS) .PHONY: utils tstunits copyfiles testprep $(TEST_OUTPUTDIR): $(MKDIRTREE) $(TEST_OUTPUTDIR) utils: $(MAKE) -C utils utils utilsdb: $(MAKE) -C utils utilsdb ifndef DIGEST DIGEST=utils/digest endif ifndef DOTEST DOTEST=utils/dotest endif ifndef CONCAT CONCAT=utils/concat endif ifndef GPARMAKE GPARMAKE=./gparmake$(SRCEXEEXT) endif ifndef PREPUP PREPUP=utils/prepup endif ifndef CREATELST CREATELST=./createlst$(SRCEXEEXT) endif tstunits: ifdef inOS2 $(MAKE) -C tstunits FPC_VERSION= FPC=$(TEST_FPC) NATIVE_FPC=$(FPC) CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET) SUBARCH=$(TEST_SUBARCH) "OPT=$(TEST_OPT)" CCOMPILER=$(TEST_CCOMPILER) BINUTILSPREFIX=$(TEST_BINUTILSPREFIX) else $(MAKE) -C tstunits FPC_VERSION= FPC=$(TEST_FPC) NATIVE_FPC=$(FPC) CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET) SUBARCH=$(TEST_SUBARCH) 'OPT=$(TEST_OPT)' CCOMPILER=$(TEST_CCOMPILER) BINUTILSPREFIX=$(TEST_BINUTILSPREFIX) endif .PHONY: create_c_objects delete_c_objects copyfiles test_c_objects C_SOURCE_DIR=test/cg/obj C_SOURCES=ctest.c tcext3.c tcext4.c tcext5.c tcext6.c tcext7.c CPP_SOURCES=cpptcl1.cpp cpptcl2.cpp TASM_SOURCES=ttasm1.asm ifneq ($(TEST_ABI),) C_OBJECTS_DIR=$(C_SOURCE_DIR)/$(TEST_OS_TARGET)/$(TEST_CPU_TARGET)-$(TEST_ABI) else C_OBJECTS_DIR=$(C_SOURCE_DIR)/$(TEST_OS_TARGET)/$(TEST_CPU_TARGET) endif C_OBJECTS=$(addprefix $(C_OBJECTS_DIR)/, $(subst .c,.o, $(C_SOURCES))) CPP_OBJECTS=$(addprefix $(C_OBJECTS_DIR)/, $(subst .cpp,.o, $(CPP_SOURCES))) TASM_OBJECTS=$(addprefix $(C_OBJECTS_DIR)/, $(subst .asm,.obj, $(TASM_SOURCES))) create_c_objects: ifneq ($(TEST_CCOMPILER),) $(MKDIRTREE) $(C_OBJECTS_DIR) -$(COPY) $(addprefix $(C_SOURCE_DIR)/, $(C_SOURCES)) $(C_OBJECTS_DIR) $(MAKE) $(C_OBJECTS) -$(COPY) $(addprefix $(C_SOURCE_DIR)/, $(CPP_SOURCES)) $(C_OBJECTS_DIR) $(MAKE) $(CPP_OBJECTS) -$(DEL) $(addprefix $(C_OBJECTS_DIR)/, $(C_SOURCES) $(CPP_SOURCES)) else $(ECHO) create_c_objects rule needs a valid C compiler in TEST_CCOMPILER variable $(ECHO) TEST_CFLAGS variable is passed as options is used to compile the objects endif delete_c_objects: ifneq ($(TEST_CCOMPILER),) -$(DEL) $(C_OBJECTS) $(CPP_OBJECTS) else $(ECHO) delete_c_objects rule needs a valid C compiler in TEST_CCOMPILER variable $(ECHO) to be able to recompile the objects using create_objects rule. endif $(C_OBJECTS) : %.o: %.c $(TEST_CCOMPILER) -c $(TEST_CFLAGS) $< -o $@ $(CPP_OBJECTS) : %.o: %.cpp $(TEST_CCOMPILER) -c $(TEST_CFLAGS) $< -o $@ copyfiles: -$(MKDIRTREE) $(TEST_OUTPUTDIR)/test/cg -$(COPY) $(C_OBJECTS) $(TEST_OUTPUTDIR)/test/cg -$(COPY) $(CPP_OBJECTS) $(TEST_OUTPUTDIR)/test/cg ifeq ($(FULL_TARGET),i8086-msdos) -$(COPY) $(TASM_OBJECTS) $(TEST_OUTPUTDIR)/test/cg endif -$(MKDIRTREE) $(TEST_OUTPUTDIR)/test/units/system testprep: testprep-stamp.$(TEST_FULL_TARGET) testprep-stamp.$(TEST_FULL_TARGET): utils tstunits copyfiles $(ECHOREDIR) $(TEST_DATETIME) > testprep-stamp.$(TEST_FULL_TARGET) ifneq ($(TEST_FPC),ppc386$(EXEEXT)) ifeq ($(findstring -c$(TEST_FPC),$(DOTESTOPT)),) override DOTESTOPT+=-c$(TEST_FPC) endif endif ifneq ($(FULL_TARGET),$(TEST_FULL_TARGET)) override DOTESTOPT+=-T$(TEST_FULL_TARGET) endif ifneq ($(TEST_BINUTILSPREFIX),) override DOTESTOPT+=-Y-XP$(TEST_BINUTILSPREFIX) -Y-Xd endif ifdef inDOS override DOTESTOPT+=-X endif ifdef TEST_RSH override DOTESTOPT+=-R$(TEST_RSH) endif ifdef TEST_SSH override DOTESTOPT+=-R$(TEST_SSH) -S endif ifdef TEST_REMOTEPATH override DOTESTOPT+=-P$(TEST_REMOTEPATH) endif ifdef TEST_DELBEFORE override DOTESTOPT+=-B endif ifdef TEST_DELTEMP override DOTESTOPT+=-Z endif ifdef TEST_TIMEOUT override DOTESTOPT+=-O endif ifdef TEST_VERBOSE override DOTESTOPT+=-V endif ifdef TEST_PARALLEL override DOTESTOPT+=-L endif ifdef TEST_BENCH override DOTESTOPT+=-D endif ifdef V Q= QECHO= else Q=@ QECHO=@echo $(1) endif ifdef TEST_REMOTEOPT override DOTESTOPT+=-U$(TEST_REMOTEOPT) endif ifdef TEST_PUTTY override DOTESTOPT+=-R$(TEST_PUTTY) -W endif ifdef TEST_ADB override DOTESTOPT+=-ADB -R$(TEST_ADB) endif ifdef TEST_OPT override DOTESTOPT+=$(addprefix -Y, $(TEST_OPT)) endif ifdef TEST_REMOTEPW override DOTESTOPT+=-U-pw -U$(TEST_REMOTEPW) endif ifdef GRAPH override DOTESTOPT+=-g endif ifdef INTERACTIVE override DOTESTOPT+=-i endif ifdef DOALL override DOTESTOPT+=-a endif ifdef EMULATOR override DOTESTOPT+=-M$(EMULATOR) endif ifdef EMULATOR_OPTS override DOTESTOPT+=-N$(EMULATOR_OPTS) endif ifdef USEENV override DOTESTENV:=$(DOTESTOPT) override DOTESTOPT=!DOTESTENV export DOTESTENV endif DIRS=webtbs webtbf tbs tbf $(TESTDIRS) vpath %.log $(TEST_OUTPUTDIR) vpath %.elg $(TEST_OUTPUTDIR) vpath %.o $(C_SUBDIR) ifdef SINGLEDOTESTRUNS TBSREQ=$(patsubst %.pp,%.elg,$(sort $(wildcard tbs/t*.pp))) TBFREQ=$(patsubst %.pp,%.elg,$(sort $(wildcard tbf/t*.pp))) WEBTBSREQ=$(patsubst %.pp,%.elg,$(sort $(wildcard webtbs/t*.pp))) WEBTBFREQ=$(patsubst %.pp,%.elg,$(sort $(wildcard webtbf/t*.pp))) TESTREQ=$(patsubst %.pp,%.elg,$(sort $(wildcard $(addsuffix /t*.pp,$(TESTDIRS))))) else TBSREQ=$(TEST_OUTPUTDIR)/tbsdir-stamp.$(TEST_FULL_TARGET) TBFREQ=$(TEST_OUTPUTDIR)/tbfdir-stamp.$(TEST_FULL_TARGET) WEBTBSREQ=$(TEST_OUTPUTDIR)/webtbsdir-stamp.$(TEST_FULL_TARGET) WEBTBFREQ=$(TEST_OUTPUTDIR)/webtbfdir-stamp.$(TEST_FULL_TARGET) TESTREQ=$(TEST_OUTPUTDIR)/testdir-stamp.$(TEST_FULL_TARGET) endif %.log : %.pp testprep-stamp.$(TEST_FULL_TARGET) $(call QECHO," COMPILE $<") $(Q)$(DOTEST) $(DOTESTOPT) $< %.elg : %.pp testprep-stamp.$(TEST_FULL_TARGET) $(call QECHO," EXECUTE $<") $(Q)$(DOTEST) $(DOTESTOPT) -e $< ifdef TEST_CCOMPILER %.o : %.c $(TEST_CCOMPILER) -c $< -o $(@D)/$(C_SUBDIR)/$(@F) %.o : %.cc $(TEST_CCOMPILER) -c $< -o $(@D)/$(C_SUBDIR)/$(@F) endif .PHONY: alltbs alltbf allwebtbs allwebtbf alltest alltests alltbs : testprep $(patsubst %.pp,%.log,$(sort $(wildcard tbs/t*.pp))) alltbf : testprep $(patsubst %.pp,%.log,$(sort $(wildcard tbf/t*.pp))) allwebtbs : testprep $(patsubst %.pp,%.log,$(sort $(wildcard webtbs/t*.pp))) allwebtbf : testprep $(patsubst %.pp,%.log,$(sort $(wildcard webtbf/t*.pp))) alltest : testprep $(patsubst %.pp,%.log,$(sort $(wildcard $(addsuffix /t*.pp,$(TESTDIRS))))) ifndef SINGLEDOTESTRUNS $(Q)$(DOTEST) $(DOTESTOPT) -e $(wildcard $(addsuffix /t*.pp,$(TESTDIRS))) endif alltests: alltest alltbs alltbf allwebtbs allwebtbf test_c_objects: testprep $(MAKE) $(patsubst %.pp,%.log, $(wildcard test/cg/cdecl/tcalext*.pp)) $(MAKE) $(patsubst %.pp,%.elg, $(wildcard test/cg/cdecl/tcalext*.pp)) $(MAKE) $(patsubst %.pp,%.log, $(wildcard test/cg/cdecl/tcppcl*.pp)) $(MAKE) $(patsubst %.pp,%.elg, $(wildcard test/cg/cdecl/tcppcl*.pp)) ifdef SINGLEDOTESTRUNS .PHONY: allexectbs allexectbf allexecwebtbs allexecwebtbf allexectest allexectests allexectbs: $(addsuffix .tbslog, $(LOGFILES)) allexectbf: $(addsuffix .tbflog, $(LOGFILES)) allexecwebtbs: $(addsuffix .webtbslog, $(LOGFILES)) allexecwebtbf: $(addsuffix .webtbflog, $(LOGFILES)) allexectest: $(addsuffix .testlog, $(LOGFILES)) $(TEST_OUTPUTDIR)/%.mergedlog : $(TEST_OUTPUTDIR)/%.testlog $(TEST_OUTPUTDIR)/%.tbslog $(TEST_OUTPUTDIR)/%.tbflog $(TEST_OUTPUTDIR)/%.webtbslog $(TEST_OUTPUTDIR)/%.webtbflog $(Q)$(CONCAT) $^ $@ $(Q)$(COPY) $@ $(basename $@) $(TEST_OUTPUTDIR)/%.tbslog : $(TBSREQ) $(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/faillist.tbslog $(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/longlog.tbslog $(TEST_OUTPUTDIR)/%.tbflog : $(TBFREQ) $(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/faillist.tbflog $(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/longlog.tbflog $(TEST_OUTPUTDIR)/%.webtbslog : $(WEBTBSREQ) $(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/faillist.webtbslog $(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/longlog.webtbslog $(TEST_OUTPUTDIR)/%.webtbflog : $(WEBTBFREQ) $(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/faillist.webtbflog $(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/longlog.webtbflog $(TEST_OUTPUTDIR)/%.testlog : $(TESTREQ) $(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/faillist.testlog $(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/longlog.testlog allexectests: $(TEST_OUTPUTDIR)/log.testlog $(TEST_OUTPUTDIR)/log.tbslog \ $(TEST_OUTPUTDIR)/log.tbflog $(TEST_OUTPUTDIR)/log.webtbslog \ $(TEST_OUTPUTDIR)/log.webtbflog \ $(addprefix $(TEST_OUTPUTDIR)/,$(foreach EXT, $(LOGEXT), $(addsuffix $(EXT), faillist longlog))) \ $(addsuffix .mergedlog, $(LOGFILES)) else .PHONY: allexectests gparmake_allexectests MAKEINC=$(TEST_OUTPUTDIR)/MakeChunks-$(TEST_TARGETSUFFIX).inc $(GPARMAKE): utils/gparmake.pp $(CREATELST) $(Q)$(MAKE) $(COMPILER_UNITTARGETDIR) $(FPC) -FE. utils/gparmake.pp $(OPT) $(CREATELST): utils/createlst.pp $(Q)$(MAKE) $(COMPILER_UNITTARGETDIR) $(FPC) -FE. utils/createlst.pp $(OPT) ifdef MAKEINC_SEPARATE GPARMAKE_OPT=-f else GPARMAKE_OPT= endif $(MAKEINC): $(GPARMAKE) $(CREATELST) $(Q)$(MAKE) $(TEST_OUTPUTDIR) $(Q)$(CREATELST) filelisttest.lst $(TESTDIRS) $(Q)$(GPARMAKE) $(GPARMAKE_OPT) $(MAKEINC) test 1 $(CHUNKSIZE) @filelisttest.lst $(Q)$(CREATELST) filelisttbs.lst tbs $(Q)$(GPARMAKE) -a $(GPARMAKE_OPT) $(MAKEINC) tbs 10000 $(CHUNKSIZE) @filelisttbs.lst $(Q)$(CREATELST) filelisttbf.lst tbf $(Q)$(GPARMAKE) -a $(GPARMAKE_OPT) $(MAKEINC) tbf 15000 $(CHUNKSIZE) @filelisttbf.lst $(Q)$(CREATELST) filelistwebtbs.lst webtbs $(Q)$(GPARMAKE) -a $(GPARMAKE_OPT) $(MAKEINC) webtbs 20000 $(CHUNKSIZE) @filelistwebtbs.lst $(Q)$(CREATELST) filelistwebtbf.lst webtbf $(Q)$(GPARMAKE) -a $(GPARMAKE_OPT) $(MAKEINC) webtbf 30000 $(CHUNKSIZE) @filelistwebtbf.lst ifeq (,$(findstring clean,$(firstword $(MAKECMDGOALS)))) ifneq (,$(findstring all,$(MAKECMDGOALS))) ifneq (,$(wildcard $(MAKEINC))) include $(TEST_OUTPUTDIR)/MakeChunks-$(TEST_TARGETSUFFIX).inc endif endif endif allexectests: $(MAKEINC) $(MAKE) gparmake_allexectests endif .PHONY: clean distclean clean_test clean_sources clean_sources: -$(DEL) $(wildcard $(patsubst %.pp,%$(PPUEXT),$(wildcard $(addsuffix /*.pp,$(DIRS))))) clean_test: -$(DELTREE) $(TEST_OUTPUTDIR) -$(DEL) core gmon.out testprep-stamp.$(TEST_FULL_TARGET) dotgz$(SRCBATCHEXT) clean: clean_sources fpc_clean $(MAKE) clean_test CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET) SUBARCH=$(TEST_SUBARCH) $(MAKE) -C tstunits clean CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET) SUBARCH=$(TEST_SUBARCH) -$(DEL) filelisttest.lst filelisttbs.lst filelisttbf.lst filelistwebtbs.lst filelistwebtbf.lst distclean: clean fpc_distclean $(DELTREE) output $(MAKE) -C utils distclean $(MAKE) -C tstunits distclean -$(DEL) testprep-stamp.* .PHONY: all full digest onlyknown onlygraph onlyinteractive digest : utils -$(DIGEST) $(LOG) SVNVERSION:=$(firstword $(wildcard $(addsuffix /svnversion$(SRCEXEEXT),$(SEARCHPATH)))) GIT:=$(firstword $(wildcard $(addsuffix /git$(SRCEXEEXT),$(SEARCHPATH)))) ifneq ($(wildcard ../.git),) ifneq ($(GIT),) GIT_GET_HASH=$(GIT) log -1 --format=%h SVN_TESTS_REV_STR=$(shell $(GIT_GET_HASH) .) SVN_COMPILER_REV_STR=$(shell $(GIT_GET_HASH) ../compiler) SVN_RTL_REV_STR=$(shell $(GIT_GET_HASH) ../rtl) SVN_PACKAGES_REV_STR=$(shell $(GIT_GET_HASH) ../packages) endif else ifneq ($(SVNVERSION),) SVN_TESTS_REV_STR=$(shell $(SVNVERSION) -c .) SVN_COMPILER_REV_STR=$(shell $(SVNVERSION) -c ../compiler) SVN_RTL_REV_STR=$(shell $(SVNVERSION) -c ../rtl) SVN_PACKAGES_REV_STR=$(shell $(SVNVERSION) -c ../packages) endif endif ifeq ($(TEST_COMMENT),) TEST_COMMENT=$(TEST_OPT) endif $(TEST_OUTPUTDIR)/dbdigest.cfg: $(ECHOREDIR) OS=$(TEST_OS_TARGET) > $(TEST_OUTPUTDIR)/dbdigest.cfg $(ECHOREDIR) CPU=$(TEST_CPU_TARGET) >> $(TEST_OUTPUTDIR)/dbdigest.cfg $(ECHOREDIR) Version=$(TEST_FPC_VERSION) >> $(TEST_OUTPUTDIR)/dbdigest.cfg $(ECHOREDIR) LogFile=log >> $(TEST_OUTPUTDIR)/dbdigest.cfg ifneq ($(TEST_USE_LONGLOG),) $(ECHOREDIR) LongLogFile=longlog >> $(TEST_OUTPUTDIR)/dbdigest.cfg endif $(ECHOREDIR) Submitter=$(TEST_USER) >> $(TEST_OUTPUTDIR)/dbdigest.cfg $(ECHOREDIR) Machine=$(TEST_HOSTNAME) >> $(TEST_OUTPUTDIR)/dbdigest.cfg $(ECHOREDIR) Comment=$(TEST_COMMENT) >> $(TEST_OUTPUTDIR)/dbdigest.cfg ifneq ($(TEST_DATETIME),) $(ECHOREDIR) Date=$(TEST_DATETIME) >> $(TEST_OUTPUTDIR)/dbdigest.cfg endif ifneq ($(TEST_FPC_DATE),) $(ECHOREDIR) CompilerDate=$(TEST_FPC_DATE) >> $(TEST_OUTPUTDIR)/dbdigest.cfg endif ifneq ($(TEST_FPC_FULLVERSION),) $(ECHOREDIR) CompilerFullVersion=$(TEST_FPC_FULLVERSION) >> $(TEST_OUTPUTDIR)/dbdigest.cfg endif ifneq ($(SVN_TESTS_REV_STR),) $(ECHOREDIR) svntestsrevision=$(SVN_TESTS_REV_STR) >> $(TEST_OUTPUTDIR)/dbdigest.cfg $(ECHOREDIR) svncompilerrevision=$(SVN_COMPILER_REV_STR) >> $(TEST_OUTPUTDIR)/dbdigest.cfg $(ECHOREDIR) svnrtlrevision=$(SVN_RTL_REV_STR) >> $(TEST_OUTPUTDIR)/dbdigest.cfg $(ECHOREDIR) svnpackagesrevision=$(SVN_PACKAGES_REV_STR) >> $(TEST_OUTPUTDIR)/dbdigest.cfg endif ifeq ($(OS_SOURCE),openbsd) ifeq ($(TARPROG),$(subst gtar,,$(TARPROG))) BSD_SYSTEM_TAR=1 endif endif ifdef BSD_SYSTEM_TAR TARFROM=-I tar.lst else TARFROM=--files-from=tar.lst endif ifneq ($(TEST_USE_LONGLOG),) PREPUP_OPT=-ll else PREPUP_OPT= endif ifndef inWinDOS $(TEST_OUTPUTDIR)/tar.lst: ifdef inOS2 ifeq ($(TEST_USE_LONGLOG),) cd $(subst /,\,$(TEST_OUTPUTDIR)) && gnufind . -name "*.log" -o -name "*.elg" > tar.lst else $(ECHOREDIR) longlog > $(TEST_OUTPUTDIR)/tar.lst endif $(ECHOREDIR) log>> $(TEST_OUTPUTDIR)/tar.lst $(ECHOREDIR) dbdigest.cfg>> $(TEST_OUTPUTDIR)/tar.lst else ifeq ($(TEST_USE_LONGLOG),) cd $(TEST_OUTPUTDIR) && find . -name '*.log' -o -name '*.elg' > tar.lst else $(ECHOREDIR) "longlog" > $(TEST_OUTPUTDIR)/tar.lst endif $(ECHOREDIR) "log" >> $(TEST_OUTPUTDIR)/tar.lst $(ECHOREDIR) "dbdigest.cfg" >> $(TEST_OUTPUTDIR)/tar.lst endif $(TEST_OUTPUTDIR)/$(DB_TARGZ): $(TEST_OUTPUTDIR)/tar.lst $(TEST_OUTPUTDIR)/dbdigest.cfg ifdef inCygWin dos2unix $(TEST_OUTPUTDIR)/tar.lst endif ifdef inOS2 dos2unix $(TEST_OUTPUTDIR)/tar.lst cd $(subst /,\,$(TEST_OUTPUTDIR)) && $(TARPROG) czf $(DB_TARGZ) $(TARFROM) else cd $(TEST_OUTPUTDIR) && $(TARPROG) czf $(DB_TARGZ) $(TARFROM) endif else $(TEST_OUTPUTDIR)/$(DB_TARGZ): $(TEST_OUTPUTDIR)/dbdigest.cfg ifdef inDOS $(ECHOREDIR) @echo off > dotgz$(SRCBATCHEXT) $(ECHOREDIR) cd $(subst /,\,$(TEST_OUTPUTDIR)) >> dotgz$(SRCBATCHEXT) $(ECHOREDIR) $(subst /,\,../../$(PREPUP)) $PREPUP_OPT $(DB_TARGZ) >> dotgz$(SRCBATCHEXT) $(ECHOREDIR) if errorlevel 1 $(DEL) $(DB_TARGZ) >> dotgz$(SRCBATCHEXT) $(ECHOREDIR) cd $(subst /,\,../../) >> dotgz$(SRCBATCHEXT) $(RUNBATCH) dotgz$(SRCBATCHEXT) else ifdef inOS2 cd "$(subst /,\,$(TEST_OUTPUTDIR))" && "$(subst /,\,../../$(PREPUP))" $PREPUP_OPT $(DB_TARGZ) else cd "$(TEST_OUTPUTDIR)" && "../../$(PREPUP)" $PREPUP_OPT $(DB_TARGZ) endif endif endif ifndef DB_USE_SSH ifdef inWinDOS UsePutty=1 endif endif uploadrun: $(TEST_OUTPUTDIR)/$(DB_TARGZ) ifdef UsePutty pscp -load "fpc@www.freepascal.org" $(TEST_OUTPUTDIR)/$(DB_TARGZ) $(DB_HOST):$(DB_UPLOADDIR)/$(DB_TARGZ).part $(SSH_EXTRA) plink -load "fpc@www.freepascal.org" "mv $(DB_UPLOADDIR)/$(DB_TARGZ).part $(DB_UPLOADDIR)/$(DB_TARGZ)" else scp $(DB_SSH_EXTRA) $(TEST_OUTPUTDIR)/$(DB_TARGZ) $(DB_HOST):$(DB_UPLOADDIR)/$(DB_TARGZ).part ifdef inOS2 $(ECHOREDIR) . | ssh $(DB_SSH_EXTRA) $(DB_HOST) "mv $(DB_UPLOADDIR)/$(DB_TARGZ).part $(DB_UPLOADDIR)/$(DB_TARGZ)" else ssh $(DB_SSH_EXTRA) $(DB_HOST) "mv $(DB_UPLOADDIR)/$(DB_TARGZ).part $(DB_UPLOADDIR)/$(DB_TARGZ)" endif endif all : allexectests full : $(MAKE) clean $(MAKE) allexectests $(MAKE) digest fulldb : $(MAKE) clean $(MAKE) allexectests $(MAKE) digest $(MAKE) uploadrun tarfile : $(TEST_OUTPUTDIR)/$(DB_TARGZ) onlyknown : $(MAKE) full "DOTESTOPT= $(DOTESTOPT) -k-" onlygraph : $(MAKE) full "DOTESTOPT= $(DOTESTOPT) -g-" onlyinteractive : $(MAKE) "DOTESTOPT= $(DOTESTOPT) -i-" info : @$(ECHO) "This Makefile allows to test the compiler" @$(ECHO) @$(ECHO) "Basic Targets:" @$(ECHO) " all - continue all tests" @$(ECHO) " full - clean and run all tests" @$(ECHO) " fulldb - full and upload test results" @$(ECHO) " digest - compute and print test statistics" @$(ECHO) @$(ECHO) "Advanced Targets:" @$(ECHO) " onlyknown - run only known bugs" @$(ECHO) " onlygraph - run only graph tests" @$(ECHO) " onlyinteractive - run only interactive tests" @$(ECHO) @$(ECHO) "Host environment:" @$(ECHO) " $(FULL_TARGET)" @$(ECHO) " compiler: $(FPC) ver: $(FPC_VERSION)" @$(ECHO) @$(ECHO) "Test environment:" @$(ECHO) " $(TEST_FULL_TARGET)" @$(ECHO) " compiler: $(TEST_FPC) ver: $(TEST_FPC_VERSION)" @$(ECHO) @$(ECHO) "Output settings:" @$(ECHO) " DateTime : $(TEST_DATETIME)" @$(ECHO) " Outputdir: $(TEST_OUTPUTDIR)" @$(ECHO) " Uploaddir: $(DB_UPLOADDIR)" @$(ECHO) " tar.gz : $(DB_TARGZ)"