diff --git a/.gitattributes b/.gitattributes index b678f1a05e..f7aefe9fc6 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5175,6 +5175,12 @@ packages/libenet/src/enetprotocol.pp svneol=native#text/plain packages/libenet/src/enettime.pp svneol=native#text/plain packages/libenet/src/enettypes.pp svneol=native#text/plain packages/libenet/src/uenetclass.pp svneol=native#text/plain +packages/libfontconfig/Makefile svneol=native#text/plain +packages/libfontconfig/Makefile.fpc svneol=native#text/plain +packages/libfontconfig/examples/testfc.lpi svneol=native#text/plain +packages/libfontconfig/examples/testfc.pp svneol=native#text/plain +packages/libfontconfig/fpmake.pp svneol=native#text/plain +packages/libfontconfig/src/libfontconfig.pp svneol=native#text/plain packages/libgbafpc/Makefile svneol=native#text/plain packages/libgbafpc/Makefile.fpc svneol=native#text/plain packages/libgbafpc/Makefile.fpc.fpcmake svneol=native#text/plain diff --git a/packages/fpmake_add.inc b/packages/fpmake_add.inc index f9007edbdf..94a6bc161d 100644 --- a/packages/fpmake_add.inc +++ b/packages/fpmake_add.inc @@ -134,5 +134,6 @@ add_odata(ADirectory+IncludeTrailingPathDelimiter('odata')); add_pastojs(ADirectory+IncludeTrailingPathDelimiter('pastojs')); add_libgc(ADirectory+IncludeTrailingPathDelimiter('libgc')); + add_libfontconfig(ADirectory+IncludeTrailingPathDelimiter('libfontconfig')); add_fcl_report(ADirectory+IncludeTrailingPathDelimiter('fcl-report')); \ No newline at end of file diff --git a/packages/fpmake_proc.inc b/packages/fpmake_proc.inc index 9c62c84bf8..d1645b441b 100644 --- a/packages/fpmake_proc.inc +++ b/packages/fpmake_proc.inc @@ -765,6 +765,12 @@ begin {$include libgc/fpmake.pp} end; +procedure add_libfontconfig(const ADirectory: string); +begin + with Installer do +{$include libfontconfig/fpmake.pp} +end; + procedure add_fcl_report(const ADirectory: string); begin with Installer do diff --git a/packages/libfontconfig/Makefile b/packages/libfontconfig/Makefile new file mode 100644 index 0000000000..eec6c7b207 --- /dev/null +++ b/packages/libfontconfig/Makefile @@ -0,0 +1,2510 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2017-05-30 rev 36373] +# +default: all +MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx 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-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos 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-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-iphonesim x86_64-aros x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android arm-aros powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-embedded i8086-msdos i8086-win16 aarch64-linux aarch64-darwin wasm-wasm sparc64-linux +BSDs = freebsd netbsd openbsd darwin dragonfly +UNIXs = linux $(BSDs) solaris qnx haiku aix +LIMIT83fs = go32v2 os2 emx watcom msdos win16 +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 +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),) +ifeq ($(OS_SOURCE),darwin) +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 +ifeq ($(CPU_TARGET),mipsel) +BINUTILSPREFIX=mipsel-linux-android- +endif +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 +override PACKAGE_NAME=libfontconfig +override PACKAGE_VERSION=3.1.1 +FPMAKE_BIN_CLEAN=$(wildcard ./fpmake$(SRCEXEEXT)) +ifdef OS_TARGET +FPC_TARGETOPT+=--os=$(OS_TARGET) +endif +ifdef CPU_TARGET +FPC_TARGETOPT+=--cpu=$(CPU_TARGET) +endif +LOCALFPMAKE=./fpmake$(SRCEXEEXT) +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 +BATCHEXT=.bat +LOADEREXT=.as +EXEEXT=.exe +PPLEXT=.ppl +PPUEXT=.ppu +OEXT=.o +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),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +IMPORTLIBPREFIX=imp +endif +ifneq ($(findstring $(OS_TARGET),darwin iphonesim),) +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= +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),embedded) +ifeq ($(CPU_TARGET),i8086) +STATICLIBPREFIX= +STATICLIBEXT=.a +else +EXEEXT=.bin +endif +SHORTSUFFIX=emb +endif +ifeq ($(OS_TARGET),win16) +STATICLIBPREFIX= +STATICLIBEXT=.a +SHAREDLIBEXT=.dll +SHORTSUFFIX=w16 +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 fpmkunit +ifeq ($(FULL_TARGET),i386-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-go32v2) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-win32) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-os2) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-freebsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-beos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-haiku) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-solaris) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-qnx) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-netware) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-openbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-wdosx) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-emx) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-watcom) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-netwlibc) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-wince) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-symbian) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-nativent) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-iphonesim) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-android) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),m68k-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),m68k-freebsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),m68k-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),m68k-amiga) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),m68k-atari) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),m68k-openbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),m68k-palmos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),m68k-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),powerpc-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),powerpc-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),powerpc-amiga) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),powerpc-macos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),powerpc-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),powerpc-morphos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),powerpc-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),powerpc-wii) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),powerpc-aix) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),sparc-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),sparc-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),sparc-solaris) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),sparc-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),x86_64-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),x86_64-freebsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),x86_64-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),x86_64-solaris) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),x86_64-openbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),x86_64-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),x86_64-win64) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),x86_64-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),x86_64-iphonesim) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),x86_64-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),arm-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),arm-palmos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),arm-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),arm-wince) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),arm-gba) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),arm-nds) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),arm-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),arm-symbian) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),arm-android) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),arm-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),powerpc64-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),powerpc64-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),powerpc64-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),powerpc64-aix) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),avr-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),armeb-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),armeb-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),mips-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),mipsel-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),mipsel-android) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),jvm-java) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),jvm-android) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i8086-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i8086-msdos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),i8086-win16) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),aarch64-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),aarch64-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),wasm-wasm) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif +ifeq ($(FULL_TARGET),sparc64-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=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 +ifdef REQUIRE_PACKAGES_PASZLIB +PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_PASZLIB),) +ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)),) +UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX) +else +UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB) +endif +ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_PASZLIB)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_PASZLIB) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE) +endif +else +PACKAGEDIR_PASZLIB= +UNITDIR_PASZLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_PASZLIB),) +UNITDIR_PASZLIB:=$(firstword $(UNITDIR_PASZLIB)) +else +UNITDIR_PASZLIB= +endif +endif +ifdef UNITDIR_PASZLIB +override COMPILER_UNITDIR+=$(UNITDIR_PASZLIB) +endif +ifdef UNITDIR_FPMAKE_PASZLIB +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_PASZLIB) +endif +endif +ifdef REQUIRE_PACKAGES_FCL-PROCESS +PACKAGEDIR_FCL-PROCESS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-process/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_FCL-PROCESS),) +ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units/$(TARGETSUFFIX)),) +UNITDIR_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units/$(TARGETSUFFIX) +else +UNITDIR_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS) +endif +ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_FCL-PROCESS)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_FCL-PROCESS) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-PROCESS)/$(FPCMADE) +endif +else +PACKAGEDIR_FCL-PROCESS= +UNITDIR_FCL-PROCESS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-process/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_FCL-PROCESS),) +UNITDIR_FCL-PROCESS:=$(firstword $(UNITDIR_FCL-PROCESS)) +else +UNITDIR_FCL-PROCESS= +endif +endif +ifdef UNITDIR_FCL-PROCESS +override COMPILER_UNITDIR+=$(UNITDIR_FCL-PROCESS) +endif +ifdef UNITDIR_FPMAKE_FCL-PROCESS +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-PROCESS) +endif +endif +ifdef REQUIRE_PACKAGES_HASH +PACKAGEDIR_HASH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /hash/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_HASH),) +ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)),) +UNITDIR_HASH=$(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX) +else +UNITDIR_HASH=$(PACKAGEDIR_HASH) +endif +ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_HASH)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_HASH)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_HASH) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_HASH)/$(FPCMADE) +endif +else +PACKAGEDIR_HASH= +UNITDIR_HASH:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /hash/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_HASH),) +UNITDIR_HASH:=$(firstword $(UNITDIR_HASH)) +else +UNITDIR_HASH= +endif +endif +ifdef UNITDIR_HASH +override COMPILER_UNITDIR+=$(UNITDIR_HASH) +endif +ifdef UNITDIR_FPMAKE_HASH +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_HASH) +endif +endif +ifdef REQUIRE_PACKAGES_LIBTAR +PACKAGEDIR_LIBTAR:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libtar/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_LIBTAR),) +ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units/$(TARGETSUFFIX)),) +UNITDIR_LIBTAR=$(PACKAGEDIR_LIBTAR)/units/$(TARGETSUFFIX) +else +UNITDIR_LIBTAR=$(PACKAGEDIR_LIBTAR) +endif +ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_LIBTAR)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_LIBTAR) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBTAR)/$(FPCMADE) +endif +else +PACKAGEDIR_LIBTAR= +UNITDIR_LIBTAR:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libtar/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_LIBTAR),) +UNITDIR_LIBTAR:=$(firstword $(UNITDIR_LIBTAR)) +else +UNITDIR_LIBTAR= +endif +endif +ifdef UNITDIR_LIBTAR +override COMPILER_UNITDIR+=$(UNITDIR_LIBTAR) +endif +ifdef UNITDIR_FPMAKE_LIBTAR +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_LIBTAR) +endif +endif +ifdef REQUIRE_PACKAGES_FPMKUNIT +PACKAGEDIR_FPMKUNIT:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fpmkunit/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_FPMKUNIT),) +ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units/$(TARGETSUFFIX)),) +UNITDIR_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units/$(TARGETSUFFIX) +else +UNITDIR_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT) +endif +ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_FPMKUNIT)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_FPMKUNIT) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_FPMKUNIT)/$(FPCMADE) +endif +else +PACKAGEDIR_FPMKUNIT= +UNITDIR_FPMKUNIT:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fpmkunit/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_FPMKUNIT),) +UNITDIR_FPMKUNIT:=$(firstword $(UNITDIR_FPMKUNIT)) +else +UNITDIR_FPMKUNIT= +endif +endif +ifdef UNITDIR_FPMKUNIT +override COMPILER_UNITDIR+=$(UNITDIR_FPMKUNIT) +endif +ifdef UNITDIR_FPMAKE_FPMKUNIT +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FPMKUNIT) +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 +ifneq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(CPU_TARGET),i386) +FPCCPUOPT:=-OG2p3 +endif +ifeq ($(CPU_TARGET),powerpc) +FPCCPUOPT:=-O1r +endif +else +FPCCPUOPT:=-O2 +endif +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 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 +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +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 +override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) +ifneq ($(UNITTARGETDIRPREFIX),) +override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES))) +override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES)))) +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_distinstall +fpc_distinstall: install exampleinstall +.PHONY: fpc_zipinstall fpc_zipsourceinstall fpc_zipexampleinstall +ifndef PACKDIR +ifndef inUnix +PACKDIR=$(BASEDIR)/../fpc-pack +else +PACKDIR=/tmp/fpc-pack +endif +endif +ifndef ZIPNAME +ifdef DIST_ZIPNAME +ZIPNAME=$(DIST_ZIPNAME) +else +ZIPNAME=$(PACKAGE_NAME) +endif +endif +ifndef FULLZIPNAME +FULLZIPNAME=$(ZIPCROSSPREFIX)$(ZIPPREFIX)$(ZIPNAME)$(ZIPSUFFIX) +endif +ifndef ZIPTARGET +ifdef DIST_ZIPTARGET +ZIPTARGET=DIST_ZIPTARGET +else +ZIPTARGET=install +endif +endif +ifndef USEZIP +ifdef inUnix +USETAR=1 +endif +endif +ifndef inUnix +USEZIPWRAPPER=1 +endif +ifdef USEZIPWRAPPER +ZIPPATHSEP=$(PATHSEP) +ZIPWRAPPER=$(subst /,$(PATHSEP),$(DIST_DESTDIR)/fpczip$(SRCBATCHEXT)) +else +ZIPPATHSEP=/ +endif +ZIPCMD_CDPACK:=cd $(subst /,$(ZIPPATHSEP),$(PACKDIR)) +ZIPCMD_CDBASE:=cd $(subst /,$(ZIPPATHSEP),$(BASEDIR)) +ifdef USETAR +ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(TAREXT) +ZIPCMD_ZIP:=$(TARPROG) c$(TAROPT)f $(ZIPDESTFILE) * +else +ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(ZIPEXT) +ZIPCMD_ZIP:=$(subst /,$(ZIPPATHSEP),$(ZIPPROG)) -Dr $(ZIPOPT) $(ZIPDESTFILE) * +endif +fpc_zipinstall: + $(MAKE) $(ZIPTARGET) INSTALL_PREFIX=$(PACKDIR) ZIPINSTALL=1 + $(MKDIR) $(DIST_DESTDIR) + $(DEL) $(ZIPDESTFILE) +ifdef USEZIPWRAPPER +ifneq ($(ECHOREDIR),echo) + $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDPACK))" > $(ZIPWRAPPER) + $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" >> $(ZIPWRAPPER) + $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDBASE))" >> $(ZIPWRAPPER) +else + echo $(ZIPCMD_CDPACK) > $(ZIPWRAPPER) + echo $(ZIPCMD_ZIP) >> $(ZIPWRAPPER) + echo $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER) +endif +ifdef inUnix + /bin/sh $(ZIPWRAPPER) +else +ifdef RUNBATCH + $(RUNBATCH) $(ZIPWRAPPER) +else + $(ZIPWRAPPER) +endif +endif + $(DEL) $(ZIPWRAPPER) +else + $(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE) +endif + $(DELTREE) $(PACKDIR) +fpc_zipsourceinstall: + $(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall ZIPSUFFIX=$(ZIPSOURCESUFFIX) +fpc_zipexampleinstall: +ifdef HASEXAMPLES + $(MAKE) fpc_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=$(ZIPEXAMPLESUFFIX) +endif +fpc_zipdistinstall: + $(MAKE) fpc_zipinstall ZIPTARGET=distinstall +.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)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) +ifdef DEBUGSYMEXT +override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES)) +endif +override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES)) +override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES))) +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) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE) + -$(DEL) *$(ASMEXT) *_ppas$(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 + -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT) +ifneq ($(PPUEXT),.ppu) + -$(DEL) *.o *.ppu *.a +endif + -$(DELTREE) *$(SMARTEXT) + -$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE) + -$(DEL) *_ppas$(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 +units: +examples: +shared: +sourceinstall: fpc_sourceinstall +exampleinstall: fpc_exampleinstall +zipexampleinstall: fpc_zipexampleinstall +info: fpc_info +makefiles: fpc_makefiles +.PHONY: units examples shared sourceinstall exampleinstall zipexampleinstall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +override FPCOPT:=$(filter-out -FU%,$(FPCOPT)) +override FPCOPT:=$(filter-out -FE%,$(FPCOPT)) +override FPCOPT:=$(filter-out $(addprefix -Fu,$(COMPILER_UNITDIR)),$(FPCOPT))# Compose general fpmake-parameters +ifdef FPMAKEOPT +FPMAKE_OPT+=$(FPMAKEOPT) +endif +FPMAKE_OPT+=--localunitdir=../.. +FPMAKE_OPT+=--globalunitdir=.. +FPMAKE_OPT+=$(FPC_TARGETOPT) +FPMAKE_OPT+=$(addprefix -o ,$(FPCOPT)) +FPMAKE_OPT+=--compiler=$(FPC) +FPMAKE_OPT+=-bu +.NOTPARALLEL: +fpmake$(SRCEXEEXT): fpmake.pp + $(FPCFPMAKE) fpmake.pp $(FPMAKE_SKIP_CONFIG) $(addprefix -Fu,$(COMPILER_FPMAKE_UNITDIR)) $(FPCMAKEOPT) $(OPT) +all: fpmake$(SRCEXEEXT) + $(LOCALFPMAKE) compile $(FPMAKE_OPT) +smart: fpmake$(SRCEXEEXT) + $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -XX -o -CX +release: fpmake$(SRCEXEEXT) + $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dRELEASE +debug: fpmake$(SRCEXEEXT) + $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dDEBUG +ifeq ($(FPMAKE_BIN_CLEAN),) +clean: +else +clean: + $(FPMAKE_BIN_CLEAN) clean $(FPMAKE_OPT) +endif +ifeq ($(FPMAKE_BIN_CLEAN),) +distclean: $(addsuffix _distclean,$(TARGET_DIRS)) fpc_cleanall +else +distclean: +ifdef inUnix + { $(FPMAKE_BIN_CLEAN) distclean $(FPMAKE_OPT); if [ $$? != "0" ]; then { echo Something wrong with fpmake exectable. Remove the executable and call make recursively to recover.; $(DEL) $(FPMAKE_BIN_CLEAN); $(MAKE) fpc_cleanall; }; fi; } +else + $(FPMAKE_BIN_CLEAN) distclean $(FPMAKE_OPT) +endif + -$(DEL) $(LOCALFPMAKE) +endif +cleanall: distclean +install: fpmake$(SRCEXEEXT) +ifdef UNIXHier + $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR) +else + $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --baseinstalldir=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) +endif +distinstall: fpmake$(SRCEXEEXT) +ifdef UNIXHier + $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR) -ie -fsp 0 +else + $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --baseinstalldir=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) -ie -fsp 0 +endif +zipinstall: fpmake$(SRCEXEEXT) + $(LOCALFPMAKE) zipinstall $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) +zipdistinstall: fpmake$(SRCEXEEXT) + $(LOCALFPMAKE) zipinstall $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) -ie -fsp 0 +zipsourceinstall: fpmake$(SRCEXEEXT) +ifdef UNIXHier + $(LOCALFPMAKE) archive $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) --prefix=share/src/fpc-\$$\(PACKAGEVERSION\)/$(INSTALL_FPCSUBDIR)/\$$\(PACKAGEDIRECTORY\) +else + $(LOCALFPMAKE) archive $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) --prefix=source\\$(INSTALL_FPCSUBDIR)\\\$$\(PACKAGEDIRECTORY\) +endif diff --git a/packages/libfontconfig/Makefile.fpc b/packages/libfontconfig/Makefile.fpc new file mode 100644 index 0000000000..2750d04ef6 --- /dev/null +++ b/packages/libfontconfig/Makefile.fpc @@ -0,0 +1,102 @@ +# +# Makefile.fpc for running fpmake +# + +[package] +name=libfontconfig +version=3.1.1 + +[require] +packages=rtl fpmkunit + +[install] +fpcpackage=y + +[default] +fpcdir=../.. + +[prerules] +FPMAKE_BIN_CLEAN=$(wildcard ./fpmake$(SRCEXEEXT)) +ifdef OS_TARGET +FPC_TARGETOPT+=--os=$(OS_TARGET) +endif +ifdef CPU_TARGET +FPC_TARGETOPT+=--cpu=$(CPU_TARGET) +endif +LOCALFPMAKE=./fpmake$(SRCEXEEXT) + +[rules] +# Do not pass the Makefile's unit and binary target locations. Fpmake uses it's own. +override FPCOPT:=$(filter-out -FU%,$(FPCOPT)) +override FPCOPT:=$(filter-out -FE%,$(FPCOPT)) +# Do not pass the package-unitdirectories. Fpmake adds those and this way they don't apear in the .fpm +override FPCOPT:=$(filter-out $(addprefix -Fu,$(COMPILER_UNITDIR)),$(FPCOPT))# Compose general fpmake-parameters +# Compose general fpmake-parameters +ifdef FPMAKEOPT +FPMAKE_OPT+=$(FPMAKEOPT) +endif +FPMAKE_OPT+=--localunitdir=../.. +FPMAKE_OPT+=--globalunitdir=.. +FPMAKE_OPT+=$(FPC_TARGETOPT) +FPMAKE_OPT+=$(addprefix -o ,$(FPCOPT)) +FPMAKE_OPT+=--compiler=$(FPC) +FPMAKE_OPT+=-bu +.NOTPARALLEL: + +fpmake$(SRCEXEEXT): fpmake.pp + $(FPCFPMAKE) fpmake.pp $(FPMAKE_SKIP_CONFIG) $(addprefix -Fu,$(COMPILER_FPMAKE_UNITDIR)) $(FPCMAKEOPT) $(OPT) +all: fpmake$(SRCEXEEXT) + $(LOCALFPMAKE) compile $(FPMAKE_OPT) +smart: fpmake$(SRCEXEEXT) + $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -XX -o -CX +release: fpmake$(SRCEXEEXT) + $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dRELEASE +debug: fpmake$(SRCEXEEXT) + $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dDEBUG +# If no fpmake exists and (dist)clean is called, do not try to build fpmake, it will +# most often fail because the dependencies are cleared. +# In case of a clean, simply do nothing +ifeq ($(FPMAKE_BIN_CLEAN),) +clean: +else +clean: + $(FPMAKE_BIN_CLEAN) clean $(FPMAKE_OPT) +endif +# In case of a distclean, perform an 'old'-style distclean. This to avoid problems +# when the package is compiled using fpcmake prior to running this clean using fpmake +ifeq ($(FPMAKE_BIN_CLEAN),) +distclean: $(addsuffix _distclean,$(TARGET_DIRS)) fpc_cleanall +else +distclean: +ifdef inUnix + { $(FPMAKE_BIN_CLEAN) distclean $(FPMAKE_OPT); if [ $$? != "0" ]; then { echo Something wrong with fpmake exectable. Remove the executable and call make recursively to recover.; $(DEL) $(FPMAKE_BIN_CLEAN); $(MAKE) fpc_cleanall; }; fi; } +else + $(FPMAKE_BIN_CLEAN) distclean $(FPMAKE_OPT) +endif + -$(DEL) $(LOCALFPMAKE) +endif +cleanall: distclean +install: fpmake$(SRCEXEEXT) +ifdef UNIXHier + $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR) +else + $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --baseinstalldir=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) +endif +# distinstall also installs the example-sources and omits the location of the source- +# files from the fpunits.cfg files. +distinstall: fpmake$(SRCEXEEXT) +ifdef UNIXHier + $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR) -ie -fsp 0 +else + $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --baseinstalldir=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) -ie -fsp 0 +endif +zipinstall: fpmake$(SRCEXEEXT) + $(LOCALFPMAKE) zipinstall $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) +zipdistinstall: fpmake$(SRCEXEEXT) + $(LOCALFPMAKE) zipinstall $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) -ie -fsp 0 +zipsourceinstall: fpmake$(SRCEXEEXT) +ifdef UNIXHier + $(LOCALFPMAKE) archive $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) --prefix=share/src/fpc-\$$\(PACKAGEVERSION\)/$(INSTALL_FPCSUBDIR)/\$$\(PACKAGEDIRECTORY\) +else + $(LOCALFPMAKE) archive $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) --prefix=source\\$(INSTALL_FPCSUBDIR)\\\$$\(PACKAGEDIRECTORY\) +endif diff --git a/packages/libfontconfig/examples/testfc.lpi b/packages/libfontconfig/examples/testfc.lpi new file mode 100644 index 0000000000..75d7c875ac --- /dev/null +++ b/packages/libfontconfig/examples/testfc.lpi @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + <UseAppBundle Value="False"/> + <ResourceType Value="res"/> + </General> + <VersionInfo> + <StringTable ProductVersion=""/> + </VersionInfo> + <BuildModes Count="1"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <Units Count="1"> + <Unit0> + <Filename Value="testfc.pp"/> + <IsPartOfProject Value="True"/> + </Unit0> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <Target> + <Filename Value="testfc"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <OtherUnitFiles Value="../src"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff --git a/packages/libfontconfig/examples/testfc.pp b/packages/libfontconfig/examples/testfc.pp new file mode 100644 index 0000000000..938d88bd68 --- /dev/null +++ b/packages/libfontconfig/examples/testfc.pp @@ -0,0 +1,34 @@ +uses dynlibs, libfontconfig; + +Var + FC : PFcConfig; + FL : PFcStrList; + P : PChar; + +begin + Writeln('Load 1: ',loadfontconfiglib('')); + Writeln('Load 2: ',loadfontconfiglib('')); + FC:=FcInitLoadConfigAndFonts(); + if FC=Nil then + begin + Writeln('Failed to load config'); + Halt(1); + end; + FL:=FcConfigGetFontDirs(FC); + if FL<>Nil then + begin + P:=FcStrListNext(FL); + While P<>Nil do + begin + Writeln('Found font dir: ',P); + P:=FcStrListNext(FL); + end; + FcStrListDone(FL); + end; + FcConfigDestroy(FC); + FCFini(); + Writeln('Done'); + Writeln('Unload 1: ',UnLoadFontConfigLib); + Writeln('Unload 2: ',UnLoadFontConfigLib); + Writeln('C'); +end. diff --git a/packages/libfontconfig/fpmake.pp b/packages/libfontconfig/fpmake.pp new file mode 100644 index 0000000000..1430784ca8 --- /dev/null +++ b/packages/libfontconfig/fpmake.pp @@ -0,0 +1,31 @@ +{$ifndef ALLPACKAGES} +{$mode objfpc}{$H+} +program fpmake; + +uses fpmkunit; + +Var + P : TPackage; + T : TTarget; +begin + With Installer do + begin +{$endif ALLPACKAGES} + + P:=AddPackage('libfontconfig'); + P.ShortName:='libfc'; +{$ifdef ALLPACKAGES} + P.Directory:=ADirectory; +{$endif ALLPACKAGES} + P.Version:='3.1.1'; + P.SourcePath.Add('src'); + P.IncludePath.Add('src'); + P.OSes := [linux,freebsd, darwin]; // Darwin was tested! + T:=P.Targets.AddUnit('libfontconfig.pp'); + P.ExamplePath.Add('examples'); + P.Targets.AddExampleProgram('testfc.pp'); +{$ifndef ALLPACKAGES} + Run; + end; +end. +{$endif ALLPACKAGES} diff --git a/packages/libfontconfig/src/libfontconfig.pp b/packages/libfontconfig/src/libfontconfig.pp new file mode 100644 index 0000000000..8ed0b94c93 --- /dev/null +++ b/packages/libfontconfig/src/libfontconfig.pp @@ -0,0 +1,1066 @@ + +{$mode objfpc} +{$H+} +unit libfontconfig; +{ + Automatically converted by H2Pas 1.0.0 from fc.h + The following command line parameters were used: + -l + libfontconfig.so + -P + -p + -S + -T + -C + -c + fc.h +} + +interface + +uses + ctypes; + +Const +{$ifdef darwin} + DefaultLibName = 'libfontconfig.so'; +{$else} + DefaultLibName = 'libfontconfig.dylib'; +{$endif} + +const + FC_MAJOR = 2; + FC_MINOR = 11; + FC_REVISION = 94; + FC_VERSION = ((FC_MAJOR * 10000) + (FC_MINOR * 100) + (FC_REVISION)); + FC_CACHE_VERSION_NUMBER = 6; + FC_CACHE_VERSION = '6'; // Stringify of FC_CACHE_VERSION_NUMBER + + FcTrue = 1; + FcFalse = 0; + FC_FAMILY = 'family'; + FC_STYLE = 'style'; + FC_SLANT = 'slant'; + FC_WEIGHT = 'weight'; + FC_SIZE = 'size'; + FC_ASPECT = 'aspect'; + FC_PIXEL_SIZE = 'pixelsize'; + FC_SPACING = 'spacing'; + FC_FOUNDRY = 'foundry'; + FC_ANTIALIAS = 'antialias'; + FC_HINTING = 'hinting'; + FC_HINT_STYLE = 'hintstyle'; + FC_VERTICAL_LAYOUT = 'verticallayout'; + FC_AUTOHINT = 'autohint'; + FC_GLOBAL_ADVANCE = 'globaladvance'; + FC_WIDTH = 'width'; + FC_FILE = 'file'; + FC_INDEX = 'index'; + FC_FT_FACE = 'ftface'; + FC_RASTERIZER = 'rasterizer'; + FC_OUTLINE = 'outline'; + FC_SCALABLE = 'scalable'; + FC_COLOR = 'color'; + FC_SCALE = 'scale'; + FC_SYMBOL = 'symbol'; + FC_DPI = 'dpi'; + FC_RGBA = 'rgba'; + FC_MINSPACE = 'minspace'; + FC_SOURCE = 'source'; + FC_CHARSET = 'charset'; + FC_LANG = 'lang'; + FC_FONTVERSION = 'fontversion'; + FC_FULLNAME = 'fullname'; + FC_FAMILYLANG = 'familylang'; + FC_STYLELANG = 'stylelang'; + FC_FULLNAMELANG = 'fullnamelang'; + FC_CAPABILITY = 'capability'; + FC_FONTFORMAT = 'fontformat'; + FC_EMBOLDEN = 'embolden'; + FC_EMBEDDED_BITMAP = 'embeddedbitmap'; + FC_DECORATIVE = 'decorative'; + FC_LCD_FILTER = 'lcdfilter'; + FC_FONT_FEATURES = 'fontfeatures'; + FC_NAMELANG = 'namelang'; + FC_PRGNAME = 'prgname'; + FC_HASH = 'hash'; + FC_POSTSCRIPT_NAME = 'postscriptname'; + + FC_CACHE_SUFFIX = '.cache-'+ FC_CACHE_VERSION; + FC_DIR_CACHE_FILE = 'fonts.cache-' + FC_CACHE_VERSION; + FC_USER_CACHE_FILE= '.fonts.cache-' + FC_CACHE_VERSION; + FC_CHAR_WIDTH = 'charwidth'; + FC_CHAR_HEIGHT = 'charheight'; + FC_MATRIX = 'matrix'; + FC_WEIGHT_THIN = 0; + FC_WEIGHT_EXTRALIGHT = 40; + FC_WEIGHT_ULTRALIGHT = FC_WEIGHT_EXTRALIGHT; + FC_WEIGHT_LIGHT = 50; + FC_WEIGHT_DEMILIGHT = 55; + FC_WEIGHT_SEMILIGHT = FC_WEIGHT_DEMILIGHT; + FC_WEIGHT_BOOK = 75; + FC_WEIGHT_REGULAR = 80; + FC_WEIGHT_NORMAL = FC_WEIGHT_REGULAR; + FC_WEIGHT_MEDIUM = 100; + FC_WEIGHT_DEMIBOLD = 180; + FC_WEIGHT_SEMIBOLD = FC_WEIGHT_DEMIBOLD; + FC_WEIGHT_BOLD = 200; + FC_WEIGHT_EXTRABOLD = 205; + FC_WEIGHT_ULTRABOLD = FC_WEIGHT_EXTRABOLD; + FC_WEIGHT_BLACK = 210; + FC_WEIGHT_HEAVY = FC_WEIGHT_BLACK; + FC_WEIGHT_EXTRABLACK = 215; + FC_WEIGHT_ULTRABLACK = FC_WEIGHT_EXTRABLACK; + FC_SLANT_ROMAN = 0; + FC_SLANT_ITALIC = 100; + FC_SLANT_OBLIQUE = 110; + FC_WIDTH_ULTRACONDENSED = 50; + FC_WIDTH_EXTRACONDENSED = 63; + FC_WIDTH_CONDENSED = 75; + FC_WIDTH_SEMICONDENSED = 87; + FC_WIDTH_NORMAL = 100; + FC_WIDTH_SEMIEXPANDED = 113; + FC_WIDTH_EXPANDED = 125; + FC_WIDTH_EXTRAEXPANDED = 150; + FC_WIDTH_ULTRAEXPANDED = 200; + FC_PROPORTIONAL = 0; + FC_DUAL = 90; + FC_MONO = 100; + FC_CHARCELL = 110; + FC_RGBA_UNKNOWN = 0; + FC_RGBA_RGB = 1; + FC_RGBA_BGR = 2; + FC_RGBA_VRGB = 3; + FC_RGBA_VBGR = 4; + FC_RGBA_NONE = 5; + FC_HINT_NONE = 0; + FC_HINT_SLIGHT = 1; + FC_HINT_MEDIUM = 2; + FC_HINT_FULL = 3; + FC_LCD_NONE = 0; + FC_LCD_DEFAULT = 1; + FC_LCD_LIGHT = 2; + FC_LCD_LEGACY = 3; + + FC_UTF8_MAX_LEN = 6; + +{ + Automatically converted by H2Pas 1.0.0 from fc.h + The following command line parameters were used: + -l + libfontconfig.so + -P + -p + -S + -T + -C + -c + fc.h +} + +{ Pointers to basic pascal types, inserted by h2pas conversion program.} +Type + PLongint = ^Longint; + PSmallInt = ^SmallInt; + PByte = ^Byte; + PWord = ^Word; + PDWord = ^DWord; + PDouble = ^Double; + + PStat = pointer; + +{$IFDEF FPC} +{$PACKRECORDS C} +{$ENDIF} + PFcAtomic = ^TFcAtomic; + TFCAtomic = record end; + PPFcAtomic = ^PFcAtomic; + + PFcConfig = ^TFcConfig; + TFcConfig = record end; + PPFcConfig = ^PFcConfig; + + PFcFileCache = ^TFcFileCache; + TFcFileCache = record end; + PPFcFileCache = ^PFcFileCache; + + PFcBlanks = ^TFcBlanks; + TFcBlanks = record end; + PPFcBlanks = ^PFcBlanks; + + PFcPattern = ^TFcPattern; + TFcPattern = record end; + PPFcPattern = ^PFcPattern; + + PFcStrList = ^TFcStrList; + TFcStrList = record end; + PPFcStrList = ^PFcStrList; + + PFcStrSet = ^TFcStrSet; + TFcStrSet = record end; + PPFcStrSet = ^PFcStrSet; + + PFcCharSet = ^TFcCharSet; + TFcCharSet = record end; + PPFcCharSet = ^PFcCharSet; + + PFcLangSet = ^TFcLangSet; + TFcLangSet = record end; + PPFcLangSet = ^PFcLangSet; + + PFcRange = ^TFcRange; + TFcRange = record end; + PPFcRange = ^PFcRange; + + PFcCache = ^TFcCache; + TFcCache = record end; + PPFcCache = ^PFcCache; + + PFcChar8 = Pchar; + TFcChar8 = char; + PPFcChar8 = PPChar; + + PFcChar16 = PWideChar; + TFcChar16 = WideChar; + PPFcChar16 = ^PFcChar16; + + PFcChar32 = ^TFcChar32; + TFcChar32 = cuint; + + PFcBool = ^TFcBool; + TFcBool = cint; + PFcType = ^TFcType; + TFcType = (FcTypeUnknown := -(1),FcTypeVoid,FcTypeInteger, + FcTypeDouble,FcTypeString,FcTypeBool,FcTypeMatrix, + FcTypeCharSet,FcTypeFTFace,FcTypeLangSet, + FcTypeRange); + + PFcMatrix = ^TFcMatrix; + TFcMatrix = record + xx : double; + xy : double; + yx : double; + yy : double; + end; + PPFcMatrix = ^PFcMatrix; + + PFcObjectType = ^TFcObjectType; + TFcObjectType = record + _object : pcchar; + _type : TFcType; + end; + PPFcObjectType = ^PFcObjectType; + + PFcConstant = ^TFcConstant; + TFcConstant = record + name : PFcChar8; + _object : pcchar; + value : cint; + end; + PPFcConstant = ^PFcConstant; + + PFcResult = ^TFcResult; + TFcResult = (FcResultMatch,FcResultNoMatch,FcResultTypeMismatch, FcResultNoId,FcResultOutOfMemory); + + PFcValue = ^TFcValue; + TFcValue = record + _type : TFcType; + u : record + case longint of + 0 : ( s : PFcChar8 ); + 1 : ( i : cint ); + 2 : ( b : TFcBool ); + 3 : ( d : double ); + 4 : ( m : PFcMatrix ); + 5 : ( c : PFcCharSet ); + 6 : ( f : pointer ); + 7 : ( l : PFcLangSet ); + 8 : ( r : PFcRange ); + end; + end; + PPFcValue = ^PFcValue; + + PFcFontSet = ^TFcFontSet; + TFcFontSet = record + nfont : cint; + sfont : cint; + fonts : ^PFcPattern; + end; + PPFcFontSet = ^PFcFontSet; + + PFcObjectSet = ^TFcObjectSet; + TFcObjectSet = record + nobject : cint; + sobject : cint; + objects : ^pcchar; + end; + PPFcObjectSet = ^PFcObjectSet; + + PFcMatchKind = ^TFcMatchKind; + TFcMatchKind = (FcMatchPattern,FcMatchFont,FcMatchScan); + + PFcLangResult = ^TFcLangResult; + TFcLangResult = (FcLangEqual := 0,FcLangDifferentCountry := 1, + FcLangDifferentTerritory := 1,FcLangDifferentLang := 2); + + PFcSetName = ^TFcSetName; + TFcSetName = (FcSetSystem := 0,FcSetApplication := 1); + + PFcEndian = ^TFcEndian; + TFcEndian = (FcEndianBig,FcEndianLittle); + TFcGlobalCache = TFcFileCache; + + TFcCharMap = array[0..7] of TFcChar32; + TUTF8Array = array[0..5] of TFcChar8; + +var + FcBlanksCreate : function:PFcBlanks; + FcBlanksDestroy : procedure(b:PFcBlanks); + FcBlanksAdd : function(b:PFcBlanks; ucs4:TFcChar32):TFcBool; + FcBlanksIsMember : function(b:PFcBlanks; ucs4:TFcChar32):TFcBool; + FcCacheDir : function(c:PFcCache):PFcChar8; + FcCacheCopySet : function(c:PFcCache):PFcFontSet; + FcCacheSubdir : function(c:PFcCache; i:cint):PFcChar8; + FcCacheNumSubdir : function(c:PFcCache):cint; + FcCacheNumFont : function(c:PFcCache):cint; + FcDirCacheUnlink : function(dir:PFcChar8; config:PFcConfig):TFcBool; + FcDirCacheValid : function(cache_file:PFcChar8):TFcBool; + FcDirCacheClean : function(cache_dir:PFcChar8; verbose:TFcBool):TFcBool; + FcCacheCreateTagFile : procedure(config:PFcConfig); + FcConfigHome : function:PFcChar8; + FcConfigEnableHome : function(enable:TFcBool):TFcBool; + FcConfigFilename : function(url:PFcChar8):PFcChar8; + FcConfigCreate : function:PFcConfig; + FcConfigReference : function(config:PFcConfig):PFcConfig; + FcConfigDestroy : procedure(config:PFcConfig); + FcConfigSetCurrent : function(config:PFcConfig):TFcBool; + FcConfigGetCurrent : function:PFcConfig; + FcConfigUptoDate : function(config:PFcConfig):TFcBool; + FcConfigBuildFonts : function(config:PFcConfig):TFcBool; + FcConfigGetFontDirs : function(config:PFcConfig):PFcStrList; + FcConfigGetConfigDirs : function(config:PFcConfig):PFcStrList; + FcConfigGetConfigFiles : function(config:PFcConfig):PFcStrList; + FcConfigGetCache : function(config:PFcConfig):PFcChar8; + FcConfigGetBlanks : function(config:PFcConfig):PFcBlanks; + FcConfigGetCacheDirs : function(config:PFcConfig):PFcStrList; + FcConfigGetRescanInterval : function(config:PFcConfig):cint; + FcConfigSetRescanInterval : function(config:PFcConfig; rescanInterval:cint):TFcBool; + FcConfigGetFonts : function(config:PFcConfig; aset:TFcSetName):PFcFontSet; + FcConfigAppFontAddFile : function(config:PFcConfig; afile:PFcChar8):TFcBool; + FcConfigAppFontAddDir : function(config:PFcConfig; dir:PFcChar8):TFcBool; + FcConfigAppFontClear : procedure(config:PFcConfig); + FcConfigSubstituteWithPat : function(config:PFcConfig; p:PFcPattern; p_pat:PFcPattern; kind:TFcMatchKind):TFcBool; + FcConfigSubstitute : function(config:PFcConfig; p:PFcPattern; kind:TFcMatchKind):TFcBool; + FcConfigGetSysRoot : function(config:PFcConfig):PFcChar8; + FcConfigSetSysRoot : procedure(config:PFcConfig; sysroot:PFcChar8); + FcCharSetCreate : function:PFcCharSet; + FcCharSetNew : function:PFcCharSet; + FcCharSetDestroy : procedure(fcs:PFcCharSet); + FcCharSetAddChar : function(fcs:PFcCharSet; ucs4:TFcChar32):TFcBool; + FcCharSetDelChar : function(fcs:PFcCharSet; ucs4:TFcChar32):TFcBool; + FcCharSetCopy : function(src:PFcCharSet):PFcCharSet; + FcCharSetEqual : function(a:PFcCharSet; b:PFcCharSet):TFcBool; + FcCharSetIntersect : function(a:PFcCharSet; b:PFcCharSet):PFcCharSet; + FcCharSetUnion : function(a:PFcCharSet; b:PFcCharSet):PFcCharSet; + FcCharSetSubtract : function(a:PFcCharSet; b:PFcCharSet):PFcCharSet; + FcCharSetMerge : function(a:PFcCharSet; b:PFcCharSet; changed:PFcBool):TFcBool; + FcCharSetHasChar : function(fcs:PFcCharSet; ucs4:TFcChar32):TFcBool; + FcCharSetCount : function(a:PFcCharSet):TFcChar32; + FcCharSetIntersectCount : function(a:PFcCharSet; b:PFcCharSet):TFcChar32; + FcCharSetSubtractCount : function(a:PFcCharSet; b:PFcCharSet):TFcChar32; + FcCharSetIsSubset : function(a:PFcCharSet; b:PFcCharSet):TFcBool; + FcCharSetFirstPage : function(a:PFcCharSet; map:TFcCharMap; next:PFcChar32):TFcChar32; + FcCharSetNextPage : function(a:PFcCharSet; map:TFcCharMap; next:PFcChar32):TFcChar32; + FcCharSetCoverage : function(a:PFcCharSet; page:TFcChar32; result:PFcChar32):TFcChar32; + FcValuePrint : procedure(v:TFcValue); + FcPatternPrint : procedure(p:PFcPattern); + FcFontSetPrint : procedure(s:PFcFontSet); + FcGetDefaultLangs : function:PFcStrSet; + FcDefaultSubstitute : procedure(pattern:PFcPattern); + FcFileIsDir : function(afile:PFcChar8):TFcBool; + FcFileScan : function(aset:PFcFontSet; dirs:PFcStrSet; cache:PFcFileCache; blanks:PFcBlanks; afile:PFcChar8; + force:TFcBool):TFcBool; + FcDirScan : function(aset:PFcFontSet; dirs:PFcStrSet; cache:PFcFileCache; blanks:PFcBlanks; dir:PFcChar8; + force:TFcBool):TFcBool; + FcDirSave : function(aset:PFcFontSet; dirs:PFcStrSet; dir:PFcChar8):TFcBool; + FcDirCacheLoad : function(dir:PFcChar8; config:PFcConfig; cache_file:PPFcChar8):PFcCache; + FcDirCacheRescan : function(dir:PFcChar8; config:PFcConfig):PFcCache; + FcDirCacheRead : function(dir:PFcChar8; force:TFcBool; config:PFcConfig):PFcCache; + FcDirCacheLoadFile : function(cache_file:PFcChar8; file_stat:Pstat):PFcCache; + FcDirCacheUnload : procedure(cache:PFcCache); + FcFreeTypeQuery : function(afile:PFcChar8; id:cint; blanks:PFcBlanks; count:pcint):PFcPattern; + FcFontSetCreate : function:PFcFontSet; + FcFontSetDestroy : procedure(s:PFcFontSet); + FcFontSetAdd : function(s:PFcFontSet; font:PFcPattern):TFcBool; + FcInitLoadConfig : function:PFcConfig; + FcInitLoadConfigAndFonts : function:PFcConfig; + FcInit : function:TFcBool; + FcFini : procedure; + FcGetVersion : function:cint; + FcInitReinitialize : function:TFcBool; + FcInitBringUptoDate : function:TFcBool; + FcGetLangs : function:PFcStrSet; + FcLangNormalize : function(lang:PFcChar8):PFcChar8; + FcLangGetCharSet : function(lang:PFcChar8):PFcCharSet; + FcLangSetCreate : function:PFcLangSet; + FcLangSetDestroy : procedure(ls:PFcLangSet); + FcLangSetCopy : function(ls:PFcLangSet):PFcLangSet; + FcLangSetAdd : function(ls:PFcLangSet; lang:PFcChar8):TFcBool; + FcLangSetDel : function(ls:PFcLangSet; lang:PFcChar8):TFcBool; + FcLangSetHasLang : function(ls:PFcLangSet; lang:PFcChar8):TFcLangResult; + FcLangSetCompare : function(lsa:PFcLangSet; lsb:PFcLangSet):TFcLangResult; + FcLangSetContains : function(lsa:PFcLangSet; lsb:PFcLangSet):TFcBool; + FcLangSetEqual : function(lsa:PFcLangSet; lsb:PFcLangSet):TFcBool; + FcLangSetHash : function(ls:PFcLangSet):TFcChar32; + FcLangSetGetLangs : function(ls:PFcLangSet):PFcStrSet; + FcLangSetUnion : function(a:PFcLangSet; b:PFcLangSet):PFcLangSet; + FcLangSetSubtract : function(a:PFcLangSet; b:PFcLangSet):PFcLangSet; + FcObjectSetCreate : function:PFcObjectSet; + FcObjectSetAdd : function(os:PFcObjectSet; _object:pcchar):TFcBool; + FcObjectSetDestroy : procedure(os:PFcObjectSet); + FcObjectSetBuild : function(first:pcchar; args:array of const):PFcObjectSet; + FcFontSetList : function(config:PFcConfig; sets:PPFcFontSet; nsets:cint; p:PFcPattern; os:PFcObjectSet):PFcFontSet; + FcFontList : function(config:PFcConfig; p:PFcPattern; os:PFcObjectSet):PFcFontSet; + FcAtomicCreate : function(afile:PFcChar8):PFcAtomic; + FcAtomicLock : function(atomic:PFcAtomic):TFcBool; + FcAtomicNewFile : function(atomic:PFcAtomic):PFcChar8; + FcAtomicOrigFile : function(atomic:PFcAtomic):PFcChar8; + FcAtomicReplaceOrig : function(atomic:PFcAtomic):TFcBool; + FcAtomicDeleteNew : procedure(atomic:PFcAtomic); + FcAtomicUnlock : procedure(atomic:PFcAtomic); + FcAtomicDestroy : procedure(atomic:PFcAtomic); + FcFontSetMatch : function(config:PFcConfig; sets:PPFcFontSet; nsets:cint; p:PFcPattern; result:PFcResult):PFcPattern; + FcFontMatch : function(config:PFcConfig; p:PFcPattern; result:PFcResult):PFcPattern; + FcFontRenderPrepare : function(config:PFcConfig; pat:PFcPattern; font:PFcPattern):PFcPattern; + FcFontSetSort : function(config:PFcConfig; sets:PPFcFontSet; nsets:cint; p:PFcPattern; trim:TFcBool; + csp:PPFcCharSet; result:PFcResult):PFcFontSet; + FcFontSort : function(config:PFcConfig; p:PFcPattern; trim:TFcBool; csp:PPFcCharSet; result:PFcResult):PFcFontSet; + FcFontSetSortDestroy : procedure(fs:PFcFontSet); + FcMatrixCopy : function(mat:PFcMatrix):PFcMatrix; + FcMatrixEqual : function(mat1:PFcMatrix; mat2:PFcMatrix):TFcBool; + FcMatrixMultiply : procedure(result:PFcMatrix; a:PFcMatrix; b:PFcMatrix); + FcMatrixRotate : procedure(m:PFcMatrix; c:double; s:double); + FcMatrixScale : procedure(m:PFcMatrix; sx:double; sy:double); + FcMatrixShear : procedure(m:PFcMatrix; sh:double; sv:double); + FcNameRegisterObjectTypes : function(types:PFcObjectType; ntype:cint):TFcBool; + FcNameUnregisterObjectTypes : function(types:PFcObjectType; ntype:cint):TFcBool; + FcNameGetObjectType : function(_object:pcchar):PFcObjectType; + FcNameRegisterConstants : function(consts:PFcConstant; nconsts:cint):TFcBool; + FcNameUnregisterConstants : function(consts:PFcConstant; nconsts:cint):TFcBool; + FcNameGetConstant : function(_string:PFcChar8):PFcConstant; + FcNameConstant : function(_string:PFcChar8; result:pcint):TFcBool; + FcNameParse : function(name:PFcChar8):PFcPattern; + FcNameUnparse : function(pat:PFcPattern):PFcChar8; + FcPatternCreate : function:PFcPattern; + FcPatternDuplicate : function(p:PFcPattern):PFcPattern; + FcPatternReference : procedure(p:PFcPattern); + FcPatternFilter : function(p:PFcPattern; os:PFcObjectSet):PFcPattern; + FcValueDestroy : procedure(v:TFcValue); + FcValueEqual : function(va:TFcValue; vb:TFcValue):TFcBool; + FcValueSave : function(v:TFcValue):TFcValue; + FcPatternDestroy : procedure(p:PFcPattern); + FcPatternEqual : function(pa:PFcPattern; pb:PFcPattern):TFcBool; + FcPatternEqualSubset : function(pa:PFcPattern; pb:PFcPattern; os:PFcObjectSet):TFcBool; + FcPatternHash : function(p:PFcPattern):TFcChar32; + FcPatternAdd : function(p:PFcPattern; _object:pcchar; value:TFcValue; append:TFcBool):TFcBool; + FcPatternAddWeak : function(p:PFcPattern; _object:pcchar; value:TFcValue; append:TFcBool):TFcBool; + FcPatternGet : function(p:PFcPattern; _object:pcchar; id:cint; v:PFcValue):TFcResult; + FcPatternDel : function(p:PFcPattern; _object:pcchar):TFcBool; + FcPatternRemove : function(p:PFcPattern; _object:pcchar; id:cint):TFcBool; + FcPatternAddInteger : function(p:PFcPattern; _object:pcchar; i:cint):TFcBool; + FcPatternAddDouble : function(p:PFcPattern; _object:pcchar; d:double):TFcBool; + FcPatternAddString : function(p:PFcPattern; _object:pcchar; s:PFcChar8):TFcBool; + FcPatternAddMatrix : function(p:PFcPattern; _object:pcchar; s:PFcMatrix):TFcBool; + FcPatternAddCharSet : function(p:PFcPattern; _object:pcchar; c:PFcCharSet):TFcBool; + FcPatternAddBool : function(p:PFcPattern; _object:pcchar; b:TFcBool):TFcBool; + FcPatternAddLangSet : function(p:PFcPattern; _object:pcchar; ls:PFcLangSet):TFcBool; + FcPatternAddRange : function(p:PFcPattern; _object:pcchar; r:PFcRange):TFcBool; + FcPatternGetInteger : function(p:PFcPattern; _object:pcchar; n:cint; i:pcint):TFcResult; + FcPatternGetDouble : function(p:PFcPattern; _object:pcchar; n:cint; d:Pdouble):TFcResult; + FcPatternGetString : function(p:PFcPattern; _object:pcchar; n:cint; s:PPFcChar8):TFcResult; + FcPatternGetMatrix : function(p:PFcPattern; _object:pcchar; n:cint; s:PPFcMatrix):TFcResult; + FcPatternGetCharSet : function(p:PFcPattern; _object:pcchar; n:cint; c:PPFcCharSet):TFcResult; + FcPatternGetBool : function(p:PFcPattern; _object:pcchar; n:cint; b:PFcBool):TFcResult; + FcPatternGetLangSet : function(p:PFcPattern; _object:pcchar; n:cint; ls:PPFcLangSet):TFcResult; + FcPatternGetRange : function(p:PFcPattern; _object:pcchar; id:cint; r:PPFcRange):TFcResult; + FcPatternBuild : function(p:PFcPattern; args:array of const):PFcPattern; + FcPatternFormat : function(pat:PFcPattern; format:PFcChar8):PFcChar8; + FcRangeCreateDouble : function(_begin:double; _end:double):PFcRange; + FcRangeCreateInteger : function(_begin:TFcChar32; _end:TFcChar32):PFcRange; + FcRangeDestroy : procedure(range:PFcRange); + FcRangeCopy : function(r:PFcRange):PFcRange; + FcRangeGetDouble : function(range:PFcRange; _begin:Pdouble; _end:Pdouble):TFcBool; + FcWeightFromOpenType : function(ot_weight:cint):cint; + FcWeightToOpenType : function(fc_weight:cint):cint; + FcStrCopy : function(s:PFcChar8):PFcChar8; + FcStrCopyFilename : function(s:PFcChar8):PFcChar8; + FcStrPlus : function(s1:PFcChar8; s2:PFcChar8):PFcChar8; + FcStrFree : procedure(s:PFcChar8); + FcStrDowncase : function(s:PFcChar8):PFcChar8; + FcStrCmpIgnoreCase : function(s1:PFcChar8; s2:PFcChar8):cint; + FcStrCmp : function(s1:PFcChar8; s2:PFcChar8):cint; + FcStrStrIgnoreCase : function(s1:PFcChar8; s2:PFcChar8):PFcChar8; + FcStrStr : function(s1:PFcChar8; s2:PFcChar8):PFcChar8; + FcUtf8ToUcs4 : function(src_orig:PFcChar8; dst:PFcChar32; len:cint):cint; + FcUtf8Len : function(_string:PFcChar8; len:cint; nchar:pcint; wchar:pcint):TFcBool; + FcUcs4ToUtf8 : function(ucs4:TFcChar32; dest: TUTF8Array):cint; + FcUtf16ToUcs4 : function(src_orig:PFcChar8; endian:TFcEndian; dst:PFcChar32; len:cint):cint; + FcUtf16Len : function(_string:PFcChar8; endian:TFcEndian; len:cint; nchar:pcint; wchar:pcint):TFcBool; + FcStrDirname : function(afile:PFcChar8):PFcChar8; + FcStrBasename : function(afile:PFcChar8):PFcChar8; + FcStrSetCreate : function:PFcStrSet; + FcStrSetMember : function(aset:PFcStrSet; s:PFcChar8):TFcBool; + FcStrSetEqual : function(sa:PFcStrSet; sb:PFcStrSet):TFcBool; + FcStrSetAdd : function(aset:PFcStrSet; s:PFcChar8):TFcBool; + FcStrSetAddFilename : function(aset:PFcStrSet; s:PFcChar8):TFcBool; + FcStrSetDel : function(aset:PFcStrSet; s:PFcChar8):TFcBool; + FcStrSetDestroy : procedure(aset:PFcStrSet); + FcStrListCreate : function(aset:PFcStrSet):PFcStrList; + FcStrListFirst : procedure(list:PFcStrList); + FcStrListNext : function(list:PFcStrList):PFcChar8; + FcStrListDone : procedure(list:PFcStrList); + FcConfigParseAndLoad : function(config:PFcConfig; afile:PFcChar8; complain:TFcBool):TFcBool; + +// Macros +Procedure FcMatrixInit(out m : TFCMatrix); +function FC_CHARSET_DONE : TFcChar32; +function FcIsUpper(c : longint) : Boolean; +function FcIsLower(c : longint) : Boolean; +function FcToLower(c : longint) : longint; + +Function LoadFontConfigLib(Const ALibName : String; RaiseError : Boolean = True) : Integer; +Function UnLoadFontConfigLib : Integer; +Function FontConfigLibLoaded : Boolean; + +implementation + +uses + SysUtils; + +Procedure FcMatrixInit(out m : TFCMatrix); + +begin + m.xx:=1; + m.yy:=1; +end; + +function FC_CHARSET_DONE : TFcChar32; +begin + FC_CHARSET_DONE:=TFcChar32(-(1)); +end; + +function FcIsUpper(c : longint) : boolean; +begin + FcIsUpper:=(Ord('A')<=c) and (c<=Ord('Z')); +end; + +function FcIsLower(c : longint) : boolean; +begin + FcIsLower:=(Ord('a')<=c) and (c<=Ord('z')); +end; + +function FcToLower(c : longint) : longint; + +var + if_local1 : longint; + +begin + if FcIsUpper(c) then + if_local1:=c-Ord('A')+Ord('a') + else + if_local1:=c; + FcToLower:=if_local1; +end; + + + +var + hlib : tlibhandle; + hcount : integer; + loadedlib : string; + + +Function FontConfigLibLoaded : Boolean; + +begin + Result:=hLib<>NilHandle; +end; + +procedure Freefc; + +begin + if hlib<>NilHandle then + FreeLibrary(hlib); + hlib:=NilHandle; + FcBlanksCreate:=nil; + FcBlanksDestroy:=nil; + FcBlanksAdd:=nil; + FcBlanksIsMember:=nil; + FcCacheDir:=nil; + FcCacheCopySet:=nil; + FcCacheSubdir:=nil; + FcCacheNumSubdir:=nil; + FcCacheNumFont:=nil; + FcDirCacheUnlink:=nil; + FcDirCacheValid:=nil; + FcDirCacheClean:=nil; + FcCacheCreateTagFile:=nil; + FcConfigHome:=nil; + FcConfigEnableHome:=nil; + FcConfigFilename:=nil; + FcConfigCreate:=nil; + FcConfigReference:=nil; + FcConfigDestroy:=nil; + FcConfigSetCurrent:=nil; + FcConfigGetCurrent:=nil; + FcConfigUptoDate:=nil; + FcConfigBuildFonts:=nil; + FcConfigGetFontDirs:=nil; + FcConfigGetConfigDirs:=nil; + FcConfigGetConfigFiles:=nil; + FcConfigGetCache:=nil; + FcConfigGetBlanks:=nil; + FcConfigGetCacheDirs:=nil; + FcConfigGetRescanInterval:=nil; + FcConfigSetRescanInterval:=nil; + FcConfigGetFonts:=nil; + FcConfigAppFontAddFile:=nil; + FcConfigAppFontAddDir:=nil; + FcConfigAppFontClear:=nil; + FcConfigSubstituteWithPat:=nil; + FcConfigSubstitute:=nil; + FcConfigGetSysRoot:=nil; + FcConfigSetSysRoot:=nil; + FcCharSetCreate:=nil; + FcCharSetNew:=nil; + FcCharSetDestroy:=nil; + FcCharSetAddChar:=nil; + FcCharSetDelChar:=nil; + FcCharSetCopy:=nil; + FcCharSetEqual:=nil; + FcCharSetIntersect:=nil; + FcCharSetUnion:=nil; + FcCharSetSubtract:=nil; + FcCharSetMerge:=nil; + FcCharSetHasChar:=nil; + FcCharSetCount:=nil; + FcCharSetIntersectCount:=nil; + FcCharSetSubtractCount:=nil; + FcCharSetIsSubset:=nil; + FcCharSetFirstPage:=nil; + FcCharSetNextPage:=nil; + FcCharSetCoverage:=nil; + FcValuePrint:=nil; + FcPatternPrint:=nil; + FcFontSetPrint:=nil; + FcGetDefaultLangs:=nil; + FcDefaultSubstitute:=nil; + FcFileIsDir:=nil; + FcFileScan:=nil; + FcDirScan:=nil; + FcDirSave:=nil; + FcDirCacheLoad:=nil; + FcDirCacheRescan:=nil; + FcDirCacheRead:=nil; + FcDirCacheLoadFile:=nil; + FcDirCacheUnload:=nil; + FcFreeTypeQuery:=nil; + FcFontSetCreate:=nil; + FcFontSetDestroy:=nil; + FcFontSetAdd:=nil; + FcInitLoadConfig:=nil; + FcInitLoadConfigAndFonts:=nil; + FcInit:=nil; + FcFini:=nil; + FcGetVersion:=nil; + FcInitReinitialize:=nil; + FcInitBringUptoDate:=nil; + FcGetLangs:=nil; + FcLangNormalize:=nil; + FcLangGetCharSet:=nil; + FcLangSetCreate:=nil; + FcLangSetDestroy:=nil; + FcLangSetCopy:=nil; + FcLangSetAdd:=nil; + FcLangSetDel:=nil; + FcLangSetHasLang:=nil; + FcLangSetCompare:=nil; + FcLangSetContains:=nil; + FcLangSetEqual:=nil; + FcLangSetHash:=nil; + FcLangSetGetLangs:=nil; + FcLangSetUnion:=nil; + FcLangSetSubtract:=nil; + FcObjectSetCreate:=nil; + FcObjectSetAdd:=nil; + FcObjectSetDestroy:=nil; + FcObjectSetBuild:=nil; + FcFontSetList:=nil; + FcFontList:=nil; + FcAtomicCreate:=nil; + FcAtomicLock:=nil; + FcAtomicNewFile:=nil; + FcAtomicOrigFile:=nil; + FcAtomicReplaceOrig:=nil; + FcAtomicDeleteNew:=nil; + FcAtomicUnlock:=nil; + FcAtomicDestroy:=nil; + FcFontSetMatch:=nil; + FcFontMatch:=nil; + FcFontRenderPrepare:=nil; + FcFontSetSort:=nil; + FcFontSort:=nil; + FcFontSetSortDestroy:=nil; + FcMatrixCopy:=nil; + FcMatrixEqual:=nil; + FcMatrixMultiply:=nil; + FcMatrixRotate:=nil; + FcMatrixScale:=nil; + FcMatrixShear:=nil; + FcNameRegisterObjectTypes:=nil; + FcNameUnregisterObjectTypes:=nil; + FcNameGetObjectType:=nil; + FcNameRegisterConstants:=nil; + FcNameUnregisterConstants:=nil; + FcNameGetConstant:=nil; + FcNameConstant:=nil; + FcNameParse:=nil; + FcNameUnparse:=nil; + FcPatternCreate:=nil; + FcPatternDuplicate:=nil; + FcPatternReference:=nil; + FcPatternFilter:=nil; + FcValueDestroy:=nil; + FcValueEqual:=nil; + FcValueSave:=nil; + FcPatternDestroy:=nil; + FcPatternEqual:=nil; + FcPatternEqualSubset:=nil; + FcPatternHash:=nil; + FcPatternAdd:=nil; + FcPatternAddWeak:=nil; + FcPatternGet:=nil; + FcPatternDel:=nil; + FcPatternRemove:=nil; + FcPatternAddInteger:=nil; + FcPatternAddDouble:=nil; + FcPatternAddString:=nil; + FcPatternAddMatrix:=nil; + FcPatternAddCharSet:=nil; + FcPatternAddBool:=nil; + FcPatternAddLangSet:=nil; + FcPatternAddRange:=nil; + FcPatternGetInteger:=nil; + FcPatternGetDouble:=nil; + FcPatternGetString:=nil; + FcPatternGetMatrix:=nil; + FcPatternGetCharSet:=nil; + FcPatternGetBool:=nil; + FcPatternGetLangSet:=nil; + FcPatternGetRange:=nil; + FcPatternBuild:=nil; + FcPatternBuild:=nil; + FcPatternFormat:=nil; + FcRangeCreateDouble:=nil; + FcRangeCreateInteger:=nil; + FcRangeDestroy:=nil; + FcRangeCopy:=nil; + FcRangeGetDouble:=nil; + FcWeightFromOpenType:=nil; + FcWeightToOpenType:=nil; + FcStrCopy:=nil; + FcStrCopyFilename:=nil; + FcStrPlus:=nil; + FcStrFree:=nil; + FcStrDowncase:=nil; + FcStrCmpIgnoreCase:=nil; + FcStrCmp:=nil; + FcStrStrIgnoreCase:=nil; + FcStrStr:=nil; + FcUtf8ToUcs4:=nil; + FcUtf8Len:=nil; + FcUcs4ToUtf8:=nil; + FcUtf16ToUcs4:=nil; + FcUtf16Len:=nil; + FcStrDirname:=nil; + FcStrBasename:=nil; + FcStrSetCreate:=nil; + FcStrSetMember:=nil; + FcStrSetEqual:=nil; + FcStrSetAdd:=nil; + FcStrSetAddFilename:=nil; + FcStrSetDel:=nil; + FcStrSetDestroy:=nil; + FcStrListCreate:=nil; + FcStrListFirst:=nil; + FcStrListNext:=nil; + FcStrListDone:=nil; + FcConfigParseAndLoad:=nil; +end; + + +Function Loadfc(lib : pchar) : Boolean; + +begin + Freefc; + hlib:=LoadLibrary(lib); + Result:=hlib<>NilHandle; + If not Result then + exit; + if (hlib=NilHandle) then + raise EInOutError.CreateFmt('Could not load library: "%s"',[lib]); + + pointer(FcBlanksCreate):=GetProcAddress(hlib,'FcBlanksCreate'); + pointer(FcBlanksDestroy):=GetProcAddress(hlib,'FcBlanksDestroy'); + pointer(FcBlanksAdd):=GetProcAddress(hlib,'FcBlanksAdd'); + pointer(FcBlanksIsMember):=GetProcAddress(hlib,'FcBlanksIsMember'); + pointer(FcCacheDir):=GetProcAddress(hlib,'FcCacheDir'); + pointer(FcCacheCopySet):=GetProcAddress(hlib,'FcCacheCopySet'); + pointer(FcCacheSubdir):=GetProcAddress(hlib,'FcCacheSubdir'); + pointer(FcCacheNumSubdir):=GetProcAddress(hlib,'FcCacheNumSubdir'); + pointer(FcCacheNumFont):=GetProcAddress(hlib,'FcCacheNumFont'); + pointer(FcDirCacheUnlink):=GetProcAddress(hlib,'FcDirCacheUnlink'); + pointer(FcDirCacheValid):=GetProcAddress(hlib,'FcDirCacheValid'); + pointer(FcDirCacheClean):=GetProcAddress(hlib,'FcDirCacheClean'); + pointer(FcCacheCreateTagFile):=GetProcAddress(hlib,'FcCacheCreateTagFile'); + pointer(FcConfigHome):=GetProcAddress(hlib,'FcConfigHome'); + pointer(FcConfigEnableHome):=GetProcAddress(hlib,'FcConfigEnableHome'); + pointer(FcConfigFilename):=GetProcAddress(hlib,'FcConfigFilename'); + pointer(FcConfigCreate):=GetProcAddress(hlib,'FcConfigCreate'); + pointer(FcConfigReference):=GetProcAddress(hlib,'FcConfigReference'); + pointer(FcConfigDestroy):=GetProcAddress(hlib,'FcConfigDestroy'); + pointer(FcConfigSetCurrent):=GetProcAddress(hlib,'FcConfigSetCurrent'); + pointer(FcConfigGetCurrent):=GetProcAddress(hlib,'FcConfigGetCurrent'); + pointer(FcConfigUptoDate):=GetProcAddress(hlib,'FcConfigUptoDate'); + pointer(FcConfigBuildFonts):=GetProcAddress(hlib,'FcConfigBuildFonts'); + pointer(FcConfigGetFontDirs):=GetProcAddress(hlib,'FcConfigGetFontDirs'); + pointer(FcConfigGetConfigDirs):=GetProcAddress(hlib,'FcConfigGetConfigDirs'); + pointer(FcConfigGetConfigFiles):=GetProcAddress(hlib,'FcConfigGetConfigFiles'); + pointer(FcConfigGetCache):=GetProcAddress(hlib,'FcConfigGetCache'); + pointer(FcConfigGetBlanks):=GetProcAddress(hlib,'FcConfigGetBlanks'); + pointer(FcConfigGetCacheDirs):=GetProcAddress(hlib,'FcConfigGetCacheDirs'); + pointer(FcConfigGetRescanInterval):=GetProcAddress(hlib,'FcConfigGetRescanInterval'); + pointer(FcConfigSetRescanInterval):=GetProcAddress(hlib,'FcConfigSetRescanInterval'); + pointer(FcConfigGetFonts):=GetProcAddress(hlib,'FcConfigGetFonts'); + pointer(FcConfigAppFontAddFile):=GetProcAddress(hlib,'FcConfigAppFontAddFile'); + pointer(FcConfigAppFontAddDir):=GetProcAddress(hlib,'FcConfigAppFontAddDir'); + pointer(FcConfigAppFontClear):=GetProcAddress(hlib,'FcConfigAppFontClear'); + pointer(FcConfigSubstituteWithPat):=GetProcAddress(hlib,'FcConfigSubstituteWithPat'); + pointer(FcConfigSubstitute):=GetProcAddress(hlib,'FcConfigSubstitute'); + pointer(FcConfigGetSysRoot):=GetProcAddress(hlib,'FcConfigGetSysRoot'); + pointer(FcConfigSetSysRoot):=GetProcAddress(hlib,'FcConfigSetSysRoot'); + pointer(FcCharSetCreate):=GetProcAddress(hlib,'FcCharSetCreate'); + pointer(FcCharSetNew):=GetProcAddress(hlib,'FcCharSetNew'); + pointer(FcCharSetDestroy):=GetProcAddress(hlib,'FcCharSetDestroy'); + pointer(FcCharSetAddChar):=GetProcAddress(hlib,'FcCharSetAddChar'); + pointer(FcCharSetDelChar):=GetProcAddress(hlib,'FcCharSetDelChar'); + pointer(FcCharSetCopy):=GetProcAddress(hlib,'FcCharSetCopy'); + pointer(FcCharSetEqual):=GetProcAddress(hlib,'FcCharSetEqual'); + pointer(FcCharSetIntersect):=GetProcAddress(hlib,'FcCharSetIntersect'); + pointer(FcCharSetUnion):=GetProcAddress(hlib,'FcCharSetUnion'); + pointer(FcCharSetSubtract):=GetProcAddress(hlib,'FcCharSetSubtract'); + pointer(FcCharSetMerge):=GetProcAddress(hlib,'FcCharSetMerge'); + pointer(FcCharSetHasChar):=GetProcAddress(hlib,'FcCharSetHasChar'); + pointer(FcCharSetCount):=GetProcAddress(hlib,'FcCharSetCount'); + pointer(FcCharSetIntersectCount):=GetProcAddress(hlib,'FcCharSetIntersectCount'); + pointer(FcCharSetSubtractCount):=GetProcAddress(hlib,'FcCharSetSubtractCount'); + pointer(FcCharSetIsSubset):=GetProcAddress(hlib,'FcCharSetIsSubset'); + pointer(FcCharSetFirstPage):=GetProcAddress(hlib,'FcCharSetFirstPage'); + pointer(FcCharSetNextPage):=GetProcAddress(hlib,'FcCharSetNextPage'); + pointer(FcCharSetCoverage):=GetProcAddress(hlib,'FcCharSetCoverage'); + pointer(FcValuePrint):=GetProcAddress(hlib,'FcValuePrint'); + pointer(FcPatternPrint):=GetProcAddress(hlib,'FcPatternPrint'); + pointer(FcFontSetPrint):=GetProcAddress(hlib,'FcFontSetPrint'); + pointer(FcGetDefaultLangs):=GetProcAddress(hlib,'FcGetDefaultLangs'); + pointer(FcDefaultSubstitute):=GetProcAddress(hlib,'FcDefaultSubstitute'); + pointer(FcFileIsDir):=GetProcAddress(hlib,'FcFileIsDir'); + pointer(FcFileScan):=GetProcAddress(hlib,'FcFileScan'); + pointer(FcDirScan):=GetProcAddress(hlib,'FcDirScan'); + pointer(FcDirSave):=GetProcAddress(hlib,'FcDirSave'); + pointer(FcDirCacheLoad):=GetProcAddress(hlib,'FcDirCacheLoad'); + pointer(FcDirCacheRescan):=GetProcAddress(hlib,'FcDirCacheRescan'); + pointer(FcDirCacheRead):=GetProcAddress(hlib,'FcDirCacheRead'); + pointer(FcDirCacheLoadFile):=GetProcAddress(hlib,'FcDirCacheLoadFile'); + pointer(FcDirCacheUnload):=GetProcAddress(hlib,'FcDirCacheUnload'); + pointer(FcFreeTypeQuery):=GetProcAddress(hlib,'FcFreeTypeQuery'); + pointer(FcFontSetCreate):=GetProcAddress(hlib,'FcFontSetCreate'); + pointer(FcFontSetDestroy):=GetProcAddress(hlib,'FcFontSetDestroy'); + pointer(FcFontSetAdd):=GetProcAddress(hlib,'FcFontSetAdd'); + pointer(FcInitLoadConfig):=GetProcAddress(hlib,'FcInitLoadConfig'); + pointer(FcInitLoadConfigAndFonts):=GetProcAddress(hlib,'FcInitLoadConfigAndFonts'); + pointer(FcInit):=GetProcAddress(hlib,'FcInit'); + pointer(FcFini):=GetProcAddress(hlib,'FcFini'); + pointer(FcGetVersion):=GetProcAddress(hlib,'FcGetVersion'); + pointer(FcInitReinitialize):=GetProcAddress(hlib,'FcInitReinitialize'); + pointer(FcInitBringUptoDate):=GetProcAddress(hlib,'FcInitBringUptoDate'); + pointer(FcGetLangs):=GetProcAddress(hlib,'FcGetLangs'); + pointer(FcLangNormalize):=GetProcAddress(hlib,'FcLangNormalize'); + pointer(FcLangGetCharSet):=GetProcAddress(hlib,'FcLangGetCharSet'); + pointer(FcLangSetCreate):=GetProcAddress(hlib,'FcLangSetCreate'); + pointer(FcLangSetDestroy):=GetProcAddress(hlib,'FcLangSetDestroy'); + pointer(FcLangSetCopy):=GetProcAddress(hlib,'FcLangSetCopy'); + pointer(FcLangSetAdd):=GetProcAddress(hlib,'FcLangSetAdd'); + pointer(FcLangSetDel):=GetProcAddress(hlib,'FcLangSetDel'); + pointer(FcLangSetHasLang):=GetProcAddress(hlib,'FcLangSetHasLang'); + pointer(FcLangSetCompare):=GetProcAddress(hlib,'FcLangSetCompare'); + pointer(FcLangSetContains):=GetProcAddress(hlib,'FcLangSetContains'); + pointer(FcLangSetEqual):=GetProcAddress(hlib,'FcLangSetEqual'); + pointer(FcLangSetHash):=GetProcAddress(hlib,'FcLangSetHash'); + pointer(FcLangSetGetLangs):=GetProcAddress(hlib,'FcLangSetGetLangs'); + pointer(FcLangSetUnion):=GetProcAddress(hlib,'FcLangSetUnion'); + pointer(FcLangSetSubtract):=GetProcAddress(hlib,'FcLangSetSubtract'); + pointer(FcObjectSetCreate):=GetProcAddress(hlib,'FcObjectSetCreate'); + pointer(FcObjectSetAdd):=GetProcAddress(hlib,'FcObjectSetAdd'); + pointer(FcObjectSetDestroy):=GetProcAddress(hlib,'FcObjectSetDestroy'); + pointer(FcObjectSetBuild):=GetProcAddress(hlib,'FcObjectSetBuild'); + pointer(FcObjectSetBuild):=GetProcAddress(hlib,'FcObjectSetBuild'); + pointer(FcFontSetList):=GetProcAddress(hlib,'FcFontSetList'); + pointer(FcFontList):=GetProcAddress(hlib,'FcFontList'); + pointer(FcAtomicCreate):=GetProcAddress(hlib,'FcAtomicCreate'); + pointer(FcAtomicLock):=GetProcAddress(hlib,'FcAtomicLock'); + pointer(FcAtomicNewFile):=GetProcAddress(hlib,'FcAtomicNewFile'); + pointer(FcAtomicOrigFile):=GetProcAddress(hlib,'FcAtomicOrigFile'); + pointer(FcAtomicReplaceOrig):=GetProcAddress(hlib,'FcAtomicReplaceOrig'); + pointer(FcAtomicDeleteNew):=GetProcAddress(hlib,'FcAtomicDeleteNew'); + pointer(FcAtomicUnlock):=GetProcAddress(hlib,'FcAtomicUnlock'); + pointer(FcAtomicDestroy):=GetProcAddress(hlib,'FcAtomicDestroy'); + pointer(FcFontSetMatch):=GetProcAddress(hlib,'FcFontSetMatch'); + pointer(FcFontMatch):=GetProcAddress(hlib,'FcFontMatch'); + pointer(FcFontRenderPrepare):=GetProcAddress(hlib,'FcFontRenderPrepare'); + pointer(FcFontSetSort):=GetProcAddress(hlib,'FcFontSetSort'); + pointer(FcFontSort):=GetProcAddress(hlib,'FcFontSort'); + pointer(FcFontSetSortDestroy):=GetProcAddress(hlib,'FcFontSetSortDestroy'); + pointer(FcMatrixCopy):=GetProcAddress(hlib,'FcMatrixCopy'); + pointer(FcMatrixEqual):=GetProcAddress(hlib,'FcMatrixEqual'); + pointer(FcMatrixMultiply):=GetProcAddress(hlib,'FcMatrixMultiply'); + pointer(FcMatrixRotate):=GetProcAddress(hlib,'FcMatrixRotate'); + pointer(FcMatrixScale):=GetProcAddress(hlib,'FcMatrixScale'); + pointer(FcMatrixShear):=GetProcAddress(hlib,'FcMatrixShear'); + pointer(FcNameRegisterObjectTypes):=GetProcAddress(hlib,'FcNameRegisterObjectTypes'); + pointer(FcNameUnregisterObjectTypes):=GetProcAddress(hlib,'FcNameUnregisterObjectTypes'); + pointer(FcNameGetObjectType):=GetProcAddress(hlib,'FcNameGetObjectType'); + pointer(FcNameRegisterConstants):=GetProcAddress(hlib,'FcNameRegisterConstants'); + pointer(FcNameUnregisterConstants):=GetProcAddress(hlib,'FcNameUnregisterConstants'); + pointer(FcNameGetConstant):=GetProcAddress(hlib,'FcNameGetConstant'); + pointer(FcNameConstant):=GetProcAddress(hlib,'FcNameConstant'); + pointer(FcNameParse):=GetProcAddress(hlib,'FcNameParse'); + pointer(FcNameUnparse):=GetProcAddress(hlib,'FcNameUnparse'); + pointer(FcPatternCreate):=GetProcAddress(hlib,'FcPatternCreate'); + pointer(FcPatternDuplicate):=GetProcAddress(hlib,'FcPatternDuplicate'); + pointer(FcPatternReference):=GetProcAddress(hlib,'FcPatternReference'); + pointer(FcPatternFilter):=GetProcAddress(hlib,'FcPatternFilter'); + pointer(FcValueDestroy):=GetProcAddress(hlib,'FcValueDestroy'); + pointer(FcValueEqual):=GetProcAddress(hlib,'FcValueEqual'); + pointer(FcValueSave):=GetProcAddress(hlib,'FcValueSave'); + pointer(FcPatternDestroy):=GetProcAddress(hlib,'FcPatternDestroy'); + pointer(FcPatternEqual):=GetProcAddress(hlib,'FcPatternEqual'); + pointer(FcPatternEqualSubset):=GetProcAddress(hlib,'FcPatternEqualSubset'); + pointer(FcPatternHash):=GetProcAddress(hlib,'FcPatternHash'); + pointer(FcPatternAdd):=GetProcAddress(hlib,'FcPatternAdd'); + pointer(FcPatternAddWeak):=GetProcAddress(hlib,'FcPatternAddWeak'); + pointer(FcPatternGet):=GetProcAddress(hlib,'FcPatternGet'); + pointer(FcPatternDel):=GetProcAddress(hlib,'FcPatternDel'); + pointer(FcPatternRemove):=GetProcAddress(hlib,'FcPatternRemove'); + pointer(FcPatternAddInteger):=GetProcAddress(hlib,'FcPatternAddInteger'); + pointer(FcPatternAddDouble):=GetProcAddress(hlib,'FcPatternAddDouble'); + pointer(FcPatternAddString):=GetProcAddress(hlib,'FcPatternAddString'); + pointer(FcPatternAddMatrix):=GetProcAddress(hlib,'FcPatternAddMatrix'); + pointer(FcPatternAddCharSet):=GetProcAddress(hlib,'FcPatternAddCharSet'); + pointer(FcPatternAddBool):=GetProcAddress(hlib,'FcPatternAddBool'); + pointer(FcPatternAddLangSet):=GetProcAddress(hlib,'FcPatternAddLangSet'); + pointer(FcPatternAddRange):=GetProcAddress(hlib,'FcPatternAddRange'); + pointer(FcPatternGetInteger):=GetProcAddress(hlib,'FcPatternGetInteger'); + pointer(FcPatternGetDouble):=GetProcAddress(hlib,'FcPatternGetDouble'); + pointer(FcPatternGetString):=GetProcAddress(hlib,'FcPatternGetString'); + pointer(FcPatternGetMatrix):=GetProcAddress(hlib,'FcPatternGetMatrix'); + pointer(FcPatternGetCharSet):=GetProcAddress(hlib,'FcPatternGetCharSet'); + pointer(FcPatternGetBool):=GetProcAddress(hlib,'FcPatternGetBool'); + pointer(FcPatternGetLangSet):=GetProcAddress(hlib,'FcPatternGetLangSet'); + pointer(FcPatternGetRange):=GetProcAddress(hlib,'FcPatternGetRange'); + pointer(FcPatternBuild):=GetProcAddress(hlib,'FcPatternBuild'); + pointer(FcPatternBuild):=GetProcAddress(hlib,'FcPatternBuild'); + pointer(FcPatternFormat):=GetProcAddress(hlib,'FcPatternFormat'); + pointer(FcRangeCreateDouble):=GetProcAddress(hlib,'FcRangeCreateDouble'); + pointer(FcRangeCreateInteger):=GetProcAddress(hlib,'FcRangeCreateInteger'); + pointer(FcRangeDestroy):=GetProcAddress(hlib,'FcRangeDestroy'); + pointer(FcRangeCopy):=GetProcAddress(hlib,'FcRangeCopy'); + pointer(FcRangeGetDouble):=GetProcAddress(hlib,'FcRangeGetDouble'); + pointer(FcWeightFromOpenType):=GetProcAddress(hlib,'FcWeightFromOpenType'); + pointer(FcWeightToOpenType):=GetProcAddress(hlib,'FcWeightToOpenType'); + pointer(FcStrCopy):=GetProcAddress(hlib,'FcStrCopy'); + pointer(FcStrCopyFilename):=GetProcAddress(hlib,'FcStrCopyFilename'); + pointer(FcStrPlus):=GetProcAddress(hlib,'FcStrPlus'); + pointer(FcStrFree):=GetProcAddress(hlib,'FcStrFree'); + pointer(FcStrDowncase):=GetProcAddress(hlib,'FcStrDowncase'); + pointer(FcStrCmpIgnoreCase):=GetProcAddress(hlib,'FcStrCmpIgnoreCase'); + pointer(FcStrCmp):=GetProcAddress(hlib,'FcStrCmp'); + pointer(FcStrStrIgnoreCase):=GetProcAddress(hlib,'FcStrStrIgnoreCase'); + pointer(FcStrStr):=GetProcAddress(hlib,'FcStrStr'); + pointer(FcUtf8ToUcs4):=GetProcAddress(hlib,'FcUtf8ToUcs4'); + pointer(FcUtf8Len):=GetProcAddress(hlib,'FcUtf8Len'); + pointer(FcUcs4ToUtf8):=GetProcAddress(hlib,'FcUcs4ToUtf8'); + pointer(FcUtf16ToUcs4):=GetProcAddress(hlib,'FcUtf16ToUcs4'); + pointer(FcUtf16Len):=GetProcAddress(hlib,'FcUtf16Len'); + pointer(FcStrDirname):=GetProcAddress(hlib,'FcStrDirname'); + pointer(FcStrBasename):=GetProcAddress(hlib,'FcStrBasename'); + pointer(FcStrSetCreate):=GetProcAddress(hlib,'FcStrSetCreate'); + pointer(FcStrSetMember):=GetProcAddress(hlib,'FcStrSetMember'); + pointer(FcStrSetEqual):=GetProcAddress(hlib,'FcStrSetEqual'); + pointer(FcStrSetAdd):=GetProcAddress(hlib,'FcStrSetAdd'); + pointer(FcStrSetAddFilename):=GetProcAddress(hlib,'FcStrSetAddFilename'); + pointer(FcStrSetDel):=GetProcAddress(hlib,'FcStrSetDel'); + pointer(FcStrSetDestroy):=GetProcAddress(hlib,'FcStrSetDestroy'); + pointer(FcStrListCreate):=GetProcAddress(hlib,'FcStrListCreate'); + pointer(FcStrListFirst):=GetProcAddress(hlib,'FcStrListFirst'); + pointer(FcStrListNext):=GetProcAddress(hlib,'FcStrListNext'); + pointer(FcStrListDone):=GetProcAddress(hlib,'FcStrListDone'); + pointer(FcConfigParseAndLoad):=GetProcAddress(hlib,'FcConfigParseAndLoad'); +end; + +Function LoadFontConfigLib(Const ALibName : String; RaiseError : Boolean = true) : Integer; + +Var + FN : String; + +begin + Result:=-1; + FN:=ALibName; + if FN='' then + FN:=DefaultLibName; + if (HCount>0) then + begin + if (FN=LoadedLib) then + Inc(HCount) + else if RaiseError then + Raise EInoutError.CreateFmt('Cannot load "%s", FontConfig library already loaded as "%s"',[FN,LoadedLib]) + else + Exit; + end + else + begin + if LoadFC(PChar(FN)) then + begin + inc(HCount); + LoadedLib:=FN; + end + else if RaiseError then + raise EInOutError.CreateFmt('Could not load library: "%s"',[FN]) + else + Exit; + end; + Result:=HCount; +end; + +Function UnLoadFontConfigLib : Integer; + +begin + if (hCount>0) then + begin + Dec(HCount); + if (HCount=0) then + FreeFC; + end; + Result:=HCount; +end; + +end.