# # 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 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 mips64el-linux jvm-java jvm-android i8086-embedded i8086-msdos i8086-win16 aarch64-linux aarch64-darwin aarch64-win64 aarch64-android aarch64-ios wasm-wasm sparc64-linux riscv32-linux riscv32-embedded riscv64-linux riscv64-embedded xtensa-linux xtensa-embedded xtensa-freertos z80-embedded z80-zxspectrum z80-msxdos z80-amstradcpc BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos win16 atari OSNeedsComspecToRunBatch = go32v2 watcom FORCE: .PHONY: FORCE 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 ($(findstring $(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 FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET) FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE) 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 ($(FULL_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 ($(FULL_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 ($(FULL_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 ($(FULL_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 ($(FULL_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 ($(FULL_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 ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) else ifneq ($(findstring $(OS_TARGET),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) else TARGETSUFFIX=$(FULL_TARGET) endif SOURCESUFFIX=$(FULL_SOURCE) endif ifneq ($(FULL_TARGET),$(FULL_SOURCE)) CROSSCOMPILE=1 endif ifeq ($(findstring makefile,$(MAKECMDGOALS)),) ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),) $(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first) endif endif ifneq ($(findstring $(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 FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE 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 ($(findstring $(OS_TARGET),darwin iphonesim ios),) ifneq ($(findstring $(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 ($(FULL_TARGET),i386-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-go32v2) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-win32) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-os2) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-freebsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-beos) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-haiku) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-netbsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-solaris) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-netware) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-openbsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-wdosx) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-darwin) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-emx) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-watcom) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-netwlibc) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-wince) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-symbian) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-nativent) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-iphonesim) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-android) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i386-aros) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),m68k-netbsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),m68k-amiga) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),m68k-atari) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),m68k-palmos) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),m68k-macosclassic) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),m68k-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),powerpc-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),powerpc-netbsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),powerpc-amiga) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),powerpc-macosclassic) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),powerpc-darwin) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),powerpc-morphos) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),powerpc-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),powerpc-wii) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),powerpc-aix) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),sparc-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),sparc-netbsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),sparc-solaris) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),sparc-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),x86_64-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),x86_64-freebsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),x86_64-haiku) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),x86_64-netbsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),x86_64-solaris) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),x86_64-openbsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),x86_64-darwin) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),x86_64-win64) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),x86_64-iphonesim) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),x86_64-android) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),x86_64-aros) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),x86_64-dragonfly) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),arm-netbsd) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),arm-palmos) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),arm-wince) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),arm-gba) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),arm-nds) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),arm-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),arm-symbian) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),arm-android) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),arm-aros) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),arm-freertos) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),arm-ios) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),powerpc64-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),powerpc64-darwin) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),powerpc64-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),powerpc64-aix) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),avr-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),armeb-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),armeb-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),mips-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),mipsel-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),mips64el-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),jvm-java) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),jvm-android) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i8086-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i8086-msdos) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),i8086-win16) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),aarch64-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),aarch64-darwin) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),aarch64-win64) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),aarch64-android) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),aarch64-ios) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),wasm-wasm) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),sparc64-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),riscv32-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),riscv32-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),riscv64-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),riscv64-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),xtensa-linux) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),xtensa-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),xtensa-freertos) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),z80-embedded) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),z80-zxspectrum) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),z80-msxdos) override TARGET_PROGRAMS+=gparmake createlst endif ifeq ($(FULL_TARGET),z80-amstradcpc) 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 ($(findstring $(OS_TARGET),$(UNIXs)),) UNIXHier=1 endif else ifneq ($(findstring $(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 ($(findstring 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 ($(findstring sparc64,$(shell uname -a)),) ifeq ($(BINUTILSPREFIX),) GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`) else CROSSGCCOPT=-m32 endif endif endif endif ifdef FPCFPMAKE FPCFPMAKE_CPU_TARGET=$(shell $(FPCFPMAKE) -iTP) ifeq ($(CPU_TARGET),$(FPCFPMAKE_CPU_TARGET)) FPCMAKEGCCLIBDIR:=$(GCCLIBDIR) 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 ($(findstring $(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 ifneq ($(findstring $(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 ($(FULL_TARGET),i386-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-go32v2) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-win32) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-os2) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-freebsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-beos) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-haiku) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-netbsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-solaris) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-netware) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-openbsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-wdosx) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-darwin) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-emx) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-watcom) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-netwlibc) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-wince) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-symbian) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-nativent) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-iphonesim) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-android) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i386-aros) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),m68k-netbsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),m68k-amiga) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),m68k-atari) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),m68k-palmos) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),m68k-macosclassic) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),m68k-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),powerpc-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),powerpc-netbsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),powerpc-amiga) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),powerpc-macosclassic) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),powerpc-darwin) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),powerpc-morphos) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),powerpc-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),powerpc-wii) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),powerpc-aix) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),sparc-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),sparc-netbsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),sparc-solaris) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),sparc-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),x86_64-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),x86_64-freebsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),x86_64-haiku) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),x86_64-netbsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),x86_64-solaris) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),x86_64-openbsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),x86_64-darwin) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),x86_64-win64) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),x86_64-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),x86_64-iphonesim) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),x86_64-android) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),x86_64-aros) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),x86_64-dragonfly) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),arm-netbsd) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),arm-palmos) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),arm-wince) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),arm-gba) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),arm-nds) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),arm-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),arm-symbian) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),arm-android) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),arm-aros) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),arm-freertos) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),arm-ios) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),powerpc64-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),powerpc64-darwin) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),powerpc64-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),powerpc64-aix) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),avr-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),armeb-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),armeb-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),mips-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),mipsel-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),mipsel-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),mips64el-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),jvm-java) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),jvm-android) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i8086-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i8086-msdos) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),i8086-win16) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),aarch64-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),aarch64-darwin) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),aarch64-win64) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),aarch64-android) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),aarch64-ios) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),wasm-wasm) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),sparc64-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),riscv32-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),riscv32-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),riscv64-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),riscv64-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),xtensa-linux) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),xtensa-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),xtensa-freertos) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),z80-embedded) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),z80-zxspectrum) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),z80-msxdos) REQUIRE_PACKAGES_RTL=1 endif ifeq ($(FULL_TARGET),z80-amstradcpc) REQUIRE_PACKAGES_RTL=1 endif ifdef REQUIRE_PACKAGES_RTL PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR)))))) 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) endif ifneq ($(BINUTILSPREFIX),) override FPCOPT+=-Xr$(RLINKPATH) 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 CREATESHARED override FPCOPT+=-Cg endif ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifneq ($(findstring $(CPU_TARGET),x86_64 mips mipsel),) override FPCOPT+=-Cg endif 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 (,$(findstring -sh ,$(COMPILER))) UseEXECPPAS=1 endif ifneq (,$(findstring -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) +%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 ifndef LONGLOG export LONGLOG:=$(TEST_OUTPUTDIR)/longlog endif ifndef LOG export LOG:=$(TEST_OUTPUTDIR)/log endif LOGFILES=$(TEST_OUTPUTDIR)/log $(TEST_OUTPUTDIR)/longlog $(TEST_OUTPUTDIR)/faillist 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 TESTDIRECTDIRS= TESTSUBDIRS=cg cg/variants cg/cdecl cpu16 cpu16/i8086 library opt $(addprefix units/,$(TESTUNITDIRS)) TESTPACKAGESDIRS=win-base webtbs hash fcl-registry fcl-process zlib fcl-db fcl-xml cocoaint bzip2 TESTPACKAGESUBDIRS=$(addprefix packages/,$(TESTPACKAGESDIRS)) TESTPACKAGESDIRECTDIRS=rtl-objpas rtl-generics 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$(EXEEXT) endif ifndef PREPUP PREPUP=utils/prepup endif ifndef CREATELST CREATELST=./createlst$(EXEEXT) 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 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 -$(COPY) $(TASM_OBJECTS) $(TEST_OUTPUTDIR)/test/cg -$(MKDIRTREE) $(TEST_OUTPUTDIR)/test/units/system testprep: testprep-stamp.$(TEST_FULL_TARGET) testprep-stamp.$(TEST_FULL_TARGET): utils tstunits copyfiles $(ECHOREDIR) $(DATE) > 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 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) $(MAKEINC): $(GPARMAKE) $(CREATELST) $(Q)$(MAKE) $(TEST_OUTPUTDIR) $(Q)$(CREATELST) filelisttest.lst $(TESTDIRS) $(Q)$(GPARMAKE) $(MAKEINC) test 1 $(CHUNKSIZE) @filelisttest.lst $(Q)$(CREATELST) filelisttbs.lst tbs $(Q)$(GPARMAKE) -a $(MAKEINC) tbs 10000 $(CHUNKSIZE) @filelisttbs.lst $(Q)$(CREATELST) filelisttbf.lst tbf $(Q)$(GPARMAKE) -a $(MAKEINC) tbf 15000 $(CHUNKSIZE) @filelisttbf.lst $(Q)$(CREATELST) filelistwebtbs.lst webtbs $(Q)$(GPARMAKE) -a $(MAKEINC) webtbs 20000 $(CHUNKSIZE) @filelistwebtbs.lst $(Q)$(CREATELST) filelistwebtbf.lst webtbf $(Q)$(GPARMAKE) -a $(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)))) 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 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 ($(SVNVERSION),) $(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 cd $(subst /,\,$(TEST_OUTPUTDIR)) && gnufind . -name "*.log" -o -name "*.elg" > tar.lst $(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)) $(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))" && "..\..\$(PREPUP)" $(DB_TARGZ) else cd "$(TEST_OUTPUTDIR)" && "../../$(PREPUP)" $(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)"