Browse Source

* Regenerated Makefile to support the uefi target
+ Initial import of a basic uefi rtl (work in progress)

git-svn-id: branches/olivier/uefi@36057 -

olivier 8 years ago
parent
commit
c73c9579d2

+ 14 - 0
.gitattributes

@@ -9945,6 +9945,20 @@ rtl/ucmaps/cp932.txt svneol=native#text/plain
 rtl/ucmaps/cp936.txt svneol=native#text/plain
 rtl/ucmaps/cp949.txt svneol=native#text/plain
 rtl/ucmaps/cp950.txt svneol=native#text/plain
+rtl/uefi/Makefile svneol=native#text/plain
+rtl/uefi/Makefile.fpc svneol=native#text/plain
+rtl/uefi/buildrtl.pp svneol=native#text/plain
+rtl/uefi/classes.pp svneol=native#text/plain
+rtl/uefi/rtldefs.inc svneol=native#text/plain
+rtl/uefi/sysdir.inc svneol=native#text/plain
+rtl/uefi/sysfile.inc svneol=native#text/plain
+rtl/uefi/sysheap.inc svneol=native#text/plain
+rtl/uefi/sysos.inc svneol=native#text/plain
+rtl/uefi/sysosh.inc svneol=native#text/plain
+rtl/uefi/system.pp svneol=native#text/plain
+rtl/uefi/systhrd.inc svneol=native#text/plain
+rtl/uefi/sysutils.pp svneol=native#text/plain
+rtl/uefi/tthread.inc svneol=native#text/plain
 rtl/unix/aliasctp.inc svneol=native#text/plain
 rtl/unix/aliasptp.inc svneol=native#text/plain
 rtl/unix/baseunix.pp svneol=native#text/plain

+ 6 - 1
rtl/Makefile

@@ -2,7 +2,7 @@
 # Don't edit, this file is generated by FPCMake Version 2.0.0 [2017-04-18 rev 35825]
 #
 default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android i386-aros m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-iphonesim x86_64-aros x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android arm-aros powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-embedded i8086-msdos i8086-win16 aarch64-linux aarch64-darwin wasm-wasm
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android i386-aros i386-uefi m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-iphonesim x86_64-aros x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android arm-aros powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-embedded i8086-msdos i8086-win16 aarch64-linux aarch64-darwin wasm-wasm
 BSDs = freebsd netbsd openbsd darwin dragonfly
 UNIXs = linux $(BSDs) solaris qnx haiku aix
 LIMIT83fs = go32v2 os2 emx watcom msdos win16
@@ -988,6 +988,11 @@ STATICLIBEXT=.a
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=w16
 endif
+ifeq ($(OS_TARGET),uefi)
+SHAREDLIBEXT=.efi
+SHORTSUFFIX=efi
+EXEEXT=.efi
+endif
 ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
 FPCMADE=fpcmade.$(SHORTSUFFIX)
 ZIPSUFFIX=$(SHORTSUFFIX)

+ 2889 - 0
rtl/uefi/Makefile

@@ -0,0 +1,2889 @@
+#
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2017-04-18 rev 35825]
+#
+default: all
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android i386-aros i386-uefi m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-iphonesim x86_64-aros x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android arm-aros powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-embedded i8086-msdos i8086-win16 aarch64-linux aarch64-darwin wasm-wasm
+BSDs = freebsd netbsd openbsd darwin dragonfly
+UNIXs = linux $(BSDs) solaris qnx haiku aix
+LIMIT83fs = go32v2 os2 emx watcom msdos win16
+OSNeedsComspecToRunBatch = go32v2 watcom
+FORCE:
+.PHONY: FORCE
+override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
+ifneq ($(findstring darwin,$(OSTYPE)),)
+inUnix=1 #darwin
+SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
+else
+ifeq ($(findstring ;,$(PATH)),)
+inUnix=1
+SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
+else
+SEARCHPATH:=$(subst ;, ,$(PATH))
+endif
+endif
+SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
+PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
+ifeq ($(PWD),)
+PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
+ifeq ($(PWD),)
+$(error You need the GNU utils package to use this Makefile)
+else
+PWD:=$(firstword $(PWD))
+SRCEXEEXT=
+endif
+else
+PWD:=$(firstword $(PWD))
+SRCEXEEXT=.exe
+endif
+ifndef inUnix
+ifeq ($(OS),Windows_NT)
+inWinNT=1
+else
+ifdef OS2_SHELL
+inOS2=1
+endif
+endif
+else
+ifneq ($(findstring cygdrive,$(PATH)),)
+inCygWin=1
+endif
+endif
+ifdef inUnix
+SRCBATCHEXT=.sh
+else
+ifdef inOS2
+SRCBATCHEXT=.cmd
+else
+SRCBATCHEXT=.bat
+endif
+endif
+ifdef COMSPEC
+ifneq ($(findstring $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),)
+ifndef RUNBATCH
+RUNBATCH=$(COMSPEC) /C
+endif
+endif
+endif
+ifdef inUnix
+PATHSEP=/
+else
+PATHSEP:=$(subst /,\,/)
+ifdef inCygWin
+PATHSEP=/
+endif
+endif
+ifdef PWD
+BASEDIR:=$(subst \,/,$(shell $(PWD)))
+ifdef inCygWin
+ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
+BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
+BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
+BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
+endif
+endif
+else
+BASEDIR=.
+endif
+ifdef inOS2
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO=echo
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+endif
+override OS_TARGET_DEFAULT=uefi
+override DEFAULT_FPCDIR=../..
+ifndef FPC
+ifdef PP
+FPC=$(PP)
+endif
+endif
+ifndef FPC
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+ifneq ($(CPU_TARGET),)
+FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB)
+else
+FPC:=$(shell $(FPCPROG) -PB)
+endif
+ifneq ($(findstring Error,$(FPC)),)
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+else
+ifeq ($(strip $(wildcard $(FPC))),)
+FPC:=$(firstword $(FPCPROG))
+endif
+endif
+else
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+endif
+override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
+override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
+FOUNDFPC:=$(strip $(wildcard $(FPC)))
+ifeq ($(FOUNDFPC),)
+FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
+ifeq ($(FOUNDFPC),)
+$(error Compiler $(FPC) not found)
+endif
+endif
+ifndef FPC_COMPILERINFO
+FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
+endif
+ifndef FPC_VERSION
+FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
+endif
+export FPC FPC_VERSION FPC_COMPILERINFO
+unexport CHECKDEPEND ALLDEPENDENCIES
+ifndef CPU_TARGET
+ifdef CPU_TARGET_DEFAULT
+CPU_TARGET=$(CPU_TARGET_DEFAULT)
+endif
+endif
+ifndef OS_TARGET
+ifdef OS_TARGET_DEFAULT
+OS_TARGET=$(OS_TARGET_DEFAULT)
+endif
+endif
+ifndef CPU_SOURCE
+CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
+endif
+ifndef CPU_TARGET
+CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
+endif
+ifndef OS_SOURCE
+OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
+endif
+ifndef OS_TARGET
+OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
+endif
+FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifeq ($(CPU_TARGET),armeb)
+ARCH=arm
+override FPCOPT+=-Cb
+else
+ifeq ($(CPU_TARGET),armel)
+ARCH=arm
+override FPCOPT+=-CaEABI
+else
+ARCH=$(CPU_TARGET)
+endif
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t or SUBARCH=armv7m) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for avr-embedded, a sub-architecture (e.g. SUBARCH=avr25 or SUBARCH=avr35) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
+ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
+TARGETSUFFIX=$(OS_TARGET)
+SOURCESUFFIX=$(OS_SOURCE)
+else
+ifneq ($(findstring $(OS_TARGET),$(LIMIT83fs)),)
+TARGETSUFFIX=$(OS_TARGET)
+else
+TARGETSUFFIX=$(FULL_TARGET)
+endif
+SOURCESUFFIX=$(FULL_SOURCE)
+endif
+ifneq ($(FULL_TARGET),$(FULL_SOURCE))
+CROSSCOMPILE=1
+endif
+ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
+ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
+$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
+endif
+endif
+ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
+BSDhier=1
+endif
+ifeq ($(OS_TARGET),linux)
+linuxHier=1
+endif
+ifndef CROSSCOMPILE
+BUILDFULLNATIVE=1
+export BUILDFULLNATIVE
+endif
+ifdef BUILDFULLNATIVE
+BUILDNATIVE=1
+export BUILDNATIVE
+endif
+export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
+ifdef FPCDIR
+override FPCDIR:=$(subst \,/,$(FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl)),)
+override FPCDIR=wrong
+endif
+else
+override FPCDIR=wrong
+endif
+ifdef DEFAULT_FPCDIR
+ifeq ($(FPCDIR),wrong)
+override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl)),)
+override FPCDIR=wrong
+endif
+endif
+endif
+ifeq ($(FPCDIR),wrong)
+ifdef inUnix
+override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
+ifeq ($(wildcard $(FPCDIR)/units),)
+override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
+endif
+else
+override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl)),)
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl)),)
+override FPCDIR:=$(BASEDIR)
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl)),)
+override FPCDIR=c:/pp
+endif
+endif
+endif
+endif
+endif
+ifndef CROSSBINDIR
+CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
+endif
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+ifeq ($(OS_SOURCE),darwin)
+DARWIN2DARWIN=1
+endif
+endif
+ifndef BINUTILSPREFIX
+ifndef CROSSBINDIR
+ifdef CROSSCOMPILE
+ifneq ($(OS_TARGET),msdos)
+ifndef DARWIN2DARWIN
+ifneq ($(CPU_TARGET),jvm)
+BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
+ifeq ($(OS_TARGET),android)
+ifeq ($(CPU_TARGET),arm)
+BINUTILSPREFIX=arm-linux-androideabi-
+else
+ifeq ($(CPU_TARGET),i386)
+BINUTILSPREFIX=i686-linux-android-
+else
+ifeq ($(CPU_TARGET),mipsel)
+BINUTILSPREFIX=mipsel-linux-android-
+endif
+endif
+endif
+endif
+endif
+endif
+else
+BINUTILSPREFIX=$(OS_TARGET)-
+endif
+endif
+endif
+endif
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
+ifeq ($(UNITSDIR),)
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
+endif
+PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages)
+ifndef FPCFPMAKE
+ifdef CROSSCOMPILE
+ifeq ($(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))),)
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+FPCFPMAKE:=$(shell $(FPCPROG) -PB)
+ifeq ($(strip $(wildcard $(FPCFPMAKE))),)
+FPCFPMAKE:=$(firstword $(FPCPROG))
+endif
+else
+override FPCFPMAKE=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+else
+FPCFPMAKE=$(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR))))
+FPMAKE_SKIP_CONFIG=-n
+export FPCFPMAKE
+export FPMAKE_SKIP_CONFIG
+endif
+else
+FPMAKE_SKIP_CONFIG=-n
+FPCFPMAKE=$(FPC)
+endif
+endif
+override PACKAGE_NAME=rtl
+PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+RTL=..
+INC=$(RTL)/inc
+COMMON=$(RTL)/common
+PROCINC=$(RTL)/$(CPU_TARGET)
+UNITPREFIX=rtl
+SYSTEMUNIT=system
+CPU_UNITS=
+ifeq ($(ARCH),i386)
+CPU_UNITS=cpu mmx
+endif
+ifeq ($(ARCH),x86_64)
+CPU_UNITS=x86 cpu
+endif
+LOADERS=crt0
+ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
+DLLS=
+else
+DLLS=fpcmemdll
+endif
+OBJPASDIR=$(RTL)/objpas
+ifeq ($(FULL_TARGET),i386-linux)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-android)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-aros)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-uefi)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),powerpc-aix)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),x86_64-netbsd)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),x86_64-iphonesim)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),x86_64-aros)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),x86_64-dragonfly)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),arm-android)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),arm-aros)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),powerpc64-aix)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),mips-linux)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),mipsel-android)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),jvm-java)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i8086-embedded)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i8086-msdos)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i8086-win16)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),aarch64-linux)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),aarch64-darwin)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),wasm-wasm)
+override TARGET_UNITS+=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+endif
+ifeq ($(FULL_TARGET),i386-linux)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-android)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-aros)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-uefi)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),powerpc-aix)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),x86_64-netbsd)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),x86_64-iphonesim)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),x86_64-aros)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),x86_64-dragonfly)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),arm-android)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),arm-aros)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),powerpc64-aix)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mips-linux)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),mipsel-android)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),jvm-java)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i8086-embedded)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i8086-msdos)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i8086-win16)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),aarch64-linux)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),aarch64-darwin)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),wasm-wasm)
+override TARGET_IMPLICITUNITS+=ctypes strings heaptrc rtlconsts sysconst sysutils math types typinfo fgl classes $(CPU_UNITS) charset getopts cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
+ifeq ($(FULL_TARGET),i386-linux)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-android)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-aros)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i386-uefi)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),powerpc-aix)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),x86_64-netbsd)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),x86_64-iphonesim)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),x86_64-aros)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),x86_64-dragonfly)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),arm-android)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),arm-aros)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),powerpc64-aix)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),mips-linux)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),mipsel-android)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),jvm-java)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i8086-embedded)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i8086-msdos)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),i8086-win16)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),aarch64-linux)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),aarch64-darwin)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+ifeq ($(FULL_TARGET),wasm-wasm)
+override TARGET_RSTS+=math typinfo classes sysconst
+endif
+override INSTALL_FPCPACKAGE=y
+ifeq ($(FULL_TARGET),i386-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-android)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-aros)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-uefi)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc-aix)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),x86_64-netbsd)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),x86_64-iphonesim)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),x86_64-aros)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),x86_64-dragonfly)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),arm-android)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),arm-aros)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc64-aix)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),mips-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),mipsel-android)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),jvm-java)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i8086-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i8086-msdos)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i8086-win16)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),aarch64-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),aarch64-darwin)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),wasm-wasm)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-android)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-aros)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-uefi)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),powerpc-aix)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),x86_64-netbsd)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),x86_64-iphonesim)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),x86_64-aros)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),x86_64-dragonfly)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),arm-android)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),arm-aros)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),powerpc64-aix)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),mips-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),mipsel-android)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),jvm-java)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i8086-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i8086-msdos)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i8086-win16)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),aarch64-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),aarch64-darwin)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),wasm-wasm)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+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
+EXEDBGEXT=.dbg
+ifeq ($(OS_TARGET),go32v1)
+STATICLIBPREFIX=
+SHORTSUFFIX=v1
+endif
+ifeq ($(OS_TARGET),go32v2)
+STATICLIBPREFIX=
+SHORTSUFFIX=dos
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),watcom)
+STATICLIBPREFIX=
+OEXT=.obj
+ASMEXT=.asm
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=wat
+IMPORTLIBPREFIX=
+endif
+ifneq ($(CPU_TARGET),jvm)
+ifeq ($(OS_TARGET),android)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=lnx
+endif
+endif
+ifeq ($(OS_TARGET),linux)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=lnx
+endif
+ifeq ($(OS_TARGET),dragonfly)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=df
+endif
+ifeq ($(OS_TARGET),freebsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=fbs
+endif
+ifeq ($(OS_TARGET),netbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=nbs
+endif
+ifeq ($(OS_TARGET),openbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=obs
+endif
+ifeq ($(OS_TARGET),win32)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=w32
+endif
+ifeq ($(OS_TARGET),os2)
+BATCHEXT=.cmd
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=os2
+ECHO=echo
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),emx)
+BATCHEXT=.cmd
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=emx
+ECHO=echo
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),amiga)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=amg
+endif
+ifeq ($(OS_TARGET),aros)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=aros
+endif
+ifeq ($(OS_TARGET),morphos)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=mos
+endif
+ifeq ($(OS_TARGET),atari)
+EXEEXT=.ttp
+SHORTSUFFIX=ata
+endif
+ifeq ($(OS_TARGET),beos)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=be
+endif
+ifeq ($(OS_TARGET),haiku)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=hai
+endif
+ifeq ($(OS_TARGET),solaris)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=sun
+endif
+ifeq ($(OS_TARGET),qnx)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=qnx
+endif
+ifeq ($(OS_TARGET),netware)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nw
+IMPORTLIBPREFIX=imp
+endif
+ifeq ($(OS_TARGET),netwlibc)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nwl
+IMPORTLIBPREFIX=imp
+endif
+ifeq ($(OS_TARGET),macos)
+BATCHEXT=
+EXEEXT=
+DEBUGSYMEXT=.xcoff
+SHORTSUFFIX=mac
+IMPORTLIBPREFIX=imp
+endif
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=dwn
+EXEDBGEXT=.dSYM
+endif
+ifeq ($(OS_TARGET),gba)
+EXEEXT=.gba
+SHAREDLIBEXT=.so
+SHORTSUFFIX=gba
+endif
+ifeq ($(OS_TARGET),symbian)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=symbian
+endif
+ifeq ($(OS_TARGET),NativeNT)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=nativent
+endif
+ifeq ($(OS_TARGET),wii)
+EXEEXT=.dol
+SHAREDLIBEXT=.so
+SHORTSUFFIX=wii
+endif
+ifeq ($(OS_TARGET),aix)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=aix
+endif
+ifeq ($(OS_TARGET),java)
+OEXT=.class
+ASMEXT=.j
+SHAREDLIBEXT=.jar
+SHORTSUFFIX=java
+endif
+ifeq ($(CPU_TARGET),jvm)
+ifeq ($(OS_TARGET),android)
+OEXT=.class
+ASMEXT=.j
+SHAREDLIBEXT=.jar
+SHORTSUFFIX=android
+endif
+endif
+ifeq ($(OS_TARGET),msdos)
+STATICLIBPREFIX=
+STATICLIBEXT=.a
+SHORTSUFFIX=d16
+endif
+ifeq ($(OS_TARGET),embedded)
+ifeq ($(CPU_TARGET),i8086)
+STATICLIBPREFIX=
+STATICLIBEXT=.a
+else
+EXEEXT=.bin
+endif
+SHORTSUFFIX=emb
+endif
+ifeq ($(OS_TARGET),win16)
+STATICLIBPREFIX=
+STATICLIBEXT=.a
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=w16
+endif
+ifeq ($(OS_TARGET),uefi)
+SHAREDLIBEXT=.efi
+SHORTSUFFIX=efi
+endif
+ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
+FPCMADE=fpcmade.$(SHORTSUFFIX)
+ZIPSUFFIX=$(SHORTSUFFIX)
+ZIPCROSSPREFIX=
+ZIPSOURCESUFFIX=src
+ZIPEXAMPLESUFFIX=exm
+else
+FPCMADE=fpcmade.$(TARGETSUFFIX)
+ZIPSOURCESUFFIX=.source
+ZIPEXAMPLESUFFIX=.examples
+ifdef CROSSCOMPILE
+ZIPSUFFIX=.$(SOURCESUFFIX)
+ZIPCROSSPREFIX=$(TARGETSUFFIX)-
+else
+ZIPSUFFIX=.$(TARGETSUFFIX)
+ZIPCROSSPREFIX=
+endif
+endif
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO= __missing_command_ECHO
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+ifndef DATE
+DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE= __missing_command_DATE
+else
+DATE:=$(firstword $(DATE))
+endif
+else
+DATE:=$(firstword $(DATE))
+endif
+endif
+export DATE
+ifndef GINSTALL
+GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL= __missing_command_GINSTALL
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+endif
+export GINSTALL
+ifndef CPPROG
+CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(CPPROG),)
+CPPROG= __missing_command_CPPROG
+else
+CPPROG:=$(firstword $(CPPROG))
+endif
+endif
+export CPPROG
+ifndef RMPROG
+RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(RMPROG),)
+RMPROG= __missing_command_RMPROG
+else
+RMPROG:=$(firstword $(RMPROG))
+endif
+endif
+export RMPROG
+ifndef MVPROG
+MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MVPROG),)
+MVPROG= __missing_command_MVPROG
+else
+MVPROG:=$(firstword $(MVPROG))
+endif
+endif
+export MVPROG
+ifndef MKDIRPROG
+MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MKDIRPROG),)
+MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MKDIRPROG),)
+MKDIRPROG= __missing_command_MKDIRPROG
+else
+MKDIRPROG:=$(firstword $(MKDIRPROG))
+endif
+else
+MKDIRPROG:=$(firstword $(MKDIRPROG))
+endif
+endif
+export MKDIRPROG
+ifndef ECHOREDIR
+ifndef inUnix
+ECHOREDIR=echo
+else
+ECHOREDIR=$(ECHO)
+endif
+endif
+ifndef COPY
+COPY:=$(CPPROG) -fp
+endif
+ifndef COPYTREE
+COPYTREE:=$(CPPROG) -Rfp
+endif
+ifndef MKDIRTREE
+MKDIRTREE:=$(MKDIRPROG) -p
+endif
+ifndef MOVE
+MOVE:=$(MVPROG) -f
+endif
+ifndef DEL
+DEL:=$(RMPROG) -f
+endif
+ifndef DELTREE
+DELTREE:=$(RMPROG) -rf
+endif
+ifndef INSTALL
+ifdef inUnix
+INSTALL:=$(GINSTALL) -c -m 644
+else
+INSTALL:=$(COPY)
+endif
+endif
+ifndef INSTALLEXE
+ifdef inUnix
+INSTALLEXE:=$(GINSTALL) -c -m 755
+else
+INSTALLEXE:=$(COPY)
+endif
+endif
+ifndef MKDIR
+MKDIR:=$(GINSTALL) -m 755 -d
+endif
+export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE= __missing_command_PPUMOVE
+else
+PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+export PPUMOVE
+ifndef FPCMAKE
+FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(FPCMAKE),)
+FPCMAKE= __missing_command_FPCMAKE
+else
+FPCMAKE:=$(firstword $(FPCMAKE))
+endif
+endif
+export FPCMAKE
+ifndef ZIPPROG
+ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ZIPPROG),)
+ZIPPROG= __missing_command_ZIPPROG
+else
+ZIPPROG:=$(firstword $(ZIPPROG))
+endif
+endif
+export ZIPPROG
+ifndef TARPROG
+TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(TARPROG),)
+TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(TARPROG),)
+TARPROG= __missing_command_TARPROG
+else
+TARPROG:=$(firstword $(TARPROG))
+endif
+else
+TARPROG:=$(firstword $(TARPROG))
+endif
+endif
+export TARPROG
+ASNAME=$(BINUTILSPREFIX)as
+LDNAME=$(BINUTILSPREFIX)ld
+ARNAME=$(BINUTILSPREFIX)ar
+RCNAME=$(BINUTILSPREFIX)rc
+NASMNAME=$(BINUTILSPREFIX)nasm
+ifndef ASPROG
+ifdef CROSSBINDIR
+ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
+else
+ASPROG=$(ASNAME)
+endif
+endif
+ifndef LDPROG
+ifdef CROSSBINDIR
+LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
+else
+LDPROG=$(LDNAME)
+endif
+endif
+ifndef RCPROG
+ifdef CROSSBINDIR
+RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
+else
+RCPROG=$(RCNAME)
+endif
+endif
+ifndef ARPROG
+ifdef CROSSBINDIR
+ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
+else
+ARPROG=$(ARNAME)
+endif
+endif
+ifndef NASMPROG
+ifdef CROSSBINDIR
+NASMPROG=$(CROSSBINDIR)/$(NASMNAME)$(SRCEXEEXT)
+else
+NASMPROG=$(NASMNAME)
+endif
+endif
+AS=$(ASPROG)
+LD=$(LDPROG)
+RC=$(RCPROG)
+AR=$(ARPROG)
+NASM=$(NASMPROG)
+ifdef inUnix
+PPAS=./ppas$(SRCBATCHEXT)
+else
+PPAS=ppas$(SRCBATCHEXT)
+endif
+ifdef inUnix
+LDCONFIG=ldconfig
+else
+LDCONFIG=
+endif
+ifdef DATE
+DATESTR:=$(shell $(DATE) +%Y%m%d)
+else
+DATESTR=
+endif
+ZIPOPT=-9
+ZIPEXT=.zip
+ifeq ($(USETAR),bz2)
+TAROPT=vj
+TAREXT=.tar.bz2
+else
+TAROPT=vz
+TAREXT=.tar.gz
+endif
+ifndef NOCPUDEF
+override FPCOPTDEF=$(ARCH)
+endif
+ifneq ($(OS_TARGET),$(OS_SOURCE))
+override FPCOPT+=-T$(OS_TARGET)
+endif
+ifneq ($(CPU_TARGET),$(CPU_SOURCE))
+override FPCOPT+=-P$(ARCH)
+endif
+ifeq ($(OS_SOURCE),openbsd)
+override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
+override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH)
+override FPMAKE_BUILD_OPT+=-FD$(NEW_BINUTILS_PATH)
+endif
+ifndef CROSSBOOTSTRAP
+ifneq ($(BINUTILSPREFIX),)
+override FPCOPT+=-XP$(BINUTILSPREFIX)
+endif
+ifneq ($(BINUTILSPREFIX),)
+override FPCOPT+=-Xr$(RLINKPATH)
+endif
+endif
+ifndef CROSSCOMPILE
+ifneq ($(BINUTILSPREFIX),)
+override FPCMAKEOPT+=-XP$(BINUTILSPREFIX)
+override FPMAKE_BUILD_OPT+=-XP$(BINUTILSPREFIX)
+endif
+endif
+ifdef UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
+endif
+ifdef LIBDIR
+override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
+endif
+ifdef OBJDIR
+override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
+endif
+ifdef INCDIR
+override FPCOPT+=$(addprefix -Fi,$(INCDIR))
+endif
+ifdef LINKSMART
+override FPCOPT+=-XX
+endif
+ifdef CREATESMART
+override FPCOPT+=-CX
+endif
+ifdef DEBUG
+override FPCOPT+=-gl
+override FPCOPTDEF+=DEBUG
+endif
+ifdef RELEASE
+ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
+ifeq ($(CPU_TARGET),i386)
+FPCCPUOPT:=-OG2p3
+endif
+ifeq ($(CPU_TARGET),powerpc)
+FPCCPUOPT:=-O1r
+endif
+else
+FPCCPUOPT:=-O2
+endif
+override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
+override FPCOPTDEF+=RELEASE
+endif
+ifdef STRIP
+override FPCOPT+=-Xs
+endif
+ifdef OPTIMIZE
+override FPCOPT+=-O2
+endif
+ifdef VERBOSE
+override FPCOPT+=-vwni
+endif
+ifdef COMPILER_OPTIONS
+override FPCOPT+=$(COMPILER_OPTIONS)
+endif
+ifdef COMPILER_UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
+endif
+ifdef COMPILER_LIBRARYDIR
+override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
+endif
+ifdef COMPILER_OBJECTDIR
+override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
+endif
+ifdef COMPILER_INCLUDEDIR
+override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
+endif
+ifdef CROSSBINDIR
+override FPCOPT+=-FD$(CROSSBINDIR)
+endif
+ifdef COMPILER_TARGETDIR
+override FPCOPT+=-FE$(COMPILER_TARGETDIR)
+ifeq ($(COMPILER_TARGETDIR),.)
+override TARGETDIRPREFIX=
+else
+override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
+endif
+endif
+ifdef COMPILER_UNITTARGETDIR
+override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
+ifeq ($(COMPILER_UNITTARGETDIR),.)
+override UNITTARGETDIRPREFIX=
+else
+override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
+endif
+else
+ifdef COMPILER_TARGETDIR
+override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
+override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
+endif
+endif
+ifdef CREATESHARED
+override FPCOPT+=-Cg
+endif
+ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),)
+ifneq ($(findstring $(CPU_TARGET),x86_64 mips mipsel),)
+override FPCOPT+=-Cg
+endif
+endif
+ifdef LINKSHARED
+endif
+ifdef OPT
+override FPCOPT+=$(OPT)
+endif
+ifdef FPMAKEBUILDOPT
+override FPMAKE_BUILD_OPT+=$(FPMAKEBUILDOPT)
+endif
+ifdef FPCOPTDEF
+override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
+endif
+ifdef CFGFILE
+override FPCOPT+=@$(CFGFILE)
+endif
+ifdef USEENV
+override FPCEXTCMD:=$(FPCOPT)
+override FPCOPT:=!FPCEXTCMD
+export FPCEXTCMD
+endif
+override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
+override ACROSSCOMPILE=1
+endif
+ifdef ACROSSCOMPILE
+override FPCOPT+=$(CROSSOPT)
+endif
+override COMPILER:=$(strip $(FPC) $(FPCOPT))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
+EXECPPAS=
+else
+ifdef RUNBATCH
+EXECPPAS:=@$(RUNBATCH) $(PPAS)
+else
+EXECPPAS:=@$(PPAS)
+endif
+endif
+.PHONY: fpc_units
+ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)
+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)
+	$(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
+endif
+ifdef INSTALL_CREATEPACKAGEFPC
+ifdef FPCMAKE
+ifdef PACKAGE_VERSION
+ifneq ($(wildcard Makefile.fpc),)
+	$(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
+	$(MKDIR) $(INSTALL_UNITDIR)
+	$(INSTALL) Package.fpc $(INSTALL_UNITDIR)
+endif
+endif
+endif
+endif
+ifdef INSTALLPPUFILES
+	$(MKDIR) $(INSTALL_UNITDIR)
+	$(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+	$(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
+endif
+ifneq ($(wildcard $(LIB_FULLNAME)),)
+	$(MKDIR) $(INSTALL_LIBDIR)
+	$(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
+ifdef inUnix
+	ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
+endif
+endif
+endif
+ifdef INSTALL_FILES
+	$(MKDIR) $(INSTALL_DATADIR)
+	$(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
+endif
+fpc_sourceinstall: distclean
+	$(MKDIR) $(INSTALL_SOURCEDIR)
+	$(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
+fpc_exampleinstall: $(EXAMPLEINSTALLTARGET) $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
+ifdef HASEXAMPLES
+	$(MKDIR) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef EXAMPLESOURCEFILES
+	$(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef TARGET_EXAMPLEDIRS
+	$(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
+endif
+.PHONY: fpc_clean fpc_cleanall fpc_distclean
+ifdef EXEFILES
+override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
+override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
+endif
+ifdef CLEAN_PROGRAMS
+override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
+endif
+ifdef CLEAN_UNITS
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
+endif
+ifdef CLEANPPUFILES
+override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
+ifdef DEBUGSYMEXT
+override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
+endif
+override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
+override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
+endif
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANEXEDBGFILES
+	-$(DELTREE) $(CLEANEXEDBGFILES)
+endif
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+ifdef CLEAN_FILES
+	-$(DEL) $(CLEAN_FILES)
+endif
+ifdef LIB_NAME
+	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
+endif
+	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef COMPILER_UNITTARGETDIR
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+endif
+ifdef CLEAN_FILES
+	-$(DEL) $(CLEAN_FILES)
+endif
+	-$(DELTREE) units
+	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+ifneq ($(PPUEXT),.ppu)
+	-$(DEL) *.o *.ppu *.a
+endif
+	-$(DELTREE) *$(SMARTEXT)
+	-$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+	-$(DEL) *_ppas$(BATCHEXT)
+ifdef AOUTEXT
+	-$(DEL) *$(AOUTEXT)
+endif
+ifdef DEBUGSYMEXT
+	-$(DEL) *$(DEBUGSYMEXT)
+endif
+ifdef LOCALFPMAKEBIN
+	-$(DEL) $(LOCALFPMAKEBIN)
+	-$(DEL) $(FPMAKEBINOBJ)
+endif
+fpc_distclean: cleanall
+.PHONY: fpc_baseinfo
+override INFORULES+=fpc_baseinfo
+fpc_baseinfo:
+	@$(ECHO)
+	@$(ECHO)  == Package info ==
+	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
+	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
+	@$(ECHO)
+	@$(ECHO)  == Configuration info ==
+	@$(ECHO)
+	@$(ECHO)  FPC.......... $(FPC)
+	@$(ECHO)  FPC Version.. $(FPC_VERSION)
+	@$(ECHO)  Source CPU... $(CPU_SOURCE)
+	@$(ECHO)  Target CPU... $(CPU_TARGET)
+	@$(ECHO)  Source OS.... $(OS_SOURCE)
+	@$(ECHO)  Target OS.... $(OS_TARGET)
+	@$(ECHO)  Full Source.. $(FULL_SOURCE)
+	@$(ECHO)  Full Target.. $(FULL_TARGET)
+	@$(ECHO)  SourceSuffix. $(SOURCESUFFIX)
+	@$(ECHO)  TargetSuffix. $(TARGETSUFFIX)
+	@$(ECHO)  FPC fpmake... $(FPCFPMAKE)
+	@$(ECHO)
+	@$(ECHO)  == Directory info ==
+	@$(ECHO)
+	@$(ECHO)  Required pkgs... $(REQUIRE_PACKAGES)
+	@$(ECHO)
+	@$(ECHO)  Basedir......... $(BASEDIR)
+	@$(ECHO)  FPCDir.......... $(FPCDIR)
+	@$(ECHO)  CrossBinDir..... $(CROSSBINDIR)
+	@$(ECHO)  UnitsDir........ $(UNITSDIR)
+	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
+	@$(ECHO)
+	@$(ECHO)  GCC library..... $(GCCLIBDIR)
+	@$(ECHO)  Other library... $(OTHERLIBDIR)
+	@$(ECHO)
+	@$(ECHO)  == Tools info ==
+	@$(ECHO)
+	@$(ECHO)  As........ $(AS)
+	@$(ECHO)  Ld........ $(LD)
+	@$(ECHO)  Ar........ $(AR)
+	@$(ECHO)  Rc........ $(RC)
+	@$(ECHO)
+	@$(ECHO)  Mv........ $(MVPROG)
+	@$(ECHO)  Cp........ $(CPPROG)
+	@$(ECHO)  Rm........ $(RMPROG)
+	@$(ECHO)  GInstall.. $(GINSTALL)
+	@$(ECHO)  Echo...... $(ECHO)
+	@$(ECHO)  Shell..... $(SHELL)
+	@$(ECHO)  Date...... $(DATE)
+	@$(ECHO)  FPCMake... $(FPCMAKE)
+	@$(ECHO)  PPUMove... $(PPUMOVE)
+	@$(ECHO)  Zip....... $(ZIPPROG)
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  Target Loaders........ $(TARGET_LOADERS)
+	@$(ECHO)  Target Units.......... $(TARGET_UNITS)
+	@$(ECHO)  Target Implicit Units. $(TARGET_IMPLICITUNITS)
+	@$(ECHO)  Target Programs....... $(TARGET_PROGRAMS)
+	@$(ECHO)  Target Dirs........... $(TARGET_DIRS)
+	@$(ECHO)  Target Examples....... $(TARGET_EXAMPLES)
+	@$(ECHO)  Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
+	@$(ECHO)
+	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
+	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
+	@$(ECHO)
+	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
+	@$(ECHO)  Install Files....... $(INSTALL_FILES)
+	@$(ECHO)
+	@$(ECHO)  == Install info ==
+	@$(ECHO)
+	@$(ECHO)  DateStr.............. $(DATESTR)
+	@$(ECHO)  ZipName.............. $(ZIPNAME)
+	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
+	@$(ECHO)  ZipCrossPrefix....... $(ZIPCROSSPREFIX)
+	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
+	@$(ECHO)  FullZipName.......... $(FULLZIPNAME)
+	@$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)
+	@$(ECHO)
+	@$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)
+	@$(ECHO)  Install binary dir... $(INSTALL_BINDIR)
+	@$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)
+	@$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)
+	@$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)
+	@$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)
+	@$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)
+	@$(ECHO)  Install data dir..... $(INSTALL_DATADIR)
+	@$(ECHO)
+	@$(ECHO)  Dist destination dir. $(DIST_DESTDIR)
+	@$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)
+	@$(ECHO)
+.PHONY: fpc_info
+fpc_info: $(INFORULES)
+.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
+	fpc_makefile_dirs
+fpc_makefile:
+	$(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
+fpc_makefile_sub1:
+ifdef TARGET_DIRS
+	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
+endif
+ifdef TARGET_EXAMPLEDIRS
+	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
+endif
+fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
+fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
+fpc_makefiles: fpc_makefile fpc_makefile_dirs
+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:
+zipinstall:
+zipsourceinstall:
+zipexampleinstall:
+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:
+SYSTEMPPU=$(addsuffix $(PPUEXT),system)
+include $(INC)/makefile.inc
+SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
+include $(PROCINC)/makefile.cpu
+SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
+SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
+crt0$(OEXT) : $(CPU_TARGET)/crt0.as
+	$(AS) -o $(UNITTARGETDIRPREFIX)crt0$(OEXT) $(CPU_TARGET)/crt0.as
+system$(PPUEXT) : system.pp $(SYSDEPS)
+	$(COMPILER) -Us -Sg system.pp
+uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc system$(PPUEXT)
+	$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
+strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
+		   $(PROCINC)/strings.inc $(PROCINC)/stringss.inc \
+		   $(SYSTEMUNIT)$(PPUEXT)
+macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) buildrtl$(PPUEXT)
+	$(COMPILER) $(INC)/macpas.pp $(REDIR)
+sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+		    objpas$(PPUEXT) $(OBJPASDIR)/sysconst$(PPUEXT) # beos$(PPUEXT)
+	$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
+classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
+		   sysutils$(PPUEXT) $(OBJPASDIR)/typinfo$(PPUEXT) types$(PPUEXT) $(OBJPASDIR)/rtlconsts$(PPUEXT) 
+	$(COMPILER) -Fi$(OBJPASDIR) -Fi$(OBJPASDIR)/classes classes.pp
+buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) objpas$(PPUEXT)
+	$(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(PROCINC) -I$(OBJPASDIR) -Fi$(DDKINC) -I$(INC) -Fu$(INC) -Fu$(OBJPASDIR) buildrtl
+cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) objpas$(PPUEXT)
+	$(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
+math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
+	$(COMPILER) $(OBJPASDIR)/math.pp
+types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPASDIR)/types.pp
+sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPASDIR)/sysconst.pp
+rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+	 $(COMPILER) $(OBJPASDIR)/rtlconsts.pp
+character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT)
+	$(COMPILER) $(OBJPASDIR)/character.pas
+fpwidestring$(PPUEXT) : $(OBJPASDIR)/fpwidestring.pp character$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPASDIR)/fpwidestring.pp
+heaptrc$(PPUEXT) : $(INC)/heaptrc.pp system$(PPUEXT)
+	$(COMPILER) $(INC)/heaptrc.pp

+ 162 - 0
rtl/uefi/Makefile.fpc

@@ -0,0 +1,162 @@
+#
+#   Makefile.fpc for Free Pascal UEFI RTL
+#
+
+[package]
+main=rtl
+
+[target]
+loaders=
+#units=system objpas macpas iso7185 buildrtl lineinfo lnfodwrf
+units=system uuchar objpas iso7185 cpall buildrtl strings character fpwidestring heaptrc
+implicitunits= \
+      ctypes strings \
+      heaptrc \
+#      initc cmem dynlibs signals \
+#      dos \
+      rtlconsts sysconst sysutils math types \
+      typinfo fgl classes \
+      $(CPU_UNITS) charset getopts \
+#      sockets printer \
+#      keyboard
+#      sharemem exeinfo fpintres \
+      cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 \
+      cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+
+# shared=$(DLLS)
+
+rsts=math typinfo classes sysconst
+
+[require]
+nortl=y
+
+[install]
+fpcpackage=y
+
+[default]
+fpcdir=../..
+target=uefi
+
+[compiler]
+includedir=$(INC) $(PROCINC)
+sourcedir=$(INC) $(PROCINC) $(COMMON)
+
+
+[prerules]
+RTL=..
+INC=$(RTL)/inc
+COMMON=$(RTL)/common
+PROCINC=$(RTL)/$(CPU_TARGET)
+
+UNITPREFIX=rtl
+SYSTEMUNIT=system
+
+CPU_UNITS=
+
+ifeq ($(ARCH),i386)
+CPU_UNITS=cpu mmx
+endif
+
+ifeq ($(ARCH),x86_64)
+CPU_UNITS=x86 cpu
+endif
+
+LOADERS=crt0
+
+ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
+#LOADERS=wprt0 wdllprt0 gprt0 wcygprt0
+DLLS=
+else
+DLLS=fpcmemdll
+endif
+
+# Paths
+OBJPASDIR=$(RTL)/objpas
+
+[rules]
+.NOTPARALLEL:
+SYSTEMPPU=$(addsuffix $(PPUEXT),system)
+
+# Get the system independent include file names.
+# This will set the following variables :
+# SYSINCNAMES
+include $(INC)/makefile.inc
+SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
+
+# Get the processor dependent include file names.
+# This will set the following variables :
+# CPUINCNAMES
+include $(PROCINC)/makefile.cpu
+SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
+
+# Put system unit dependencies together.
+SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
+
+
+#
+# Loaders
+#
+
+crt0$(OEXT) : $(CPU_TARGET)/crt0.as
+        $(AS) -o $(UNITTARGETDIRPREFIX)crt0$(OEXT) $(CPU_TARGET)/crt0.as
+
+#
+# Unit specific rules
+#
+
+system$(PPUEXT) : system.pp $(SYSDEPS)
+        $(COMPILER) -Us -Sg system.pp
+
+uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
+
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc system$(PPUEXT)
+        $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
+
+strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
+                   $(PROCINC)/strings.inc $(PROCINC)/stringss.inc \
+                   $(SYSTEMUNIT)$(PPUEXT)
+
+macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) buildrtl$(PPUEXT)
+        $(COMPILER) $(INC)/macpas.pp $(REDIR)
+
+
+#
+# Delphi Compatible Units
+#
+
+sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+                    objpas$(PPUEXT) $(OBJPASDIR)/sysconst$(PPUEXT) # beos$(PPUEXT)
+        $(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
+
+classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
+                   sysutils$(PPUEXT) $(OBJPASDIR)/typinfo$(PPUEXT) types$(PPUEXT) $(OBJPASDIR)/rtlconsts$(PPUEXT) 
+#                   $(UNIXINC)/systhrd$(PPUEXT)
+        $(COMPILER) -Fi$(OBJPASDIR) -Fi$(OBJPASDIR)/classes classes.pp
+
+buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) objpas$(PPUEXT)
+        $(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(PROCINC) -I$(OBJPASDIR) -Fi$(DDKINC) -I$(INC) -Fu$(INC) -Fu$(OBJPASDIR) buildrtl
+
+cpall$(PPUEXT): $(RTL)/charmaps/cpall.pas system$(PPUEXT) objpas$(PPUEXT)
+        $(COMPILER) -Fu$(INC) -Fi$(RTL)/charmaps $(RTL)/charmaps/cpall.pas
+
+math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
+        $(COMPILER) $(OBJPASDIR)/math.pp
+
+types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+       	$(COMPILER) $(OBJPASDIR)/types.pp
+
+sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+        $(COMPILER) $(OBJPASDIR)/sysconst.pp
+
+rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+         $(COMPILER) $(OBJPASDIR)/rtlconsts.pp
+
+# let it depend on buildcollations to prevent simultaneous building of unicodedata
+character$(PPUEXT): sysutils$(PPUEXT) $(OBJPASDIR)/character.pas objpas$(PPUEXT) rtlconsts$(PPUEXT)
+        $(COMPILER) $(OBJPASDIR)/character.pas
+
+fpwidestring$(PPUEXT) : $(OBJPASDIR)/fpwidestring.pp character$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+        $(COMPILER) $(OBJPASDIR)/fpwidestring.pp
+
+heaptrc$(PPUEXT) : $(INC)/heaptrc.pp system$(PPUEXT)
+        $(COMPILER) $(INC)/heaptrc.pp

+ 19 - 0
rtl/uefi/buildrtl.pp

@@ -0,0 +1,19 @@
+unit buildrtl;
+
+  interface
+
+    uses
+      ctypes, strings,
+      rtlconsts, sysconst, sysutils, math, types,
+      typinfo, fgl, classes,
+{$ifdef cpui386}
+      mmx, cpu,
+{$endif}
+{$ifdef cpux86_64}
+      cpu,
+{$endif}
+      charset, cpall, getopts;
+
+  implementation
+
+end.

+ 47 - 0
rtl/uefi/classes.pp

@@ -0,0 +1,47 @@
+{
+    This file is part of the Free Component Library (FCL)
+    Copyright (c) 2014 by Olivier Coursière
+    
+    Based on nativeNT target by Sven Barth
+
+    Classes unit for UEFI
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{$mode objfpc}
+
+unit Classes;
+
+{ $ INLINE ON}
+
+interface
+
+uses
+  sysutils,
+  types,
+  typinfo,
+{$ifdef FPC_TESTGENERICS}
+  fgl,
+{$endif}
+  rtlconsts;
+
+{$i classesh.inc}
+
+implementation
+
+{ OS - independent class implementations are in /inc directory. }
+{$i classes.inc}
+
+
+initialization
+  CommonInit;
+finalization
+  CommonCleanup;
+end.

+ 24 - 0
rtl/uefi/rtldefs.inc

@@ -0,0 +1,24 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2012 by Free Pascal development team
+
+    This file contains platform-specific defines that are used in
+    multiple RTL units.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{ the single byte OS APIs always use UTF-8 }
+{ define FPCRTL_FILESYSTEM_UTF8}
+
+{ The OS supports a single byte file system operations API that we use }
+{ define FPCRTL_FILESYSTEM_SINGLE_BYTE_API}
+
+{ The OS supports a two byte file system operations API that we use }
+{$define FPCRTL_FILESYSTEM_TWO_BYTE_API}

+ 34 - 0
rtl/uefi/sysdir.inc

@@ -0,0 +1,34 @@
+{
+    Basic UEFI definitions
+
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2014 by Olivier Coursière
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{*****************************************************************************
+                           Directory Handling
+*****************************************************************************}
+
+procedure do_MkDir(const s: UnicodeString);
+begin
+end;
+
+procedure do_RmDir(const s: UnicodeString);
+begin
+end;
+
+procedure do_ChDir(const s: UnicodeString);
+begin
+end;
+
+procedure do_GetDir(DriveNr: byte; var Dir: UnicodeString);
+begin
+end;

+ 92 - 0
rtl/uefi/sysfile.inc

@@ -0,0 +1,92 @@
+{
+    Basic UEFI definitions
+
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2014 by Olivier Coursière
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{*****************************************************************************
+                          Low Level File Routines
+*****************************************************************************}
+
+function do_isdevice(handle:thandle):boolean;
+begin
+  //if handle = SysTable.ConOut then
+  // for now, no file system support under UEFI : everything is a device...
+  // It is required to enable calls to do_write when using WriteLn.
+    do_isdevice := true
+  //else
+    //do_isdevice := false;
+  //sysTable.ConOut^.OutputString(handle, 'do_isdevice' + #13#10);
+end;
+
+procedure do_close(h : thandle);
+begin
+end;
+
+procedure do_erase(p : pwidechar; pchangeable: boolean);
+begin
+end;
+
+procedure do_rename(p1,p2 : pwidechar; p1changeable, p2changeable: boolean);
+begin
+end;
+
+function do_write(h:thandle;addr:pointer;len : longint) : longint;
+var
+  p : PChar;
+  s : unicodestring;
+begin
+  //sysTable.ConOut^.OutputString(SysTable.ConOut, 'do_write' + #13#10);
+  GetMem(p, len + 1);
+  Move(addr^, p^, len);
+  p[len] := #0;
+  s := UTF8ToAnsi(p);
+  case h of
+  	//0 : (* Not applicable : input only...*);
+  	1 : sysTable.ConOut^.OutputString(SysTable.ConOut, PChar16(s));
+  	2 : sysTable.ConOut^.OutputString(SysTable.StdErr, PChar16(s));
+  	else
+  	  // TODO : writing to files...
+  	  ;
+  end;
+  
+  FreeMem(p);
+  do_write := len;
+end;
+
+function do_read(h: thandle; addr: pointer; len: longint): longint;
+begin
+end;
+
+function do_filepos(handle : thandle) : Int64;
+begin
+end;
+
+procedure do_seek(handle: thandle; pos: Int64);
+begin
+end;
+
+function do_seekend(handle:thandle):Int64;
+begin
+end;
+
+function do_filesize(handle : thandle) : Int64;
+begin
+end;
+
+procedure do_truncate (handle:thandle;pos:Int64);
+begin
+end;
+
+procedure do_open(var f;p:pwidechar;flags:longint; pchangeable: boolean);
+begin
+end;

+ 59 - 0
rtl/uefi/sysheap.inc

@@ -0,0 +1,59 @@
+{
+    Basic UEFI definitions
+
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2014 by Olivier Coursière
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+var
+  SysHeap: THandle = 0;
+
+procedure PrepareSysHeap;
+begin
+end;
+
+// default memory manager
+
+{$T-}
+function SysOSAlloc(size: ptruint): pointer;
+var
+  s : unicodestring;
+  addresse : UINT64;
+  status : EFI_STATUS;
+  allocatedPointer : pointer;
+begin
+  if SysHeap = 0 then
+    PrepareSysHeap;
+  SysOSAlloc := Pointer(0);
+  
+  status := SysTable.BootServices^.AllocatePool(EfiLoaderData, size,
+  	allocatedPointer);
+  	
+  case status of
+  	EFI_SUCCESS : sysTable.ConOut^.OutputString(sysTable.ConOut, 'Success' + #13#10);
+  	EFI_OUT_OF_RESOURCES : sysTable.ConOut^.OutputString(sysTable.ConOut, 'OutOfResources' + #13#10);
+  	EFI_INVALID_PARAMETER : sysTable.ConOut^.OutputString(sysTable.ConOut, 'InvalidParameter' + #13#10);
+  	EFI_NOT_FOUND : sysTable.ConOut^.OutputString(sysTable.ConOut, 'NotFound' + #13#10);  	
+  	else
+  	  sysTable.ConOut^.OutputString(sysTable.ConOut, 'Another error' + #13#10);
+  end;
+  SysOSAlloc := allocatedPointer;
+end;
+
+{$define HAS_SYSOSFREE}
+
+procedure SysOSFree(p: pointer; size: ptruint);
+begin
+  // if heap isn't set, then nothing was allocated
+//  if SysHeap &lt;&gt; 0 then
+//    RtlFreeHeap(SysHeap, 0, p);
+  //WriteLn('SysOSFree');
+end;

+ 14 - 0
rtl/uefi/sysos.inc

@@ -0,0 +1,14 @@
+{
+    Basic UEFI definitions
+
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2014 by Olivier Coursière
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}

+ 33 - 0
rtl/uefi/sysosh.inc

@@ -0,0 +1,33 @@
+{
+    Basic UEFI definitions
+
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2014 by Olivier Coursière
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+ 
+{ Platform specific information }
+type
+  THandle = PtrUInt;
+  TThreadID=  THandle;
+  
+  { the fields of this record are os dependent  }
+  { and they shouldn't be used in a program     }
+  { only the type TCriticalSection is important }
+  PRTLCriticalSection = ^TRTLCriticalSection;
+  TRTLCriticalSection = packed record
+{    DebugInfo : pointer;
+    LockCount : longint;
+    RecursionCount : longint;
+    OwningThread : THandle;
+    LockSemaphore : THandle;
+    SpinCount : LongWord; // PtrUInt?
+}
+  end;

+ 574 - 0
rtl/uefi/system.pp

@@ -0,0 +1,574 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2017 by Olivier Coursière
+
+    FPC Pascal system unit for UEFI target.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+unit System;
+ 
+interface
+
+{$define DISABLE_NO_THREAD_MANAGER}
+ 
+{ include system-independent routine headers }
+{$I systemh.inc}
+
+const
+ LineEnding = #13#10;
+ LFNSupport = true;
+ DirectorySeparator = '\';
+ DriveSeparator = ':';
+ ExtensionSeparator = '.';
+ PathSeparator = ';';
+ AllowDirectorySeparators : set of char = ['\'];
+ AllowDriveSeparators : set of char = [];
+
+var
+{ C compatible arguments }
+  argc: LongWord;
+  argvw: PPWideChar;
+  argv: PPChar;
+ 
+const
+{ Default filehandles }
+  UnusedHandle    : THandle = -1;
+  StdInputHandle  : THandle = 0;
+  StdOutputHandle : THandle = 1;
+  StdErrorHandle  : THandle = 2;
+
+{ FileNameCaseSensitive and FileNameCasePreserving are defined separately below!!! }
+ maxExitCode = High(ErrorCode);
+ MaxPathLen = High(Word);
+ AllFilesMask = '*';
+
+const
+  // UEFI is not case sensitive because of defaut FAT32 file system
+  FileNameCaseSensitive : boolean = false;
+  FileNameCasePreserving: boolean = true;
+  // todo: check whether this is really the case on UEFI...
+  CtrlZMarksEOF: boolean = true; (* #26 is considered as end of file *)
+
+  sLineBreak = LineEnding;
+  DefaultTextLineBreakStyle : TTextLineBreakStyle = tlbsCRLF;
+
+{ Basic EFI definitions }
+
+{$IFDEF FPC}
+{$PACKRECORDS C}
+{$ENDIF}
+
+    const
+      EFI_SYSTEM_TABLE_SIGNATURE = $5453595320494249;
+      EFI_RUNTIME_SERVICES_SIGNATURE = $56524553544e5552;
+      EFI_BOOT_SERVICES_SIGNATURE = $56524553544f4f42;
+
+	const
+	  EFI_SUCCESS = 0;
+	  EFI_LOAD_ERROR = 1;
+	  EFI_INVALID_PARAMETER = 2;
+	  EFI_UNSUPPORTED = 3;
+	  EFI_OUT_OF_RESOURCES = 9;
+	  EFI_NOT_FOUND = 14;
+	  
+type
+  EFI_HANDLE = Cardinal;
+  EFI_EVENT = pointer;
+  EFI_STATUS = Cardinal;
+
+    type
+      EFI_INPUT_KEY = record
+          ScanCode : UINT16;
+          UnicodeChar : WideChar;
+        end;
+
+Type
+    PCHAR16  = ^WideChar;
+    PEFI_INPUT_KEY  = ^EFI_INPUT_KEY;
+    UINTN = Cardinal;
+    PUINTN  = ^UINTN;
+    P_SIMPLE_TEXT_OUTPUT_INTERFACE = ^_SIMPLE_TEXT_OUTPUT_INTERFACE;
+    P_SIMPLE_INPUT_INTERFACE  = ^_SIMPLE_INPUT_INTERFACE;
+
+
+      EFI_TEXT_RESET = function (This:P_SIMPLE_TEXT_OUTPUT_INTERFACE; ExtendedVerification:BOOLEAN):EFI_STATUS;cdecl;
+    {EFIAPI }    {IN }    {IN }
+      EFI_TEXT_OUTPUT_STRING = function (This:P_SIMPLE_TEXT_OUTPUT_INTERFACE; _String:PCHAR16):EFI_STATUS;cdecl;
+    {EFIAPI }    {IN }    {IN }
+      EFI_TEXT_TEST_STRING = function (This:P_SIMPLE_TEXT_OUTPUT_INTERFACE; _String:PCHAR16):EFI_STATUS;cdecl;
+    {EFIAPI }    {IN }    {IN }    {OUT }    {OUT }
+      EFI_TEXT_QUERY_MODE = function (This:P_SIMPLE_TEXT_OUTPUT_INTERFACE; ModeNumber:UINTN; Columns:PUINTN; Rows:PUINTN):EFI_STATUS;cdecl;
+    {EFIAPI }    {IN }    {IN }
+      EFI_TEXT_SET_MODE = function (This:P_SIMPLE_TEXT_OUTPUT_INTERFACE; ModeNumber:UINTN):EFI_STATUS;cdecl;
+    {EFIAPI }    {IN }    {IN }
+      EFI_TEXT_SET_ATTRIBUTE = function (This:P_SIMPLE_TEXT_OUTPUT_INTERFACE; Attribute:UINTN):EFI_STATUS;cdecl;
+
+      EFI_TEXT_CLEAR_SCREEN = function (This:P_SIMPLE_TEXT_OUTPUT_INTERFACE):EFI_STATUS;cdecl;
+    {EFIAPI }    {IN }    {IN }    {IN }
+      EFI_TEXT_SET_CURSOR_POSITION = function (This:P_SIMPLE_TEXT_OUTPUT_INTERFACE; Column:UINTN; Row:UINTN):EFI_STATUS;cdecl;
+    {EFIAPI }    {IN }    {IN }
+      EFI_TEXT_ENABLE_CURSOR = function (This:P_SIMPLE_TEXT_OUTPUT_INTERFACE; Enable:BOOLEAN):EFI_STATUS;cdecl;
+    { current settings }
+
+      SIMPLE_TEXT_OUTPUT_MODE = record
+          MaxMode : INT32;
+          Mode : INT32;
+          Attribute : INT32;
+          CursorColumn : INT32;
+          CursorRow : INT32;
+          CursorVisible : BOOLEAN;
+        end;
+    { Current mode }
+
+      _SIMPLE_TEXT_OUTPUT_INTERFACE = record
+          Reset : EFI_TEXT_RESET;
+          OutputString : EFI_TEXT_OUTPUT_STRING;
+          TestString : EFI_TEXT_TEST_STRING;
+          QueryMode : EFI_TEXT_QUERY_MODE;
+          SetMode : EFI_TEXT_SET_MODE;
+          SetAttribute : EFI_TEXT_SET_ATTRIBUTE;
+          ClearScreen : EFI_TEXT_CLEAR_SCREEN;
+          SetCursorPosition : EFI_TEXT_SET_CURSOR_POSITION;
+          EnableCursor : EFI_TEXT_ENABLE_CURSOR;
+          Mode : ^SIMPLE_TEXT_OUTPUT_MODE;
+        end;
+      SIMPLE_TEXT_OUTPUT_INTERFACE = _SIMPLE_TEXT_OUTPUT_INTERFACE;
+//    P_SIMPLE_TEXT_OUTPUT_INTERFACE  = ^_SIMPLE_TEXT_OUTPUT_INTERFACE;
+
+      EFI_INPUT_RESET = function (This:P_SIMPLE_INPUT_INTERFACE; ExtendedVerification:BOOLEAN):EFI_STATUS;cdecl;
+    {EFIAPI }    {IN }    {OUT }
+      EFI_INPUT_READ_KEY = function (This:P_SIMPLE_INPUT_INTERFACE; Key:PEFI_INPUT_KEY):EFI_STATUS;cdecl;
+
+      _SIMPLE_INPUT_INTERFACE = record
+          Reset : EFI_INPUT_RESET;
+          ReadKeyStroke : EFI_INPUT_READ_KEY;
+          WaitForKey : EFI_EVENT;
+        end;
+      SIMPLE_INPUT_INTERFACE = _SIMPLE_INPUT_INTERFACE;
+
+//    P_SIMPLE_INPUT_INTERFACE  = ^_SIMPLE_INPUT_INTERFACE;
+
+    type
+      _EFI_TABLE_HEARDER = record
+          Signature : UINT64;
+          Revision : UINT32;
+          HeaderSize : UINT32;
+          CRC32 : UINT32;
+          Reserved : UINT32;
+        end;
+      EFI_TABLE_HEADER = _EFI_TABLE_HEARDER;
+
+	type
+      EFI_GET_TIME = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_SET_TIME = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_GET_WAKEUP_TIME = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_SET_WAKEUP_TIME = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_SET_VIRTUAL_ADDRESS_MAP = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_CONVERT_POINTER = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_GET_VARIABLE = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_GET_NEXT_VARIABLE_NAME = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_SET_VARIABLE = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_GET_NEXT_HIGH_MONO_COUNT = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_RESET_SYSTEM = function ((* TODO *)):EFI_STATUS;cdecl;
+
+    type
+      EFI_RUNTIME_SERVICES = record
+          Hdr : EFI_TABLE_HEADER;
+          GetTime : EFI_GET_TIME;
+          SetTime : EFI_SET_TIME;
+          GetWakeupTime : EFI_GET_WAKEUP_TIME;
+          SetWakeupTime : EFI_SET_WAKEUP_TIME;
+          SetVirtualAddressMap : EFI_SET_VIRTUAL_ADDRESS_MAP;
+          ConvertPointer : EFI_CONVERT_POINTER;
+          GetVariable : EFI_GET_VARIABLE;
+          GetNextVariableName : EFI_GET_NEXT_VARIABLE_NAME;
+          SetVariable : EFI_SET_VARIABLE;
+          GetNextHighMonotonicCount : EFI_GET_NEXT_HIGH_MONO_COUNT;
+          ResetSystem : EFI_RESET_SYSTEM;
+        end;
+
+    EFI_ALLOCATE_TYPE = (AllocateAnyPages,AllocateMaxAddress,AllocateAddress,
+      MaxAllocateType);
+  {Preseve the attr on any range supplied. }
+  {ConventialMemory must have WB,SR,SW when supplied. }
+  {When allocating from ConventialMemory always make it WB,SR,SW }
+  {When returning to ConventialMemory always make it WB,SR,SW }
+  {When getting the memory map, or on RT for runtime types }
+
+    EFI_MEMORY_TYPE = (EfiReservedMemoryType,EfiLoaderCode,EfiLoaderData,
+      EfiBootServicesCode,EfiBootServicesData,
+      EfiRuntimeServicesCode,EfiRuntimeServicesData,
+      EfiConventionalMemory,EfiUnusableMemory,
+      EfiACPIReclaimMemory,EfiACPIMemoryNVS,
+      EfiMemoryMappedIO,EfiMemoryMappedIOPortSpace,
+      EfiPalCode,EfiMaxMemoryType);
+
+	type
+	  EFI_PHYSICAL_ADDRESS = UINT64;
+	
+	type
+      EFI_RAISE_TPL = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_RESTORE_TPL = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_ALLOCATE_PAGES = function (aType : EFI_ALLOCATE_TYPE; 
+      	MemoryType : EFI_MEMORY_TYPE; NoPages : UINTN; 
+      	var Memory : EFI_PHYSICAL_ADDRESS(* TODO *)):EFI_STATUS;cdecl;
+      EFI_FREE_PAGES = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_GET_MEMORY_MAP = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_ALLOCATE_POOL = function (PoolType : EFI_MEMORY_TYPE; Size : UINT32; 
+      	var Buffer : Pointer):EFI_STATUS;cdecl;
+      EFI_FREE_POOL = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_CREATE_EVENT = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_SET_TIMER = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_WAIT_FOR_EVENT = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_SIGNAL_EVENT = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_CLOSE_EVENT = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_CHECK_EVENT = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_INSTALL_PROTOCOL_INTERFACE = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_REINSTALL_PROTOCOL_INTERFACE = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_UNINSTALL_PROTOCOL_INTERFACE = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_HANDLE_PROTOCOL = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_REGISTER_PROTOCOL_NOTIFY = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_LOCATE_HANDLE = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_LOCATE_DEVICE_PATH = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_INSTALL_CONFIGURATION_TABLE = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_IMAGE_LOAD = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_IMAGE_START = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_EXIT = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_IMAGE_UNLOAD = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_EXIT_BOOT_SERVICES = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_GET_NEXT_MONOTONIC_COUNT = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_STALL = function (Microseconds : UINT32):EFI_STATUS;cdecl;
+      EFI_SET_WATCHDOG_TIMER = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_CONNECT_CONTROLLER = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_DISCONNECT_CONTROLLER = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_OPEN_PROTOCOL = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_CLOSE_PROTOCOL = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_OPEN_PROTOCOL_INFORMATION = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_PROTOCOLS_PER_HANDLE = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_LOCATE_HANDLE_BUFFER = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_LOCATE_PROTOCOL = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_CALCULATE_CRC32 = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_COPY_MEM = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_SET_MEM = function ((* TODO *)):EFI_STATUS;cdecl;
+      EFI_CREATE_EVENT_EX = function ((* TODO *)):EFI_STATUS;cdecl;
+
+    type
+      _EFI_BOOT_SERVICES = record
+          Hdr : EFI_TABLE_HEADER;
+          RaiseTPL : EFI_RAISE_TPL;
+          RestoreTPL : EFI_RESTORE_TPL;
+          AllocatePages : EFI_ALLOCATE_PAGES;
+          FreePages : EFI_FREE_PAGES;
+          GetMemoryMap : EFI_GET_MEMORY_MAP;
+          AllocatePool : EFI_ALLOCATE_POOL;
+          FreePool : EFI_FREE_POOL;
+          CreateEvent : EFI_CREATE_EVENT;
+          SetTimer : EFI_SET_TIMER;
+          WaitForEvent : EFI_WAIT_FOR_EVENT;
+          SignalEvent : EFI_SIGNAL_EVENT;
+          CloseEvent : EFI_CLOSE_EVENT;
+          CheckEvent : EFI_CHECK_EVENT;
+          InstallProtocolInterface : EFI_INSTALL_PROTOCOL_INTERFACE;
+          ReinstallProtocolInterface : EFI_REINSTALL_PROTOCOL_INTERFACE;
+          UninstallProtocolInterface : EFI_UNINSTALL_PROTOCOL_INTERFACE;
+          HandleProtocol : EFI_HANDLE_PROTOCOL;
+          PCHandleProtocol : EFI_HANDLE_PROTOCOL;
+          RegisterProtocolNotify : EFI_REGISTER_PROTOCOL_NOTIFY;
+          LocateHandle : EFI_LOCATE_HANDLE;
+          LocateDevicePath : EFI_LOCATE_DEVICE_PATH;
+          InstallConfigurationTable : EFI_INSTALL_CONFIGURATION_TABLE;
+          LoadImage : EFI_IMAGE_LOAD;
+          StartImage : EFI_IMAGE_START;
+          Exit : EFI_EXIT;
+          UnloadImage : EFI_IMAGE_UNLOAD;
+          ExitBootServices : EFI_EXIT_BOOT_SERVICES;
+          GetNextMonotonicCount : EFI_GET_NEXT_MONOTONIC_COUNT;
+          Stall : EFI_STALL;
+          SetWatchdogTimer : EFI_SET_WATCHDOG_TIMER;
+          ConnectController : EFI_CONNECT_CONTROLLER;
+          DisconnectController : EFI_DISCONNECT_CONTROLLER;
+          OpenProtocol : EFI_OPEN_PROTOCOL;
+          CloseProtocol : EFI_CLOSE_PROTOCOL;
+          OpenProtocolInformation : EFI_OPEN_PROTOCOL_INFORMATION;
+          ProtocolsPerHandle : EFI_PROTOCOLS_PER_HANDLE;
+          LocateHandleBuffer : EFI_LOCATE_HANDLE_BUFFER;
+          LocateProtocol : EFI_LOCATE_PROTOCOL;
+          InstallMultipleProtocolInterfaces : EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES;
+          UninstallMultipleProtocolInterfaces : EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES;
+          CalculateCrc32 : EFI_CALCULATE_CRC32;
+          CopyMem : EFI_COPY_MEM;
+          SetMem : EFI_SET_MEM;
+          CreateEventEx : EFI_CREATE_EVENT_EX;
+        end;
+      EFI_BOOT_SERVICES = _EFI_BOOT_SERVICES;
+               
+type
+      _EFI_SYSTEM_TABLE = record
+          Hdr : EFI_TABLE_HEADER;
+          FirmwareVendor : ^WideChar;
+          FirmwareRevision : UINT32;
+          ConsoleInHandle : EFI_HANDLE;
+          ConIn : ^SIMPLE_INPUT_INTERFACE;
+          ConsoleOutHandle : EFI_HANDLE;
+          ConOut : ^SIMPLE_TEXT_OUTPUT_INTERFACE;
+          StandardErrorHandle : EFI_HANDLE;
+          StdErr : ^SIMPLE_TEXT_OUTPUT_INTERFACE;
+          RuntimeServices : ^EFI_RUNTIME_SERVICES;
+          BootServices : ^EFI_BOOT_SERVICES;
+{          NumberOfTableEntries : UINTN;
+          ConfigurationTable : ^EFI_CONFIGURATION_TABLE;}
+        end;
+      EFI_SYSTEM_TABLE = _EFI_SYSTEM_TABLE;
+      PEFI_SYSTEM_TABLE = ^EFI_SYSTEM_TABLE;
+
+procedure Check(systemTable : EFI_SYSTEM_TABLE; status : EFI_STATUS);
+procedure Check(status : EFI_STATUS);
+
+var
+  sysTable : EFI_SYSTEM_TABLE;
+  //PSysTable : PEFI_SYSTEM_TABLE = nil;
+  StdOutput : ^SIMPLE_TEXT_OUTPUT_INTERFACE;
+
+type
+  THeapPointer = ^pointer;
+var
+  heapstartpointer : THeapPointer;
+  heapstart : pointer;//external;//external name 'HEAP';
+  myheapsize : longint; //external;//external name 'HEAPSIZE';
+  myheaprealsize : longint;
+  heap_handle : longint;
+
+procedure Init(systemTable : EFI_SYSTEM_TABLE);
+
+procedure PascalMain;stdcall;external name 'PASCALMAIN';
+
+implementation
+
+{ include system independent routines }
+{$I system.inc}
+
+function paramcount : longint;
+begin
+  Result := 0;
+end;
+
+function paramstr(l : longint) : string;
+begin
+  Result := '';
+end;
+
+procedure randomize;
+begin
+end;
+
+procedure Check(status : EFI_STATUS);
+begin
+  Check(sysTable, status);
+end;
+
+procedure Check(systemTable : EFI_SYSTEM_TABLE; status : EFI_STATUS);
+var
+  msg : string;
+begin
+  msg := 'Error';
+  
+  case status of
+  	EFI_SUCCESS:
+  	  begin
+  	  	// Success
+  	  	msg := 'Success';
+  	  end;
+  	EFI_INVALID_PARAMETER:
+  	  begin
+  	    // Invalid
+  	    msg := 'Invalid';
+  	  end;
+  	EFI_OUT_OF_RESOURCES:
+  	  begin
+  	    // Out of resources
+  	    msg := 'Out of resources';
+  	  end;
+  	1, 3..8, 10 :
+  	  begin
+  	    msg := 'Error 1';
+  	  end;
+  	11..20 :
+  	  begin
+  	    msg := 'Error 11';
+  	  end;
+  	21..30 :
+  	  begin
+  	    msg := 'Error 21';
+  	  end;
+  	31..40 :
+  	  begin
+  	    msg := 'Error 31';
+  	  end;
+  	41..50 :
+  	  begin
+  	    msg := 'Error 41';
+  	  end;
+  	51..60 :
+  	  begin
+  	    msg := 'Error 51';
+  	  end;
+  	61..70 :
+  	  begin
+  	    msg := 'Error 61';
+  	  end;
+  	71..80 :
+  	  begin
+  	    msg := 'Error 71';
+  	  end;
+  	81..90 :
+  	  begin
+  	    msg := 'Error 81';
+  	  end;
+  	91..100 :
+  	  begin
+  	    msg := 'Error 91';
+  	  end;
+  	101..MaxInt :
+  	  begin
+  	    msg := 'Error 101';
+  	  end;
+  	else
+  	  begin
+  	  	// Error
+  	    msg := 'Error';
+  	  end;
+  end;
+
+  WriteLn('');
+  WriteLn(msg);
+end;
+
+procedure Init(systemTable : EFI_SYSTEM_TABLE);
+begin
+  DefaultSystemCodePage := CP_UTF16;
+  DefaultRTLFileSystemCodePage := CP_UTF16;
+  DefaultFileSystemCodePage := CP_UTF16;
+  SetMultiByteConversionCodePage(CP_UTF16);
+
+  SysTable := systemTable;
+  
+  { Setup heap }
+  myheapsize:=4096*100;// $ 20000;
+  myheaprealsize:=4096*100;// $ 20000;
+  heapstart:=nil;
+  heapstartpointer := nil;
+  heapstartpointer := SysOSAlloc(4096*100);
+  if heapstartpointer <> nil then
+  begin
+    SysTable.ConOut^.OutputString(SysTable.ConOut, 'heapStartPointer initialization' + #13#10);
+    FillChar(heapstartpointer^, 4096*100, #0);
+  end
+  else
+  begin
+    SysTable.ConOut^.OutputString(SysTable.ConOut, 'heapStartPointer not initialized' + #13#10);
+  end;
+
+  WriteLn('Init');
+
+  SysInitExceptions;
+  initunicodestringmanager;
+{ Setup IO }
+  SysInitStdIO;
+{ Reset IO Error }
+  InOutRes:=0;
+
+  SysTable.ConOut^.OutputString(SysTable.ConOut, #13#10);
+end;
+
+function EFI_MAIN( imageHandle: EFI_HANDLE; systemTable : PEFI_SYSTEM_TABLE): EFI_STATUS; cdecl; [public, alias: 'EFI_MAIN'];
+begin
+ try
+  SysTable := systemTable^;
+
+  SysTable.ConOut^.OutputString(SysTable.ConOut, 'EFI_MAIN start' + #13#10);
+
+
+  StackLength := CheckInitialStkLen ($1000000); 
+  StackBottom := StackTop - StackLength; 
+  
+  { Setup heap }
+  myheapsize:=4096*100;// $ 20000;
+  myheaprealsize:=4096*100;// $ 20000;
+  heapstart:=nil;
+  heapstartpointer := nil;
+  heapstartpointer := SysOSAlloc(4096*100);
+  FillChar(heapstartpointer^, myheaprealsize, #0);
+  InitHeap;
+
+  DefaultSystemCodePage := CP_UTF16;
+  DefaultRTLFileSystemCodePage := CP_UTF16;
+  DefaultFileSystemCodePage := CP_UTF16;
+  SetMultiByteConversionCodePage(CP_UTF16);
+
+  WriteLn('start');
+
+  if heapstartpointer <> nil then
+  begin
+    SysTable.ConOut^.OutputString(SysTable.ConOut, 'heapStartPointer initialization' + #13#10);
+    FillChar(heapstartpointer^, 4096*100, #0);
+  end
+  else
+  begin
+    SysTable.ConOut^.OutputString(SysTable.ConOut, 'heapStartPointer not initialized' + #13#10);
+  end;
+  SysInitExceptions;
+  initunicodestringmanager;
+{ Setup IO }
+  SysInitStdIO;
+{ Reset IO Error }
+  InOutRes:=0;
+
+  SysTable.ConOut^.OutputString(SysTable.ConOut, #13#10);
+
+  PascalMain;
+  WriteLn('End of EFI_MAIN');
+ except
+   WriteLn('Exception in EFI_MAIN');
+ end;
+end;
+{*****************************************************************************
+                         System Dependent Exit code
+*****************************************************************************}
+
+Procedure system_exit;
+begin
+  WriteLn('system_exit');
+end;
+
+procedure SysInitStdIO;
+begin
+  { Setup stdin, stdout and stderr, for GUI apps redirect stderr,stdout to be
+    displayed in and messagebox }
+  OpenStdIO(Input,fmInput,StdInputHandle);
+  OpenStdIO(Output,fmOutput,StdOutputHandle);
+  OpenStdIO(StdOut,fmOutput,StdOutputHandle);
+  OpenStdIO(StdErr,fmOutput,StdErrorHandle);
+end;
+
+function GetProcessID: SizeUInt;
+begin
+  Result := 0;
+end;
+
+function CheckInitialStkLen(stklen : SizeUInt) : SizeUInt;
+begin
+  result := stklen;
+end;
+
+begin
+
+end.

+ 14 - 0
rtl/uefi/systhrd.inc

@@ -0,0 +1,14 @@
+{
+    Basic UEFI definitions
+
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2014 by Olivier Coursière
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}

+ 307 - 0
rtl/uefi/sysutils.pp

@@ -0,0 +1,307 @@
+{
+    Sysutils unit for UEFI
+
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2014 by Olivier Coursière
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+unit sysutils;
+
+interface
+
+{$MODE objfpc}
+{$MODESWITCH OUT}
+{ force ansistrings }
+{$H+}
+{$modeswitch typehelpers}
+{$modeswitch advancedrecords}
+
+{$DEFINE HAS_SLEEP}
+
+{ TODO : check this for UEFI }
+{ used OS file system APIs use ansistring }
+{$define SYSUTILS_HAS_UNICODESTR_FILEUTIL_IMPL}
+{ OS has an ansistring/single byte environment variable API (actually it's
+  unicodestring, but that's not yet implemented) }
+{$define SYSUTILS_HAS_ANSISTR_ENVVAR_IMPL}
+
+{ Include platform independent interface part }
+{$i sysutilh.inc}
+
+implementation
+
+  uses
+    sysconst;
+
+{$DEFINE FPC_NOGENERICANSIROUTINES}
+
+{ Include platform independent implementation part }
+{$i sysutils.inc}
+
+{****************************************************************************
+                              File Functions
+****************************************************************************}
+
+function FileOpen(const FileName : UnicodeString; Mode : Integer) : THandle;
+begin
+end;
+
+
+function FileCreate(const FileName : UnicodeString) : THandle;
+begin
+end;
+
+
+function FileCreate(const FileName : UnicodeString; Rights: longint) : THandle;
+begin
+end;
+
+
+function FileCreate(const FileName : UnicodeString; ShareMode : longint; Rights: longint) : THandle;
+begin
+end;
+
+
+function FileRead(Handle : THandle; out Buffer; Count : longint) : Longint;
+begin
+end;
+
+
+function FileWrite(Handle : THandle; const Buffer; Count : Longint) : Longint;
+begin
+end;
+
+
+function FileSeek(Handle : THandle;FOffset,Origin : Longint) : Longint;
+begin
+end;
+
+
+function FileSeek(Handle : THandle; FOffset: Int64; Origin: Longint) : Int64;
+begin
+end;
+
+
+procedure FileClose(Handle : THandle);
+begin
+end;
+
+
+function FileTruncate(Handle : THandle;Size: Int64) : boolean;
+begin
+end;
+
+
+function FileAge(const FileName: UnicodeString): Longint;
+begin
+  { TODO }
+  Result := -1;
+end;
+
+
+function FileExists(const FileName: UnicodeString): Boolean;
+begin
+end;
+
+
+Procedure InternalFindClose(var Handle: THandle);
+begin
+end;
+
+
+Function InternalFindNext (Var Rslt : TAbstractSearchRec; var Name: UnicodeString) : Longint;
+begin
+end;
+
+
+Function InternalFindFirst (Const Path : UnicodeString; Attr : Longint; out Rslt : TAbstractSearchRec; var Name : UnicodeString) : Longint;
+begin
+end;
+
+
+function DirectoryExists(const Directory : UnicodeString) : Boolean;
+begin
+end;
+
+
+function FileGetDate(Handle: THandle): Longint;
+begin
+end;
+
+
+function FileSetDate(Handle: THandle;Age: Longint): Longint;
+begin
+end;
+
+
+function FileGetAttr(const FileName: UnicodeString): Longint;
+begin
+end;
+
+
+function FileSetAttr(const Filename: UnicodeString; Attr: LongInt): Longint;
+begin
+end;
+
+
+function DeleteFile(const FileName: UnicodeString): Boolean;
+begin
+end;
+
+
+function RenameFile(const OldName, NewName: UnicodeString): Boolean;
+begin
+end;
+
+
+{****************************************************************************
+                              Disk Functions
+****************************************************************************}
+
+function diskfree(drive: byte): int64;
+begin
+  { here the mount manager needs to be queried }
+  Result := -1;
+end;
+
+
+function disksize(drive: byte): int64;
+begin
+  { here the mount manager needs to be queried }
+  Result := -1;
+end;
+
+
+{****************************************************************************
+                              Time Functions
+****************************************************************************}
+
+
+procedure GetLocalTime(var SystemTime: TSystemTime);
+begin
+end;
+
+
+{****************************************************************************
+                              Misc Functions
+****************************************************************************}
+
+procedure sysbeep;
+begin
+  { empty }
+end;
+
+procedure InitInternational;
+begin
+  InitInternationalGeneric;
+end;
+
+
+{****************************************************************************
+                           Target Dependent
+****************************************************************************}
+
+function SysErrorMessage(ErrorCode: Integer): String;
+begin
+  Result := 'UEFI error code: 0x' + IntToHex(ErrorCode, 8);
+end;
+
+{****************************************************************************
+                              Initialization code
+****************************************************************************}
+
+function GetEnvironmentVariable(const EnvVar: String): String;
+begin
+  Result := '';
+end;
+
+function GetEnvironmentVariableCount: Integer;
+begin
+  Result := 0;
+end;
+
+function GetEnvironmentString(Index: Integer): {$ifdef FPC_RTL_UNICODE}UnicodeString{$else}AnsiString{$endif};
+begin
+  Result := '';
+end;
+
+function ExecuteProcess(const Path: AnsiString; const ComLine: AnsiString;
+  Flags: TExecuteFlags = []): Integer;
+begin
+  { TODO : implement }
+  Result := 0;
+end;
+
+function ExecuteProcess(const Path: AnsiString;
+  const ComLine: Array of AnsiString; Flags:TExecuteFlags = []): Integer;
+begin
+  Result := 0;
+end;
+
+function ExecuteProcess(const Path: RawByteString; const ComLine: RawByteString;
+  Flags: TExecuteFlags = []): Integer;
+begin
+  { TODO : implement }
+  Result := 0;
+end;
+
+function ExecuteProcess(const Path: RawByteString;
+  const ComLine: Array of RawByteString; Flags:TExecuteFlags = []): Integer;
+var
+  CommandLine: RawByteString;
+  I: integer;
+begin
+  Commandline := '';
+  for I := 0 to High (ComLine) do
+   if Pos (' ', ComLine [I]) <> 0 then
+    CommandLine := CommandLine + ' ' + '"' + ComLine [I] + '"'
+   else
+    CommandLine := CommandLine + ' ' + Comline [I];
+  ExecuteProcess := ExecuteProcess (Path, CommandLine,Flags);
+end;
+
+function ExecuteProcess(const Path: UnicodeString; const ComLine: UnicodeString;
+  Flags: TExecuteFlags = []): Integer;
+begin
+  { TODO : implement }
+  Result := 0;
+end;
+
+function ExecuteProcess(const Path: UnicodeString;
+  const ComLine: Array of UnicodeString; Flags:TExecuteFlags = []): Integer;
+var
+  CommandLine: UnicodeString;
+  I: integer;
+begin
+  Commandline := '';
+  for I := 0 to High (ComLine) do
+   if Pos (' ', ComLine [I]) <> 0 then
+    CommandLine := CommandLine + ' ' + '"' + ComLine [I] + '"'
+   else
+    CommandLine := CommandLine + ' ' + Comline [I];
+  ExecuteProcess := ExecuteProcess (Path, CommandLine,Flags);
+end;
+
+procedure Sleep(Milliseconds: Cardinal);
+begin
+end;
+
+
+{****************************************************************************
+                              Initialization code
+****************************************************************************}
+
+initialization
+  InitExceptions;       { Initialize exceptions. OS independent }
+  InitInternational;    { Initialize internationalization settings }
+  OnBeep := @SysBeep;
+finalization
+  DoneExceptions;
+end.

+ 73 - 0
rtl/uefi/tthread.inc

@@ -0,0 +1,73 @@
+{
+    This file is part of the Free Component Library (FCL)
+    Copyright (c) 2014 by Olivier Coursière
+    
+    Based on nativeNT target by Sven Barth
+
+    Classes unit for UEFI
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{ Thread management routines }
+
+procedure TThread.SysCreate(CreateSuspended: Boolean;
+                            const StackSize: SizeUInt);
+begin
+
+end;
+
+
+procedure TThread.SysDestroy;
+begin
+
+end;
+
+procedure TThread.CallOnTerminate;
+begin
+  FOnTerminate(Self);
+end;
+
+procedure TThread.DoTerminate;
+begin
+  if Assigned(FOnTerminate) then
+    Synchronize(@CallOnTerminate);
+end;
+
+function TThread.GetPriority: TThreadPriority;
+begin
+  Result := tpNormal;
+end;
+
+procedure TThread.SetPriority(Value: TThreadPriority);
+begin
+end;
+
+
+procedure TThread.SetSuspended(Value: Boolean);
+begin
+end;
+
+procedure TThread.Suspend;
+begin
+end;
+
+procedure TThread.Resume;
+begin
+end;
+
+procedure TThread.Terminate;
+begin
+  FTerminated := True;
+end;
+
+function TThread.WaitFor: Integer;
+begin
+  Result := -1;
+end;