diff options
author | olivier <olivier@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2017-05-01 23:42:14 +0000 |
---|---|---|
committer | olivier <olivier@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2017-05-01 23:42:14 +0000 |
commit | 0ae856641518da7fa0c8191fcd426b85eccae95b (patch) | |
tree | 61dcde1635c7d7ae7123a12062253a574feabe84 | |
parent | c3fb18583ffd6c45b86d0bceb2e0f6afce61bf82 (diff) | |
download | fpc-0ae856641518da7fa0c8191fcd426b85eccae95b.tar.gz |
* Regenerated Makefile to support the uefi target
+ Initial import of a basic uefi rtl (work in progress)
git-svn-id: https://svn.freepascal.org/svn/fpc/branches/olivier@36057 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | uefi/rtl/Makefile | 7 | ||||
-rw-r--r-- | uefi/rtl/uefi/Makefile | 2889 | ||||
-rw-r--r-- | uefi/rtl/uefi/Makefile.fpc | 162 | ||||
-rw-r--r-- | uefi/rtl/uefi/buildrtl.pp | 19 | ||||
-rw-r--r-- | uefi/rtl/uefi/classes.pp | 47 | ||||
-rw-r--r-- | uefi/rtl/uefi/rtldefs.inc | 24 | ||||
-rw-r--r-- | uefi/rtl/uefi/sysdir.inc | 34 | ||||
-rw-r--r-- | uefi/rtl/uefi/sysfile.inc | 92 | ||||
-rw-r--r-- | uefi/rtl/uefi/sysheap.inc | 59 | ||||
-rw-r--r-- | uefi/rtl/uefi/sysos.inc | 14 | ||||
-rw-r--r-- | uefi/rtl/uefi/sysosh.inc | 33 | ||||
-rw-r--r-- | uefi/rtl/uefi/system.pp | 574 | ||||
-rw-r--r-- | uefi/rtl/uefi/systhrd.inc | 14 | ||||
-rw-r--r-- | uefi/rtl/uefi/sysutils.pp | 307 | ||||
-rw-r--r-- | uefi/rtl/uefi/tthread.inc | 73 |
15 files changed, 4347 insertions, 1 deletions
diff --git a/uefi/rtl/Makefile b/uefi/rtl/Makefile index 5d61d7ae2d..cbe7c9b415 100644 --- a/uefi/rtl/Makefile +++ b/uefi/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) diff --git a/uefi/rtl/uefi/Makefile b/uefi/rtl/uefi/Makefile new file mode 100644 index 0000000000..e4dabcab83 --- /dev/null +++ b/uefi/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 diff --git a/uefi/rtl/uefi/Makefile.fpc b/uefi/rtl/uefi/Makefile.fpc new file mode 100644 index 0000000000..c6408141de --- /dev/null +++ b/uefi/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 diff --git a/uefi/rtl/uefi/buildrtl.pp b/uefi/rtl/uefi/buildrtl.pp new file mode 100644 index 0000000000..ffefd9092b --- /dev/null +++ b/uefi/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. diff --git a/uefi/rtl/uefi/classes.pp b/uefi/rtl/uefi/classes.pp new file mode 100644 index 0000000000..ca8e4e8f77 --- /dev/null +++ b/uefi/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. diff --git a/uefi/rtl/uefi/rtldefs.inc b/uefi/rtl/uefi/rtldefs.inc new file mode 100644 index 0000000000..32636c6721 --- /dev/null +++ b/uefi/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} diff --git a/uefi/rtl/uefi/sysdir.inc b/uefi/rtl/uefi/sysdir.inc new file mode 100644 index 0000000000..90aefc4537 --- /dev/null +++ b/uefi/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; diff --git a/uefi/rtl/uefi/sysfile.inc b/uefi/rtl/uefi/sysfile.inc new file mode 100644 index 0000000000..05df409b9f --- /dev/null +++ b/uefi/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; diff --git a/uefi/rtl/uefi/sysheap.inc b/uefi/rtl/uefi/sysheap.inc new file mode 100644 index 0000000000..20f67a043f --- /dev/null +++ b/uefi/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 <> 0 then +// RtlFreeHeap(SysHeap, 0, p); + //WriteLn('SysOSFree'); +end; diff --git a/uefi/rtl/uefi/sysos.inc b/uefi/rtl/uefi/sysos.inc new file mode 100644 index 0000000000..dde4a7f9ec --- /dev/null +++ b/uefi/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. + + **********************************************************************} diff --git a/uefi/rtl/uefi/sysosh.inc b/uefi/rtl/uefi/sysosh.inc new file mode 100644 index 0000000000..b1e8777e8a --- /dev/null +++ b/uefi/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; diff --git a/uefi/rtl/uefi/system.pp b/uefi/rtl/uefi/system.pp new file mode 100644 index 0000000000..9612fc1974 --- /dev/null +++ b/uefi/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. diff --git a/uefi/rtl/uefi/systhrd.inc b/uefi/rtl/uefi/systhrd.inc new file mode 100644 index 0000000000..dde4a7f9ec --- /dev/null +++ b/uefi/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. + + **********************************************************************} diff --git a/uefi/rtl/uefi/sysutils.pp b/uefi/rtl/uefi/sysutils.pp new file mode 100644 index 0000000000..c643792163 --- /dev/null +++ b/uefi/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. diff --git a/uefi/rtl/uefi/tthread.inc b/uefi/rtl/uefi/tthread.inc new file mode 100644 index 0000000000..699055ceae --- /dev/null +++ b/uefi/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; |