Browse Source

* manual cleanup of merge

git-svn-id: branches/fixes_2_2@7706 -
peter 18 years ago
parent
commit
7da6003335

+ 0 - 10
.gitattributes

@@ -4234,16 +4234,6 @@ packages/fcl-xml/tests/README svneol=native#text/plain
 packages/fcl-xml/tests/template.xml svneol=native#text/plain
 packages/fcl-xml/tests/xmlts.pp svneol=native#text/plain
 packages/fpmake.pp svneol=native#text/plain
-packages/fpmake/Makefile svneol=native#text/plain
-packages/fpmake/Makefile.fpc svneol=native#text/plain
-packages/fpmake/fpmake.inc svneol=native#text/plain
-packages/fpmake/fpmake.pp svneol=native#text/plain
-packages/fpmake/src/Makefile svneol=native#text/plain
-packages/fpmake/src/Makefile.fpc svneol=native#text/plain
-packages/fpmake/src/fpmake.pp svneol=native#text/plain
-packages/fpmake/src/fpmkcnst.inc svneol=native#text/plain
-packages/fpmake/src/fpmktype.pp svneol=native#text/plain
-packages/fpmake/src/fpmkunit.pp svneol=native#text/plain
 packages/fpmkunit/Makefile svneol=native#text/plain
 packages/fpmkunit/Makefile.fpc svneol=native#text/plain
 packages/fpmkunit/fpmake.inc svneol=native#text/plain

+ 0 - 2221
packages/fpmake/Makefile

@@ -1,2221 +0,0 @@
-#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2007/05/30]
-#
-default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos 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 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 sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded
-BSDs = freebsd netbsd openbsd darwin
-UNIXs = linux $(BSDs) solaris qnx
-LIMIT83fs = go32v2 os2 emx 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 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))
-FPC:=$(shell $(FPCPROG) -PB)
-ifneq ($(findstring Error,$(FPC)),)
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-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
-ifneq ($(words $(FPC_COMPILERINFO)),5)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSO)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTO)
-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)
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-TARGETSUFFIX=$(OS_TARGET)
-SOURCESUFFIX=$(OS_SOURCE)
-else
-TARGETSUFFIX=$(FULL_TARGET)
-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
-export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
-ifdef FPCDIR
-override FPCDIR:=$(subst \,/,$(FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-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 units)),)
-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 units)),)
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(BASEDIR)
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=c:/pp
-endif
-endif
-endif
-endif
-endif
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
-endif
-ifndef BINUTILSPREFIX
-ifndef CROSSBINDIR
-ifdef CROSSCOMPILE
-BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
-endif
-endif
-endif
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
-ifeq ($(UNITSDIR),)
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
-endif
-PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
-override PACKAGE_NAME=fpmake
-override PACKAGE_VERSION=2.0.0
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-override INSTALL_FPCPACKAGE=y
-ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override COMPILER_INCLUDEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override COMPILER_SOURCEDIR+=src
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override COMPILER_SOURCEDIR+=src
-endif
-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
-ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),go32v1)
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-OEXT=.obj
-ASMEXT=.asm
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=wat
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-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
-endif
-ifeq ($(OS_TARGET),emx)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=emx
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-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),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
-endif
-ifeq ($(OS_TARGET),netwlibc)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nwl
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-endif
-ifeq ($(OS_TARGET),darwin)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=dwn
-endif
-ifeq ($(OS_TARGET),gba)
-EXEEXT=.gba
-SHAREDLIBEXT=.so
-SHORTSUFFIX=gba
-endif
-ifeq ($(OS_TARGET),symbian)
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=symbian
-endif
-else
-ifeq ($(OS_TARGET),go32v1)
-PPUEXT=.pp1
-OEXT=.o1
-ASMEXT=.s1
-SMARTEXT=.sl1
-STATICLIBEXT=.a1
-SHAREDLIBEXT=.so1
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-SHORTSUFFIX=wat
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-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)
-PPUEXT=.ppw
-OEXT=.ow
-ASMEXT=.sw
-SMARTEXT=.slw
-STATICLIBEXT=.aw
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-PPUEXT=.ppo
-ASMEXT=.so2
-OEXT=.oo2
-AOUTEXT=.out
-SMARTEXT=.sl2
-STATICLIBPREFIX=
-STATICLIBEXT=.ao2
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),atari)
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),netwlibc)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nwl
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-endif
-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
-ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),win32)
-ifeq ($(CROSSBINDIR),)
-ASNAME=asw
-LDNAME=ldw
-ARNAME=arw
-endif
-endif
-endif
-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
-AS=$(ASPROG)
-LD=$(LDPROG)
-RC=$(RCPROG)
-AR=$(ARPROG)
-PPAS=ppas$(SRCBATCHEXT)
-ifdef inUnix
-LDCONFIG=ldconfig
-else
-LDCONFIG=
-endif
-ifdef DATE
-DATESTR:=$(shell $(DATE) +%Y%m%d)
-else
-DATESTR=
-endif
-ifndef UPXPROG
-ifeq ($(OS_TARGET),go32v2)
-UPXPROG:=1
-endif
-ifeq ($(OS_TARGET),win32)
-UPXPROG:=1
-endif
-ifdef UPXPROG
-UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(UPXPROG),)
-UPXPROG=
-else
-UPXPROG:=$(firstword $(UPXPROG))
-endif
-else
-UPXPROG=
-endif
-endif
-export UPXPROG
-ZIPOPT=-9
-ZIPEXT=.zip
-ifeq ($(USETAR),bz2)
-TAROPT=vj
-TAREXT=.tar.bz2
-else
-TAROPT=vz
-TAREXT=.tar.gz
-endif
-override REQUIRE_PACKAGES=rtl 
-ifeq ($(FULL_TARGET),i386-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-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
-ifdef CHECKDEPEND
-$(PACKAGEDIR_RTL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_RTL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(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
-endif
-ifndef NOCPUDEF
-override FPCOPTDEF=$(CPU_TARGET)
-endif
-ifneq ($(OS_TARGET),$(OS_SOURCE))
-override FPCOPT+=-T$(OS_TARGET)
-endif
-ifneq ($(CPU_TARGET),$(CPU_SOURCE))
-override FPCOPT+=-P$(CPU_TARGET)
-endif
-ifeq ($(OS_SOURCE),openbsd)
-override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
-endif
-ifndef CROSSBOOTSTRAP
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-XP$(BINUTILSPREFIX) 
-endif
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-Xr$(RLINKPATH)
-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
-ifeq ($(CPU_TARGET),i386)
-override FPCOPT+=-Aas
-endif
-endif
-ifeq ($(findstring 2.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),linux)
-ifeq ($(CPU_TARGET),x86_64)
-override FPCOPT+=-Cg
-endif
-endif
-endif
-ifdef LINKSHARED
-endif
-ifdef OPT
-override FPCOPT+=$(OPT)
-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:=$(FPC) $(FPCOPT)
-ifeq (,$(findstring -s ,$(COMPILER)))
-EXECPPAS=
-else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
-EXECPPAS:=@$(PPAS)
-endif
-endif
-.PHONY: fpc_units
-ifneq ($(TARGET_UNITS),)
-override ALLTARGET+=fpc_units
-override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
-override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS))
-override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
-override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
-endif
-fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)
-ifdef TARGET_RSTS
-override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
-override CLEANRSTFILES+=$(RSTFILES)
-endif
-.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
-$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
-	@$(ECHOREDIR) Compiled > $(FPCMADE)
-fpc_all: $(FPCMADE)
-fpc_smart:
-	$(MAKE) all LINKSMART=1 CREATESMART=1
-fpc_debug:
-	$(MAKE) all DEBUG=1
-fpc_release:
-	$(MAKE) all RELEASE=1
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res
-$(COMPILER_UNITTARGETDIR):
-	$(MKDIRTREE) $(COMPILER_UNITTARGETDIR)
-$(COMPILER_TARGETDIR):
-	$(MKDIRTREE) $(COMPILER_TARGETDIR)
-%$(PPUEXT): %.pp
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(PPUEXT): %.pas
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.pp
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.pas
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.lpr
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.dpr
-	$(COMPILER) $<
-	$(EXECPPAS)
-%.res: %.rc
-	windres -i $< -o $@
-vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.inc $(COMPILER_INCLUDEDIR)
-vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
-vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
-.PHONY: fpc_shared
-override INSTALLTARGET+=fpc_shared_install
-ifndef SHARED_LIBVERSION
-SHARED_LIBVERSION=$(FPC_VERSION)
-endif
-ifndef SHARED_LIBNAME
-SHARED_LIBNAME=$(PACKAGE_NAME)
-endif
-ifndef SHARED_FULLNAME
-SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
-endif
-ifndef SHARED_LIBUNITS
-SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
-override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
-endif
-fpc_shared:
-ifdef HASSHAREDLIB
-	$(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
-ifneq ($(SHARED_BUILD),n)
-	$(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)
-endif
-else
-	@$(ECHO) Shared Libraries not supported
-endif
-fpc_shared_install:
-ifneq ($(SHARED_BUILD),n)
-ifneq ($(SHARED_LIBUNITS),)
-ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
-	$(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
-endif
-endif
-endif
-.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
-ifdef INSTALL_UNITS
-override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
-endif
-ifdef INSTALL_BUILDUNIT
-override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
-endif
-ifdef INSTALLPPUFILES
-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)
-ifdef UPXPROG
-	-$(UPXPROG) $(INSTALLEXEFILES)
-endif
-	$(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: $(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) cf$(TAROPT) $(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
-	$(ZIPWRAPPER)
-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))
-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 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
-	-$(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
-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)
-	@$(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)  Upx....... $(UPXPROG)
-	@$(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
-all: fpc_all
-debug: fpc_debug
-smart: fpc_smart
-release: fpc_release
-units: fpc_units
-examples:
-shared: fpc_shared
-install: fpc_install
-sourceinstall: fpc_sourceinstall
-exampleinstall: fpc_exampleinstall
-distinstall: fpc_distinstall
-zipinstall: fpc_zipinstall
-zipsourceinstall: fpc_zipsourceinstall
-zipexampleinstall: fpc_zipexampleinstall
-zipdistinstall: fpc_zipdistinstall
-clean: fpc_clean
-distclean: fpc_distclean
-cleanall: fpc_cleanall
-info: fpc_info
-makefiles: fpc_makefiles
-.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
-ifneq ($(wildcard fpcmake.loc),)
-include fpcmake.loc
-endif
-.NOTPARALLEL:
-fpmkunit$(PPUEXT) : fpmkunit.pp fpmkcnst.inc fpmktype$(PPUEXT)
-fpmktype$(PPUEXT) : fpmktype.pp fpmkcnst.inc

+ 0 - 26
packages/fpmake/Makefile.fpc

@@ -1,26 +0,0 @@
-#
-#   Makefile.fpc for fppkg
-#
-
-[package]
-name=fpmake
-version=2.0.0
-
-[target]
-units=fpmktype fpmkunit
-
-[install]
-fpcpackage=y
-
-[compiler]
-sourcedir=src
-includedir=src
-
-[default]
-fpcdir=../..
-
-[rules]
-.NOTPARALLEL:
-fpmkunit$(PPUEXT) : fpmkunit.pp fpmkcnst.inc fpmktype$(PPUEXT)
-
-fpmktype$(PPUEXT) : fpmktype.pp fpmkcnst.inc

+ 0 - 9
packages/fpmake/fpmake.inc

@@ -1,9 +0,0 @@
-    StartPackage('fpmake');
-    Version:='2.0.0';
-    Description:='Free Pascal Make Tool';
-		T:=Targets.AddUnit('fpmktype');
-    T:=Targets.AddUnit('fpmkunit');
-    S:=Sources.AddSrcFiles('src/*');
-    S:=Sources.AddSrcFiles('fpmake.inc');
-    S:=Sources.AddSrcFiles('fpmake.pp');
-		EndPackage;

+ 0 - 16
packages/fpmake/fpmake.pp

@@ -1,16 +0,0 @@
-{$mode objfpc}{$H+}
-program fpmake;
-
-uses fpmktype,fpmkunit;
-
-var
-  T : TTarget;
-  S : TSource;
-begin
-  with Installer do
-    begin
-      {$i fpmake.inc}
-      Run;
-    end;
-end.
-

+ 0 - 1908
packages/fpmake/src/Makefile

@@ -1,1908 +0,0 @@
-#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2007/03/04]
-#
-default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos 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 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 sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded
-BSDs = freebsd netbsd openbsd darwin
-UNIXs = linux $(BSDs) solaris qnx
-LIMIT83fs = go32v2 os2 emx 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 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))
-FPC:=$(shell $(FPCPROG) -PB)
-ifneq ($(findstring Error,$(FPC)),)
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-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
-ifneq ($(words $(FPC_COMPILERINFO)),5)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSO)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTO)
-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)
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-TARGETSUFFIX=$(OS_TARGET)
-SOURCESUFFIX=$(OS_SOURCE)
-else
-TARGETSUFFIX=$(FULL_TARGET)
-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
-export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
-ifdef FPCDIR
-override FPCDIR:=$(subst \,/,$(FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-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 units)),)
-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 units)),)
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(BASEDIR)
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=c:/pp
-endif
-endif
-endif
-endif
-endif
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
-endif
-ifndef BINUTILSPREFIX
-ifndef CROSSBINDIR
-ifdef CROSSCOMPILE
-BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
-endif
-endif
-endif
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
-ifeq ($(UNITSDIR),)
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
-endif
-PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
-override PACKAGE_NAME=fpmake
-override PACKAGE_VERSION=2.0.0
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=fpmktype fpmkunit
-endif
-override INSTALL_FPCPACKAGE=y
-ifdef REQUIRE_UNITSDIR
-override UNITSDIR+=$(REQUIRE_UNITSDIR)
-endif
-ifdef REQUIRE_PACKAGESDIR
-override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
-endif
-ifdef ZIPINSTALL
-ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
-UNIXHier=1
-endif
-else
-ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
-UNIXHier=1
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef PREFIX
-INSTALL_PREFIX=$(PREFIX)
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef UNIXHier
-INSTALL_PREFIX=/usr/local
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=/pp
-else
-INSTALL_BASEDIR:=/$(PACKAGE_NAME)
-endif
-endif
-endif
-export INSTALL_PREFIX
-ifdef INSTALL_FPCSUBDIR
-export INSTALL_FPCSUBDIR
-endif
-ifndef DIST_DESTDIR
-DIST_DESTDIR:=$(BASEDIR)
-endif
-export DIST_DESTDIR
-ifndef COMPILER_UNITTARGETDIR
-ifdef PACKAGEDIR_MAIN
-COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
-else
-COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
-endif
-endif
-ifndef COMPILER_TARGETDIR
-COMPILER_TARGETDIR=.
-endif
-ifndef INSTALL_BASEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
-endif
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)
-endif
-endif
-ifndef INSTALL_BINDIR
-ifdef UNIXHier
-INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
-else
-INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
-ifdef INSTALL_FPCPACKAGE
-ifdef CROSSCOMPILE
-ifdef CROSSINSTALL
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-endif
-endif
-endif
-ifndef INSTALL_UNITDIR
-INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
-ifdef INSTALL_FPCPACKAGE
-ifdef PACKAGE_NAME
-INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
-endif
-endif
-endif
-ifndef INSTALL_LIBDIR
-ifdef UNIXHier
-INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
-else
-INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
-endif
-endif
-ifndef INSTALL_SOURCEDIR
-ifdef UNIXHier
-ifdef BSDhier
-SRCPREFIXDIR=share/src
-else
-ifdef linuxHier
-SRCPREFIXDIR=share/src
-else
-SRCPREFIXDIR=src
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
-endif
-endif
-endif
-ifndef INSTALL_DOCDIR
-ifdef UNIXHier
-ifdef BSDhier
-DOCPREFIXDIR=share/doc
-else
-ifdef linuxHier
-DOCPREFIXDIR=share/doc
-else
-DOCPREFIXDIR=doc
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
-endif
-endif
-endif
-ifndef INSTALL_EXAMPLEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
-endif
-endif
-else
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-endif
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
-endif
-endif
-endif
-ifndef INSTALL_DATADIR
-INSTALL_DATADIR=$(INSTALL_BASEDIR)
-endif
-ifndef INSTALL_SHAREDDIR
-INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
-endif
-ifdef CROSSCOMPILE
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
-ifeq ($(CROSSBINDIR),)
-CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
-endif
-endif
-else
-CROSSBINDIR=
-endif
-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
-ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),go32v1)
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-OEXT=.obj
-ASMEXT=.asm
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=wat
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-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
-endif
-ifeq ($(OS_TARGET),emx)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=emx
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-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),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
-endif
-ifeq ($(OS_TARGET),netwlibc)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nwl
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-endif
-ifeq ($(OS_TARGET),darwin)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=dwn
-endif
-ifeq ($(OS_TARGET),gba)
-EXEEXT=.gba
-SHAREDLIBEXT=.so
-SHORTSUFFIX=gba
-endif
-ifeq ($(OS_TARGET),symbian)
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=symbian
-endif
-else
-ifeq ($(OS_TARGET),go32v1)
-PPUEXT=.pp1
-OEXT=.o1
-ASMEXT=.s1
-SMARTEXT=.sl1
-STATICLIBEXT=.a1
-SHAREDLIBEXT=.so1
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-SHORTSUFFIX=wat
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-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)
-PPUEXT=.ppw
-OEXT=.ow
-ASMEXT=.sw
-SMARTEXT=.slw
-STATICLIBEXT=.aw
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-PPUEXT=.ppo
-ASMEXT=.so2
-OEXT=.oo2
-AOUTEXT=.out
-SMARTEXT=.sl2
-STATICLIBPREFIX=
-STATICLIBEXT=.ao2
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),atari)
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),netwlibc)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nwl
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-endif
-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
-ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),win32)
-ifeq ($(CROSSBINDIR),)
-ASNAME=asw
-LDNAME=ldw
-ARNAME=arw
-endif
-endif
-endif
-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
-AS=$(ASPROG)
-LD=$(LDPROG)
-RC=$(RCPROG)
-AR=$(ARPROG)
-PPAS=ppas$(SRCBATCHEXT)
-ifdef inUnix
-LDCONFIG=ldconfig
-else
-LDCONFIG=
-endif
-ifdef DATE
-DATESTR:=$(shell $(DATE) +%Y%m%d)
-else
-DATESTR=
-endif
-ifndef UPXPROG
-ifeq ($(OS_TARGET),go32v2)
-UPXPROG:=1
-endif
-ifeq ($(OS_TARGET),win32)
-UPXPROG:=1
-endif
-ifdef UPXPROG
-UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(UPXPROG),)
-UPXPROG=
-else
-UPXPROG:=$(firstword $(UPXPROG))
-endif
-else
-UPXPROG=
-endif
-endif
-export UPXPROG
-ZIPOPT=-9
-ZIPEXT=.zip
-ifeq ($(USETAR),bz2)
-TAROPT=vj
-TAREXT=.tar.bz2
-else
-TAROPT=vz
-TAREXT=.tar.gz
-endif
-override REQUIRE_PACKAGES=rtl 
-ifeq ($(FULL_TARGET),i386-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-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
-ifdef CHECKDEPEND
-$(PACKAGEDIR_RTL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_RTL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(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
-endif
-ifndef NOCPUDEF
-override FPCOPTDEF=$(CPU_TARGET)
-endif
-ifneq ($(OS_TARGET),$(OS_SOURCE))
-override FPCOPT+=-T$(OS_TARGET)
-endif
-ifneq ($(CPU_TARGET),$(CPU_SOURCE))
-override FPCOPT+=-P$(CPU_TARGET)
-endif
-ifeq ($(OS_SOURCE),openbsd)
-override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
-endif
-ifndef CROSSBOOTSTRAP
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-XP$(BINUTILSPREFIX) -Xc
-endif
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-Xr$(RLINKPATH)
-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
-ifeq ($(CPU_TARGET),i386)
-override FPCOPT+=-Aas
-endif
-endif
-ifeq ($(findstring 2.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),linux)
-ifeq ($(CPU_TARGET),x86_64)
-override FPCOPT+=-Cg
-endif
-endif
-endif
-ifdef LINKSHARED
-endif
-ifdef OPT
-override FPCOPT+=$(OPT)
-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:=$(FPC) $(FPCOPT)
-ifeq (,$(findstring -s ,$(COMPILER)))
-EXECPPAS=
-else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
-EXECPPAS:=@$(PPAS)
-endif
-endif
-.PHONY: fpc_units
-ifneq ($(TARGET_UNITS),)
-override ALLTARGET+=fpc_units
-override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
-override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS))
-override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
-override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
-endif
-fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)
-ifdef TARGET_RSTS
-override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
-override CLEANRSTFILES+=$(RSTFILES)
-endif
-.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
-$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
-	@$(ECHOREDIR) Compiled > $(FPCMADE)
-fpc_all: $(FPCMADE)
-fpc_smart:
-	$(MAKE) all LINKSMART=1 CREATESMART=1
-fpc_debug:
-	$(MAKE) all DEBUG=1
-fpc_release:
-	$(MAKE) all RELEASE=1
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res
-$(COMPILER_UNITTARGETDIR):
-	$(MKDIRTREE) $(COMPILER_UNITTARGETDIR)
-$(COMPILER_TARGETDIR):
-	$(MKDIRTREE) $(COMPILER_TARGETDIR)
-%$(PPUEXT): %.pp
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(PPUEXT): %.pas
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.pp
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.pas
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.lpr
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.dpr
-	$(COMPILER) $<
-	$(EXECPPAS)
-%.res: %.rc
-	windres -i $< -o $@
-vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
-vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
-.PHONY: fpc_shared
-override INSTALLTARGET+=fpc_shared_install
-ifndef SHARED_LIBVERSION
-SHARED_LIBVERSION=$(FPC_VERSION)
-endif
-ifndef SHARED_LIBNAME
-SHARED_LIBNAME=$(PACKAGE_NAME)
-endif
-ifndef SHARED_FULLNAME
-SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
-endif
-ifndef SHARED_LIBUNITS
-SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
-override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
-endif
-fpc_shared:
-ifdef HASSHAREDLIB
-	$(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
-ifneq ($(SHARED_BUILD),n)
-	$(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)
-endif
-else
-	@$(ECHO) Shared Libraries not supported
-endif
-fpc_shared_install:
-ifneq ($(SHARED_BUILD),n)
-ifneq ($(SHARED_LIBUNITS),)
-ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
-	$(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
-endif
-endif
-endif
-.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
-ifdef INSTALL_UNITS
-override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
-endif
-ifdef INSTALL_BUILDUNIT
-override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
-endif
-ifdef INSTALLPPUFILES
-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)
-ifdef UPXPROG
-	-$(UPXPROG) $(INSTALLEXEFILES)
-endif
-	$(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: $(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) cf$(TAROPT) $(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
-	$(ZIPWRAPPER)
-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))
-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 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
-	-$(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
-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)
-	@$(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)  Upx....... $(UPXPROG)
-	@$(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
-all: fpc_all
-debug: fpc_debug
-smart: fpc_smart
-release: fpc_release
-units: fpc_units
-examples:
-shared: fpc_shared
-install: fpc_install
-sourceinstall: fpc_sourceinstall
-exampleinstall: fpc_exampleinstall
-distinstall: fpc_distinstall
-zipinstall: fpc_zipinstall
-zipsourceinstall: fpc_zipsourceinstall
-zipexampleinstall: fpc_zipexampleinstall
-zipdistinstall: fpc_zipdistinstall
-clean: fpc_clean
-distclean: fpc_distclean
-cleanall: fpc_cleanall
-info: fpc_info
-makefiles: fpc_makefiles
-.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
-ifneq ($(wildcard fpcmake.loc),)
-include fpcmake.loc
-endif
-.NOTPARALLEL:
-fpmkunit$(PPUEXT) : fpmkunit.pp fpmkcnst.inc fpmktype$(PPUEXT)
-fpmktype$(PPUEXT) : fpmktype.pp fpmkcnst.inc

+ 0 - 22
packages/fpmake/src/Makefile.fpc

@@ -1,22 +0,0 @@
-#
-#   Makefile.fpc for fppkg
-#
-
-[package]
-name=fpmake
-version=2.0.0
-
-[target]
-units=fpmktype fpmkunit
-
-[install]
-fpcpackage=y
-
-[default]
-fpcdir=../../..
-
-[rules]
-.NOTPARALLEL:
-fpmkunit$(PPUEXT) : fpmkunit.pp fpmkcnst.inc fpmktype$(PPUEXT)
-
-fpmktype$(PPUEXT) : fpmktype.pp fpmkcnst.inc

+ 0 - 27
packages/fpmake/src/fpmake.pp

@@ -1,27 +0,0 @@
-{$mode objfpc}{$H+}
-program fpmake;
-
- { Generated automatically by fppkg on 19-2-07 }
-
-uses fpmktype,fpmkunit;
-
-Var
-  T : TTarget;
-  S : TSource;
-begin
-  With Installer do 
-    begin
-    { 
-      fpmake
-    } 
-    StartPackage('fpmake');
-    Version:='2.0.0';
-    Description:='Free Pascal Make Tool';
-    T:=Targets.AddUnit('fpmktype');
-    T:=Targets.AddUnit('fpmkunit');
-    S:=Sources.AddSrcFiles('*.pp');
-    EndPackage;
-    Run;
-    end;
-end.
-

+ 0 - 49
packages/fpmake/src/fpmkcnst.inc

@@ -1,49 +0,0 @@
-Const
-  // Aliases
-  Amd64   = X86_64;
-  PowerPC = PPC;
-  PowerPC64 = PPC64;
-  DOS = Go32v2;
-  MacOSX = Darwin;
-
-  AllOSs  = [Low(TOS)..High(TOS)];
-  AllCPUs = [Low(TCPU)..High(TCPU)];
-  
-  // Useful
-  UnitExt = '.ppu';
-  PPUExt  = UnitExt;
-  PasExt  = '.pas';
-  PPExt   = '.pp';
-  IncExt  = '.inc';
-  ObjExt  = '.o';
-  RstExt  = '.rst';
-  LibExt  = '.a';
-  SharedLibExt = '.so';
-  DLLExt  = '.dll';
-  ExeExt  = '.exe';
-  ZipExt  = '.zip';
-
-{
-  // Targets
-  i386_Linux = 'i386-linux';
-  i386_Win32 = 'i386-win32';
-  i386_Dos = 'i386-go32v2';
-  i386_OS2 = 'i386-os2';
-  i386_FreeBSD = 'i386-freebsd';
-  i386_NetBSD = 'i386-netsd';
-  i386_OpenBSD = 'i386-openbsd';
-  i386_netware = 'i386-netware';
-  i386_netwlibc = 'i386-netwlibc';
-  i386_go32v2 = 'i386-go32v2';
-  PPC_Linux = 'ppc-linux';
-  powerpc_linux = PPC_linux;
-  sparc_linux = 'sparc-linux';
-  arm_linux = 'arm-linux';
-  ppc_macos = 'ppc-macos';
-  ppc_darwin = 'ppc-darwin';
-}
-
-  UnitTargets = [ttUnit,ttExampleUnit];
-  ProgramTargets = [ttProgram,ttExampleProgram];
-
-  AllMessages = [vlError,vlWarning,vlInfo,vlCompare,vlCommand];

+ 0 - 171
packages/fpmake/src/fpmktype.pp

@@ -1,171 +0,0 @@
-{$mode objfpc}
-{$h+}
-unit fpmktype;
-
-interface
-
-uses sysutils;
-
-Type
-  TFileType = (ftSource,ftUnit,ftObject,ftResource,ftExecutable,ftStaticLibrary,
-               ftSharedLibrary);
-  TFileTypes = set of TFileType;
-
-  TOS = (osNone,Amiga,Atari,Darwin,FreeBSD,Go32v2,Linux,MacOS,MorphOS,NetBSD,
-         Netware,NetwLibc,OpenBSD,OS2,PalmOS,Solaris,Win32,Win64,WinCE,Emx);
-  TOSes = Set of TOS;
-
-  TCPU = (cpuNone,Arm,I386,PPC,SPARC,X86_64,M68K,PPC64);
-  TCPUS = Set of TCPU;
-
-  TCompilerMode = (cmFPC,cmTP,cmObjFPC,cmDelphi,cmMacPas);
-  TCompilerModes = Set of TCompilerMode;
-
-  TTargetType = (ttUnit,ttProgram,ttExampleUnit,ttExampleProgram);
-  TTargetTypes = set of TTargetType;
-
-  TTargetState = (tsNeutral,tsCompiling,tsCompiled,tsInstalled);
-  TTargetStates = Set of TTargetState;
-
-  TSourceType = (stDoc,stSrc,stExample,stTest);
-  TSourceTypes = set of TSourceType;
-
-  TVerboseLevel = (vlError,vlWarning,vlInfo,vlCompare,vlCommand,vldebug);
-  TVerboseLevels = Set of TVerboseLevel;
-
-  TCommandAt = (caBeforeCompile,caAfterCompile,
-                caBeforeInstall,caAfterInstall,
-                caBeforeArchive,caAfterArchive,
-                caBeforeClean,caAfterClean,
-                caBeforeDownload,caAfterDownload);
-
-  TLogEvent = Procedure (Level : TVerboseLevel; Const Msg : String) of Object;
-
-  EInstallerError = Class(Exception);
-
-{$i fpmkcnst.inc}
-
-Function OSToString(OS: TOS) : String;
-Function OSesToString(OSes: TOSes) : String;
-Function CPUToString(CPU: TCPU) : String;
-Function CPUSToString(CPUS: TCPUS) : String;
-Function StringToOS(S : String) : TOS;
-Function OSesToString(S : String) : TOSes;
-Function StringToCPU(S : String) : TCPU;
-Function StringToCPUS(S : String) : TCPUS;
-Function ModeToString(Mode: TCompilerMode) : String;
-Function StringToMode(S : String) : TCompilerMode;
-Function MakeTargetString(CPU : TCPU;OS: TOS) : String;
-Procedure StringToCPUOS(S : String; Var CPU : TCPU; Var OS: TOS);
-
-implementation
-
-uses typinfo;
-
-resourcestring
-  SErrInvalidCPU        = 'Invalid CPU name : "%s"';
-  SErrInvalidOS         = 'Invalid OS name : "%s"';
-  SErrInvalidMode       = 'Invalid compiler mode : "%s"';
-  SErrInvalidTarget     = 'Invalid compiler target: %s';
-
-
-Function OSToString(OS: TOS) : String;
-
-begin
-  Result:=LowerCase(GetenumName(TypeInfo(TOS),Ord(OS)));
-end;
-
-Function OSesToString(OSes: TOSes) : String;
-
-begin
-  Result:=LowerCase(SetToString(PtypeInfo(TypeInfo(TOSes)),Integer(OSes),False));
-end;
-
-Function CPUToString(CPU: TCPU) : String;
-
-begin
-  Result:=LowerCase(GetenumName(TypeInfo(TCPU),Ord(CPU)));
-end;
-
-Function CPUSToString(CPUS: TCPUS) : String;
-
-begin
-  Result:=LowerCase(SetToString(PTypeInfo(TypeInfo(TCPUS)),Integer(CPUS),False));
-end;
-
-Function StringToOS(S : String) : TOS;
-
-Var
-  I : Integer;
-
-begin
-  I:=GetEnumValue(TypeInfo(TOS),S);
-  if (I=-1) then
-    Raise EInstallerError.CreateFmt(SErrInvalidOS,[S]);
-  Result:=TOS(I);
-end;
-
-
-Function OSesToString(S : String) : TOSes;
-
-begin
-  Result:=TOSes(StringToSet(PTypeInfo(TypeInfo(TOSes)),S));
-end;
-
-Function StringToCPU(S : String) : TCPU;
-
-Var
-  I : Integer;
-
-begin
-  I:=GetEnumValue(TypeInfo(TCPU),S);
-  if (I=-1) then
-    Raise EInstallerError.CreateFmt(SErrInvalidCPU,[S]);
-  Result:=TCPU(I);
-end;
-
-Function StringToCPUS(S : String) : TCPUS;
-
-begin
-  Result:=TCPUS(StringToSet(PTypeInfo(TypeInfo(TCPUS)),S));
-end;
-
-Function ModeToString(Mode: TCompilerMode) : String;
-
-begin
-  Result:=LowerCase(GetenumName(TypeInfo(TCompilerMode),Ord(Mode)));
-end;
-
-Function StringToMode(S : String) : TCompilerMode;
-
-Var
-  I : Integer;
-
-begin
-  I:=GetEnumValue(TypeInfo(TCompilerMode),S);
-  if (I=-1) then
-    Raise EInstallerError.CreateFmt(SErrInvalidMode,[S]);
-  Result:=TCompilerMode(I);
-end;
-
-
-Function MakeTargetString(CPU : TCPU;OS: TOS) : String;
-
-begin
-  Result:=CPUToString(CPU)+'-'+OSToString(OS);
-end;
-
-Procedure StringToCPUOS(S : String; Var CPU : TCPU; Var OS: TOS);
-
-Var
-  P : integer;
-
-begin
-  P:=Pos('-',S);
-  If (P=0) then
-    Raise EInstallerError.CreateFmt(SErrInvalidTarget,[S]);
-  CPU:=StringToCPU(Copy(S,1,P-1));
-  OS:=StringToOs(Copy(S,P+1,Length(S)-P));
-end;
-
-end.

+ 0 - 3673
packages/fpmake/src/fpmkunit.pp

@@ -1,3673 +0,0 @@
-{$Mode objfpc}
-{$H+}
-{$define debug}
-unit fpmkunit;
-
-Interface
-
-uses SysUtils,Classes,fpmktype;
-
-Type
-  TRunMode = (rmCompile,rmBuild,rmInstall,rmArchive,rmClean,rmManifest,rmListSources);
-
-  { TNamedItem }
-
-  TNamedItem = Class(TCollectionItem)
-  private
-    FName: String;
-    procedure SetName(const AValue: String);virtual;
-  Public
-    property Name : String Read FName Write SetName;
-  end;
-
-  { TNamedCollection }
-
-  TNamedCollection = Class(TCollection)
-  private
-    FUniqueNames: Boolean;
-  Public
-    Function IndexOfName(AName : String) : Integer;
-    Function ItemByName(AName : String) : TNamedItem;
-    Property UniqueNames : Boolean Read FUniqueNames;
-  end;
-
-  { TNamedItemList }
-
-  TNamedItemList = Class(TList)
-  private
-    function GetNamedItem(Index : Integer): TNamedItem;
-    procedure SetNamedItem(Index : Integer; const AValue: TNamedItem);
-  public
-    Function IndexOfName(AName : String) : Integer;
-    Function ItemByName(ANAme : String) : TNamedItem;
-    Property NamedItems[Index : Integer] : TNamedItem Read GetNamedItem Write SetNamedItem; default;
-  end;
-
-  TCommandAt = fpmktype.TCommandAt;
-
-  { TCommand }
-  TCommand = Class(TNamedItem)
-  private
-    FAfterCommand: TNotifyEvent;
-    FBeforeCommand: TNotifyEvent;
-    FCommand: String;
-    FCommandAt: TCommandAt;
-    FDestFile: String;
-    FIgnoreResult: Boolean;
-    FOptions: String;
-    FSourceFile: String;
-  Public
-    Property SourceFile : String Read FSourceFile Write FSourceFile;
-    Property DestFile : String Read FDestFile Write FDestFile;
-    Property Command : String Read FCommand Write FCommand;
-    Property Options : String Read FOptions Write FOptions;
-    Property At : TCommandAt Read FCommandAt Write FCommandAt;
-    Property IgnoreResult : Boolean Read FIgnoreResult Write FIgnoreResult;
-    Property BeforeCommand : TNotifyEvent Read FBeforeCommand Write FBeforeCommand;
-    Property AfterCommand : TNotifyEvent Read FAfterCommand Write FAfterCommand;
-  end;
-
-  { TCommands }
-
-  TCommands = Class(TNamedCollection)
-  private
-    FDefaultAt: TCommandAt;
-    function GetCommand(Dest : String): TCommand;
-    function GetCommandItem(Index : Integer): TCommand;
-    procedure SetCommandItem(Index : Integer; const AValue: TCommand);
-  Public
-    Function AddCommand(Const Cmd : String) : TCommand;
-    Function AddCommand(Const Cmd,Options : String) : TCommand;
-    Function AddCommand(Const Cmd,Options,Dest,Source : String) : TCommand;
-    Function AddCommand(At : TCommandAt; Const Cmd : String) : TCommand;
-    Function AddCommand(At : TCommandAt; Const Cmd,Options : String) : TCommand;
-    Function AddCommand(At : TCommandAt; Const Cmd,Options, Dest,Source : String) : TCommand;
-    Property CommandItems[Index : Integer] : TCommand Read GetCommandItem Write SetCommandItem;
-    Property Commands[Dest : String] : TCommand Read GetCommand; default;
-    Property DefaultAt : TCommandAt Read FDefaultAt Write FDefaultAt;
-  end;
-
-  { TTarget }
-
-  TTarget = Class(TNamedItem)
-  private
-    FInstall : Boolean;
-    FAfterClean: TNotifyEvent;
-    FAfterCompile: TNotifyEvent;
-    FBeforeClean: TNotifyEvent;
-    FBeforeCompile: TNotifyEvent;
-    FCPUs: TCPUs;
-    FMode: TCompilerMode;
-    FResourceStrings: Boolean;
-    FObjectPath,
-    FUnitPath,
-    FIncludePath,
-    FDependencies: TStrings;
-    FCommands : TCommands;
-    FDirectory: String;
-    FExtension: String;
-    FFileType: TFileType;
-    FOptions: String;
-    FOSes: TOSes;
-    FFPCTarget: String;
-    FTargetState: TTargetState;
-    FTargetType: TTargetType;
-    function GetCommands: TCommands;
-    function GetHasCommands: Boolean;
-    function GetHasStrings(AIndex: integer): Boolean;
-    function GetStrings(AIndex: integer): TStrings;
-    procedure SetCommands(const AValue: TCommands);
-    procedure SetStrings(AIndex: integer; const AValue: TStrings);
-  Protected
-    Function GetSourceFileName : String; virtual;
-    Function GetUnitFileName : String; virtual;
-    Function GetObjectFileName : String; virtual;
-    Function GetRSTFileName : String; Virtual;
-    Function GetProgramFileName(AnOS : TOS) : String; Virtual;
-  Public
-    Constructor Create(ACollection : TCollection); override;
-    Destructor Destroy; override;
-    Function GetOutputFileName (AOs : TOS) : String; Virtual;
-    procedure SetName(const AValue: String);override;
-    Procedure GetCleanFiles(List : TStrings; APrefix : String; AnOS : TOS); virtual;
-    Procedure GetSourceFiles(List : TStrings; APrefix : String; AnOS : TOS); virtual;
-    Procedure GetInstallFiles(List : TStrings; APrefix : String; AnOS : TOS); virtual;
-    Procedure GetArchiveFiles(List : TStrings; APrefix : String; AnOS : TOS); virtual;
-    Property HasUnitPath : Boolean Index 0 Read GetHasStrings;
-    Property HasObjectPath : Boolean Index 1 Read GetHasStrings;
-    Property HasIncludePath : Boolean Index 2 Read GetHasStrings;
-    Property HasDependencies : Boolean Index 3 Read GetHasStrings;
-    Property HasCommands : Boolean Read GetHasCommands;
-    Property UnitPath : TStrings Index 0 Read GetStrings Write SetStrings;
-    Property ObjectPath : TStrings Index 1  Read GetStrings Write SetStrings;
-    Property IncludePath : TStrings Index 2 Read GetStrings Write SetStrings;
-    Property Dependencies : TStrings Index 3 Read GetStrings Write SetStrings;
-    Property Commands : TCommands Read GetCommands Write SetCommands;
-    Property State : TTargetState Read FTargetState;
-    Property TargetType : TTargetType Read FTargetType Write FTargetType;
-    Property OS : TOSes Read FOSes Write FOSes;
-    Property Mode : TCompilerMode Read FMode Write FMode;
-    Property Options : String Read FOptions Write Foptions;
-    Property SourceFileName: String Read GetSourceFileName ;
-    Property UnitFileName : String Read GetUnitFileName;
-    Property ObjectFileName : String Read GetObjectFileName;
-    Property RSTFileName : String Read GetRSTFileName;
-    Property CPU : TCPUs Read FCPUs Write FCPUs;
-    Property FPCTarget : String Read FFPCTarget Write FFPCTarget;
-    Property Extension : String Read FExtension Write FExtension;
-    Property FileType : TFileType Read FFileType Write FFileType;
-    Property Directory : String Read FDirectory Write FDirectory;
-    Property ResourceStrings : Boolean Read FResourceStrings Write FResourceStrings;
-    Property Install : Boolean Read FInstall Write FInstall;
-    // Events.
-    Property BeforeCompile : TNotifyEvent Read FBeforeCompile Write FBeforeCompile;
-    Property AfterCompile : TNotifyEvent Read FAfterCompile Write FAfterCompile;
-    Property BeforeClean : TNotifyEvent Read FBeforeClean Write FBeforeClean;
-    Property AfterClean : TNotifyEvent Read FAfterClean Write FAfterClean;
-  end;
-
-  { TTargets }
-
-  TTargets = Class(TNamedCollection)
-  private
-    FDefaultCPU: TCPUs;
-    FDefaultDir : String;
-    FDefaultOS: TOSes;
-    function GetTargetItem(Index : Integer): TTarget;
-    function GetTarget(AName : String): TTarget;
-    procedure SetDefaultDir(const AValue: String);
-    procedure SetTargetItem(Index : Integer; const AValue: TTarget);
-    Procedure ApplyDefaults(ATarget : TTarget);
-  Public
-    Procedure ResetDefaults;
-    Function AddUnit(AUnitName : String) : TTarget;
-    Function AddProgram(AProgramName : String) : TTarget;
-    Function AddExampleUnit(AUnitName : String) : TTarget;
-    Function AddExampleProgram(AProgramName : String) : TTarget;
-    Property Targets[AName : String] : TTarget Read GetTarget; default;
-    Property TargetItems[Index : Integer] : TTarget Read GetTargetItem Write SetTargetItem;
-    Property DefaultDir : String Read FDefaultDir Write SetDefaultDir;
-    Property DefaultOS : TOSes Read FDefaultOS Write FDefaultOS;
-    Property DefaultCPU : TCPUs Read FDefaultCPU Write FDefaultCPU;
-  end;
-
-  { TSource }
-
-  TSource = Class(TNamedItem)
-  private
-    FSourceType: TSourceType;
-  Public
-    Constructor Create(ACollection : TCollection); override;
-    Destructor Destroy; override;
-    procedure GetSourceFiles(List: TStrings);
-    Property SourceType : TSourceType Read FSourceType Write FSourceType;
-  end;
-
-  { TSources }
-
-  TSources = Class(TNamedCollection)
-  private
-    function GetSourceItem(Index : Integer): TSource;
-    procedure SetSourceItem(Index : Integer; const AValue: TSource);
-  public
-    Function AddDocFiles(AFiles : String) : TSource;
-    Function AddSrcFiles(AFiles : String) : TSource;
-    Function AddExampleFiles(AFiles : String) : TSource;
-    Function AddTestFiles(AFiles : String) : TSource;
-    Property SourceItems[Index : Integer] : TSource Read GetSourceItem Write SetSourceItem;default;
-  end;
-
-  { TPackage }
-
-  TPackage = Class(TNamedItem) // Maybe descend from/use TTarget ?
-  private
-    FAfterArchive: TNotifyEvent;
-    FAfterClean: TNotifyEvent;
-    FAfterCompile: TNotifyEvent;
-    FAfterInstall: TNotifyEvent;
-    FAfterManifest: TNotifyEvent;
-    FBeforeArchive: TNotifyEvent;
-    FBeforeClean: TNotifyEvent;
-    FBeforeCompile: TNotifyEvent;
-    FBeforeInstall: TNotifyEvent;
-    FBeforeManifest: TNotifyEvent;
-    FUnitPath,
-    FObjectPath,
-    FIncludePath,
-    FCleanFiles,
-    FArchiveFiles,
-    FInstallFiles,
-    FDependencies: TStrings;
-    FCPU: TCPUs;
-    FOS: TOses;
-    FTargetState: TTargetState;
-    FTargets: TTargets;
-    FSources: TSources;
-    FDirectory: String;
-    FOptions: String;
-    FFileName: String;
-    FAuthor: String;
-    FLicense: String;
-    FExternalURL: String;
-    FVersion: String;
-    FEmail : String;
-    FCommands : TCommands;
-    FDescriptionFile : String;
-    FDescription : String;
-    Function GetDescription : string;
-    Function GetFileName : string;
-    function GetCommands: TCommands;
-    function GetHasCommands: Boolean;
-    function GetHasStrings(AIndex: integer): Boolean;
-    function GetStrings(AIndex: integer): TStrings;
-    procedure SetCommands(const AValue: TCommands);
-    procedure SetStrings(AIndex: integer; const AValue: TStrings);
-  Public
-    constructor Create(ACollection: TCollection); override;
-    destructor destroy; override;
-    Function AddTarget(AName : String) : TTarget;
-    Procedure AddDependency(AName : String);
-    Procedure AddInstallFile(AFileName : String);
-    Procedure GetCleanFiles(List : TStrings; Const APrefix : String; AOS : TOS); virtual;
-    procedure GetInstallFiles(List: TStrings;Types : TTargetTypes;Const APrefix : String; AOS : TOS);
-    Procedure GetArchiveFiles(List : TStrings; Const APrefix : String; AOS : TOS); virtual;
-    Procedure GetSourceFiles(List : TStrings); virtual;
-    Procedure GetManifest(Manifest : TStrings);
-    Property Version : String Read FVersion Write FVersion;
-    Property FileName : String Read GetFileName Write FFileName;
-    Property ExternalURL : String Read FExternalURL Write FExternalURL;
-    Property Email : String Read FEmail Write FEmail;
-    Property Author : String Read FAuthor Write FAuthor;
-    Property License : String Read FLicense Write FLicense;
-    Property Directory : String Read FDirectory Write FDirectory;
-    Property Description : String Read GetDescription Write FDescription;
-    Property DescriptionFile : String Read FDescriptionFile Write FDescriptionFile;
-    // Compiler options.
-    Property OS : TOses Read FOS Write FOS;
-    Property CPU : TCPUs Read FCPU Write FCPU;
-    Property Options: String Read FOptions Write FOptions;
-    Property HasUnitPath : Boolean Index 0 Read GetHasStrings;
-    Property HasObjectPath : Boolean Index 1 Read GetHasStrings;
-    Property HasIncludePath : Boolean Index 2 Read GetHasStrings;
-    Property HasDependencies : Boolean Index 3 Read GetHasStrings;
-    Property HasInstallFiles: Boolean Index 4 Read GetHasStrings;
-    Property HasCleanFiles : Boolean Index 5 Read GetHasStrings;
-    Property HasArchiveFiles : Boolean Index 6 Read GetHasStrings;
-    Property HasCommands : Boolean Read GetHasCommands;
-    Property UnitPath : TStrings Index 0 Read GetStrings Write SetStrings;
-    Property ObjectPath : TStrings Index 1  Read GetStrings Write SetStrings;
-    Property IncludePath : TStrings Index 2 Read GetStrings Write SetStrings;
-    // Targets and dependencies
-    Property Dependencies : TStrings Index 3 Read GetStrings Write SetStrings;
-    Property InstallFiles : TStrings Index 4 Read GetStrings Write SetStrings;
-    Property CleanFiles : TStrings Index 5 Read GetStrings Write SetStrings;
-    Property ArchiveFiles : TStrings Index 6 Read GetStrings Write SetStrings;
-    Property Commands : TCommands Read GetCommands Write SetCommands;
-    Property State : TTargetState Read FTargetState;
-    Property Targets : TTargets Read FTargets;
-    Property Sources : TSources Read FSources;
-    // events
-    Property BeforeCompile : TNotifyEvent Read FBeforeCompile Write FBeforeCompile;
-    Property AfterCompile : TNotifyEvent Read FAfterCompile Write FAfterCompile;
-    Property BeforeInstall : TNotifyEvent Read FBeforeInstall Write FBeforeInstall;
-    Property AfterInstall : TNotifyEvent Read FAfterInstall Write FAfterInstall;
-    Property BeforeClean : TNotifyEvent Read FBeforeClean Write FBeforeClean;
-    Property AfterClean : TNotifyEvent Read FAfterClean Write FAfterClean;
-    Property BeforeArchive : TNotifyEvent Read FBeforeArchive Write FBeforeArchive;
-    Property AfterArchive : TNotifyEvent Read FAfterArchive Write FAfterArchive;
-    Property BeforeManifest : TNotifyEvent Read FBeforeManifest Write FBeforeManifest;
-    Property AfterManifest : TNotifyEvent Read FAfterManifest Write FAfterManifest;
-  end;
-
-  { TPackages }
-
-  TPackages = Class(TNamedCollection)
-  private
-    function GetPackage(AName : String): TPackage;
-    function GetPackageItem(AIndex : Integer): TPackage;
-    procedure SetPackageItem(AIndex : Integer; const AValue: TPackage);
-  Public
-    Function AddPackage(Const AName : String) : TPackage;
-    Property Packages[AName : String] : TPackage Read GetPackage ; Default;
-    Property PackageItems[AIndex : Integer] : TPackage Read GetPackageItem Write SetPackageItem;
-  end;
-
-  { TDefaults }
-
-  TDefaults = Class(TPersistent)
-  Private
-    FArchive: String;
-    FCompiler: String;
-    FCopy: String;
-    FMkDir: String;
-    FMove: String;
-    FOptions: String;
-    FCPU: TCPU;
-    FOS: TOS;
-    FMode : TCompilerMode;
-    FCompilerVersion : String;
-    FPrefix: String;
-    FBaseInstallDir,
-    FUnitInstallDir,
-    FBinInstallDir,
-    FDocInstallDir,
-    FExamplesInstallDir : String;
-    FRemove: String;
-    FTarget: String;
-    FUnixPaths: Boolean;
-    function GetBaseInstallDir: String;
-    function GetBinInstallDir: String;
-    function GetCompiler: String;
-    function GetDocInstallDir: String;
-    function GetExamplesInstallDir: String;
-    function GetUnitInstallDir: String;
-    procedure SetBaseInstallDir(const AValue: String);
-    procedure SetCPU(const AValue: TCPU);
-    procedure SetOS(const AValue: TOS);
-    procedure SetPrefix(const AValue: String);
-    procedure SetTarget(const AValue: String);
-  Protected
-    procedure RecalcTarget;
-  Public
-    Constructor Create;
-    Procedure InitDefaults;
-    Procedure Assign(ASource : TPersistent);override;
-    procedure CompilerDefaults;
-    Procedure LocalInit(Const AFileName : String);
-    Procedure LoadFromFile(Const AFileName : String);
-    Procedure SaveToFile(Const AFileName : String);
-    procedure SaveToStream(S : TStream);virtual;
-    procedure LoadFromStream(S : TStream);virtual;
-    // Compile Information
-    Property Target : String Read FTarget Write SetTarget;
-    Property OS : TOS Read FOS Write SetOS;
-    Property CPU : TCPU Read FCPU Write SetCPU;
-    Property Mode : TCompilerMode Read FMode Write FMode;
-    Property UnixPaths : Boolean Read FUnixPaths Write FUnixPaths;
-    Property Options : String Read FOptions Write FOptions;    // Default compiler options.
-    // paths etc.
-    Property Prefix : String Read FPrefix Write SetPrefix;
-    Property BaseInstallDir : String Read GetBaseInstallDir Write SetBaseInstallDir;
-    Property UnitInstallDir : String Read GetUnitInstallDir Write FUnitInstallDir;
-    Property BinInstallDir : String Read GetBinInstallDir Write FBinInstallDir;
-    Property DocInstallDir : String Read GetDocInstallDir Write FDocInstallDir;
-    Property ExamplesInstallDir : String Read GetExamplesInstallDir Write FExamplesInstallDir;
-    // Command tools. If not set, internal commands  will be used.
-    Property Compiler : String Read GetCompiler Write FCompiler; // Compiler. Defaults to fpc/ppc386
-    Property Copy : String Read FCopy Write FCopy;             // copy $(FILES) to $(DEST)
-    Property Move : String Read FMove Write FMove;             // Move $(FILES) to $(DEST)
-    Property Remove : String Read FRemove Write FRemove;       // Delete $(FILES)
-    Property MkDir : String Read FMkDir write FMkDir;          // Make $(DIRECTORY)
-    Property Archive : String Read FArchive Write FArchive;    // zip $(ARCHIVE) $(FILESORDIRS)
-  end;
-
-  { TBuildEngine }
-
-  TBuildEngine = Class(TComponent)
-  private
-    // general variables
-    FCompiler : String;
-    FStartDir : String;
-    FTargetDir : String;
-    FDefaults : TDefaults;
-    FForceCompile : Boolean;
-    FListMode : Boolean;
-    // Variables used when compiling a package.
-    // Only valid during compilation of the package.
-    FCurrentOutputDir : String;
-    FCurrentPackage: TPackage;
-    // Events
-    FOnLog: TLogEvent;
-    FAfterArchive: TNotifyEvent;
-    FAfterClean: TNotifyEvent;
-    FAfterCompile: TNotifyEvent;
-    FAfterInstall: TNotifyEvent;
-    FAfterManifest: TNotifyEvent;
-    FBeforeArchive: TNotifyEvent;
-    FBeforeClean: TNotifyEvent;
-    FBeforeCompile: TNotifyEvent;
-    FBeforeInstall: TNotifyEvent;
-    FBeforeManifest: TNotifyEvent;
-    procedure SetDefaults(const AValue: TDefaults);
-    procedure SetTargetDir(const AValue: String);
-  Protected
-    Procedure Error(Msg : String);
-    Procedure Error(Fmt : String; Args : Array of const);
-    // Internal copy/delete/move/archive/mkdir files
-    Procedure SysCopyFile(Const Src,Dest : String); virtual;
-    Procedure SysMoveFile(Const Src,Dest : String); virtual;
-    Procedure SysDeleteFile(Const AFileName : String); virtual;
-    Procedure SysArchiveFiles(List : TStrings; Const AFileName : String); virtual;
-    Procedure Log(Level : TVerboseLevel; Const Msg : String);
-    Procedure Log(Level : TVerboseLevel; Const Fmt : String; Args : Array Of Const);
-    Procedure EnterDir(ADir : String);
-    Function GetCompiler : String;
-    Procedure InstallPackageFiles(APAckage : TPackage; tt : TTargetType; Const Src,Dest : String); virtual;
-    Function FileNewer(Src,Dest : String) : Boolean;
-
-  Public
-    Constructor Create(AOwner : TComponent); override;
-    // Public Copy/delete/Move/Archive/Mkdir Commands.
-    Procedure ExecuteCommand(Cmd : String; Args : String; IgnoreError : Boolean = False); virtual;
-    Procedure CmdCopyFiles(List : TStrings; Const DestDir : String);
-    Procedure CmdCreateDir(DestDir : String);
-    Procedure CmdMoveFiles(List : TStrings; Const DestDir : String);
-    Procedure CmdDeleteFiles(List : TStrings);
-    Procedure CmdArchiveFiles(List : TStrings; Const ArchiveFile : String);
-    Procedure ExecuteCommands(Commands : TCommands; At : TCommandAt);
-    // Target commands
-    Function  GetTargetDir(APackage : TPackage; ATarget : TTarget; AbsolutePath : Boolean = False) : String;
-    Function  GetCompilerCommand(APackage : TPackage; Target : TTarget) : String;
-    Function  TargetOK(Target : TTarget) : Boolean;
-    Function  NeedsCompile(Target : TTarget) : Boolean;
-    Procedure Compile(Target : TTarget);  virtual;
-    Procedure FixDependencies(Target: TTarget);
-    // Package commands
-    Function  GetPackageDir(APackage : TPackage; AbsolutePath : Boolean = False) : String;
-    Function  GetOutputDir(APackage : TPackage; AbsolutePath : Boolean = False) : String;
-    Function  PackageOK(APackage : TPackage) : Boolean; virtual;
-    Procedure DoBeforeCompile(APackage : TPackage);virtual;
-    Procedure DoAfterCompile(APackage : TPackage);virtual;
-    Procedure DoBeforeInstall(APackage : TPackage);virtual;
-    Procedure DoAfterInstall(APackage : TPackage);virtual;
-    Procedure DoBeforeArchive(APackage : TPackage);virtual;
-    Procedure DoAfterArchive(APackage : TPackage);virtual;
-    Procedure DoBeforeClean(APackage : TPackage);virtual;
-    Procedure DoAfterClean(APackage : TPackage);virtual;
-    Function NeedsCompile(APackage : TPackage) : Boolean; virtual;
-    Procedure Compile(APackage : TPackage);
-    Procedure Install(APackage : TPackage);
-    Procedure Archive(APackage : TPackage);
-    Procedure Clean(APackage : TPackage);
-    Procedure FixDependencies(APackage : TPackage);
-    Procedure GetSourceFiles(APackage : TPackage; List : TStrings);
-    Procedure GetManifest(APackage : TPackage; Manifest : TStrings);
-    procedure CheckExternalPackage(Const APackageName : String);
-    procedure CreateOutputDir(APackage: TPackage);
-    // Packages commands
-    Procedure Compile(Packages : TPackages);
-    Procedure Install(Packages : TPackages);
-    Procedure Archive(Packages : TPackages);
-    Procedure Clean(Packages : TPackages);
-    Procedure GetSourceFiles(Packages : TPackages;List : TStrings);
-    Procedure GetManifest(Packages : TPackages; Manifest : TStrings);
-    Property ListMode : Boolean Read FListMode Write FListMode;
-    Property ForceCompile : Boolean Read FForceCompile Write FForceCompile;
-    Property Defaults : TDefaults Read FDefaults Write SetDefaults;
-    Property TargetDir : String Read FTargetDir Write SetTargetDir;
-    // Events
-    Property BeforeCompile : TNotifyEvent Read FBeforeCompile Write FBeforeCompile;
-    Property AfterCompile : TNotifyEvent Read FAfterCompile Write FAfterCompile;
-    Property BeforeInstall : TNotifyEvent Read FBeforeInstall Write FBeforeInstall;
-    Property AfterInstall : TNotifyEvent Read FAfterInstall Write FAfterInstall;
-    Property BeforeClean : TNotifyEvent Read FBeforeClean Write FBeforeClean;
-    Property AfterClean : TNotifyEvent Read FAfterClean Write FAfterClean;
-    Property BeforeArchive : TNotifyEvent Read FBeforeArchive Write FBeforeArchive;
-    Property AfterArchive : TNotifyEvent Read FAfterArchive Write FAfterArchive;
-    Property BeforeManifest : TNotifyEvent Read FBeforeManifest Write FBeforeManifest;
-    Property AfterManifest : TNotifyEvent Read FAfterManifest Write FAfterManifest;
-    Property OnLog : TLogEvent Read FOnLog Write FOnlog;
-  end;
-
-  { TInstaller }
-
-  TInstaller = Class(TComponent)
-  private
-    FBuildEngine: TBuildEngine;
-    FDefaultPackage: TPackage;
-    FDefaults: TDefaults;
-    FPackages: TPackages;
-    FRunMode: TRunMode;
-    FListMode : Boolean;
-    FLogLevels : TVerboseLevels;
-    Function GetPackageString(Index : Integer) : String;
-    Procedure SetPackageString(Index : Integer; AValue : String);
-    function GetStrings(AIndex : Integer): TStrings;
-    function GetOSes: TOSes;
-    function GetTargets: TTargets;
-    function GetSources: TSources;
-    procedure SetDefaultPackage(const AValue: TPackage);
-    procedure SetDefaults(const AValue: TDefaults);
-    procedure SetStrings(AIndex : Integer; const AValue: TStrings);
-    procedure SetOses(const AValue: TOSes);
-  Protected
-    Procedure Log(Level : TVerboseLevel; Const Msg : String);
-    Procedure CreatePackages; virtual;
-    Procedure CheckPackages; virtual;
-    Procedure CreateBuildEngine; virtual;
-    Procedure CheckDefaultPackage;
-    Procedure Error(Msg : String);
-    Procedure Error(Fmt : String; Args : Array of const);
-    Procedure AnalyzeOptions;
-    Procedure Usage(FMT : String; Args : Array of const);
-    Procedure Compile(Force : Boolean); virtual;
-    Procedure Clean; virtual;
-    Procedure Install; virtual;
-    Procedure Archive; virtual;
-    Procedure Manifest; virtual;
-    Procedure GetSourceFiles; virtual;
-    Property BuildEngine : TBuildEngine Read FBuildEngine;
-  Public
-    Constructor Create(AOWner : TComponent); override;
-    Destructor destroy; override;
-    Function StartPackage(Const AName : String) : TPackage;
-    Procedure EndPackage;
-    Function Run : Boolean;
-    Function AddTarget(AName : String) : TTarget;
-    Procedure AddDependency(AName : String);
-    Property DefaultPackage : TPackage read FDefaultPackage write SetDefaultPackage;
-    Property Packages : TPackages Read FPackages;
-    Property Dependencies : TStrings Index 0 Read GetStrings Write SetStrings;
-    Property InstallFiles : TStrings Index 1 Read GetStrings Write SetStrings;
-    Property CleanFiles : TStrings Index 2 Read GetStrings Write SetStrings;
-    Property ArchiveFiles : TStrings Index 3 Read GetStrings Write SetStrings;
-    Property Defaults : TDefaults Read FDefaults Write SetDefaults;
-    Property RunMode : TRunMode Read FRunMode;
-    Property ListMode : Boolean Read FListMode;
-    // Default Package redirects.
-    Property Targets : TTargets Read GetTargets;
-    Property Sources : TSources Read GetSources;
-    Property OS: TOSes Read GetOSes Write SetOses;
-    Property Author : String Index 0 Read GetPackageString Write SetPackageString;
-    Property Directory : String Index 1 Read GetPackageString Write SetPackageString;
-    Property License : String Index 2 Read GetPackageString Write SetPackageString;
-    Property Options : String Index 3 Read GetPackageString Write SetPackageString;
-    Property ExternalURL : String Index 4 Read GetPackageString Write SetPackageString;
-    Property Email : String Index 5 Read GetPackageString Write SetPackageString;
-    Property Description: String Index 6 Read GetPackageString Write SetPackageString;
-    Property DescriptionFileName: String Index 7 Read GetPackageString Write SetPackageString;
-    Property Version : String Index 8 Read GetPackageString Write SetPackageString;
-    Property FileName : String Index 9 Read GetPackageString Write SetPackageString;
-  end;
-
-  TReplaceFunction = Function (Const AName,Args : String) : String of Object;
-
-  { TValueItem }
-
-  TValueItem = Class(TObject)
-    FValue : String;
-    Constructor Create(AValue : String);
-  end;
-
-  { TFunctionItem }
-
-  TFunctionItem = Class(TObject)
-    FFunc : TReplaceFunction;
-    Constructor Create(AFunc : TReplaceFunction);
-  end;
-
-  { TDictionary }
-
-  TDictionary = Class(TComponent)
-    FList : TStringList;
-  Public
-    Constructor Create(AOwner : TComponent); override;
-    Destructor Destroy;override;
-    Procedure AddVariable(Const AName,Value : String);
-    Procedure AddFunction(Const AName : String; FReplacement : TReplaceFunction);
-    Procedure RemoveItem(Const AName : String);
-    Function GetValue(Const AName : String) : String;
-    Function GetValue(Const AName,Args : String) : String; virtual;
-    Function ReplaceStrings(Const ASource : String) : String; virtual;
-  end;
-
-  ECollectionError = Class(Exception);
-  EInstallerError = fpmktype.EInstallerError;
-  EDictionaryError = Class(Exception);
-
-  TInstallerClass = Class of TInstaller;
-  TDictionaryClass = Class of TDictionary;
-
-// Constants are in the file as for fpmktype.
-
-{$i fpmkcnst.inc}
-
-
-Type
-  TArchiveEvent = Procedure (Const AFileName : String; List : TStrings) of Object;
-  TArchiveProc = Procedure (Const AFileName : String; List : TStrings);
-
-Var
-  InstallerClass : TInstallerClass = TInstaller;
-  DictionaryClass : TDictionaryClass = TDictionary;
-  OnArchiveFiles : TArchiveEvent = Nil;
-  ArchiveFilesProc : TArchiveProc = Nil;
-
-Function CurrentOS : String;
-Function CurrentCPU : String;
-
-Function Installer : TInstaller;
-Function Defaults : TDefaults; // Set by installer.
-Function Dictionary : TDictionary;
-
-Function OSToString(OS: TOS) : String;
-Function OSesToString(OSes: TOSes) : String;
-Function CPUToString(CPU: TCPU) : String;
-Function CPUSToString(CPUS: TCPUS) : String;
-Function StringToOS(S : String) : TOS;
-Function OSesToString(S : String) : TOSes;
-Function StringToCPU(S : String) : TCPU;
-Function StringToCPUS(S : String) : TCPUS;
-Function ModeToString(Mode: TCompilerMode) : String;
-Function StringToMode(S : String) : TCompilerMode;
-Function MakeTargetString(CPU : TCPU;OS: TOS) : String;
-Procedure StringToCPUOS(S : String; Var CPU : TCPU; Var OS: TOS);
-Procedure ResolveDependencies(L : TStrings; P : TNamedCollection);
-Function AddStrings(Dest,Src : TStrings) : Integer ;
-function AddStrings(Dest, Src : TStrings; Const APrefix : String) : Integer ;
-Function FileListToString(List : TStrings; Prefix : String) : String;
-Function FixPath (APath : String) : String;
-Procedure ChangeDir(APath : String);
-Function Substitute(Const Source : String; Macros : Array of string) : String;
-Procedure SplitCommand(Const Cmd : String; Var Exe,Options : String);
-
-Implementation
-
-uses typinfo;
-
-ResourceString
-  SErrNameExists        = 'Name "%s" already exists in the collection.';
-  SErrNoSuchName        = 'Could not find item with name "%s" in the collection.';
-  SErrNoPackage         = 'No package available. Add package with StartPackage Call';
-  SErrInValidArgument   = 'Invalid command-line argument at position %d : %s';
-  SErrNeedArgument      = 'Option at position %d (%s) needs an argument';
-  SErrNoPackagesDefined = 'No action possible: No packages were defined.';
-  SErrInstaller         = 'The installer encountered the following error:';
-  SErrDepUnknownTarget  = 'Unknown target in dependencies for %s: %s';
-  SErrExternalCommandFailed = 'External command "%s" failed with exit code: %d';
-  SErrCreatingDirectory = 'Failed to create directory: %s';
-  SErrDeletingFile      = 'Failed to delete file: %s';
-  SErrMovingFile        = 'Failed to move file "%s" to "%s"';
-  SErrCopyingFile       = 'Failed to copy file "%s" to "%s"';
-  SErrChangeDirFailed   = 'Failed to enter directory: %s';
-  SErrInvalidArgumentToSubstitute = 'Invalid number of arguments to Substitute';
-  SErrNoArchiveSupport  = 'This binary contains no archive support. Please recompile with archive support';
-  SErrNoDictionaryItem  = 'No item called "%s" in the dictionary';
-  SErrNoDictionaryValue = 'The item "%s" in the dictionary is not a value.';
-  SErrNoDictionaryFunc  = 'The item "%s" in the dictionary is not a function.';
-  SWarnCircularDependency = 'Warning: Circular dependency detected when compiling target %s: %s';
-  SWarnFailedToSetTime  = 'Warning: Failed to set timestamp on file : %s';
-  SWarnFailedToGetTime  = 'Warning: Failed to get timestamp from file : %s';
-  SWarnFileDoesNotExist = 'Warning: File "%s" does not exist';
-
-  // Log messages
-  SLogEnterDir           = 'Entering directory: %s';
-  SLogCompilingPackage   = 'Compiling package : %s';
-  SLogCompilingTarget    = 'Compiling target  : %s';
-  SLogExecutingCommand   = 'Executing command %s with options: %s';
-  SLogCreatingOutputDir  = 'Creating output dir : %s';
-  SLogOutputDirExists    = 'Output dir exists : %s';
-  SLogInstallingPackage  = 'Installing package : %s';
-  SLogArchivingPackage   = 'Archiving package : %s';
-  SLogCleaningPackage    = 'Cleaning package : %s';
-  SLogCopyingFile        = 'Copying file "%s" to "%s"';
-  SLogCompilingFileTimes = 'Comparing file "%s" time "%s" to "%s" time "%s".';
-  SLogSourceNewerDest    = 'Source file "%s" (%s) is newer than destination "%s" (%s).';
-
-  // Help messages for usage
-  SValue              = 'Value';
-  SHelpUsage          = 'Usage: %s command [options]';
-  SHelpCommand        = 'Where command is one of the following:';
-  SHelpCompile        = 'Compile all units in the package(s).';
-  SHelpBuild          = 'Build all units in the package(s).';
-  SHelpInstall        = 'Install all units in the package(s).';
-  SHelpClean          = 'Clean (remove) all units in the package(s).';
-  SHelpArchive        = 'Create archive (zip) with all units in the package(s).';
-  SHelpHelp           = 'This message.';
-  SHelpManifest       = 'Create a manifest suitable for import in repository.';
-  SHelpCmdOptions     = 'Where options is one or more of the following:';
-  SHelpCPU            = 'Compile for indicated CPU.';
-  SHelpOS             = 'Compile for indicated OS';
-  SHelpTarget         = 'Compile for indicated target';
-  SHelpList           = 'list commands instead of actually executing them.';
-  SHelpPrefix         = 'Use indicated prefix directory for all commands.';
-  SHelpNoDefaults     = 'Do not use defaults when compiling.';
-  SHelpBaseInstallDir = 'Use indicated directory as base install dir.';
-  SHelpCompiler       = 'Use indicated binary as compiler';
-  SHelpConfig         = 'Use indicated config file when compiling.';
-  SHelpVerbose        = 'Be verbose when working.';
-
-
-Const
-  // Keys for Defaults file. Do not localize.
-  KeyCompiler = 'Compiler';
-  KeyArchive  = 'Archive';
-  KeyCopy     = 'Copy';
-  KeyMkDir    = 'MkDir';
-  KeyMove     = 'Move';
-  KeyRemove   = 'Remove';
-  KeyOptions  = 'Options';
-  KeyCPU      = 'CPU';
-  KeyOS       = 'OS';
-  KeyMode     = 'Mode';
-  KeyPrefix   = 'Prefix';
-  KeyTarget   = 'Target';
-  KeyBaseInstallDir     = 'BaseInstallDir';
-  KeyUnitInstallDir     = 'UnitInstallDir';
-  KeyBinInstallDir      = 'BinInstallDir';
-  KeyDocInstallDir      = 'DocInstallDir';
-  KeyExamplesInstallDir = 'ExamplesInstallDir';
-
-// Callback for Sysutils getapplicationname.
-
-Function GetFPMakeName : String;
-
-begin
-  Result:='fpmake';
-end;
-
-
-Function CurrentOS : String;
-
-begin
-  Result:=OSToString(Defaults.OS);
-end;
-
-Function CurrentCPU : String;
-
-begin
-  Result:=CPUToString(Defaults.CPU);
-end;
-
-Function OSToString(OS: TOS) : String;
-
-begin
-  Result:=fpmktype.OsToString(OS);
-end;
-
-Function OSesToString(OSes: TOSes) : String;
-
-begin
-  Result:=fpmktype.OSesToString(OSes);
-end;
-
-Function CPUToString(CPU: TCPU) : String;
-
-begin
-  Result:=fpmkType.CPUToString(CPU);
-end;
-
-Function CPUSToString(CPUS: TCPUS) : String;
-
-begin
-  Result:=fpmktype.CPUSToString(CPUS);
-end;
-
-Function StringToOS(S : String) : TOS;
-
-begin
-  Result:=fpmktype.StringToOS(S);
-end;
-
-Function OSesToString(S : String) : TOSes;
-
-begin
-  Result:=fpmktype.OSesToString(S);
-end;
-
-Function StringToCPU(S : String) : TCPU;
-
-begin
-  Result:=fpmktype.StringToCPU(S);
-end;
-
-Function StringToCPUS(S : String) : TCPUS;
-
-begin
-  Result:=fpmktype.StringToCPUS(S);
-end;
-
-Function ModeToString(Mode: TCompilerMode) : String;
-
-begin
-  Result:=fpmktype.ModeToString(Mode);
-end;
-
-Function StringToMode(S : String) : TCompilerMode;
-
-begin
-  Result:=fpmktype.StringToMode(S);
-end;
-
-
-Function MakeTargetString(CPU : TCPU;OS: TOS) : String;
-
-begin
-  Result:=fpmktype.MakeTargetString(CPU,OS);
-end;
-
-Procedure StringToCPUOS(S : String; Var CPU : TCPU; Var OS: TOS);
-
-begin
- fpmktype.StringToCPUOS(S,CPU,OS);
-end;
-
-Procedure ResolveDependencies(L : TStrings; P : TNamedCollection);
-
-Var
-  I,J : Integer;
-
-begin
-  If Assigned(L) then
-    For I:=0 to L.Count-1 do
-      begin
-      J:=P.IndexOfName(L[i]);
-      If J<>-1 then
-        L.Objects[I]:=P.Items[J];
-      end;
-end;
-
-Function AddStrings(Dest,Src : TStrings) : Integer ;
-
-begin
-  Result:=AddStrings(Dest,Src,'');
-end;
-
-Procedure AddStrings(Var S : String; L : TStrings; Prefix : String);
-
-Var
-  I : Integer;
-
-begin
-  For I:=0 to L.Count-1 do
-    begin
-    if (S<>'') then
-      S:=S+' ';
-    S:=S+Prefix+L[i];
-    end;
-end;
-
-function AddStrings(Dest, Src : TStrings; Const APrefix : String) : Integer ;
-begin
-  Result:=0;
-  While (Result<Src.Count) do
-    begin
-    If (APrefix<>'') then
-      Dest.Add(APrefix+Src[Result]) // Not sure whether '' is optimized away.
-    else
-      Dest.Add(Src[Result]);
-    Inc(Result);
-    end;
-end;
-
-function FileListToString(List : TStrings; Prefix : String) : String;
-
-Var
-  I : integer;
-  S : String;
-
-begin
-  Result:='';
-  For I:=0 to List.Count-1 do
-    begin
-    If (I>0) then
-      Result:=Result+' ';
-    S:=Prefix+List[i];
-    If (Pos(' ',S)<>0) then
-      S:='"'+S+'"';
-    Result:=Result+S;
-    end;
-end;
-
-function FixPath (APath : String) : String;
-
-Var
-  P : PChar;
-
-begin
-  Result:=APath;
-  If (result<>'') then
-    begin
-    P:=PChar(Result);
-    While (P^<>#0) do
-      begin
-      If P^ in ['/','\',':'] then // do not use drive letters.
-        P^:=PathDelim;
-      Inc(P);
-      end;
-    end;
-end;
-
-procedure ChangeDir(APath : String);
-
-begin
-  if Not SetCurrentDir(APath) then
-    Raise EInstallerError.CreateFmt(SErrChangeDirFailed,[APath]);
-end;
-
-procedure SplitCommand(const Cmd : String; var Exe, Options : String);
-
-Const
-  WhiteSpace = [#9,#10,#13,' '];
-  QuoteChars = ['''','"'];
-
-Var
-  I : Integer;
-  InQuote : Boolean;
-  LastQuote : Char;
-  S : String;
-
-begin
-  S:=Trim(Cmd);
-  InQuote:=False;
-  LastQuote:=#0;
-  I:=1;
-  While (I<=Length(S)) and (Inquote or not (S[I] in whiteSpace)) do
-    begin
-    If S[i] in QuoteChars then
-      begin
-      InQuote:=Not (S[i]=LastQuote);
-      If InQuote then
-         LastQuote:=S[i]
-       else
-         LastQuote:=#0;
-      end;
-    Inc(I);
-    end;
-  Exe:=Copy(S,1,I-1);
-  Delete(S,1,I);
-  Options:=Trim(S);
-end;
-
-{ TNamedItem }
-
-procedure TNamedItem.SetName(const AValue: String);
-
-begin
-  if FName=AValue then exit;
-  With TNamedCollection(Collection) do
-    If UniqueNames then
-      If (IndexOfName(AVAlue)<>-1) then
-        Raise ECollectionError.CreateFmt(SErrNameExists,[AValue]);
-  FName:=AValue;
-end;
-
-{ TNamedCollection }
-
-function TNamedCollection.IndexOfName(AName: String): Integer;
-
-begin
-  Result:=Count-1;
-  While (Result>=0) and (CompareText(TNamedItem(Items[Result]).FName,AName)<>0) do
-    Dec(Result);
-end;
-
-function TNamedCollection.ItemByName(AName: String): TNamedItem;
-
-Var
-  I : Integer;
-
-begin
-  I:=IndexOfName(AName);
-  If (I=-1) Then
-    Raise ECollectionError.CreateFmt(SErrNoSuchName,[AName]);
-  Result:=TNamedItem(Items[i]);
-end;
-
-
-{ TTargets }
-
-function TTargets.GetTargetItem(Index : Integer): TTarget;
-begin
-  Result:=TTarget(Items[Index]);
-end;
-
-function TTargets.GetTarget(AName : String): TTarget;
-begin
-  Result:=TTarget(ItemByName(AName));
-end;
-
-procedure TTargets.SetDefaultDir(const AValue: String);
-begin
-  If (AValue<>'') then
-    FDefaultDir:=IncludeTrailingPathDelimiter(AValue)
-  else
-    FDefaultDir:='';
-end;
-
-procedure TTargets.SetTargetItem(Index : Integer; const AValue: TTarget);
-
-begin
-  Items[Index]:=AValue;
-end;
-
-procedure TTargets.ApplyDefaults(ATarget: TTarget);
-begin
-  If (ATarget.Directory='') then
-    ATarget.Directory:=FDefaultDir;
-   ATarget.OS:=FDefaultOS;
-   ATarget.CPU:=FDefaultCPU;
-end;
-
-procedure TTargets.ResetDefaults;
-begin
-  FDefaultDir:='';
-  FDefaultOS:=[];
-  FDefaultCPU:=[];
-end;
-
-Function TTargets.AddUnit(AUnitName: String) : TTarget;
-
-
-begin
-  Result:=Add as TTarget;
-  Result.Name:=AUnitName;
-  Result.TargetType:=TTUnit;
-  ApplyDefaults(Result);
-end;
-
-Function TTargets.AddProgram(AProgramName: String) : TTarget;
-begin
-  Result:=Add as TTarget;
-  Result.Name:=AProgramName;
-  Result.TargetType:=ttProgram;
-  ApplyDefaults(Result);
-end;
-
-Function TTargets.AddExampleUnit(AUnitName: String): TTarget;
-begin
-  Result:=Add as TTarget;
-  Result.Name:=AUnitName;
-  Result.TargetType:=ttExampleUnit;
-  ApplyDefaults(Result);
-end;
-
-Function TTargets.AddExampleProgram(AProgramName: String): TTarget;
-begin
-  Result:=Add as TTarget;
-  Result.Name:=AProgramName;
-  Result.TargetType:=ttExampleProgram;
-  ApplyDefaults(Result);
-end;
-
-
-{ TSources }
-
-function TSources.GetSourceItem(Index : Integer): TSource;
-begin
-  Result:=TSource(Items[Index]);
-end;
-
-
-procedure TSources.SetSourceItem(Index : Integer; const AValue: TSource);
-begin
-  Items[Index]:=AValue;
-end;
-
-
-function TSources.AddDocFiles(AFiles : String) : TSource;
-begin
-  Result:=Add as TSource;
-  Result.Name:=AFiles;
-  Result.SourceType:=stDoc;
-end;
-
-
-function TSources.AddSrcFiles(AFiles : String) : TSource;
-begin
-  Result:=Add as TSource;
-  Result.Name:=AFiles;
-  Result.SourceType:=stSrc;
-end;
-
-function TSources.AddExampleFiles(AFiles : String) : TSource;
-begin
-  Result:=Add as TSource;
-  Result.Name:=AFiles;
-  Result.SourceType:=stExample;
-end;
-
-function TSources.AddTestFiles(AFiles : String) : TSource;
-begin
-  Result:=Add as TSource;
-  Result.Name:=AFiles;
-  Result.SourceType:=stTest;
-end;
-
-{ TNamedItemList }
-
-function TNamedItemList.GetNamedItem(Index : Integer): TNamedItem;
-begin
-  Result:=TNamedItem(Items[Index]);
-end;
-
-procedure TNamedItemList.SetNamedItem(Index : Integer; const AValue: TNamedItem);
-begin
-  Items[Index]:=AValue;
-end;
-
-function TNamedItemList.IndexOfName(AName: String): Integer;
-
-begin
-  Result:=Count-1;
-  While (Result>=0) and (CompareText(GetNamedItem(Result).Name,AName)<>0) do
-    Dec(Result);
-end;
-
-function TNamedItemList.ItemByName(ANAme: String): TNamedItem;
-
-Var
-  I : Integer;
-
-begin
-  I:=IndexOfName(AName);
-  If (I=-1) Then
-    Raise ECollectionError.CreateFmt(SErrNoSuchName,[AName]);
-  Result:=TNamedItem(Items[i]);
-end;
-
-{ TDefaults }
-
-procedure TDefaults.SetCPU(const AValue: TCPU);
-begin
-  FCPU:=AValue;
-  RecalcTarget;
-end;
-
-function TDefaults.GetBaseInstallDir: String;
-begin
-  If (FBaseInstallDir<>'') then
-    Result:=FBaseInstallDir
-  else
-    if UnixPaths then
-      Result:=Prefix+PathDelim+'lib'+PathDelim+'fpc'
-    else
-      Result:=Prefix;
-
-end;
-
-function TDefaults.GetBinInstallDir: String;
-begin
-  If (FBinInstallDir<>'') then
-    Result:=FBinInstallDir
-  else
-    If UnixPaths then
-      Result:=BaseInstallDir+PathDelim+'bin'
-    else
-      Result:=BaseInstallDir+PathDelim+'bin';
-end;
-
-function TDefaults.GetCompiler: String;
-begin
-  If (FCompiler<>'') then
-    Result:=FCompiler
-  else
-    Result:='fpc';
-end;
-
-function TDefaults.GetDocInstallDir: String;
-begin
-  If (FBinInstallDir<>'') then
-    Result:=FBinInstallDir
-  else
-    If UnixPaths then
-      Result:=Prefix+PathDelim+'share'+PathDelim+'docs'
-    else
-      Result:=BaseInstallDir+PathDelim+'docs';
-end;
-
-function TDefaults.GetExamplesInstallDir: String;
-begin
-  If (FExamplesInstallDir<>'') then
-    Result:=FExamplesInstallDir
-  else
-    If UnixPaths then
-      Result:=Prefix+PathDelim+'share'+PathDelim+'docs'+PathDelim+'examples'
-    else
-      Result:=BaseInstallDir+PathDelim+'examples';
-end;
-
-function TDefaults.GetUnitInstallDir: String;
-begin
-  If (FUnitInstallDir<>'') then
-    Result:=FUnitInstallDir
-  else
-    If UnixPaths then
-      Result:=BaseInstallDir+PathDelim+'units'+PathDelim+Target
-    else
-      Result:=BaseInstallDir+PathDelim+'units'+PathDelim+Target;
-end;
-
-procedure TDefaults.SetBaseInstallDir(const AValue: String);
-begin
-  FBaseInstallDir:=AValue;
-  UnitInstallDir:='';
-  BinInstallDir:='';
-  ExamplesInstallDir:='';
-end;
-
-procedure TDefaults.SetOS(const AValue: TOS);
-begin
-  FOS:=AValue;
-  Recalctarget;
-end;
-
-procedure TDefaults.SetPrefix(const AValue: String);
-begin
-  if FPrefix=AValue then exit;
-  FPrefix:=AValue;
-  BaseInstallDir:='';
-end;
-
-procedure TDefaults.SetTarget(const AValue: String);
-
-Var
-  P : Integer;
-
-begin
-  if FTarget<>AValue then
-    begin
-    P:=Pos('-',AValue);
-    If (P<>0) then
-      begin
-      FOS:=StringToOS(System.Copy(Avalue,P+1,Length(AValue)-P));
-      FCPU:=StringToCPU(System.Copy(Avalue,1,P-1));
-      end
-    else
-      FOS:=StringToOS(AValue);
-    FTarget:=AValue;
-    end;
-end;
-
-procedure TDefaults.RecalcTarget;
-begin
-  Ftarget:=CPUToString(FCPU)+'-'+OStoString(FOS);
-end;
-
-constructor TDefaults.Create;
-begin
-  InitDefaults;
-end;
-
-procedure TDefaults.InitDefaults;
-begin
-  {$ifdef unix}
-  UnixPaths:=True;
-  {$else}
-  UnixPaths:=False;
-  {$endif}
-end;
-
-procedure TDefaults.Assign(ASource: TPersistent);
-
-Var
-  d : TDefaults;
-
-begin
-  If ASource is TDefaults then
-    begin
-    D:=ASource as TDefaults;
-    FArchive:=D.Farchive;
-    FCompiler:=D.Compiler;
-    FCopy:=D.FCopy;
-    FCPU:=D.FCPU;
-    FMode:=D.FMode;
-    FMkDir:=D.FMkDir;
-    FMove:=D.FMove;
-    FOptions:=D.FOptions;
-    FOS:=D.FOS;
-    FPrefix:=D.FPrefix;
-    FBaseInstallDir:=D.FBaseInstallDir;
-    FUnitInstallDir:=D.FUnitInstallDir;
-    FBinInstallDir:=D.FBinInstallDir;
-    FDocInstallDir:=D.FDocInstallDir;
-    FExamplesInstallDir:=D.FExamplesInstallDir;
-    FRemove:=D.FRemove;
-    FTarget:=D.FTarget;
-    FUnixPaths:=D.FUnixPaths;
-    end;
-end;
-
-procedure TDefaults.LocalInit(Const AFileName : String);
-
-Var
-  FN : String;
-
-begin
-  FN:=AFileName;
-  If (FN='') then
-    begin
-    // Environment variable.
-    FN:=GetEnvironmentVariable('FPMAKECFG');
-    If (FN<>'') then
-      If not FileExists(FN) then
-        FN:='';
-    // User config file fpmake.cfg
-    If (FN='') then
-      begin
-      FN:=GetAppConfigFile(False);
-      If Not FileExists(FN) then
-        FN:='';
-      end;
-    // Global config file fpmake.cfg
-    If (FN='') then
-      begin
-      FN:=GetAppConfigFile(True);
-      If Not FileExists(FN) then
-        FN:='';
-      end;
-    end;
-  If (FN<>'') and FileExists(FN) then
-    LoadFromFile(FN);
-end;
-
-
-procedure TDefaults.CompilerDefaults;
-begin
-  if Compiler<>'' then
-    Compiler:='fpc';
-  if CPU=cpuNone then
-    CPU:=StringToCPU({$I %FPCTARGETCPU%});
-  if OS=osNone then
-    OS:=StringToOS({$I %FPCTARGETOS%});
-  if FCompilerVersion='' then
-    FCompilerVersion:='2.0.4';
-  if (FBaseInstallDir='') and (FPrefix='') then
-    begin
-      // Use the same algorithm as the compiler, see options.pas
-{$ifdef Unix}
-      FBaseInstallDir:=FixPath(GetEnvironmentVariable('FPCDIR'));
-      if FBaseInstallDir='' then
-        begin
-          FBaseInstallDir:='/usr/local/lib/fpc/'+FCompilerVersion;
-          if not DirectoryExists(FBaseInstallDir) and
-             DirectoryExists('/usr/lib/fpc/'+FCompilerVersion) then
-            FBaseInstallDir:='/usr/lib/fpc/'+FCompilerVersion;
-        end;
-{$else unix}
-      FBaseInstallDir:=FixPath(GetEnvironmentVariable('FPCDIR'));
-      if FBaseInstallDir='' then
-        begin
-          FBaseInstallDir:=ExtractFilePath(FCompiler)+'..';
-          if not(DirectoryExists(FBaseInstallDir+'/units')) and
-             not(DirectoryExists(FBaseInstallDir+'/rtl')) then
-            FBaseInstallDir:=FBaseInstallDir+'..';
-        end;
-{$endif unix}
-    end;
-end;
-
-procedure TDefaults.LoadFromFile(Const AFileName: String);
-
-Var
-  F : TFileStream;
-
-begin
-  F:=TFileStream.Create(AFileName,fmOpenRead);
-  Try
-    LoadFromStream(F);
-  Finally
-    F.Free;
-  end;
-end;
-
-procedure TDefaults.SaveToFile(Const AFileName: String);
-
-Var
-  F : TFileStream;
-
-begin
-  F:=TFileStream.Create(AFileName,fmCreate);
-  Try
-    SaveToStream(F);
-  Finally
-    F.Free;
-  end;
-end;
-
-procedure TDefaults.SaveToStream(S : TStream);
-
-Var
-  L : TStringList;
-
-begin
-  L:=TStringList.Create;
-  try
-    With L do
-      begin
-      Values[KeyArchive]:=FArchive;
-      Values[KeyCompiler]:=FCompiler;
-      Values[KeyCopy]:=FCopy;
-      Values[KeyMkDir]:=FMkDir;
-      Values[KeyMove]:=FMove;
-      Values[KeyOptions]:=FOptions;
-      Values[KeyCPU]:=CPUToString(FCPU);
-      Values[KeyOS]:=OSToString(FOS);
-      Values[KeyMode]:=ModeToString(FMode);
-      Values[KeyPrefix]:=FPrefix;
-      Values[KeyBaseInstallDir]:=FBaseInstallDir;
-      Values[KeyUnitInstallDir]:=FUnitInstallDir;
-      Values[KeyBinInstallDir]:=FBinInstallDir;
-      Values[KeyDocInstallDir]:=FDocInstallDir;
-      Values[KeyExamplesInstallDir]:=FExamplesInstallDir;
-      Values[KeyRemove]:=FRemove;
-      Values[KeyTarget]:=FTarget;
-      end;
-    L.SaveToStream(S);
-  Finally
-    L.Free;
-  end;
-end;
-
-procedure TDefaults.LoadFromStream(S: TStream);
-
-Var
-  L : TStrings;
-  Line : String;
-  I,P,PC : Integer;
-
-
-begin
-  L:=TStringList.Create;
-  Try
-    L.LoadFromStream(S);
-    // Fix lines.
-    For I:=L.Count-1 downto 0 do
-      begin
-      Line:=L[I];
-      P:=Pos('=',Line);
-      PC:=Pos(';',Line);  // Comment line.
-      If (P=0) or ((PC<>0) and (PC<P)) then
-        L.Delete(I)
-      else
-        L[i]:=Trim(System.Copy(Line,1,P-1)+'='+Trim(System.Copy(Line,P+1,Length(Line)-P)));
-      end;
-    With L do
-      begin
-      FArchive:=Values[KeyArchive];
-      FCompiler:=Values[KeyCompiler];
-      FCopy:=Values[KeyCopy];
-      FMkDir:=Values[KeyMkDir];
-      FMove:=Values[KeyMove];
-      FRemove:=Values[KeyRemove];
-      FOptions:=Values[KeyOptions];
-      Line:=Values[KeyCPU];
-      If (Line<>'') then
-        FCPU:=StringToCPU(Line);
-      Line:=Values[KeyOS];
-      If (Line<>'') then
-        FOS:=StringToOS(Line);
-      Line:=Values[KeyMode];
-      If (Line<>'') then
-        FMode:=StringToMode(Line);
-      FTarget:=Values[KeyTarget];
-      FPrefix:=Values[KeyPrefix];
-      FBaseInstallDir:=Values[KeyBaseInstallDir];
-      FUnitInstallDir:=Values[KeyUnitInstallDir];
-      FBinInstallDir:=Values[KeyBinInstallDir];
-      FDocInstallDir:=Values[KeyDocInstallDir];
-      FExamplesInstallDir:=Values[KeyExamplesInstallDir];
-      end;
-  Finally
-    L.Free;
-  end;
-end;
-
-{ TPackage }
-
-function TPackage.GetHasStrings(AIndex: integer): Boolean;
-begin
-  Result:=False;
-  Case AIndex Of
-    0 : Result:=FUnitPath<>Nil;
-    1 : Result:=FObjectPath<>Nil;
-    2 : Result:=FIncludePath<>Nil;
-    3 : Result:=FDependencies<>Nil;
-    4 : Result:=FInstallFiles<>Nil;
-    5 : Result:=FCleanFiles<>Nil;
-    6 : Result:=FArchiveFiles<>Nil;
-  end;
-end;
-
-function TPackage.GetCommands: TCommands;
-begin
-  If Not Assigned(FCommands) then
-    FCommands:=TCommands.Create(TCommand);
-  Result:=FCommands;
-end;
-
-function TPackage.GetHasCommands: Boolean;
-begin
-  Result:=Assigned(FCommands);
-end;
-
-Procedure SplitVersion(AValue: String; Var Release,Major,Minor : Word; Var Suffix : String);
-
-  Function NextDigit(sep : Char; var V : string) : integer;
-
-  Var
-    P : Integer;
-
-  begin
-    P:=Pos(Sep,V);
-    If (P=0) then
-      P:=Length(V)+1;
-    Result:=StrToIntDef(Copy(V,1,P-1),-1);
-    If Result<>-1 then
-      Delete(V,1,P)
-    else
-      Result:=0;
-  end;
-
-Var
-  P : Integer;
-  V : String;
-
-begin
-  Release:=0;
-  Major:=0;
-  Minor:=0;
-  Suffix:='';
-  V:=AValue;
-  Release:=NextDigit('.',V);
-  Major:=NextDigit('.',V);
-  Minor:=NextDigit('-',V);
-  P:=Pos('-',V);
-  If (P<>0) then
-    Delete(V,1,P);
-  Suffix:=V;
-end;
-
-Function QuoteXML(S : String) : string;
-
-  Procedure W(Var J : Integer; Var R : String; T : String);
-
-  Var
-    I: integer;
-
-  begin
-    If J+Length(T)>Length(R) then
-      SetLength(R,J+Length(T));
-    For I:=1 to Length(t) do
-      begin
-      R[J]:=T[i];
-      If I<Length(T) then
-        Inc(J);
-      end;
-  end;
-
-const
-  QuotStr = '&quot;';
-  AmpStr = '&amp;';
-  ltStr = '&lt;';
-  gtStr = '&gt;';
-
-Var
-  I,J : Integer;
-
-begin
-  SetLength(Result,Length(S));
-  J:=0;
-  For I:=1 to Length(S) do
-    begin
-    Inc(J);
-    case S[i] of
-      '"': W(j,Result,QuotStr);
-      '&': W(J,Result,AmpStr);
-      '<': W(J,Result,ltStr);
-      // Escape whitespace using CharRefs to be consistent with W3 spec X 3.3.3
-       #9: w(J,Result,'&#x9;');
-{      #10: wrtStr('&#xA;');
-       #13: wrtStr('&#xD;');}
-    else
-      Result[J]:=S[i];
-    end;
-    If (J=Length(Result)) and (I<Length(S)) then
-      SetLength(Result,J+Length(S)-I);
-    end;
-  If J<>Length(Result) then
-    SetLength(Result,J);
-end;
-
-
-
-Procedure TPackage.GetManifest(Manifest : TStrings);
-
-
-Var
-  S : String;
-  Release,Minor,Major : Word;
-  i : Integer;
-begin
-  With Manifest do
-    begin
-    Add(Format('<package name="%s">',[QuoteXml(Name)]));
-    SplitVersion(Version,Release,Minor,Major,S);
-    Add(Format('<version release="%d" major="%d" minor="%d" suffix="%s"/>',[Release,Minor,Major,QuoteXMl(S)]));
-    Add(Format('<filename>%s</filename>',[QuoteXml(FileName)]));
-    Add(Format('<author>%s</author>',[QuoteXml(Author)]));
-    if ExternalURL<>'' then
-      Add(Format('<externalurl>%s</externalurl>',[QuoteXml(ExternalURL)]));
-    Add(Format('<email>%s</email>',[QuoteXMl(Email)]));
-    S:=Description;
-    If (S<>'') then
-      Add(Format('<description>%s</description>',[QuoteXML(S)]));
-    if HasDependencies then
-      begin
-        If (Dependencies.Count>0) then
-          begin
-            Add('<dependencies>');
-            for I:=0 to Dependencies.Count-1 do
-              Add(Format('<dependency><package packagename="%s"/></dependency>',[QuoteXML(Dependencies[i])]));
-            Add('</dependencies>');
-          end;
-      end;
-    Add('</package>');
-    end;
-end;
-
-function TPackage.GetStrings(AIndex: integer): TStrings;
-
-  Function EnsureStrings(Var S : TStrings) : TStrings;
-
-  begin
-    If (S=Nil) then
-      S:=TStringList.Create;
-    Result:=S;
-  end;
-
-begin
-  Result:=Nil;
-  Case AIndex Of
-    0 : Result:=EnsureStrings(FUnitPath);
-    1 : Result:=EnsureStrings(FObjectPath);
-    2 : Result:=EnsureStrings(FIncludePath);
-    3 : begin
-        Result:=EnsureStrings(FDependencies);
-        With TStringList(Result) do
-          if (Count=0) then
-            begin
-            Sorted:=True;
-            Duplicates:=dupError;
-            end;
-        end;
-    4 : Result:=EnsureStrings(FInstallFiles);
-    5 : Result:=EnsureStrings(FCleanFiles);
-    6 : Result:=EnsureStrings(FArchiveFiles);
-  end;
-end;
-
-procedure TPackage.SetCommands(const AValue: TCommands);
-begin
-  Commands.Assign(AValue);
-end;
-
-procedure TPackage.SetStrings(AIndex: integer; const AValue: TStrings);
-begin
-  GetStrings(AIndex).Assign(AValue);
-end;
-
-constructor TPackage.Create(ACollection: TCollection);
-
-Var
-  L : TStringList;
-
-begin
-  inherited Create(ACollection);
-  FTargets:=TTargets.Create(TTarget);
-  FSources:=TSources.Create(TSource);
-  L:=TStringList.Create;
-  FDependencies:=L;
-  FInstallFiles:=TStringList.Create;
-  FCleanFiles:=TStringList.Create;
-  FArchiveFiles:=TStringList.Create;
-end;
-
-destructor TPackage.destroy;
-begin
-  FreeAndNil(FDependencies);
-  FreeAndNil(FInstallFiles);
-  FreeAndNil(FCleanFiles);
-  FreeAndNil(FArchiveFiles);
-  FreeAndNil(FIncludePath);
-  FreeAndNil(FObjectPath);
-  FreeAndNil(FUnitPath);
-  FreeAndNil(FSources);
-  FreeAndNil(FTargets);
-  inherited destroy;
-end;
-
-function TPackage.AddTarget(AName: String): TTarget;
-begin
-  Result:=Targets.Add as TTarget;
-  Result.Name:=AName;
-end;
-
-procedure TPackage.AddDependency(AName: String);
-begin
-  If FDependencies.IndexOf(AName)=-1 then
-    FDependencies.Add(AName);
-end;
-
-procedure TPackage.AddInstallFile(AFileName: String);
-begin
-  FInstallFiles.add(AFileName);
-end;
-
-procedure TPackage.GetCleanFiles(List: TStrings; Const APrefix : String; AOS : TOS);
-
-Var
-  I : Integer;
-
-begin
-  AddStrings(List,CleanFiles,APrefix);
-  For I:=0 to FTargets.Count-1 do
-    FTargets.TargetItems[I].GetCleanFiles(List,APrefix,AOS);
-end;
-
-procedure TPackage.GetSourceFiles(List: TStrings);
-
-Var
-  I : Integer;
-
-begin
-  // AddStrings(List,SourceFiles,APrefix);
-  For I:=0 to FSources.Count-1 do
-    FSources.SourceItems[I].GetSourceFiles(List);
-end;
-
-procedure TPackage.GetInstallFiles(List: TStrings;Types : TTargetTypes;Const APrefix : String; AOS : TOS);
-
-Var
-  I : Integer;
-  T : TTarget;
-
-begin
-  AddStrings(List,InstallFiles,APrefix);
-  For I:=0 to FTargets.Count-1 do
-    begin
-    T:=FTargets.TargetItems[I];
-    if (T.TargetType in Types)  then
-      T.GetInstallFiles(List,APrefix,AOS);
-    end;
-end;
-
-
-procedure TPackage.GetArchiveFiles(List: TStrings;Const APrefix : String; AOS : TOS);
-
-Var
-  I : Integer;
-
-begin
-  If (OS=[]) or (AOS in OS) then
-    begin
-    AddStrings(List,ArchiveFiles,APrefix);
-    For I:=0 to FTargets.Count-1 do
-      FTargets.TargetItems[I].GetArchiveFiles(List,APrefix,AOS);
-    end;
-end;
-
-Function TPackage.GetDescription : string;
-
-Var
-  FN : String;
-  L : TStringList;
-
-begin
-  If (FDescription<>'') then
-    Result:=FDescription
-  else
-    If (FDescriptionFile<>'') then
-      begin
-      // Always relative to binary name.
-      FN:=ExtractFilePath(ParamStr(0));
-      FN:=FN+FDescriptionFile;
-      If FileExists(FN) then
-        begin
-        L:=TStringList.Create;
-        Try
-          L.LoadFromFile(FN);
-          Result:=L.Text;
-        Finally
-          L.Free;
-        end;
-        end;
-      end;
-end;
-
-
-Function TPackage.GetFileName : string;
-begin
-  If (FFileName<>'') then
-    Result:=FFileName
-  else
-    Result:=Name+'-'+Version+'.zip';
-end;
-
-
-{ TPackages }
-
-function TPackages.GetPackage(AName : String): TPackage;
-begin
-  Result:=TPackage(ItemByName(AName))
-end;
-
-function TPackages.GetPackageItem(AIndex : Integer): TPackage;
-begin
-  Result:=TPackage(Items[AIndex]);
-end;
-
-procedure TPackages.SetPackageItem(AIndex : Integer; const AValue: TPackage);
-begin
-  Items[AIndex]:=AValue;
-end;
-
-function TPackages.AddPackage(const AName: String): TPackage;
-begin
-  Result:=Add as TPackage;
-  Result.Name:=AName;
-end;
-
-
-{ TInstaller }
-
-function TInstaller.GetStrings(AIndex : Integer): TStrings;
-begin
-  CheckDefaultPackage;
-  Case AIndex of
-    0:  Result:=DefaultPackage.Dependencies;
-    1:  Result:=DefaultPackage.InstallFiles;
-    2:  Result:=DefaultPackage.CleanFiles;
-    3:  Result:=DefaultPackage.ArchiveFiles;
-  end;
-end;
-
-Function TInstaller.GetPackageString(Index : Integer) : String;
-
-Var
-  P : TPackage;
-
-
-begin
-  CheckDefaultPackage;
-  P:=DefaultPackage;
-  Case Index of
-    0 : Result:=P.Author;
-    1 : Result:=P.Directory;
-    2 : Result:=P.License;
-    3 : Result:=P.Options;
-    4 : Result:=P.ExternalURL;
-    5 : Result:=P.Email;
-    6 : Result:=P.Description;
-    7 : Result:=P.DescriptionFile;
-    8 : Result:=P.Version;
-    9 : Result:=P.FileName;
-  end;
-end;
-
-
-Procedure TInstaller.SetPackageString(Index : Integer; AValue : String);
-
-Var
-  P : TPackage;
-
-begin
-  CheckDefaultPackage;
-  P:=DefaultPackage;
-  Case Index of
-    0 : P.Author:=AValue;
-    1 : P.Directory:=AValue;
-    2 : P.License:=AValue;
-    3 : P.Options:=AValue;
-    4 : P.ExternalURL:=AValue;
-    5 : P.Email:=AValue;
-    6 : P.Description:=AValue;
-    7 : P.DescriptionFile:=AValue;
-    8 : P.Version:=AValue;
-    9 : P.FileName:=AValue;
-  end;
-end;
-
-
-function TInstaller.GetOSes: TOSes;
-begin
-  CheckDefaultPackage;
-  Result:=DefaultPackage.OS;
-end;
-
-function TInstaller.GetTargets: TTargets;
-begin
-  CheckDefaultPackage;
-  Result:=DefaultPackage.Targets;
-end;
-
-function TInstaller.GetSources: TSources;
-begin
-  CheckDefaultPackage;
-  Result:=DefaultPackage.Sources;
-end;
-
-procedure TInstaller.SetDefaultPackage(const AValue: TPackage);
-begin
-  if FDefaultPackage=AValue then exit;
-  FDefaultPackage:=AValue;
-end;
-
-procedure TInstaller.SetDefaults(const AValue: TDefaults);
-begin
-  FDefaults.Assign(AValue);
-end;
-
-procedure TInstaller.SetStrings(AIndex : Integer; const AValue: TStrings);
-
-Var
-  Res : TStrings;
-
-begin
-  CheckDefaultPackage;
-  Case AIndex of
-    0:  Res:=DefaultPackage.Dependencies;
-    1:  Res:=DefaultPackage.InstallFiles;
-    2:  Res:=DefaultPackage.CleanFiles;
-    3:  Res:=DefaultPackage.ArchiveFiles;
-  end;
-  Res.Assign(Avalue);
-end;
-
-procedure TInstaller.SetOses(const AValue: TOSes);
-begin
-  CheckDefaultPackage;
-  DefaultPackage.OS:=AValue;
-end;
-
-procedure TInstaller.Log(Level: TVerboseLevel; const Msg: String);
-begin
-  If Level in FLogLevels then
-    Writeln(StdErr,Msg);
-end;
-
-procedure TInstaller.CreatePackages;
-begin
-  FPAckages:=TPackages.Create(TPackage);
-end;
-
-procedure TInstaller.CreateBuildEngine;
-begin
-  FBuildEngine:=TBuildEngine.Create(Self);
-  FBuildEngine.Defaults:=Defaults;
-  FBuildEngine.ListMode:=FListMode;
-  FBuildEngine.OnLog:[email protected];
-end;
-
-procedure TInstaller.CheckDefaultPackage;
-begin
-  If (FDefaultPackage=Nil) then
-    Raise EInstallerError.Create(SErrNoPackage);
-end;
-
-procedure TInstaller.Error(Msg: String);
-begin
-  Raise EInstallerError.Create(Msg);
-end;
-
-procedure TInstaller.Error(Fmt: String; Args: array of const);
-begin
-  Raise EInstallerError.CreateFmt(Fmt,Args);
-end;
-
-Function TInstaller.StartPackage(const AName: String) : TPackage;
-begin
-  FDefaultPackage:=FPackages.AddPackage(AName);
-  Result:=FDefaultPackage;
-end;
-
-procedure TInstaller.EndPackage;
-begin
-  FDefaultPackage:=Nil;
-end;
-
-procedure TInstaller.AnalyzeOptions;
-
-  Function CheckOption(Index : Integer;Short,Long : String): Boolean;
-
-  var
-    O : String;
-
-  begin
-    O:=Paramstr(Index);
-    Result:=(O='-'+short) or (O='--'+long) or (copy(O,1,Length(Long)+3)=('--'+long+'='));
-  end;
-
-  Function CheckCommand(Index : Integer;Short,Long : String): Boolean;
-
-  var
-    O : String;
-
-  begin
-    O:=Paramstr(Index);
-    Result:=(O='-'+short) or (O=long);
-  end;
-
-  Function OptionArg(Var Index : Integer) : String;
-
-  Var
-    P : Integer;
-
-  begin
-    if (Length(ParamStr(Index))>1) and (Paramstr(Index)[2]<>'-') then
-      begin
-      If Index<ParamCount then
-        begin
-        Inc(Index);
-        Result:=Paramstr(Index);
-        end
-      else
-        Error(SErrNeedArgument,[Index,ParamStr(Index)]);
-      end
-    else If length(ParamStr(Index))>2 then
-      begin
-      P:=Pos('=',Paramstr(Index));
-      If (P=0) then
-        Error(SErrNeedArgument,[Index,ParamStr(Index)])
-      else
-        begin
-        Result:=Paramstr(Index);
-        Delete(Result,1,P);
-        end;
-      end;
-  end;
-
-Var
-  I : Integer;
-  Nodefaults : Boolean;
-  DefaultsFileName : string;
-
-begin
-  I:=0;
-  NoDefaults:=False;
-  FListMode:=False;
-  While (I<ParamCount) do
-    begin
-    Inc(I);
-    if CheckCommand(I,'m','compile') then
-      FRunMode:=rmCompile
-    else if CheckCommand(I,'b','build') then
-      FRunMode:=rmBuild
-    else if CheckCommand(I,'i','install') then
-      FRunMode:=rmInstall
-    else if CheckCommand(I,'c','clean') then
-      FRunMode:=rmClean
-    else if CheckCommand(I,'a','archive') then
-      FRunMode:=rmarchive
-    else if CheckCommand(I,'M','manifest') then
-      FRunMode:=rmManifest
-    else if CheckCommand(I,'M','listsources') then
-      FRunMode:=rmListSources
-    else if CheckOption(I,'h','help') then
-      Usage('',[])
-    else if Checkoption(I,'C','CPU') then
-      Defaults.CPU:=StringToCPU(OptionArg(I))
-    else if Checkoption(I,'O','OS') then
-      Defaults.OS:=StringToOS(OptionArg(I))
-    else if Checkoption(I,'t','target') then
-      Defaults.Target:=OptionArg(I)
-    else if CheckOption(I,'l','list-commands') then
-      FListMode:=True
-    else if Checkoption(I,'P','prefix') then
-      Defaults.Prefix:=OptionArg(I)
-    else if Checkoption(I,'n','nodefaults') then
-      NoDefaults:=true
-    else if CheckOption(I,'B','baseinstalldir') then
-      Defaults.BaseInstallDir:=OptionArg(I)
-    else if CheckOption(I,'r','compiler') then
-      Defaults.Compiler:=OptionArg(I)
-    else if CheckOption(I,'f','config') then
-      DefaultsFileName:=OptionArg(I)
-    else if CheckOption(I,'v','verbose') then
-      begin
-      Try
-        FLogLevels:=TVerboseLevels(StringToSet(PtypeInfo(TypeInfo(TVerboseLevels)),OptionArg(I)));
-      except
-        FLogLevels:=AllMessages;
-      end;
-      end
-    else
-      begin
-      Usage(SErrInValidArgument,[I,ParamStr(I)]);
-      end;
-    end;
-  If Not NoDefaults then
-    Defaults.LocalInit(DefaultsFileName);
-  Defaults.CompilerDefaults;
-{$ifdef debug}
-  FLogLevels:=AllMessages;
-{$endif}
-end;
-
-
-
-procedure TInstaller.Usage(FMT: String; Args: array of const);
-
-  Procedure WriteCmd(LC : String; Msg : String);
-
-  begin
-    Writeln(stderr,Format(' %-12s %s',[LC,MSG]));
-  end;
-
-  Procedure WriteOption(C: Char; LC : String; Msg : String);
-
-  begin
-    Writeln(stderr,Format(' -%s --%-16s %s',[C,LC,MSG]));
-  end;
-
-  Procedure WriteArgOption(C: Char; LC : String; Msg : String);
-
-  begin
-    Writeln(stderr,Format(' -%s --%-20s %s',[C,LC+'='+SValue,MSG]));
-  end;
-
-begin
-  If (FMT<>'') then
-    Writeln(stderr,Format(Fmt,Args));
-  Writeln(stderr,Format(SHelpUsage,[Paramstr(0)]));
-  Writeln(stderr,SHelpCommand);
-  WriteCmd('compile',SHelpCompile);
-  WriteCmd('build',SHelpBuild);
-  WriteCmd('install',SHelpInstall);
-  WriteCmd('clean',SHelpClean);
-  WriteCmd('archive',SHelpArchive);
-  WriteCmd('manifest',SHelpManifest);
-  Writeln(stderr,SHelpCmdOptions);
-  WriteOption('h','help',SHelpHelp);
-  WriteOption('l','list-commands',SHelpList);
-  WriteOption('n','nodefaults',SHelpNoDefaults);
-  WriteOption('v','verbose',SHelpVerbose);
-  WriteArgOption('C','CPU',SHelpCPU);
-  WriteArgOption('O','OS',SHelpOS);
-  WriteArgOption('t','target',SHelpTarget);
-  WriteArgOption('P','prefix',SHelpPrefix);
-  WriteArgOption('B','baseinstalldir',SHelpBaseInstalldir);
-  WriteArgOption('r','compiler',SHelpCompiler);
-  WriteArgOption('f','config',SHelpConfig);
-  Writeln(stderr,'');
-  If (FMT<>'') then
-    halt(1)
-  else
-    halt(0);
-end;
-
-procedure TInstaller.Compile(Force: Boolean);
-begin
-  FBuildEngine.ForceCompile:=Force;
-  FBuildEngine.Compile(FPackages);
-end;
-
-procedure TInstaller.Clean;
-begin
-  BuildEngine.Clean(FPackages);
-end;
-
-procedure TInstaller.Install;
-begin
-  BuildEngine.Install(FPackages);
-end;
-
-procedure TInstaller.Archive;
-begin
-  FBuildEngine.Archive(FPackages);
-end;
-
-procedure TInstaller.Manifest;
-
-Var
-  L : TStrings;
-begin
-  L:=TStringList.Create;
-  Try
-    Log(vlCommand,'Generating manifest.xml');
-    L.Add('<?xml version="1.0"?>');
-    BuildEngine.GetManifest(FPackages,L);
-    L.SaveToFile('manifest.xml');
-  Finally
-    L.Free;
-  end;
-end;
-
-procedure TInstaller.GetSourceFiles;
-
-Var
-  L : TStrings;
-begin
-  L:=TStringList.Create;
-  Try
-    Log(vlCommand,'Generating sources.xml');
-    L.Add('<?xml version="1.0"?>');
-    BuildEngine.GetSourceFiles(FPackages,L);
-    L.SaveToFile('sources.xml');
-  Finally
-    L.Free;
-  end;
-end;
-
-
-constructor TInstaller.Create(AOWner: TComponent);
-begin
-  inherited Create(AOWner);
-  FDefaults:=TDefaults.Create;
-  AnalyzeOptions;
-  CreatePackages;
-end;
-
-destructor TInstaller.destroy;
-begin
-  FreeAndNil(FDefaults);
-  inherited destroy;
-end;
-
-procedure TInstaller.CheckPackages;
-
-begin
-  If (FPackages.Count=0) then
-    Error(SErrNoPackagesDefined);
-  // Check for other obvious errors ?
-end;
-
-Function TInstaller.Run : Boolean;
-
-begin
-  Result:=True;
-  try
-    CheckPackages;
-    CreateBuildEngine;
-    Case RunMode of
-      rmCompile : Compile(False);
-      rmBuild   : Compile(True);
-      rmInstall : Install;
-      rmArchive : Archive;
-      rmClean    : Clean;
-      rmManifest : Manifest;
-      rmListSources : GetSourceFiles;
-    end;
-  except
-    On E : Exception do
-      begin
-      Writeln(StdErr,SErrInstaller);
-      Writeln(StdErr,E.Message);
-      Result:=False;
-      end;
-  end;
-end;
-
-function TInstaller.AddTarget(AName: String): TTarget;
-begin
-  CheckDefaultPackage;
-  Result:=DefaultPackage.AddTarget(AName);
-end;
-
-procedure TInstaller.AddDependency(AName: String);
-begin
-  CheckDefaultPackage;
-  DefaultPackage.AddDependency(AName);
-end;
-
-{ TBuildEngine }
-
-procedure TBuildEngine.SetDefaults(const AValue: TDefaults);
-begin
-  FDefaults.Assign(AValue);
-end;
-
-procedure TBuildEngine.SetTargetDir(const AValue: String);
-begin
-  if FTargetDir=AValue then exit;
-  FTargetDir:=AValue;
-end;
-
-procedure TBuildEngine.Error(Msg: String);
-begin
-  Raise EInstallerError.Create(Msg);
-end;
-
-procedure TBuildEngine.Error(Fmt: String; Args: array of const);
-begin
-  Raise EInstallerError.CreateFmt(Fmt,Args);
-end;
-
-constructor TBuildEngine.Create(AOwner: TComponent);
-begin
-  inherited Create(AOwner);
-  FDefaults:=TDefaults.Create;
-  // Maybe this should be the current directory ?
-  // Or have it as a command-line option.
-  // Would allow to put all 'installers' in one dir and call them
-  // With --start-dir=/path/to/sources.
-  FStartDir:=includeTrailingPathDelimiter(GetCurrentDir);
-end;
-
-procedure TBuildEngine.ExecuteCommand(Cmd: String; Args : String; IgnoreError : Boolean = False);
-
-Var
-  E : Integer;
-
-begin
-  Log(vlCommand,SLogExecutingCommand,[Cmd,Args]);
-  // We should check cmd for spaces, and move all after first space to args.
-  E:=ExecuteProcess(cmd,args);
-  If (E<>0) and (not IgnoreError) then
-    Error(SErrExternalCommandFailed,[Cmd,E]);
-end;
-
-procedure TBuildEngine.SysCopyFile(Const Src,Dest : String);
-
-Var
-  D,S : String;
-  Fin,FOut : TFileStream;
-  Count : Int64;
-  A : Integer;
-
-begin
-  Log(vlCommand,SLogCopyingFile,[Src,Dest]);
-  FIn:=TFileStream.Create(Src,fmopenRead);
-  Try
-    D:=IncludeTrailingPathDelimiter(Dest);
-    If DirectoryExists(D) then
-      S:=D+ExtractFileName(Src)
-    else
-      S:=Dest;
-    FOut:=TFileStream.Create(S,fmCreate);
-    Try
-      Count:=Fout.CopyFrom(FIn,0);
-      If (Count<>Fin.Size) then
-        Error(SErrCopyingFile,[Src,S]);
-    Finally
-      FreeAndNil(Fout);
-    end;
-    A:=FileGetDate(FIn.Handle);
-    If (A=-1) then
-      log(vlWarning,SWarnFailedToGetTime,[Src])
-    else
-      if FileSetDate(S,A)<>0 then
-        Log(vlWarning,SWarnFailedToSetTime,[S]);
-  finally
-    FreeAndNil(Fin);
-  end;
-end;
-
-procedure TBuildEngine.SysMoveFile(Const Src,Dest : String);
-
-Var
-  S : String;
-
-begin
-    If DirectoryExists(IncludeTrailingPathDelimiter(Dest)) then
-      S:=IncludeTrailingPathDelimiter(Dest)+ExtractFileName(Src)
-    else
-      S:=Dest;
-  If Not RenameFile(Src,S) then
-    begin
-    Try
-      SysCopyFile(Src,S);
-      SysDeleteFile(Src);
-    Except
-      On E : Exception Do
-        Error(SErrMovingFile,[Src,S]);
-    end;
-    end;
-end;
-
-procedure TBuildEngine.SysDeleteFile(Const AFileName : String);
-
-begin
-  if not FileExists(AFileName) then
-    Log(vlWarning,SWarnFileDoesNotExist,[AFileName])
-  else If Not DeleteFile(AFileName) then
-    Error(SErrDeletingFile,[AFileName]);
-end;
-
-
-procedure TBuildEngine.SysArchiveFiles(List: TStrings;Const AFileName: String);
-begin
-  If Not (Assigned(OnArchivefiles) or Assigned(ArchiveFilesProc)) then
-    Raise EInstallerError.Create(SErrNoArchiveSupport);
-  If Assigned(ArchiveFilesProc) then
-    ArchiveFilesProc(AFileName,List)
-  else
-    OnArchiveFiles(AFileName,List);
-end;
-
-procedure TBuildEngine.Log(Level: TVerboseLevel; const Msg: String);
-begin
-  If Assigned(FOnLog) then
-    FOnLog(Level,Msg);
-end;
-
-procedure TBuildEngine.Log(Level: TVerboseLevel; const Fmt: String;
-  Args: array of const);
-begin
-  Log(Level,Format(Fmt,Args));
-end;
-
-procedure TBuildEngine.EnterDir(ADir: String);
-
-Var
-  D : String;
-
-begin
-  D:=FStartDir;
-  D:=D+ADir;
-  Log(vlInfo,SLogEnterDir,[D]);
-  If Not SetCurrentDir(D) then
-    Error(SErrChangeDirFailed,[D]);
-end;
-
-
-procedure TBuildEngine.CmdCopyFiles(List: TStrings; Const DestDir: String);
-
-Var
-  Args : String;
-  I : Integer;
-
-begin
-  CmdCreateDir(DestDir);
-  If (Defaults.Copy<>'') then
-    begin
-    Args:=FileListToString(List,'');
-    Args:=Args+' '+DestDir;
-    ExecuteCommand(Defaults.Copy,Args);
-    end
-  else
-    For I:=0 to List.Count-1 do
-      SysCopyFile(List[i],DestDir);
-end;
-
-procedure TBuildEngine.CmdCreateDir(DestDir: String);
-
-begin
-  If (Defaults.MkDir<>'') then
-    ExecuteCommand(Defaults.MkDir,DestDir)
-  else
-    If not ForceDirectories(DestDir) then
-      Error(SErrCreatingDirectory,[DestDir]);
-end;
-
-procedure TBuildEngine.CmdMoveFiles(List: TStrings; Const DestDir: String);
-
-Var
-  Args : String;
-  I : Integer;
-
-begin
-  CmdCreateDir(DestDir);
-  If (Defaults.Move<>'') then
-    begin
-    Args:=FileListToString(List,'');
-    Args:=Args+' '+DestDir;
-    ExecuteCommand(Defaults.Move,Args);
-    end
-  else
-    For I:=0 to List.Count-1 do
-      SysMoveFile(List[i],DestDir);
-end;
-
-procedure TBuildEngine.CmdDeleteFiles(List: TStrings);
-
-Var
-  Args : String;
-  I : Integer;
-
-begin
-  If (Defaults.Remove<>'') then
-    begin
-    Args:=FileListToString(List,'');
-    ExecuteCommand(Defaults.Remove,Args);
-    end
-  else
-    For I:=0 to List.Count-1 do
-      SysDeleteFile(List[i]);
-end;
-
-procedure TBuildEngine.CmdArchiveFiles(List: TStrings; Const ArchiveFile: String);
-
-Var
-  S,C,O : String;
-
-begin
-  If (Defaults.Archive='') then
-    SysArchiveFiles(List,ArchiveFile)
-  else
-    begin
-    S:=FileListToString(List,'');
-    SplitCommand(Defaults.Archive,C,O);
-    If (O='') then
-      O:=ArchiveFile+' '+S
-    else
-      O:=Substitute(O,['ARCHIVE',ArchiveFile,'FILESORDIRS']);
-    ExecuteCommand(C,O);
-    end;
-end;
-
-Function TBuildEngine.FileNewer(Src,Dest : String) : Boolean;
-
-Var
-  DS,DD : Longint;
-  D1,D2 : TDateTime;
-
-begin
-  DS:=FileAge(Src);
-  DD:=FileAge(Dest);
-  D1:=FileDateToDateTime(DS);
-  D2:=FileDateToDateTime(DD);
-  Log(vlDebug,SLogCompilingFileTimes,[Src,DateTimeToStr(D1),Dest,DateTimeToStr(D2)]);
-  Result:=D1>=D2;
-  If Result then
-    Log(vlCompare,SLogSourceNewerDest,[Src,DateTimeToStr(D1),Dest,DateTimeToStr(D2)]);
-end;
-
-procedure TBuildEngine.ExecuteCommands(Commands: TCommands; At: TCommandAt);
-
-Var
-  C : TCommand;
-  I : Integer;
-  Cmd,O : String;
-  E : Boolean;
-
-begin
-  For I:=0 to Commands.Count-1 do
-    begin
-    C:=Commands.CommandItems[i];
-    if (C.At=At) then
-      begin
-      E:=True;
-      If (C.SourceFile<>'') and (C.DestFile<>'')  then
-        E:=FileNewer(C.SourceFile,IncludeTrailingPathDelimiter(Dictionary.GetValue('OUTPUTDIR'))+C.DestFile);
-      If E then
-        begin
-        If Assigned(C.BeforeCommand) then
-          C.BeforeCommand(C);
-        O:=Substitute(C.Options,['SOURCE',C.SourceFile,'DEST',C.DestFile]);
-        Cmd:=C.Command;
-        If (ExtractFilePath(Cmd)='') then
-          Cmd:=FileSearch(Cmd,GetEnvironmentvariable('PATH'));
-        ExecuteCommand(Cmd,O,C.IgnoreResult);
-        If Assigned(C.AfterCommand) then
-          C.AfterCommand(C);
-        end;
-      end;
-    end;
-end;
-
-// Relative to startdir.
-Function TBuildEngine.GetTargetDir(APackage : TPackage; ATarget : TTarget; AbsolutePath : Boolean = False) : String;
-
-begin
-  If AbsolutePath then
-    Result:=IncludeTrailingPathDelimiter(FStartDir)
-  else
-    Result:='';
-  If (APackage.Directory<>'') then
-    Result:=Result+IncludeTrailingPathDelimiter(APackage.Directory);
-  If (ATarget.Directory<>'') then
-    Result:=IncludeTrailingPathDelimiter(Result+ATarget.Directory);
-
-end;
-
-Function TBuildEngine.TargetOK(Target : TTarget) : Boolean;
-
-begin
-  Result:=(Target.TargetType in [ttUnit,ttProgram])
-          and
-          ((Target.CPU=[]) or (Defaults.CPU in Target.CPU))
-          and
-          ((Target.OS=[]) or (Defaults.OS in Target.OS));
-  If not Result then
-    begin
-    log(vldebug,'Target is not a unit or program');
-    If Not ((Target.CPU=[]) or (Defaults.CPU in Target.CPU)) then
-      Log(vldebug,'Target has wrong CPU: '+CPUsToString(Target.CPU));
-    if not ((Target.OS=[]) or (Defaults.OS in Target.OS)) then
-      Log(vldebug,'Target has wrong OS: '+OSesToString(Target.OS));
-    end;
-end;
-
-Function TBuildEngine.NeedsCompile(Target: TTarget): Boolean;
-
-Var
-  I : Integer;
-  T : TTarget;
-  OD,SD,SFN,OFN : String;
-
-begin
-  Result:=False;
-  OD:=FCurrentOutputDir;
-  If (OD<>'') then
-    OD:=IncludeTrailingPathDelimiter(OD);
-  OFN:=OD+Target.GetOutPutFileName(Defaults.OS);
-  SD:=Target.Directory;
-  If (SD<>'') then
-      SD:=IncludeTrailingPathDelimiter(SD);
-  Result:=Not FileExists(OFN);
-  // Check dependencies
-  If not Result then
-    If Target.HasDependencies then
-      begin
-      ResolveDependencies(Target.Dependencies,Target.Collection as TTargets);
-      I:=0;
-      While (Not Result) and (I<Target.Dependencies.Count) do
-        begin
-        T:=TTarget(Target.Dependencies.Objects[i]);
-        If (T<>Nil) then
-          Result:=NeedsCompile(T)
-        else // if it is a filename, check dates.
-          if FileExists(Target.Dependencies[i]) then
-            Result:=FileNewer(Target.Dependencies[i],OFN)
-          else if FileExists(SD+Target.Dependencies[i]) then
-            Result:=FileNewer(SD+Target.Dependencies[i],OFN);
-        Inc(I)
-        end;
-      end;
-  If not Result then
-    begin
-    SFN:=SD+Target.SourceFileName;
-    If (ExtractFileExt(SFN)='') then
-      if FileExists(SFN+'.pp') then
-        SFN:=SFN+'.pp'
-      else
-        SFN:=SFN+'.pas';
-    // Writeln('Checking : ',OFN,' against ',SFN);
-    Result:=FileNewer(SFN,OFN);
-    // here we should check file timestamps.
-    end;
-end;
-
-
-
-Function TBuildEngine.GetCompilerCommand(APackage : TPackage; Target : TTarget) : String;
-
-
-Var
-  PD,TD,OD,RD : String;
-
-begin
-  PD:=IncludeTrailingPathDelimiter(GetPackageDir(APackage,True));
-  OD:=IncludeTrailingPathDelimiter(GetOutputDir(APackage,True));
-  RD:=ExtractRelativePath(PD,OD);
-  If Target.TargetType in ProgramTargets then
-    Result:='-FE.' // Make this relative to target directory.
-  else
-    Result:='-FU'+RD;
-  If Target.Mode<>cmFPC then
-    Result:=Result+' -M'+ModeToString(Target.Mode)
-  else If Defaults.Mode<>cmFPC then
-    Result:=Result+' -M'+ModeToString(Defaults.Mode);
-  If (Defaults.Options<>'') then
-    Result:=Result+' '+Defaults.Options;
-  If (APackage.Options<>'') then
-    Result:=Result+' '+APackage.Options;
-  If APackage.HasUnitPath then
-    AddStrings(Result,APackage.UnitPath,'-Fu');
-  If APackage.HasIncludePath then
-    AddStrings(Result,APackage.IncludePath,'-Fi');
-  If APackage.HasObjectPath then
-    AddStrings(Result,APackage.ObjectPath,'-Fo');
-  If Target.HasUnitPath then
-    AddStrings(Result,Target.UnitPath,'-Fu');
-  If Target.HasIncludePath then
-    AddStrings(Result,Target.IncludePath,'-Fi');
-  If Target.HasObjectPath then
-    AddStrings(Result,Target.ObjectPath,'-Fo');
-  If (Target.Options<>'') then
-    Result:=Result+' '+Target.Options;
-  TD:=Target.Directory;
-  if (TD<>'') then
-    TD:=IncludeTrailingPathDelimiter(TD);
-  Result:=Result+' '+TD+Target.SourceFileName;
-end;
-
-Function TBuildEngine.GetCompiler : String;
-
-Var
-  S : String;
-
-begin
-  // Cache in FCompiler for speed.
-  If (FCompiler='') then
-    begin
-    FCompiler:=Defaults.Compiler;
-    If (ExtractFilePath(FCompiler)='') then
-      begin
-      S:=FileSearch(FCompiler,GetEnvironmentVariable('PATH'));
-      If (S<>'') then
-         FCompiler:=S;
-      end;
-    end;
-  Result:=FCompiler;
-end;
-
-procedure TBuildEngine.Compile(Target: TTarget);
-
-Var
-  S : String;
-
-begin
-  if Target.State in [tsNeutral,tsCompiling] then
-    begin
-    Log(vlInfo,SLogCompilingTarget,[Target.Name]);
-    If Target.HasCommands then
-      ExecuteCommands(Target.Commands,caBeforeCompile);
-    If Assigned(Target.BeforeCompile) then
-      Target.BeforeCompile(Target);
-    S:=GetCompilerCommand(FCurrentPackage,Target);
-    ExecuteCommand(GetCompiler,S);
-    Target.FTargetState:=tsCompiled;
-    If Assigned(Target.AfterCompile) then
-      Target.AfterCompile(Target);
-    If Target.HasCommands then
-      ExecuteCommands(Target.Commands,caAfterCompile);
-    end
-  else if Target.State<>tsCompiled then
-    Log(vlWarning,'Attempting to compile non-neutral target: '+Target.Name);
-end;
-
-
-procedure TBuildEngine.FixDependencies(Target: TTarget);
-
-Var
-  I : Integer;
-  T : TTarget;
-
-begin
-  Log(vlDebug,'Checking dependencies for target: '+Target.Name);
-  ResolveDependencies(Target.Dependencies,Target.Collection as TTargets);
-  If Target.HasDependencies then
-    For I:=0 to Target.Dependencies.Count-1 do
-      begin
-      T:=TTarget(Target.Dependencies.Objects[i]);
-      If Assigned(T) then
-        begin
-        If (T.State=tsCompiling) then
-          Log(vlWarning,SWarnCircularDependency,[Target.Name,T.Name])
-        else
-          Compile(T)
-        end
-      else if Not FileExists(Target.Dependencies[i]) then
-        Error(SErrDepUnknownTarget,[Target.Name,Target.Dependencies[i]]);
-      end;
-end;
-
-function TBuildEngine.GetPackageDir(APackage: TPackage; AbsolutePath: Boolean
-  ): String;
-begin
-  If AbsolutePath then
-    Result:= IncludeTrailingPathDelimiter(FStartDir)
-  else
-    Result:='';
-  Result:=Result+APackage.Directory;
-  If (Result<>'') then
-    Result:= ExcludeTrailingPathDelimiter(Result)
-end;
-
-
-Function TBuildEngine.GetOutputDir(APackage : TPackage; AbsolutePath : Boolean = False) : String;
-
-begin
-  If (TargetDir<>'') then
-    Result:=TargetDir
-  else
-    begin
-    If AbsolutePath then
-      Result:=IncludeTrailingPathDelimiter(FStartDir)
-    else
-      Result:='';
-    If (APackage.Directory<>'') then
-      Result:=IncludeTrailingPathDelimiter(Result+APackage.Directory);
-    Result:=Result+'units'+PathDelim+Defaults.Target;
-    end;
-end;
-
-procedure TBuildEngine.CreateOutputDir(APackage: TPackage);
-
-Var
-  D : String;
-
-begin
-  D:=GetOutputDir(APackage,True);
-  If DirectoryExists(D) then
-    Log(vlInfo,SLogOutputDirExists,[D])
-  else
-    begin
-    Log(vlInfo,SLogCreatingOutputDir,[D]);
-    CmdCreateDir(D);
-    end;
-end;
-
-Function TBuildEngine.PackageOK(APackage : TPackage) : Boolean;
-
-begin
-  Result:=((APackage.CPU=[]) or (Defaults.CPU in APackage.CPU))
-          and
-          ((APAckage.OS=[]) or (Defaults.OS in APackage.OS));
-end;
-
-
-procedure TBuildEngine.DoBeforeCompile(APackage: TPackage);
-begin
-  If APackage.HasCommands then
-    ExecuteCommands(APackage.Commands,caBeforeCompile);
-  If Assigned(APackage.BeforeCompile) then
-    APackage.BeforeCompile(APackage);
-end;
-
-procedure TBuildEngine.DoAfterCompile(APackage: TPackage);
-begin
-  If Assigned(APackage.AfterCompile) then
-    APackage.AfterCompile(APackage);
-  If APackage.HasCommands then
-    ExecuteCommands(APackage.Commands,caAfterCompile);
-end;
-
-procedure TBuildEngine.Compile(APackage: TPackage);
-
-
-Var
-  T : TTarget;
-  I : Integer;
-
-begin
-  Log(vlInfo,SLogCompilingPackage,[APackage.Name]);
-  FCurrentPackage:=APackage;
-  FCurrentOutputDir:=GetOutputDir(APackage,True);
-  Try
-    If (APackage.Directory<>'') then
-      EnterDir(APackage.Directory);
-    CreateOutputDir(APackage);
-    Dictionary.AddVariable('OUTPUTDIR',FCurrentOutputDir);
-    DoBeforeCompile(APackage);
-    Try
-      For I:=0 to APackage.Targets.Count-1 do
-        begin
-        T:=APackage.Targets.TargetItems[i];
-        Log(vlDebug,'Considering target: '+T.Name);
-        If TargetOK(T) then
-          If (T.State=tsNeutral) then
-            begin
-            If (FForceCompile or NeedsCompile(T)) then
-              begin
-              T.FTargetState:=tsCompiling;
-              FixDependencies(T);
-              Compile(T);
-              end;
-            T.FTargetState:=tsCompiled;
-            end;
-        end;
-      DoAfterCompile(APackage);
-    Finally
-      If (APackage.Directory<>'') then
-        EnterDir('');
-    end;
-  Finally
-    FCurrentPackage:=Nil;
-    FCurrentOutputDir:='';
-  end;
-end;
-
-procedure TBuildEngine.CheckExternalPackage(Const APackageName : String);
-
-begin
-  // A check needs to be implemented here.
-  Log(vldebug,'Unresolved external dependency : %s',[APackageName]);
-end;
-
-procedure TBuildEngine.FixDependencies(APackage: TPackage);
-
-Var
-  I : Integer;
-  P : TPackage;
-
-begin
-  if APackage.HasDependencies then
-    For I:=0 to APAckage.Dependencies.Count-1 do
-      begin
-      P:=TPackage(Apackage.Dependencies.Objects[i]);
-      If Assigned(P) then
-        Compile(P) // If it already was compiled, then State<>tsNeutral, and it won't be compiled again.
-      else
-        CheckExternalPackage(Apackage.Dependencies[i]);
-      end;
-end;
-
-Procedure TBuildEngine.InstallPackageFiles(APAckage : TPackage; tt : TTargetType; Const Src,Dest : String);
-
-Var
-  List : TStringList;
-
-begin
-  List:=TStringList.Create;
-  Try
-    APackage.GetInstallFiles(List,[tt],Src,Defaults.OS);
-    if (List.Count>0) then
-      CmdCopyFiles(List,Dest);
-  Finally
-    List.Free;
-  end;
-end;
-
-procedure TBuildEngine.DoBeforeInstall(APackage: TPackage);
-begin
-  If APackage.HasCommands then
-    ExecuteCommands(APackage.Commands,caBeforeInstall);
-  If Assigned(APackage.BeforeInstall) then
-    APackage.BeforeInstall(APackage);
-end;
-
-procedure TBuildEngine.DoAfterInstall(APackage: TPackage);
-begin
-  If Assigned(APackage.AfterInstall) then
-    APackage.AfterInstall(APackage);
-  If APackage.HasCommands then
-    ExecuteCommands(APackage.Commands,caAfterInstall);
-end;
-
-
-procedure TBuildEngine.Install(APackage: TPackage);
-
-
-Var
-  PD,D,O : String;
-
-begin
-  If (Apackage.State<>tsCompiled) then
-    Compile(APackage);
-  Log(vlInfo,SLogInstallingPackage,[APackage.Name]);
-  DoBeforeInstall(APackage);
-  O:=IncludeTrailingPathDelimiter(GetOutputDir(APAckage));
-  PD:=IncludeTrailingPathDelimiter(GetPackageDir(APackage));
-  // units
-  D:=IncludeTrailingPathDelimiter(Defaults.UnitInstallDir)+APackage.Name;
-  InstallPackageFiles(APAckage,ttUnit,O,D);
-  // Programs
-  D:=IncludeTrailingPathDelimiter(Defaults.BinInstallDir);
-  InstallPackageFiles(APAckage,ttProgram,PD,D);
-  // Done.
-  APackage.FTargetState:=tsInstalled;
-  DoAfterInstall(APackage);
-end;
-
-procedure TBuildEngine.DoBeforeArchive(APackage: TPackage);
-begin
-  If APackage.HasCommands then
-    ExecuteCommands(APackage.Commands,caBeforeArchive);
-  If Assigned(APackage.BeforeArchive) then
-    APackage.BeforeArchive(APackage);
-end;
-
-procedure TBuildEngine.DoAfterArchive(APackage: TPackage);
-begin
-  If Assigned(APackage.AfterArchive) then
-    APackage.AfterArchive(APackage);
-  If APackage.HasCommands then
-    ExecuteCommands(APackage.Commands,caAfterArchive);
-end;
-
-
-procedure TBuildEngine.Archive(APackage: TPackage);
-
-Var
-  L : TStrings;
-  A : String;
-
-begin
-  Log(vlInfo,SLogArchivingPackage,[APackage.Name]);
-  DoBeforeArchive(Apackage);
-  L:=TStringList.Create;
-  Try
-    APackage.GetInstallFiles(L,[ttUnit],TargetDir,Defaults.OS);
-    A:=APackage.Name+ZipExt;
-    CmdArchiveFiles(L,A);
-  Finally
-    L.Free;
-  end;
-  Writeln('Archiving : ',APackage.Name);
-  DoAfterArchive(Apackage);
-end;
-
-procedure TBuildEngine.DoBeforeClean(APackage: TPackage);
-begin
-  If APackage.HasCommands then
-    ExecuteCommands(APackage.Commands,caBeforeClean);
-  If Assigned(APackage.BeforeClean) then
-    APackage.BeforeClean(APackage);
-end;
-
-procedure TBuildEngine.DoAfterClean(APackage: TPackage);
-begin
-  If Assigned(APackage.AfterClean) then
-    APackage.AfterClean(APackage);
-  If APackage.HasCommands then
-    ExecuteCommands(APackage.Commands,caAfterClean);
-end;
-
-procedure TBuildEngine.Clean(APackage: TPackage);
-
-Var
-  O : String;
-  List : TStringList;
-
-begin
-  Log(vlInfo,SLogCleaningPackage,[APackage.Name]);
-  DoBeforeClean(Apackage);
-  O:=IncludeTrailingPathDelimiter(GetOutputDir(APAckage));
-  List:=TStringList.Create;
-  try
-    APackage.GetCleanFiles(List,O,Defaults.OS);
-    if (List.Count>0) then
-      CmdDeleteFiles(List);
-  Finally
-    List.Free;
-  end;
-  DoAfterClean(Apackage);
-end;
-
-function TBuildEngine.NeedsCompile(APackage: TPackage): Boolean;
-
-Var
-  I : Integer;
-  P : TPackage;
-
-begin
-  ResolveDependencies(APackage.Dependencies,(APackage.Collection as TPackages));
-  Result:=False;
-  I:=0;
-  While (Not Result) and (I<APAckage.Dependencies.Count) do
-    begin
-    P:=TPackage(APAckage.Dependencies.Objects[i]);
-    // I'm not sure whether the target dir is OK here ??
-    Result:=Assigned(P) and NeedsCompile(P);
-    Inc(I);
-    end;
-  If Not Result then
-    begin
-    I:=0;
-    While (Not Result) and (I<APackage.Targets.Count) do
-      begin
-      Result:=NeedsCompile(APackage.Targets.TargetItems[i]);
-      Inc(I);
-      end;
-    end;
-end;
-
-Procedure TBuildEngine.GetSourceFiles(APackage : TPackage; List : TStrings);
-var
-  L : TStrings;
-  i : integer;
-begin
-  try
-    L:=TStringList.Create;
-    APackage.GetSourceFiles(L);
-    List.Add(Format('<sources packagename=%s>',[APackage.Name]));
-    for i:=0 to L.Count-1 do
-      List.Add(Format('<source>%s</source>',[L[i]]));
-    List.Add('</sources>');
-  finally
-    L.Free;
-  end;
-end;
-
-
-Procedure TBuildEngine.GetManifest(APackage : TPackage; Manifest : TStrings);
-
-begin
-  APackage.GetManifest(Manifest);
-end;
-
-
-procedure TBuildEngine.Compile(Packages: TPackages);
-
-Var
-  I : Integer;
-  P : TPackage;
-
-begin
-  If Assigned(BeforeCompile) then
-    BeforeCompile(Self);
-  For I:=0 to Packages.Count-1 do
-    begin
-    P:=Packages.PackageItems[i];
-    If PackageOK(P) then
-      If (P.State=tsNeutral) then
-        begin
-        If (FForceCompile or NeedsCompile(P)) then
-          begin
-          P.FTargetState:=tsCompiling;
-          FixDependencies(P);
-          Compile(P);
-          end;
-        P.FTargetState:=tsCompiled;
-        end;
-    end;
-  If Assigned(AfterCompile) then
-    AfterCompile(Self);
-end;
-
-procedure TBuildEngine.Install(Packages: TPackages);
-
-Var
-  I : Integer;
-  P : TPackage;
-
-begin
-  If Assigned(BeforeInstall) then
-    BeforeInstall(Self);
-  For I:=0 to Packages.Count-1 do
-    begin
-    P:=Packages.PackageItems[i];
-    If PackageOK(P) then
-      Install(P);
-    end;
-  If Assigned(AfterInstall) then
-    AfterInstall(Self);
-end;
-
-procedure TBuildEngine.Archive(Packages: TPackages);
-
-Var
-  I : Integer;
-  P : TPackage;
-
-begin
-  If Assigned(BeforeArchive) then
-    BeforeArchive(Self);
-  Log(vlDebug,'Build engine archiving.');
-  For I:=0 to Packages.Count-1 do
-    begin
-    P:=Packages.PackageItems[i];
-    If PackageOK(P) then
-      Archive(P);
-    end;
-  If Assigned(AfterArchive) then
-    AfterArchive(Self);
-end;
-
-procedure TBuildEngine.Clean(Packages: TPackages);
-
-Var
-  I : Integer;
-  P : TPackage;
-
-begin
-  If Assigned(BeforeClean) then
-    BeforeClean(Self);
-  Log(vldebug,'Build engine cleaning.');
-  For I:=0 to Packages.Count-1 do
-    begin
-    P:=Packages.PackageItems[i];
-    If PackageOK(P) then
-      Clean(P);
-    end;
-  If Assigned(AfterClean) then
-    AfterClean(Self);
-end;
-
-Procedure TBuildEngine.GetManifest(Packages : TPackages; Manifest : TStrings);
-
-Var
-  I : Integer;
-
-begin
-  If Assigned(BeforeManifest) then
-    BeforeManifest(Self);
-  Manifest.Add('<packages>');
-  For I:=0 to Packages.Count-1 do
-    GetManifest(Packages.PackageItems[i],Manifest);
-  Manifest.Add('</packages>');
-  If Assigned(AfterManifest) then
-    AfterManifest(Self);
-end;
-
-
-Procedure TBuildEngine.GetSourceFiles(Packages : TPackages; List : TStrings);
-
-Var
-  I : Integer;
-
-begin
-  List.Add('<packages>');
-  For I:=0 to Packages.Count-1 do
-    GetSourceFiles(Packages.PackageItems[i],List);
-  List.Add('</packages>');
-end;
-
-
-{ TTarget }
-
-function TTarget.GetHasStrings(AIndex: integer): Boolean;
-begin
-  Result:=False;
-  Case AIndex Of
-    0 : Result:=FUnitPath<>Nil;
-    1 : Result:=FObjectPath<>Nil;
-    2 : Result:=FIncludePath<>Nil;
-    3 : Result:=FDependencies<>Nil;
-  end;
-end;
-
-function TTarget.GetCommands: TCommands;
-begin
-  If FCommands=Nil then
-    FCommands:=TCommands.Create(TCommand);
-  Result:=FCommands;
-end;
-
-function TTarget.GetHasCommands: Boolean;
-begin
-  Result:=(FCommands<>Nil);
-end;
-
-function TTarget.GetStrings(AIndex: integer): TStrings;
-
-  Function EnsureStrings(Var S : TStrings) : TStrings;
-
-  begin
-    If (S=Nil) then
-      S:=TStringList.Create;
-    Result:=S;
-  end;
-
-begin
-  Result:=Nil;
-  Case AIndex Of
-    0 : Result:=EnsureStrings(FUnitPath);
-    1 : Result:=EnsureStrings(FObjectPath);
-    2 : Result:=EnsureStrings(FIncludePath);
-    3 : Result:=EnsureStrings(FDependencies);
-  end;
-end;
-
-procedure TTarget.SetCommands(const AValue: TCommands);
-begin
-
-end;
-
-procedure TTarget.SetStrings(AIndex: integer; const AValue: TStrings);
-begin
-  GetStrings(AIndex).Assign(AValue);
-end;
-
-
-function TTarget.GetSourceFileName: String;
-begin
-  Result:=Name+FExtension;
-end;
-
-function TTarget.GetUnitFileName: String;
-begin
-  Result:=Name+UnitExt;
-end;
-
-function TTarget.GetObjectFileName: String;
-begin
-  Result:=Name+ObjExt;
-end;
-
-function TTarget.GetRSTFileName: String;
-begin
-  Result:=Name+RSText;
-end;
-
-function TTarget.GetProgramFileName(AnOS : TOS): String;
-begin
-  if AnOS in [Go32v2,Win32,Win64,OS2] then
-    Result:=Name+ExeExt
-  else
-    Result:=Name;
-end;
-
-constructor TTarget.Create(ACollection: TCollection);
-begin
-  inherited Create(ACollection);
-  FInstall:=True;
-end;
-
-destructor TTarget.Destroy;
-begin
-  FreeAndNil(FUnitPath);
-  FreeAndNil(FObjectPath);
-  FreeAndNil(FIncludePath);
-  FreeAndNil(FDependencies);
-  inherited Destroy;
-end;
-
-function TTarget.GetOutputFileName(AOs: TOS): String;
-begin
-  if TargetType in UnitTargets then
-    Result:=GetUnitFileName
-  else
-    Result:=GetProgramFileName(AOs);
-end;
-
-
-procedure TTarget.SetName(const AValue: String);
-
-Var
-  D,N,E : String;
-
-begin
-  N:=FixPath(AValue);
-  D:=ExtractFilePath(N);
-  E:=ExtractFileExt(N);
-  N:=ExtractFileName(N);
-  If (E<>'') then
-    N:=Copy(N,1,Length(N)-Length(E));
-  inherited SetName(N);
-  FExtension:=E;
-  FDirectory:=D;
-end;
-
-procedure TTarget.GetCleanFiles(List: TStrings; APrefix : String; AnOS : TOS);
-begin
-  If (OS=[]) or (AnOS in OS) then
-    begin
-    List.Add(APrefix+ObjectFileName);
-    If (TargetType in [ttUnit,ttExampleUnit]) then
-      List.Add(APrefix+UnitFileName)
-    else If (TargetType in [ttProgram,ttExampleProgram]) then
-      List.Add(APrefix+GetProgramFileName(AnOS));
-    If ResourceStrings then
-      List.Add(APrefix+RSTFileName);
-    // Maybe add later ?  AddStrings(List,CleanFiles);
-    end;
-end;
-
-procedure TTarget.GetSourceFiles(List: TStrings; APrefix : String; AnOS : TOS);
-begin
-  If (OS=[]) or (AnOS in OS) then
-    begin
-    List.Add(APrefix+ObjectFileName);
-    If (TargetType in [ttUnit,ttExampleUnit]) then
-      List.Add(APrefix+UnitFileName)
-    else If (TargetType in [ttProgram,ttExampleProgram]) then
-      List.Add(APrefix+GetProgramFileName(AnOS));
-    If ResourceStrings then
-      List.Add(APrefix+RSTFileName);
-    // Maybe add later ?  AddStrings(List,CleanFiles);
-    end;
-end;
-
-procedure TTarget.GetInstallFiles(List: TStrings; APrefix : String; AnOS : TOS);
-begin
-  If (OS=[]) or (AnOS in OS) then
-    begin
-    If Not (TargetType in [ttProgram,ttExampleProgram]) then
-      List.Add(APrefix+ObjectFileName);
-    If (TargetType in [ttUnit,ttExampleUnit]) then
-      List.Add(APrefix+UnitFileName)
-    else If (TargetType in [ttProgram,ttExampleProgram]) then
-      List.Add(APrefix+GetProgramFileName(AnOS));
-    If ResourceStrings then
-      List.Add(APrefix+RSTFileName);
-    // Maybe add later ?  AddStrings(List,InstallFiles);
-    end;
-end;
-
-procedure TTarget.GetArchiveFiles(List: TStrings; APrefix : String; AnOS : TOS);
-begin
-  If (OS=[]) or (AnOS in OS) then
-    begin
-    List.Add(APrefix+SourceFileName);
-    // Maybe add later ?  AddStrings(List,ArchiveFiles);
-    end;
-end;
-
-
-{ TSource }
-
-constructor TSource.Create(ACollection: TCollection);
-begin
-  inherited Create(ACollection);
-end;
-
-destructor TSource.Destroy;
-begin
-  inherited Destroy;
-end;
-
-procedure TSource.GetSourceFiles(List: TStrings);
-begin
-  List.Add(Name);
-end;
-
-
-{ TCommands }
-
-function TCommands.GetCommand(Dest : String): TCommand;
-
-begin
-  Result:=TCommand(ItemByName(Dest));
-end;
-
-function TCommands.GetCommandItem(Index : Integer): TCommand;
-begin
-  Result:=TCommand(Items[Index]);
-end;
-
-procedure TCommands.SetCommandItem(Index : Integer; const AValue: TCommand);
-begin
-  Items[Index]:=AValue;
-end;
-
-Function TCommands.AddCommand(const Cmd: String) : TCommand;
-begin
-  Result:=AddCommand(fdefaultAt,Cmd,'','','');
-end;
-
-function TCommands.AddCommand(const Cmd, Options: String): TCommand;
-begin
-  Result:=AddCommand(fdefaultAt,Cmd,Options,'','');
-end;
-
-function TCommands.AddCommand(const Cmd, Options, Dest, Source: String
-  ): TCommand;
-begin
-  Result:=AddCommand(fdefaultAt,Cmd,options,Dest,Source);
-end;
-
-Function TCommands.AddCommand(At: TCommandAt; const Cmd: String) : TCommand;
-begin
-  Result:=AddCommand(At,Cmd,'','','');
-end;
-
-function TCommands.AddCommand(At: TCommandAt; const Cmd, Options: String
-  ): TCommand;
-begin
-  Result:=AddCommand(At,Cmd,Options,'','');
-end;
-
-function TCommands.AddCommand(At: TCommandAt; const Cmd, Options, Dest,
-  Source: String): TCommand;
-begin
-  Result:=Add as TCommand;
-  Result.Command:=Cmd;
-  Result.Options:=Options;
-  Result.At:=At;
-  Result.SourceFile:=Source;
-  Result.DestFile:=Dest;
-end;
-
-Var
-  DefInstaller : TInstaller = Nil;
-  DefDictionary : TDictionary = Nil;
-
-Function Installer : TInstaller;
-
-begin
-  If Not Assigned(DefInstaller) then
-    DefInstaller:=InstallerClass.Create(Nil);
-  Result:=DefInstaller;
-end;
-
-Function Defaults : TDefaults;
-
-begin
-  Result:=Installer.Defaults;
-end;
-
-
-function Dictionary : TDictionary;
-begin
-  If Not Assigned(DefDictionary) then
-    DefDictionary:=DictionaryClass.Create(Nil);
-  Result:=DefDictionary;
-end;
-
-{ TValueItem }
-
-constructor TValueItem.Create(AValue: String);
-begin
-  FValue:=AValue;
-end;
-
-{ TFunctionItem }
-
-constructor TFunctionItem.Create(AFunc: TReplaceFunction);
-begin
-  FFunc:=AFunc;
-end;
-
-{ TDictionary }
-
-constructor TDictionary.Create(AOwner: TComponent);
-begin
-  inherited Create(AOwner);
-  FList:=TStringList.Create;
-  FList.Sorted:=True;
-  FList.Duplicates:=dupError;
-end;
-
-destructor TDictionary.Destroy;
-
-Var
-  I : Integer;
-
-begin
-  For I:=0 to Flist.Count-1 do
-    FList.Objects[i].Free;
-  FreeAndNil(FList);
-  inherited Destroy;
-end;
-
-procedure TDictionary.AddVariable(const AName, Value: String);
-
-Var
-  I : Integer;
-
-begin
-  I:=Flist.IndexOf(AName);
-  If I=-1 then
-    I:=FList.Add(Aname)
-  else
-    Flist.Objects[i].Free;
-  Flist.Objects[i]:=TValueItem.Create(Value);
-end;
-
-procedure TDictionary.AddFunction(const AName: String;
-  FReplacement: TReplaceFunction);
-
-Var
-  I : Integer;
-
-begin
-  I:=Flist.IndexOf(AName);
-  If I=-1 then
-    I:=Flist.Add(AName)
-  else
-    Flist.Objects[i].Free;
-  Flist.Objects[i]:=TFunctionItem.Create(FReplacement);
-end;
-
-procedure TDictionary.RemoveItem(const AName: String);
-
-Var
-  I : Integer;
-
-begin
-  I:=Flist.IndexOf(AName);
-  If (I<>-1) then
-    begin
-    FList.Objects[i].Free;
-    FList.Delete(I);
-    end;
-end;
-
-function TDictionary.GetValue(const AName: String): String;
-
-begin
-  Result:=GetValue(AName,'');
-end;
-
-
-function TDictionary.GetValue(const AName,Args: String): String;
-
-Var
-  O : TObject;
-  I : Integer;
-
-begin
-  I:=Flist.IndexOf(AName);
-  If (I=-1) then
-    Raise EDictionaryError.CreateFmt(SErrNoDictionaryItem,[AName]);
-  O:=Flist.Objects[I];
-  If O is TValueItem then
-    Result:=Result+TValueItem(O).FValue
-  else
-    Result:=Result+TFunctionItem(O).FFunc(AName,Args);
-end;
-
-function TDictionary.ReplaceStrings(Const ASource: String): String;
-
-
-Var
-  S,FN,FV : String;
-  P: Integer;
-
-begin
-  Result:='';
-  S:=ASource;
-  P:=Pos('$(',S);
-  While (P<>0) do
-    begin
-    Result:=Result+Copy(S,1,P-1);
-    Delete(S,1,P+1);
-    P:=Pos(')',S);
-    FN:=Copy(S,1,P-1);
-    Delete(S,1,P);
-    P:=Pos(' ',FN);
-    If (P<>0) then // function arguments ?
-      begin
-      FV:=FN;
-      FN:=Copy(FN,1,P);
-      System.Delete(FV,1,P);
-      end
-    else
-      FV:='';
-    Result:=Result+GetValue(FN,FV);
-    P:=Pos('$(',S);
-    end;
-  Result:=Result+S;
-end;
-
-Function Substitute(Const Source : String; Macros : Array of string) : String;
-
-Var
-  I : Integer;
-
-begin
-  I:=0;
-  While I<High(Macros) do
-    begin
-    Dictionary.AddVariable(Macros[i],Macros[I+1]);
-    Inc(I,2);
-    end;
-  Result:=Dictionary.ReplaceStrings(Source);
-  While I<High(Macros) do
-    begin
-    Dictionary.RemoveItem(Macros[i]);
-    Inc(I,2);
-    end;
-end;
-
-Initialization
-  OnGetApplicationName:=@GetFPMakeName;
-
-Finalization
-  FreeAndNil(DefInstaller);
-  FreeAndNil(DefDictionary);
-end.