2
0
Эх сурвалжийг харах

Merged revisions 10897-10898,10900-10903,10906 via svnmerge from
http://svn.freepascal.org/svn/fpc/trunk

........
r10897 | yury | 2008-05-07 14:16:05 +0300 (Ср, 07 май 2008) | 1 line

* Started moving wince extra APIs from windows unit to separate units in packages/winceunits. Similar to win32/64.
........
r10898 | yury | 2008-05-07 14:26:28 +0300 (Ср, 07 май 2008) | 1 line

* renamed files.
........
r10900 | yury | 2008-05-07 15:46:47 +0300 (Ср, 07 май 2008) | 1 line

* Fixed winceunits sources and added them to build.
........
r10901 | yury | 2008-05-07 15:54:12 +0300 (Ср, 07 май 2008) | 1 line

+ Added gpsapi and todaycmn units by Vasil.
........
r10902 | yury | 2008-05-07 16:16:34 +0300 (Ср, 07 май 2008) | 1 line

+ Added cesync, rapi, windbase units. rapi is builded for win32 only. cesync is builded for both wince and win32.
........
r10903 | yury | 2008-05-07 16:39:41 +0300 (Ср, 07 май 2008) | 1 line

* Moved gx to packages.
........
r10906 | yury | 2008-05-08 01:01:20 +0300 (Чт, 08 май 2008) | 1 line

* Replaced integer by longint.
........

git-svn-id: branches/fixes_2_2@10907 -

yury 17 жил өмнө
parent
commit
4d82aff9d5

+ 19 - 11
.gitattributes

@@ -4314,6 +4314,25 @@ packages/uuid/src/libuuid.pp svneol=native#text/plain
 packages/uuid/src/macuuid.pp svneol=native#text/plain
 packages/uuid/tests/testlibuid.pp svneol=native#text/plain
 packages/uuid/tests/testuid.pp svneol=native#text/plain
+packages/winceunits/Makefile svneol=native#text/plain
+packages/winceunits/Makefile.fpc svneol=native#text/plain
+packages/winceunits/src/aygshell.pp svneol=native#text/plain
+packages/winceunits/src/buildwinceunits.pp svneol=native#text/plain
+packages/winceunits/src/cesync.pp svneol=native#text/plain
+packages/winceunits/src/commctrl.pp svneol=native#text/plain
+packages/winceunits/src/commdlg.pp svneol=native#text/plain
+packages/winceunits/src/gpsapi.pp svneol=native#text/plain
+packages/winceunits/src/gx.pp svneol=native#text/plain
+packages/winceunits/src/iphlpapi.pp svneol=native#text/plain
+packages/winceunits/src/notify.pp svneol=native#text/plain
+packages/winceunits/src/oleaut32.pp svneol=native#text/plain
+packages/winceunits/src/power.pp svneol=native#text/plain
+packages/winceunits/src/rapi.pp svneol=native#text/plain
+packages/winceunits/src/shellapi.pp svneol=native#text/plain
+packages/winceunits/src/simmgr.pp svneol=native#text/plain
+packages/winceunits/src/tapi.pp svneol=native#text/plain
+packages/winceunits/src/todaycmn.pp svneol=native#text/plain
+packages/winceunits/src/windbase.pp svneol=native#text/plain
 packages/winunits-base/Makefile svneol=native#text/plain
 packages/winunits-base/Makefile.fpc svneol=native#text/plain
 packages/winunits-base/fpmake.pp svneol=native#text/plain
@@ -5836,32 +5855,21 @@ rtl/wince/Makefile.fpc svneol=native#text/plain
 rtl/wince/classes.pp svneol=native#text/plain
 rtl/wince/dos.pp svneol=native#text/plain
 rtl/wince/dynlibs.inc svneol=native#text/plain
-rtl/wince/gx.pp svneol=native#text/plain
 rtl/wince/messages.pp svneol=native#text/plain
 rtl/wince/readme.txt svneol=native#text/plain
 rtl/wince/system.pp svneol=native#text/plain
 rtl/wince/sysutils.pp svneol=native#text/plain
 rtl/wince/varutils.pp svneol=native#text/plain
 rtl/wince/windows.pp svneol=native#text/plain
-rtl/wince/wininc/aygshell.inc svneol=native#text/plain
 rtl/wince/wininc/base.inc svneol=native#text/plain
 rtl/wince/wininc/cemiss.inc svneol=native#text/plain
-rtl/wince/wininc/ceshell.inc svneol=native#text/plain
-rtl/wince/wininc/commctrl.inc svneol=native#text/plain
-rtl/wince/wininc/commdlg.inc svneol=native#text/plain
 rtl/wince/wininc/coredll.inc svneol=native#text/plain
 rtl/wince/wininc/defines.inc svneol=native#text/plain
 rtl/wince/wininc/errors.inc svneol=native#text/plain
-rtl/wince/wininc/iphlpapi.inc svneol=native#text/plain
 rtl/wince/wininc/makefile.inc svneol=native#text/plain
 rtl/wince/wininc/messages.inc svneol=native#text/plain
-rtl/wince/wininc/notify.inc -text
-rtl/wince/wininc/oleaut32.inc svneol=native#text/plain
-rtl/wince/wininc/power.inc -text
 rtl/wince/wininc/redef.inc svneol=native#text/plain
-rtl/wince/wininc/simmgr.inc svneol=native#text/plain
 rtl/wince/wininc/struct.inc svneol=native#text/plain
-rtl/wince/wininc/tapi.inc svneol=native#text/plain
 rtl/wince/winres.inc -text
 rtl/wince/winsock.pp svneol=native#text/plain
 rtl/wince/winsock2.pp svneol=native#text/plain

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 162 - 248
packages/Makefile


+ 2 - 2
packages/Makefile.fpc

@@ -38,10 +38,10 @@ dirs_linux=fv fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc
                imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib
 dirs_win32=fv winunits-base winunits-jedi fcl-web ibase mysql zlib oracle odbc postgres sqlite imagemagick \
                gdbint libpng mad tcl opengl gtk1 gtk2 a52 cdrom fpgtk openal fftw lua \
-               oggvorbis sdl openssl graph pcap httpd13 httpd20 httpd22 pxlib numlib
+               oggvorbis sdl openssl graph pcap httpd13 httpd20 httpd22 pxlib numlib winceunits
 dirs_win64=fv winunits-base winunits-jedi fcl-web ibase mysql zlib oracle odbc postgres sqlite imagemagick \
                 tcl opengl gtk1 gtk2 fpgtk fftw sdl openssl cdrom numlib
-dirs_wince=fcl-web tcl fftw unzip zlib sqlite mysql ibase postgres oracle odbc sdl openssl oggvorbis numlib
+dirs_wince=winceunits fcl-web tcl fftw unzip zlib sqlite mysql ibase postgres oracle odbc sdl openssl oggvorbis numlib
 dirs_os2=fv zlib libpng x11 tcl fpgtk rexx os2units gtk1 imlib
 dirs_emx=fv zlib libpng x11 tcl fpgtk rexx os2units gtk1 imlib
 dirs_netware=fv zlib unzip

+ 2106 - 0
packages/winceunits/Makefile

@@ -0,0 +1,2106 @@
+#
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/05/08]
+#
+default: all
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded
+BSDs = freebsd netbsd openbsd darwin
+UNIXs = linux $(BSDs) solaris qnx
+LIMIT83fs = go32v2 os2 emx watcom
+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)),)
+RUNBATCH=$(COMSPEC) /C
+endif
+endif
+ifdef inUnix
+PATHSEP=/
+else
+PATHSEP:=$(subst /,\,/)
+ifdef inCygWin
+PATHSEP=/
+endif
+endif
+ifdef PWD
+BASEDIR:=$(subst \,/,$(shell $(PWD)))
+ifdef inCygWin
+ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
+BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
+BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
+BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
+endif
+endif
+else
+BASEDIR=.
+endif
+ifdef inOS2
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO=echo
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+endif
+override DEFAULT_FPCDIR=../..
+ifndef FPC
+ifdef PP
+FPC=$(PP)
+endif
+endif
+ifndef FPC
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+ifneq ($(CPU_TARGET),)
+FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB)
+else
+FPC:=$(shell $(FPCPROG) -PB)
+endif
+ifneq ($(findstring Error,$(FPC)),)
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+else
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+endif
+override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
+override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
+FOUNDFPC:=$(strip $(wildcard $(FPC)))
+ifeq ($(FOUNDFPC),)
+FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
+ifeq ($(FOUNDFPC),)
+$(error Compiler $(FPC) not found)
+endif
+endif
+ifndef FPC_COMPILERINFO
+FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
+endif
+ifndef FPC_VERSION
+FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
+endif
+export FPC FPC_VERSION FPC_COMPILERINFO
+unexport CHECKDEPEND ALLDEPENDENCIES
+ifndef CPU_TARGET
+ifdef CPU_TARGET_DEFAULT
+CPU_TARGET=$(CPU_TARGET_DEFAULT)
+endif
+endif
+ifndef OS_TARGET
+ifdef OS_TARGET_DEFAULT
+OS_TARGET=$(OS_TARGET_DEFAULT)
+endif
+endif
+ifneq ($(words $(FPC_COMPILERINFO)),5)
+FPC_COMPILERINFO+=$(shell $(FPC) -iSP)
+FPC_COMPILERINFO+=$(shell $(FPC) -iTP)
+FPC_COMPILERINFO+=$(shell $(FPC) -iSO)
+FPC_COMPILERINFO+=$(shell $(FPC) -iTO)
+endif
+ifndef CPU_SOURCE
+CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
+endif
+ifndef CPU_TARGET
+CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
+endif
+ifndef OS_SOURCE
+OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
+endif
+ifndef OS_TARGET
+OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
+endif
+FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
+TARGETSUFFIX=$(OS_TARGET)
+SOURCESUFFIX=$(OS_SOURCE)
+else
+TARGETSUFFIX=$(FULL_TARGET)
+SOURCESUFFIX=$(FULL_SOURCE)
+endif
+ifneq ($(FULL_TARGET),$(FULL_SOURCE))
+CROSSCOMPILE=1
+endif
+ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
+ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
+$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
+endif
+endif
+ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
+BSDhier=1
+endif
+ifeq ($(OS_TARGET),linux)
+linuxHier=1
+endif
+export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
+ifdef FPCDIR
+override FPCDIR:=$(subst \,/,$(FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=wrong
+endif
+else
+override FPCDIR=wrong
+endif
+ifdef DEFAULT_FPCDIR
+ifeq ($(FPCDIR),wrong)
+override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=wrong
+endif
+endif
+endif
+ifeq ($(FPCDIR),wrong)
+ifdef inUnix
+override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
+ifeq ($(wildcard $(FPCDIR)/units),)
+override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
+endif
+else
+override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR:=$(BASEDIR)
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=c:/pp
+endif
+endif
+endif
+endif
+endif
+ifndef CROSSBINDIR
+CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
+endif
+ifndef BINUTILSPREFIX
+ifndef CROSSBINDIR
+ifdef CROSSCOMPILE
+BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
+endif
+endif
+endif
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
+ifeq ($(UNITSDIR),)
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
+endif
+PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
+override PACKAGE_NAME=winceunits
+override PACKAGE_VERSION=2.2.0
+ifeq ($(FULL_TARGET),i386-win32)
+override TARGET_UNITS+=rapi cesync
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override TARGET_UNITS+=buildwinceunits
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override TARGET_UNITS+=buildwinceunits
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override TARGET_IMPLICITUNITS+=aygshell commctrl commdlg iphlpapi notify oleaut32 power shellapi simmgr tapi gpsapi todaycmn windbase cesync gx
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override TARGET_IMPLICITUNITS+=aygshell commctrl commdlg iphlpapi notify oleaut32 power shellapi simmgr tapi gpsapi todaycmn windbase cesync gx
+endif
+override INSTALL_BUILDUNIT=buildwinceunits
+override INSTALL_FPCPACKAGE=y
+ifeq ($(FULL_TARGET),i386-linux)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override COMPILER_OPTIONS+=-Ur
+endif
+ifeq ($(FULL_TARGET),i386-linux)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override COMPILER_SOURCEDIR+=src
+endif
+ifdef REQUIRE_UNITSDIR
+override UNITSDIR+=$(REQUIRE_UNITSDIR)
+endif
+ifdef REQUIRE_PACKAGESDIR
+override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
+endif
+ifdef ZIPINSTALL
+ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
+UNIXHier=1
+endif
+else
+ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
+UNIXHier=1
+endif
+endif
+ifndef INSTALL_PREFIX
+ifdef PREFIX
+INSTALL_PREFIX=$(PREFIX)
+endif
+endif
+ifndef INSTALL_PREFIX
+ifdef UNIXHier
+INSTALL_PREFIX=/usr/local
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BASEDIR:=/pp
+else
+INSTALL_BASEDIR:=/$(PACKAGE_NAME)
+endif
+endif
+endif
+export INSTALL_PREFIX
+ifdef INSTALL_FPCSUBDIR
+export INSTALL_FPCSUBDIR
+endif
+ifndef DIST_DESTDIR
+DIST_DESTDIR:=$(BASEDIR)
+endif
+export DIST_DESTDIR
+ifndef COMPILER_UNITTARGETDIR
+ifdef PACKAGEDIR_MAIN
+COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
+else
+COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
+endif
+endif
+ifndef COMPILER_TARGETDIR
+COMPILER_TARGETDIR=.
+endif
+ifndef INSTALL_BASEDIR
+ifdef UNIXHier
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
+else
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
+endif
+else
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)
+endif
+endif
+ifndef INSTALL_BINDIR
+ifdef UNIXHier
+INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
+else
+INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
+ifdef INSTALL_FPCPACKAGE
+ifdef CROSSCOMPILE
+ifdef CROSSINSTALL
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
+else
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
+endif
+else
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
+endif
+endif
+endif
+endif
+ifndef INSTALL_UNITDIR
+INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
+ifdef INSTALL_FPCPACKAGE
+ifdef PACKAGE_NAME
+INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
+endif
+endif
+endif
+ifndef INSTALL_LIBDIR
+ifdef UNIXHier
+INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
+else
+INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
+endif
+endif
+ifndef INSTALL_SOURCEDIR
+ifdef UNIXHier
+ifdef BSDhier
+SRCPREFIXDIR=share/src
+else
+ifdef linuxHier
+SRCPREFIXDIR=share/src
+else
+SRCPREFIXDIR=src
+endif
+endif
+ifdef INSTALL_FPCPACKAGE
+ifdef INSTALL_FPCSUBDIR
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
+else
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+endif
+else
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+ifdef INSTALL_FPCSUBDIR
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
+else
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
+endif
+else
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
+endif
+endif
+endif
+ifndef INSTALL_DOCDIR
+ifdef UNIXHier
+ifdef BSDhier
+DOCPREFIXDIR=share/doc
+else
+ifdef linuxHier
+DOCPREFIXDIR=share/doc
+else
+DOCPREFIXDIR=doc
+endif
+endif
+ifdef INSTALL_FPCPACKAGE
+INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+else
+INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
+else
+INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
+endif
+endif
+endif
+ifndef INSTALL_EXAMPLEDIR
+ifdef UNIXHier
+ifdef INSTALL_FPCPACKAGE
+ifdef BSDhier
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+else
+ifdef linuxHier
+INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
+endif
+endif
+else
+ifdef BSDhier
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+else
+ifdef linuxHier
+INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+endif
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
+endif
+endif
+endif
+ifndef INSTALL_DATADIR
+INSTALL_DATADIR=$(INSTALL_BASEDIR)
+endif
+ifndef INSTALL_SHAREDDIR
+INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
+endif
+ifdef CROSSCOMPILE
+ifndef CROSSBINDIR
+CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
+ifeq ($(CROSSBINDIR),)
+CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
+endif
+endif
+else
+CROSSBINDIR=
+endif
+BATCHEXT=.bat
+LOADEREXT=.as
+EXEEXT=.exe
+PPLEXT=.ppl
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.so
+SHAREDLIBPREFIX=libfp
+STATICLIBPREFIX=libp
+IMPORTLIBPREFIX=libimp
+RSTEXT=.rst
+ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
+ifeq ($(OS_TARGET),go32v1)
+STATICLIBPREFIX=
+SHORTSUFFIX=v1
+endif
+ifeq ($(OS_TARGET),go32v2)
+STATICLIBPREFIX=
+SHORTSUFFIX=dos
+endif
+ifeq ($(OS_TARGET),watcom)
+STATICLIBPREFIX=
+OEXT=.obj
+ASMEXT=.asm
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=wat
+endif
+ifeq ($(OS_TARGET),linux)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=lnx
+endif
+ifeq ($(OS_TARGET),freebsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=fbs
+endif
+ifeq ($(OS_TARGET),netbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=nbs
+endif
+ifeq ($(OS_TARGET),openbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=obs
+endif
+ifeq ($(OS_TARGET),win32)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=w32
+endif
+ifeq ($(OS_TARGET),os2)
+BATCHEXT=.cmd
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=os2
+ECHO=echo
+endif
+ifeq ($(OS_TARGET),emx)
+BATCHEXT=.cmd
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=emx
+ECHO=echo
+endif
+ifeq ($(OS_TARGET),amiga)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=amg
+endif
+ifeq ($(OS_TARGET),morphos)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=mos
+endif
+ifeq ($(OS_TARGET),atari)
+EXEEXT=.ttp
+SHORTSUFFIX=ata
+endif
+ifeq ($(OS_TARGET),beos)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=be
+endif
+ifeq ($(OS_TARGET),solaris)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=sun
+endif
+ifeq ($(OS_TARGET),qnx)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=qnx
+endif
+ifeq ($(OS_TARGET),netware)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nw
+endif
+ifeq ($(OS_TARGET),netwlibc)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nwl
+endif
+ifeq ($(OS_TARGET),macos)
+BATCHEXT=
+EXEEXT=
+DEBUGSYMEXT=.xcoff
+SHORTSUFFIX=mac
+endif
+ifeq ($(OS_TARGET),darwin)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=dwn
+endif
+ifeq ($(OS_TARGET),gba)
+EXEEXT=.gba
+SHAREDLIBEXT=.so
+SHORTSUFFIX=gba
+endif
+ifeq ($(OS_TARGET),symbian)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=symbian
+endif
+else
+ifeq ($(OS_TARGET),go32v1)
+PPUEXT=.pp1
+OEXT=.o1
+ASMEXT=.s1
+SMARTEXT=.sl1
+STATICLIBEXT=.a1
+SHAREDLIBEXT=.so1
+STATICLIBPREFIX=
+SHORTSUFFIX=v1
+endif
+ifeq ($(OS_TARGET),go32v2)
+STATICLIBPREFIX=
+SHORTSUFFIX=dos
+endif
+ifeq ($(OS_TARGET),watcom)
+STATICLIBPREFIX=
+SHORTSUFFIX=wat
+endif
+ifeq ($(OS_TARGET),linux)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=lnx
+endif
+ifeq ($(OS_TARGET),freebsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=fbs
+endif
+ifeq ($(OS_TARGET),netbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=nbs
+endif
+ifeq ($(OS_TARGET),openbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=obs
+endif
+ifeq ($(OS_TARGET),win32)
+PPUEXT=.ppw
+OEXT=.ow
+ASMEXT=.sw
+SMARTEXT=.slw
+STATICLIBEXT=.aw
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=w32
+endif
+ifeq ($(OS_TARGET),os2)
+BATCHEXT=.cmd
+PPUEXT=.ppo
+ASMEXT=.so2
+OEXT=.oo2
+AOUTEXT=.out
+SMARTEXT=.sl2
+STATICLIBPREFIX=
+STATICLIBEXT=.ao2
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=os2
+ECHO=echo
+endif
+ifeq ($(OS_TARGET),amiga)
+EXEEXT=
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.library
+SHORTSUFFIX=amg
+endif
+ifeq ($(OS_TARGET),atari)
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=.ttp
+SHORTSUFFIX=ata
+endif
+ifeq ($(OS_TARGET),beos)
+BATCHEXT=.sh
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=
+SHORTSUFFIX=be
+endif
+ifeq ($(OS_TARGET),solaris)
+BATCHEXT=.sh
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=
+SHORTSUFFIX=sun
+endif
+ifeq ($(OS_TARGET),qnx)
+BATCHEXT=.sh
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=
+SHORTSUFFIX=qnx
+endif
+ifeq ($(OS_TARGET),netware)
+STATICLIBPREFIX=
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.nlm
+EXEEXT=.nlm
+SHORTSUFFIX=nw
+endif
+ifeq ($(OS_TARGET),netwlibc)
+STATICLIBPREFIX=
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.nlm
+EXEEXT=.nlm
+SHORTSUFFIX=nwl
+endif
+ifeq ($(OS_TARGET),macos)
+BATCHEXT=
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=
+DEBUGSYMEXT=.xcoff
+SHORTSUFFIX=mac
+endif
+endif
+ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
+FPCMADE=fpcmade.$(SHORTSUFFIX)
+ZIPSUFFIX=$(SHORTSUFFIX)
+ZIPCROSSPREFIX=
+ZIPSOURCESUFFIX=src
+ZIPEXAMPLESUFFIX=exm
+else
+FPCMADE=fpcmade.$(TARGETSUFFIX)
+ZIPSOURCESUFFIX=.source
+ZIPEXAMPLESUFFIX=.examples
+ifdef CROSSCOMPILE
+ZIPSUFFIX=.$(SOURCESUFFIX)
+ZIPCROSSPREFIX=$(TARGETSUFFIX)-
+else
+ZIPSUFFIX=.$(TARGETSUFFIX)
+ZIPCROSSPREFIX=
+endif
+endif
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO= __missing_command_ECHO
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+ifndef DATE
+DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE= __missing_command_DATE
+else
+DATE:=$(firstword $(DATE))
+endif
+else
+DATE:=$(firstword $(DATE))
+endif
+endif
+export DATE
+ifndef GINSTALL
+GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL= __missing_command_GINSTALL
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+endif
+export GINSTALL
+ifndef CPPROG
+CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(CPPROG),)
+CPPROG= __missing_command_CPPROG
+else
+CPPROG:=$(firstword $(CPPROG))
+endif
+endif
+export CPPROG
+ifndef RMPROG
+RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(RMPROG),)
+RMPROG= __missing_command_RMPROG
+else
+RMPROG:=$(firstword $(RMPROG))
+endif
+endif
+export RMPROG
+ifndef MVPROG
+MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MVPROG),)
+MVPROG= __missing_command_MVPROG
+else
+MVPROG:=$(firstword $(MVPROG))
+endif
+endif
+export MVPROG
+ifndef MKDIRPROG
+MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MKDIRPROG),)
+MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MKDIRPROG),)
+MKDIRPROG= __missing_command_MKDIRPROG
+else
+MKDIRPROG:=$(firstword $(MKDIRPROG))
+endif
+else
+MKDIRPROG:=$(firstword $(MKDIRPROG))
+endif
+endif
+export MKDIRPROG
+ifndef ECHOREDIR
+ifndef inUnix
+ECHOREDIR=echo
+else
+ECHOREDIR=$(ECHO)
+endif
+endif
+ifndef COPY
+COPY:=$(CPPROG) -fp
+endif
+ifndef COPYTREE
+COPYTREE:=$(CPPROG) -Rfp
+endif
+ifndef MKDIRTREE
+MKDIRTREE:=$(MKDIRPROG) -p
+endif
+ifndef MOVE
+MOVE:=$(MVPROG) -f
+endif
+ifndef DEL
+DEL:=$(RMPROG) -f
+endif
+ifndef DELTREE
+DELTREE:=$(RMPROG) -rf
+endif
+ifndef INSTALL
+ifdef inUnix
+INSTALL:=$(GINSTALL) -c -m 644
+else
+INSTALL:=$(COPY)
+endif
+endif
+ifndef INSTALLEXE
+ifdef inUnix
+INSTALLEXE:=$(GINSTALL) -c -m 755
+else
+INSTALLEXE:=$(COPY)
+endif
+endif
+ifndef MKDIR
+MKDIR:=$(GINSTALL) -m 755 -d
+endif
+export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE= __missing_command_PPUMOVE
+else
+PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+export PPUMOVE
+ifndef FPCMAKE
+FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(FPCMAKE),)
+FPCMAKE= __missing_command_FPCMAKE
+else
+FPCMAKE:=$(firstword $(FPCMAKE))
+endif
+endif
+export FPCMAKE
+ifndef ZIPPROG
+ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ZIPPROG),)
+ZIPPROG= __missing_command_ZIPPROG
+else
+ZIPPROG:=$(firstword $(ZIPPROG))
+endif
+endif
+export ZIPPROG
+ifndef TARPROG
+TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(TARPROG),)
+TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(TARPROG),)
+TARPROG= __missing_command_TARPROG
+else
+TARPROG:=$(firstword $(TARPROG))
+endif
+else
+TARPROG:=$(firstword $(TARPROG))
+endif
+endif
+export TARPROG
+ASNAME=$(BINUTILSPREFIX)as
+LDNAME=$(BINUTILSPREFIX)ld
+ARNAME=$(BINUTILSPREFIX)ar
+RCNAME=$(BINUTILSPREFIX)rc
+ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
+ifeq ($(OS_TARGET),win32)
+ifeq ($(CROSSBINDIR),)
+ASNAME=asw
+LDNAME=ldw
+ARNAME=arw
+endif
+endif
+endif
+ifndef ASPROG
+ifdef CROSSBINDIR
+ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
+else
+ASPROG=$(ASNAME)
+endif
+endif
+ifndef LDPROG
+ifdef CROSSBINDIR
+LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
+else
+LDPROG=$(LDNAME)
+endif
+endif
+ifndef RCPROG
+ifdef CROSSBINDIR
+RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
+else
+RCPROG=$(RCNAME)
+endif
+endif
+ifndef ARPROG
+ifdef CROSSBINDIR
+ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
+else
+ARPROG=$(ARNAME)
+endif
+endif
+AS=$(ASPROG)
+LD=$(LDPROG)
+RC=$(RCPROG)
+AR=$(ARPROG)
+PPAS=ppas$(SRCBATCHEXT)
+ifdef inUnix
+LDCONFIG=ldconfig
+else
+LDCONFIG=
+endif
+ifdef DATE
+DATESTR:=$(shell $(DATE) +%Y%m%d)
+else
+DATESTR=
+endif
+ifndef UPXPROG
+ifeq ($(OS_TARGET),go32v2)
+UPXPROG:=1
+endif
+ifeq ($(OS_TARGET),win32)
+UPXPROG:=1
+endif
+ifdef UPXPROG
+UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(UPXPROG),)
+UPXPROG=
+else
+UPXPROG:=$(firstword $(UPXPROG))
+endif
+else
+UPXPROG=
+endif
+endif
+export UPXPROG
+ZIPOPT=-9
+ZIPEXT=.zip
+ifeq ($(USETAR),bz2)
+TAROPT=vj
+TAREXT=.tar.bz2
+else
+TAROPT=vz
+TAREXT=.tar.gz
+endif
+override REQUIRE_PACKAGES=rtl 
+ifeq ($(FULL_TARGET),i386-linux)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifdef REQUIRE_PACKAGES_RTL
+PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_RTL),)
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),)
+UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)
+else
+UNITDIR_RTL=$(PACKAGEDIR_RTL)
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_RTL)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_RTL) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_RTL=
+UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_RTL),)
+UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
+else
+UNITDIR_RTL=
+endif
+endif
+ifdef UNITDIR_RTL
+override COMPILER_UNITDIR+=$(UNITDIR_RTL)
+endif
+endif
+ifndef NOCPUDEF
+override FPCOPTDEF=$(CPU_TARGET)
+endif
+ifneq ($(OS_TARGET),$(OS_SOURCE))
+override FPCOPT+=-T$(OS_TARGET)
+endif
+ifneq ($(CPU_TARGET),$(CPU_SOURCE))
+override FPCOPT+=-P$(CPU_TARGET)
+endif
+ifeq ($(OS_SOURCE),openbsd)
+override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
+endif
+ifndef CROSSBOOTSTRAP
+ifneq ($(BINUTILSPREFIX),)
+override FPCOPT+=-XP$(BINUTILSPREFIX)
+endif
+ifneq ($(BINUTILSPREFIX),)
+override FPCOPT+=-Xr$(RLINKPATH)
+endif
+endif
+ifdef UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
+endif
+ifdef LIBDIR
+override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
+endif
+ifdef OBJDIR
+override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
+endif
+ifdef INCDIR
+override FPCOPT+=$(addprefix -Fi,$(INCDIR))
+endif
+ifdef LINKSMART
+override FPCOPT+=-XX
+endif
+ifdef CREATESMART
+override FPCOPT+=-CX
+endif
+ifdef DEBUG
+override FPCOPT+=-gl
+override FPCOPTDEF+=DEBUG
+endif
+ifdef RELEASE
+ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
+ifeq ($(CPU_TARGET),i386)
+FPCCPUOPT:=-OG2p3
+endif
+ifeq ($(CPU_TARGET),powerpc)
+FPCCPUOPT:=-O1r
+endif
+else
+FPCCPUOPT:=-O2
+endif
+override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
+override FPCOPTDEF+=RELEASE
+endif
+ifdef STRIP
+override FPCOPT+=-Xs
+endif
+ifdef OPTIMIZE
+override FPCOPT+=-O2
+endif
+ifdef VERBOSE
+override FPCOPT+=-vwni
+endif
+ifdef COMPILER_OPTIONS
+override FPCOPT+=$(COMPILER_OPTIONS)
+endif
+ifdef COMPILER_UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
+endif
+ifdef COMPILER_LIBRARYDIR
+override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
+endif
+ifdef COMPILER_OBJECTDIR
+override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
+endif
+ifdef COMPILER_INCLUDEDIR
+override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
+endif
+ifdef CROSSBINDIR
+override FPCOPT+=-FD$(CROSSBINDIR)
+endif
+ifdef COMPILER_TARGETDIR
+override FPCOPT+=-FE$(COMPILER_TARGETDIR)
+ifeq ($(COMPILER_TARGETDIR),.)
+override TARGETDIRPREFIX=
+else
+override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
+endif
+endif
+ifdef COMPILER_UNITTARGETDIR
+override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
+ifeq ($(COMPILER_UNITTARGETDIR),.)
+override UNITTARGETDIRPREFIX=
+else
+override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
+endif
+else
+ifdef COMPILER_TARGETDIR
+override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
+override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
+endif
+endif
+ifdef CREATESHARED
+override FPCOPT+=-Cg
+ifeq ($(CPU_TARGET),i386)
+override FPCOPT+=-Aas
+endif
+endif
+ifeq ($(findstring 2.0.,$(FPC_VERSION)),)
+ifeq ($(OS_TARGET),linux)
+ifeq ($(CPU_TARGET),x86_64)
+override FPCOPT+=-Cg
+endif
+endif
+endif
+ifdef LINKSHARED
+endif
+ifdef OPT
+override FPCOPT+=$(OPT)
+endif
+ifdef FPCOPTDEF
+override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
+endif
+ifdef CFGFILE
+override FPCOPT+=@$(CFGFILE)
+endif
+ifdef USEENV
+override FPCEXTCMD:=$(FPCOPT)
+override FPCOPT:=!FPCEXTCMD
+export FPCEXTCMD
+endif
+override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
+override ACROSSCOMPILE=1
+endif
+ifdef ACROSSCOMPILE
+override FPCOPT+=$(CROSSOPT)
+endif
+override COMPILER:=$(FPC) $(FPCOPT)
+ifeq (,$(findstring -s ,$(COMPILER)))
+EXECPPAS=
+else
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+ifdef RUNBATCH
+EXECPPAS:=@$(RUNBATCH) $(PPAS)
+else
+EXECPPAS:=@$(PPAS)
+endif
+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)
+ifdef UPXPROG
+	-$(UPXPROG) $(INSTALLEXEFILES)
+endif
+	$(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
+endif
+ifdef INSTALL_CREATEPACKAGEFPC
+ifdef FPCMAKE
+ifdef PACKAGE_VERSION
+ifneq ($(wildcard Makefile.fpc),)
+	$(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
+	$(MKDIR) $(INSTALL_UNITDIR)
+	$(INSTALL) Package.fpc $(INSTALL_UNITDIR)
+endif
+endif
+endif
+endif
+ifdef INSTALLPPUFILES
+	$(MKDIR) $(INSTALL_UNITDIR)
+	$(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+	$(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
+endif
+ifneq ($(wildcard $(LIB_FULLNAME)),)
+	$(MKDIR) $(INSTALL_LIBDIR)
+	$(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
+ifdef inUnix
+	ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
+endif
+endif
+endif
+ifdef INSTALL_FILES
+	$(MKDIR) $(INSTALL_DATADIR)
+	$(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
+endif
+fpc_sourceinstall: distclean
+	$(MKDIR) $(INSTALL_SOURCEDIR)
+	$(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
+fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
+ifdef HASEXAMPLES
+	$(MKDIR) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef EXAMPLESOURCEFILES
+	$(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef TARGET_EXAMPLEDIRS
+	$(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
+endif
+.PHONY: fpc_distinstall
+fpc_distinstall: install exampleinstall
+.PHONY: fpc_zipinstall fpc_zipsourceinstall fpc_zipexampleinstall
+ifndef PACKDIR
+ifndef inUnix
+PACKDIR=$(BASEDIR)/../fpc-pack
+else
+PACKDIR=/tmp/fpc-pack
+endif
+endif
+ifndef ZIPNAME
+ifdef DIST_ZIPNAME
+ZIPNAME=$(DIST_ZIPNAME)
+else
+ZIPNAME=$(PACKAGE_NAME)
+endif
+endif
+ifndef FULLZIPNAME
+FULLZIPNAME=$(ZIPCROSSPREFIX)$(ZIPPREFIX)$(ZIPNAME)$(ZIPSUFFIX)
+endif
+ifndef ZIPTARGET
+ifdef DIST_ZIPTARGET
+ZIPTARGET=DIST_ZIPTARGET
+else
+ZIPTARGET=install
+endif
+endif
+ifndef USEZIP
+ifdef inUnix
+USETAR=1
+endif
+endif
+ifndef inUnix
+USEZIPWRAPPER=1
+endif
+ifdef USEZIPWRAPPER
+ZIPPATHSEP=$(PATHSEP)
+ZIPWRAPPER=$(subst /,$(PATHSEP),$(DIST_DESTDIR)/fpczip$(SRCBATCHEXT))
+else
+ZIPPATHSEP=/
+endif
+ZIPCMD_CDPACK:=cd $(subst /,$(ZIPPATHSEP),$(PACKDIR))
+ZIPCMD_CDBASE:=cd $(subst /,$(ZIPPATHSEP),$(BASEDIR))
+ifdef USETAR
+ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(TAREXT)
+ZIPCMD_ZIP:=$(TARPROG) cf$(TAROPT) $(ZIPDESTFILE) *
+else
+ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(ZIPEXT)
+ZIPCMD_ZIP:=$(subst /,$(ZIPPATHSEP),$(ZIPPROG)) -Dr $(ZIPOPT) $(ZIPDESTFILE) *
+endif
+fpc_zipinstall:
+	$(MAKE) $(ZIPTARGET) INSTALL_PREFIX=$(PACKDIR) ZIPINSTALL=1
+	$(MKDIR) $(DIST_DESTDIR)
+	$(DEL) $(ZIPDESTFILE)
+ifdef USEZIPWRAPPER
+ifneq ($(ECHOREDIR),echo)
+	$(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDPACK))" > $(ZIPWRAPPER)
+	$(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" >> $(ZIPWRAPPER)
+	$(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDBASE))" >> $(ZIPWRAPPER)
+else
+	echo $(ZIPCMD_CDPACK) > $(ZIPWRAPPER)
+	echo $(ZIPCMD_ZIP) >> $(ZIPWRAPPER)
+	echo $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER)
+endif
+ifdef inUnix
+	/bin/sh $(ZIPWRAPPER)
+else
+ifdef RUNBATCH
+	$(RUNBATCH) (ZIPWRAPPER)
+else
+	$(ZIPWRAPPER)
+endif
+endif
+	$(DEL) $(ZIPWRAPPER)
+else
+	$(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)
+endif
+	$(DELTREE) $(PACKDIR)
+fpc_zipsourceinstall:
+	$(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall ZIPSUFFIX=$(ZIPSOURCESUFFIX)
+fpc_zipexampleinstall:
+ifdef HASEXAMPLES
+	$(MAKE) fpc_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=$(ZIPEXAMPLESUFFIX)
+endif
+fpc_zipdistinstall:
+	$(MAKE) fpc_zipinstall ZIPTARGET=distinstall
+.PHONY: fpc_clean fpc_cleanall fpc_distclean
+ifdef EXEFILES
+override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
+endif
+ifdef CLEAN_UNITS
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
+endif
+ifdef CLEANPPUFILES
+override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
+ifdef DEBUGSYMEXT
+override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
+endif
+override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
+override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
+endif
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+ifdef CLEAN_FILES
+	-$(DEL) $(CLEAN_FILES)
+endif
+ifdef LIB_NAME
+	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
+endif
+	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef COMPILER_UNITTARGETDIR
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+endif
+	-$(DELTREE) units
+	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+ifneq ($(PPUEXT),.ppu)
+	-$(DEL) *.o *.ppu *.a
+endif
+	-$(DELTREE) *$(SMARTEXT)
+	-$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+	-$(DEL) *_ppas$(BATCHEXT)
+ifdef AOUTEXT
+	-$(DEL) *$(AOUTEXT)
+endif
+ifdef DEBUGSYMEXT
+	-$(DEL) *$(DEBUGSYMEXT)
+endif
+fpc_distclean: cleanall
+.PHONY: fpc_baseinfo
+override INFORULES+=fpc_baseinfo
+fpc_baseinfo:
+	@$(ECHO)
+	@$(ECHO)  == Package info ==
+	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
+	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
+	@$(ECHO)
+	@$(ECHO)  == Configuration info ==
+	@$(ECHO)
+	@$(ECHO)  FPC.......... $(FPC)
+	@$(ECHO)  FPC Version.. $(FPC_VERSION)
+	@$(ECHO)  Source CPU... $(CPU_SOURCE)
+	@$(ECHO)  Target CPU... $(CPU_TARGET)
+	@$(ECHO)  Source OS.... $(OS_SOURCE)
+	@$(ECHO)  Target OS.... $(OS_TARGET)
+	@$(ECHO)  Full Source.. $(FULL_SOURCE)
+	@$(ECHO)  Full Target.. $(FULL_TARGET)
+	@$(ECHO)  SourceSuffix. $(SOURCESUFFIX)
+	@$(ECHO)  TargetSuffix. $(TARGETSUFFIX)
+	@$(ECHO)
+	@$(ECHO)  == Directory info ==
+	@$(ECHO)
+	@$(ECHO)  Required pkgs... $(REQUIRE_PACKAGES)
+	@$(ECHO)
+	@$(ECHO)  Basedir......... $(BASEDIR)
+	@$(ECHO)  FPCDir.......... $(FPCDIR)
+	@$(ECHO)  CrossBinDir..... $(CROSSBINDIR)
+	@$(ECHO)  UnitsDir........ $(UNITSDIR)
+	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
+	@$(ECHO)
+	@$(ECHO)  GCC library..... $(GCCLIBDIR)
+	@$(ECHO)  Other library... $(OTHERLIBDIR)
+	@$(ECHO)
+	@$(ECHO)  == Tools info ==
+	@$(ECHO)
+	@$(ECHO)  As........ $(AS)
+	@$(ECHO)  Ld........ $(LD)
+	@$(ECHO)  Ar........ $(AR)
+	@$(ECHO)  Rc........ $(RC)
+	@$(ECHO)
+	@$(ECHO)  Mv........ $(MVPROG)
+	@$(ECHO)  Cp........ $(CPPROG)
+	@$(ECHO)  Rm........ $(RMPROG)
+	@$(ECHO)  GInstall.. $(GINSTALL)
+	@$(ECHO)  Echo...... $(ECHO)
+	@$(ECHO)  Shell..... $(SHELL)
+	@$(ECHO)  Date...... $(DATE)
+	@$(ECHO)  FPCMake... $(FPCMAKE)
+	@$(ECHO)  PPUMove... $(PPUMOVE)
+	@$(ECHO)  Upx....... $(UPXPROG)
+	@$(ECHO)  Zip....... $(ZIPPROG)
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  Target Loaders........ $(TARGET_LOADERS)
+	@$(ECHO)  Target Units.......... $(TARGET_UNITS)
+	@$(ECHO)  Target Implicit Units. $(TARGET_IMPLICITUNITS)
+	@$(ECHO)  Target Programs....... $(TARGET_PROGRAMS)
+	@$(ECHO)  Target Dirs........... $(TARGET_DIRS)
+	@$(ECHO)  Target Examples....... $(TARGET_EXAMPLES)
+	@$(ECHO)  Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
+	@$(ECHO)
+	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
+	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
+	@$(ECHO)
+	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
+	@$(ECHO)  Install Files....... $(INSTALL_FILES)
+	@$(ECHO)
+	@$(ECHO)  == Install info ==
+	@$(ECHO)
+	@$(ECHO)  DateStr.............. $(DATESTR)
+	@$(ECHO)  ZipName.............. $(ZIPNAME)
+	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
+	@$(ECHO)  ZipCrossPrefix....... $(ZIPCROSSPREFIX)
+	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
+	@$(ECHO)  FullZipName.......... $(FULLZIPNAME)
+	@$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)
+	@$(ECHO)
+	@$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)
+	@$(ECHO)  Install binary dir... $(INSTALL_BINDIR)
+	@$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)
+	@$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)
+	@$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)
+	@$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)
+	@$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)
+	@$(ECHO)  Install data dir..... $(INSTALL_DATADIR)
+	@$(ECHO)
+	@$(ECHO)  Dist destination dir. $(DIST_DESTDIR)
+	@$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)
+	@$(ECHO)
+.PHONY: fpc_info
+fpc_info: $(INFORULES)
+.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
+	fpc_makefile_dirs
+fpc_makefile:
+	$(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
+fpc_makefile_sub1:
+ifdef TARGET_DIRS
+	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
+endif
+ifdef TARGET_EXAMPLEDIRS
+	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
+endif
+fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
+fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
+fpc_makefiles: fpc_makefile fpc_makefile_dirs
+all: fpc_all
+debug: fpc_debug
+smart: fpc_smart
+release: fpc_release
+units: fpc_units
+examples:
+shared: fpc_shared
+install: fpc_install
+sourceinstall: fpc_sourceinstall
+exampleinstall: fpc_exampleinstall
+distinstall: fpc_distinstall
+zipinstall: fpc_zipinstall
+zipsourceinstall: fpc_zipsourceinstall
+zipexampleinstall: fpc_zipexampleinstall
+zipdistinstall: fpc_zipdistinstall
+clean: fpc_clean
+distclean: fpc_distclean
+cleanall: fpc_cleanall
+info: fpc_info
+makefiles: fpc_makefiles
+.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
+ifneq ($(wildcard fpcmake.loc),)
+include fpcmake.loc
+endif
+.NOTPARALLEL:

+ 27 - 0
packages/winceunits/Makefile.fpc

@@ -0,0 +1,27 @@
+#
+#   Makefile.fpc for WinCE Units
+#
+
+[package]
+name=winceunits
+version=2.2.0
+
+[target]
+units_wince=buildwinceunits
+implicitunits_wince=aygshell commctrl commdlg iphlpapi notify oleaut32 power shellapi simmgr tapi \
+                    gpsapi todaycmn windbase cesync gx
+units_win32=rapi cesync
+
+[install]
+buildunit=buildwinceunits
+fpcpackage=y
+
+[default]
+fpcdir=../..
+
+[compiler]
+options=-Ur
+sourcedir=src
+
+[rules]
+.NOTPARALLEL:

+ 11 - 10
rtl/wince/wininc/aygshell.inc → packages/winceunits/src/aygshell.pp

@@ -1,6 +1,6 @@
 {
     This file is part of the Free Pascal run time library.
-    Copyright (c) 2006 Free Pascal development team.
+    Copyright (c) 2006-2008 Free Pascal development team.
 
     See the file COPYING.FPC, included in this distribution,
     for details about the copyright.
@@ -283,8 +283,13 @@
            236    VerifyTrust
 }
 
-{$ifdef read_interface}
+unit aygshell;
 
+interface
+
+uses windows;
+
+{$calling cdecl}
 
 //*****************************************************************************
 // consts
@@ -423,8 +428,8 @@ type
     dwFlags : DWORD ;      // IN  - Some features we want
     nToolBarId : UINT ;    // IN  - Which toolbar are we using
     hInstRes : HINST;      // IN  - Instance that owns the resources
-    nBmpId : Integer;
-    cBmpImages : Integer;  // IN  - Count of bitmap images
+    nBmpId : longint;
+    cBmpImages : longint;  // IN  - Count of bitmap images
     hwndMB : HWND ;        // OUT
     clrBk : COLORREF ;     // IN  - background color of the menu bar (excluding sip)
   end;
@@ -480,10 +485,6 @@ function SHSipInfo(uiAction: UINT; uiParam: UINT; pvParam: PVOID; fWinIni: UINT
 function SHSipPreference(hwnd: HWND ; st : SIPSTATE ) : WINBOOL; external UserDLLAyg name 'SHSipPreference';
 function SHRecognizeGesture(var shrg : SHRGINFO): DWORD; external UserDLLAyg name 'SHRecognizeGesture';
 
-{$endif read_interface}
-
-{$ifdef read_implementation}
-
-{$endif read_implementation}
-
+implementation
 
+end.

+ 29 - 0
packages/winceunits/src/buildwinceunits.pp

@@ -0,0 +1,29 @@
+{
+   Dummy unit to compile everything in one go
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2 of the License, or (at your option) any later version.
+
+   This library 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.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with this library; if not, write to the
+   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.
+}
+unit buildwinceunits;
+
+interface
+
+uses
+  aygshell,commctrl,commdlg,iphlpapi,notify,oleaut32,power,shellapi,simmgr,tapi,
+  gpsapi,todaycmn,windbase,cesync,gx;
+
+implementation
+
+end.

+ 436 - 0
packages/winceunits/src/cesync.pp

@@ -0,0 +1,436 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2008 Free Pascal development team.
+
+    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.
+
+ **********************************************************************
+
+ Include file for synchronization modules for Windows CE
+ Converted from cesync.h by Yury Sidorov                               }
+
+{$mode objfpc}
+unit cesync;
+
+interface
+
+uses Windows {$ifdef UNDER_CE}, windbase {$endif};
+
+{$IFDEF FPC}
+{$PACKRECORDS C}
+{$ELSE}
+type
+  TCHAR = char;
+{$ENDIF}
+
+{ max size of the object type name }
+const
+   MAX_OBJTYPE_NAME = 100;   
+{ max. size of a packet in IReplObjHandler::GetPacket & IReplObjHandler::SetPacket (about 254K) }
+   MAX_PACKET_SIZE = 260000;   
+   MAX_ACTIVE_VOL = 16;   { up to 16 active volumes (including the default system volume) can be synchronized during each connection }
+   
+type
+  OBJTYPENAME = array[0..MAX_OBJTYPE_NAME-1] of TCHAR;
+  OBJTYPENAMEA = array[0..MAX_OBJTYPE_NAME-1] of CHAR;
+  OBJTYPENAMEW = array[0..MAX_OBJTYPE_NAME-1] of WCHAR;
+  
+{ Error/Return code used }
+const
+   RERR_SHUT_DOWN = $80140001;   { serious error, asking implementation to shut down immediately }
+   RERR_STORE_REPLACED = $80140002;   { the store was replaced. }
+   RERR_CANCEL = $80140003;   { user cancel the operation }
+   RERR_RESTART = $80140004;   { restart the operation, applicable in RSC_END_SYNC & RSC_END_CHECK }
+   RERR_IGNORE = $80140005;   { used by IReplStore::GetConflictInfo. }
+   RERR_UNLOAD = $80140006;   { used by IReplStore::ActivateDialog or IReplStore::IsFolderChanged to request unloading of replication modules }
+   RERR_OBJECT_DELETED = $80140007;   { used by IReplStore::IsValidObject, indicates the object identified by the hObject is deleted }
+   RERR_CORRUPT = $80140008;   { used by IReplStore::IsValidObject, indicates the object identified by the hObject is corrupted }
+   RERR_NO_DEVICE = $80140009;   { returned by IReplNotify::QueryDevice. indicates no selected or connected device exists }
+   RERR_NO_ERR_PROMPT = $80140010;   { returned by IReplStore::Initialize. indicates error initializing. No UI is needed to show this error. }
+   RERR_DISCARD = $80140011;   { returned by IReplObjHandler::SetPacket. indicates this object should be discarded from the device immediately. }
+   RERR_DISCARD_LOCAL = $80140012;   { returned by IReplObjHandler::SetPaket. indicates this object should be discarded from the desktop only. }
+   RERR_VOL_INACTIVE = $80140013;   { returned by IReplObjHandler::GetPacket && IReplObjHandler::SetPacket, the volume has become inactive. }
+   RERR_BIG_OBJ_TYPE = $80140014;   { returned by IReplNotify::QueryDevice on QDC_SYNC_DATA }
+   RERR_BIG_CODE = $80140015;   { returned by IReplNotify::QueryDevice on QDC_SYNC_DATA }
+   RERR_UNMATCHED = $80140016;   { returned by IReplNotify::QueryDevice on QDC_SYNC_DATA }
+   RERR_DEVICE_WIN = $80140017;   { returned by IReplStore::GetConflictInfo, resolve the conflict so device object wins }
+   RERR_DESKTOP_WIN = $80140018;   { returned by IReplStore::GetConflictInfo, resolve the conflict so desktop object wins }
+   RERR_SKIP_ALL_OBJ = $80140019;   { returned by IReplStore::ReportStatus on RSC_WRITE_OBJ_FAILED, skip sync of all remaining objects }
+{ use by IReplObjHandler }
+   RERR_SKIP_ALL = $80140100;   { skip all incoming packets because of write errors }
+   RERR_BAD_OBJECT = $80140101;   { this is a bad object because of read error, server should not try to replicate it again }
+   RERR_TRY_AGAIN = $80140102;   { this is a bad object because of read error, server should can try to replicate it again later }
+   RERR_USER_SKIP = $80140103;   { object skipped by the user }
+{ these are warning codes }
+   RWRN_LAST_PACKET = $00140001;   
+{ flags used in RSC_BEGIN_SYNC }
+   BSF_AUTO_SYNC = $00000001;   { This flag is being obsoleted in ActiveSync 3.0 }
+   BSF_REMOTE_SYNC = $00000002;   { consistent with RSC_REMOTE_SYNC, set if we are sync'ing remotely }
+   BSF_SHOW_FATAL_ERRORS = $00000004;   { If an error occurs which prevents the SSP from synchronizing at all, it can show the error to the user when this flag is set }
+   BSF_SHOW_RESOLVE_ERRORS = $00000008;   { The SSP can show any error messages that it comes across as during the resolve items phase }
+   BSF_RESERVED = $80000000;   { Reserved by ActiveSync server. }
+{ Code for ReportStatus }
+   RSC_BEGIN_SYNC = 1;   { Synchronization is about to start, uReserved is combination of bit flags, see BSF_* above }
+   RSC_END_SYNC = 2;   { Synchronization is about to end }
+   RSC_BEGIN_CHECK = 3;   { FindFirstItem is about to be called, followed by FindNextItem }
+   RSC_END_CHECK = 4;   { FindItemClose has been called }
+   RSC_DATE_CHANGED = 5;   { System Date has changed, this is called for each known desktop object, unless when both hFolder & hItem are NULL }
+   RSC_RELEASE = 6;   { Replication is about to release the store }
+   RSC_REMOTE_SYNC = 7;   { Indicates if remote sync is enabled. uParam will TRUE if all sync }
+{ will be remote until this status is reported again with uParam set to FALSE }
+   RSC_INTERRUPT = 8;   { interrupt current operation }
+   RSC_BEGIN_SYNC_OBJ = 9;   { Synchronization is about to start on an object type. uReserved points to }
+   RSC_END_SYNC_OBJ = 10;   { Synchronization is about to end on an object type. }
+   RSC_OBJ_TYPE_ENABLED = 11;   { Synchronization of the given object is enabled, hFolder is indeed a pointer to a string (object type name) }
+   RSC_OBJ_TYPE_DISABLED = 12;   { Synchronization of the given object is disabled, hFolder is indeed a pointer to a string (object type name) }
+   RSC_BEGIN_BATCH_WRITE = 13;   { A series of SetPacket will be called on a number of objects, this is the right time for some service providers to start a transaction }
+   RSC_END_BATCH_WRITE = 14;   { above write ends, this is the right time for some service providers to commit the transaction }
+   RSC_CONNECTION_CHG = 15;   { connection status has changed. uParam is TRUE if connection established. FALSE otherwise. }
+   RSC_WRITE_OBJ_FAILED = 16;   { failed writing an object on the device. uParam is the HRESULT code. }
+   RSC_DELETE_OBJ_FAILED = 17;   { failed deleting an object on the device. uParam is the HRESULT code. }
+   RSC_WRITE_OBJ_SUCCESS = 18;   { writing of an object succeeded on the device. uParam is a pointer to SDREQUEST (with (lpbData, cbData) representing the volume ID) }
+   RSC_DELETE_OBJ_SUCCESS = 19;   { deletion of an object succeeded on the device. uParam is a pointer to SDREQUEST (with (lpbData, cbData) representing the volume ID) }
+   RSC_READ_OBJ_FAILED = 20;   { failed to read an object from the device. uParam is the HRESULT code }
+   RSC_TIME_CHANGED = 21;   { System time has changed, this is called only once. }
+   RSC_BEGIN_BACKUP = 22;   { Backup is about to start. }
+   RSC_END_BACKUP = 23;   { Backup has ended. }
+   RSC_BEGIN_RESTORE = 24;   { Restore is about to start. }
+   RSC_PREPARE_SYNC_FLD = 26;   { Prepare to sync one specific folder whether or not any objects of the type are dirty. hFolder is a pointer to the object name that will be synced.  }
+
+{ code for QueryDevice }
+   QDC_SEL_DEVICE = 1;   { Selected device info, *ppvData points to DEVINFO }
+   QDC_CON_DEVICE = 2;   { Connected device info, *ppvData points to DEVINFO }
+   QDC_SEL_DEVICE_KEY = 3;   { get a registry key that can be used to store selected device specific settings. }
+{ *ppvData points to HKEY, caller must close reg key when its usage is over }
+   QDC_CON_DEVICE_KEY = 4;   { get a registry key that can be used to store connnected device specific settings. }
+{ *ppvData points to HKEY, caller must close reg key when its usage is over }
+   QDC_SYNC_DATA = 5;   { get or set custom sync data from the device, *ppvData points to SDREQUEST }
+   INF_OVERRIDE = $0001000;   { used for OnItemNotify, override the default action of "delete wins over change" }
+
+   RNC_CREATED = 1;
+   RNC_MODIFIED = 2;
+   RNC_DELETED = 3;
+   RNC_SHUTDOWN = 4;
+   RNC_IDLE = 5;
+{$ifndef UNDER_CE}
+   SCF_SINGLE_THREAD = $00000001;   { set if the implementation only supports single thread operation. }
+   SCF_SIMULATE_RTS = $00000002;   { set if the implementation wants to simulate detection of real-time change/deletes }
+
+{ flags for uParam of IReplStore::ReportStatus }
+   PSA_RESET_INTERRUPT = $00000001;   { this flag is set if we're clearing the interrupt state (ie. we go back to normal operation) }
+   PSA_SYS_SHUTDOWN = $00000002;   { Windows is shutting down }
+{ Actions for Setup }
+   RSTP_SETUP = $0001;   { New setup }
+   RSTP_CREATE = $0002;   { New profile }
+   RSTP_RENAME = $0003;   { Rename profile }
+   RSTP_DELETE = $0004;   { Delete profile }
+   
+   ISF_SELECTED_DEVICE = $00000001;
+   ISF_REMOTE_CONNECTED = $00000002;
+{$endif UNDER_CE}
+
+{========================= IReplNotify ============================== }
+type
+   tagDevInfo = record
+        pid : DWORD;                             { device ID }
+        szName : array[0..(MAX_PATH)-1] of char; { device name }
+        szType : array[0..79] of char;           { device type }
+        szPath : array[0..(MAX_PATH)-1] of char; { device path }
+     end;
+   DEVINFO = tagDevInfo;
+   PDEVINFO = ^DEVINFO;
+   PPDEVINFO = ^PDEVINFO;
+
+{ a structure used to get/set custom sync. data from/to the device }
+{ the object type where this data is coming from }
+{ TRUE if sending data down and FALSE if getting data up }
+{ for getting data from the device, this code must be less than 8 }
+   PSDREQUEST = ^SDREQUEST;
+   SDREQUEST = record
+        szObjType : OBJTYPENAME;
+        fSet : BOOL;
+        uCode : UINT;
+        lpbData : pointer;
+        cbData : UINT;
+     end;
+   PPSDREQUEST = ^PSDREQUEST;
+   
+{$ifndef UNDER_CE}
+   HREPLOBJ = pointer;
+   HREPLITEM = pointer;
+   HREPLFLD = pointer;
+   PHREPLOBJ = ^HREPLOBJ;
+   PHREPLITEM = ^HREPLITEM;
+   PHREPLFLD = ^HREPLFLD;
+   
+   IReplStore = interface;
+{$endif}
+   IReplNotify = interface;
+
+   _tagReplSetup = record
+        cbStruct : UINT;
+        fRead : BOOL;
+        dwFlags : DWORD;
+        hr : HRESULT;
+        szObjType : OBJTYPENAME;
+        pNotify : IReplNotify;
+        oid : DWORD;
+        oidNew : DWORD;
+{$ifndef UNDER_CE}
+        pStore : IReplStore;
+        hFolder : HREPLFLD;
+        hItem : HREPLITEM;
+{$endif}
+        lpbVolumeID : PBYTE;
+        cbVolumeID : UINT;
+     end;
+   REPLSETUP = _tagReplSetup;
+   PREPLSETUP = ^REPLSETUP;
+   PPREPLSETUP = ^PREPLSETUP;
+   
+  IReplNotify = interface(IUnknown)
+{$ifndef UNDER_CE}
+    function SetStatusText(lpszText: LPSTR): HRESULT; stdcall; // lpszText can have special syntax, see programmer's guide
+    function GetWindow(uFlags: UINT): HWND; stdcall;
+    function OnItemNotify(uCode: UINT; lpszProgId, lpszName: LPSTR; hItem: HREPLITEM; ulFlags: ULONG): HRESULT; stdcall;
+    function QueryDevice(uCode: UINT; ppvData: pointer): HRESULT; stdcall;
+{$endif}
+    // Internal use only
+    function OnItemCompleted(pSetup: PREPLSETUP): HRESULT; stdcall;
+  end;
+
+{$ifndef UNDER_CE}
+   tagStoreInfo = record
+        cbStruct : UINT;
+        uFlags : UINT;
+        szProgId : array[0..255] of TCHAR;
+        szStoreDesc : array[0..199] of TCHAR;
+        uTimerRes : UINT;
+        cbMaxStoreId : UINT;
+        cbStoreId : UINT;
+        lpbStoreId : PBYTE;
+     end;
+   STOREINFO = tagStoreInfo;
+   PSTOREINFO = ^STOREINFO;
+   PPSTOREINFO = ^PSTOREINFO;
+
+   tagObjUIData = record
+        cbStruct : UINT;
+        hIconLarge : HICON;
+        hIconSmall : HICON;
+        szName : array[0..(MAX_PATH)-1] of char;
+        szSyncText : array[0..(MAX_PATH)-1] of char;
+        szTypeText : array[0..79] of char;
+        szPlTypeText : array[0..79] of char;
+     end;
+   OBJUIDATA = tagObjUIData;
+   POBJUIDATA = ^OBJUIDATA;
+   PPOBJUIDATA = ^POBJUIDATA;
+   TReplDialogs = (OPTIONS_DIALOG);
+
+{========================= IEnumReplItem ============================== }
+  IEnumReplItem = interface(IUnknown)
+    ['{a417bc0e-7be1-11ce-ad82-00aa006ec559}']
+    function Next(celt: ULONG; var hItem: HREPLITEM; var celtFetched: ULONG): HRESULT; stdcall;
+    function Skip(celt: ULONG): HRESULT; stdcall;
+    function Reset: HRESULT; stdcall;
+    function Clone(var enum: IEnumReplItem): HRESULT; stdcall;
+    function GetFolderHandle: HREPLFLD; stdcall;
+  end;
+
+   tagConfInfo = record
+        cbStruct : UINT;
+        hFolder : HREPLFLD;
+        hLocalItem : HREPLITEM;
+        hRemoteItem : HREPLITEM;
+        szLocalName : OBJTYPENAME;
+        szLocalDesc : array[0..511] of TCHAR;
+        szRemoteName : OBJTYPENAME;
+        szRemoteDesc : array[0..511] of TCHAR;
+     end;
+   CONFINFO = tagConfInfo;
+   PCONFINFO = ^CONFINFO;
+   PPCONFINFO = ^PCONFINFO;
+   
+{========================= IReplSetup ============================== }
+  IReplSetup = interface(IUnknown)
+    ['{60178ec0-c670-11d0-837a-0000f80220b9}']
+    function Setup(hwndParent: HWND; dwDeviceId: DWORD; wAction: WORD): HRESULT; stdcall;
+  end;
+  
+//========================= IReplStore ==============================
+  IReplStore = interface(IUnknown)
+    ['{a417bc0f-7be1-11ce-ad82-00aa006ec559}']
+    // *** IReplStore methods ***
+    function Initialize(Notify: IReplNotify; uFlags: UINT): HRESULT; stdcall;
+    function GetStoreInfo(StoreInfo: PSTOREINFO): HRESULT; stdcall;
+    function ReportStatus(hFld: HREPLFLD; hItem: HREPLITEM; uStatus, uParam: UINT): HRESULT; stdcall;
+    function CompareStoreIDs(lpbID1: pointer; cbID1: UINT; lpbID2: pointer; cbID2: UINT): LongInt; stdcall;
+    // Item related routines
+    function CompareItem(hItem1, hItem2: HREPLITEM): LongInt; stdcall;
+    function IsItemChanged(hFld: HREPLFLD; hItem, hItemComp: HREPLITEM): BOOL; stdcall;
+    function IsItemReplicated(hFld: HREPLFLD; hItem: HREPLITEM): BOOL; stdcall;
+    procedure UpdateItem(hFld: HREPLFLD; hItemDst, hItemSrc: HREPLITEM); stdcall;
+    // Folder related routines
+    function GetFolderInfo(lpszObjType: LPSTR; var phFld: HREPLFLD; var ppObjHandler: IUnknown): HRESULT; stdcall;
+    function IsFolderChanged(hFld: HREPLFLD; var pfChanged: BOOL): HRESULT; stdcall;
+    // Enumeration of folders
+    function FindFirstItem(hFld: HREPLFLD; var phItem: HREPLITEM; var pfExist: BOOL): HRESULT; stdcall;  // get first object the folder
+    function FindNextItem(hFld: HREPLFLD; var phItem: HREPLITEM; var pfExist: BOOL): HRESULT; stdcall;   // get next object the folder
+    function FindItemClose(hFld: HREPLFLD): HRESULT; stdcall;                                            // done enumerating
+    // Object management routines
+    function ObjectToBytes(hObject:HREPLOBJ; lpb:pointer):UINT; stdcall;
+    function BytesToObject(lpb:pointer; cb:UINT):HREPLOBJ; stdcall;
+    procedure FreeObject(hObject:HREPLOBJ); stdcall;
+    function CopyObject(hObjSrc:HREPLOBJ; hObjDest:HREPLOBJ):BOOL; stdcall;
+    function IsValidObject(hFld:HREPLFLD; hObject:HREPLITEM; uFlags:UINT): HRESULT; stdcall;
+    // UI related routines
+    function ActivateDialog(uidDialog:TReplDialogs; hwndParent:HWND; hFld:HREPLFLD; penumItem:IEnumReplItem): HRESULT; stdcall;
+    function GetObjTypeUIData(hFld:HREPLFLD; pData:POBJUIDATA): HRESULT; stdcall;
+    function GetConflictInfo(pConfInfo:PCONFINFO): HRESULT; stdcall;
+    function RemoveDuplicates(lpszObjType:LPSTR; uFlags:UINT): HRESULT; stdcall;
+  end;
+{$endif UNDER_CE}
+
+{=========== Section for object serializing & deserializing interfaces ========== }
+const
+   RSF_CONFLICT_OBJECT = $00000001;   { this is about getting/writting a conflicting object }
+   RSF_NEW_OBJECT = $00000002;   { this is a new object to be written }
+   RSF_DUPLICATED_OBJECT = $00000004;   { the object is an exact duplicate of an existing object }
+   RSF_COMBINE = $00000008;   { the object is being writen to desktop during a combine operation }
+   RSF_SYNC_DEVICE_ONLY = $00000010;   { the object should be sync'ed from device to desktop only }
+   RSF_SYNC_DESKTOP_ONLY = $00000020;   { the object should be sync'ed from desktop to device only }
+   RSF_UPDATED_HANDLE = $00000040;   { this is a new object, but the oid already exists (eg, file rename) }
+   RSF_DISCARDED_OBJ = $00000080;   { used in DeleteObj. indicates the object is deleted as a result of RERR_DISCARD being returned by SetPacket }
+   RSF_NEW_VOLUME = $00000100;   { used by ActiveSync manager only. }
+   RSF_AUTO_COMBINE = $00000200;   { the object is being written to the desktop, similar to RSF_COMBINE except there were no items on the desktop to combine with }
+   RSF_RESERVED1 = $00100000;   { reserved by ActiveSync manager: DO NOT USE THESE }
+   RSF_RESERVED2 = $00200000;   
+   RSF_RESERVED3 = $00400000;   
+   RSF_RESERVED4 = $00800000;   
+   
+{========================= IReplObjHandler ============================== }
+{ Specifies the interface for replication object handler }
+{ (object serializer/deserializer) }
+
+type
+  IReplObjHandler = interface(IUnknown)
+    //  Called everytime when an object is about to be serialized/deserialized
+    function Setup(pSetup: PREPLSETUP): HRESULT; stdcall;
+    //  Called everytime when it's the time to clean up the serializer/deserializer for the object
+    function Reset(pSetup: PREPLSETUP): HRESULT; stdcall;
+    // A request to get a data packet (serialize the object)
+    // handler should pass back the buffer along with the size bytes
+    function GetPacket(var lpbData: pointer; var cbData: DWORD; cbRecommend: DWORD): HRESULT; stdcall;
+    // A request to set a data packet (deserialize the byte stream)
+    function SetPacket(lpbData: pointer; cbData: DWORD): HRESULT; stdcall;
+    // A request to delete the given object
+    function DeleteObj(pSetup: PREPLSETUP): HRESULT; stdcall;
+  end;
+
+   tagObjTypeInfo = record
+        cbStruct : UINT;
+        szObjType : OBJTYPENAMEW;
+        uFlags : UINT;
+        szName : array[0..79] of WCHAR;
+        cObjects : UINT;
+        cbAllObj : UINT;
+        ftLastModified : FILETIME;
+     end;
+   OBJTYPEINFO = tagObjTypeInfo;
+   POBJTYPEINFO = ^OBJTYPEINFO;
+   PPOBJTYPEINFO = ^POBJTYPEINFO;
+
+{$ifdef UNDER_CE}
+const
+   ONF_FILE = $00000001;   
+   ONF_DIRECTORY = $00000002;   
+   ONF_DATABASE = $00000004;   
+   ONF_RECORD = $00000008;   
+   ONF_CHANGED = $00000010;   { set if the file system object is changed }
+   ONF_DELETED = $00000020;   { set if the file system object is deleted }
+   ONF_CLEAR_CHANGE = $00000040;   { client should clear the change bit for the object whose object id is pointed at by poid }
+   ONF_CALL_BACK = $00000080;   { Output, client asks server to call ObjectNotify 2 sec. later. (ObjectNotify is callback  }
+{ function, see definition of POBJNOTIFYPROC) }
+   ONF_CALLING_BACK = $00000100;   { set if this call is a result of ONF_CALL_BACK being set earlier }
+{  Definitions of cOidChg, cOidDel and poid
+    in all cases, poid points to a list of object id's
+
+1) when ONF_CHANGED is set, cOidChg is the number of object id's in the list that should be synchronized. cOidDel is not used
+2) when ONF_DELETED is set, cOidChg is not used, cOidDel is the number of deleted object id's in the list that should be synchronized
+3) when both ONF_CHANGED & ONF_DELETED is not set,
+    cOidChg is count of object id's in the first part of the list for objects that are changed
+    cOidDel is count of object id's in the later part of the list for objects that are not changed
+
+ }
+type
+   tagObjNotify = record
+        cbStruct : UINT;
+        szObjType : OBJTYPENAME;
+        uFlags : UINT;
+        uPartnerBit : UINT;
+        oidObject : CEOID;
+        oidInfo : CEOIDINFO;
+        cOidChg : UINT;
+        cOidDel : UINT;
+        poid : PUINT;
+        lpbVolumeID : LPBYTE;
+        cbVolumeID : UINT;
+     end;
+   OBJNOTIFY = tagObjNotify;
+   POBJNOTIFY = ^OBJNOTIFY;
+   PPOBJNOTIFY = ^POBJNOTIFY;
+
+const
+   FO_MORE_VOLUME = $00000001;   { set by ActiveSync module. there are more volumes of objects }
+   FO_DONE_ONE_VOL = $00000002;   { set by ActiveSync manager, let ActiveSync module to free up the memory allocated in FINDOBJINFO }
+
+type
+   tagFindObjInfo = record
+        uFlags : UINT;
+        szObjType : OBJTYPENAME;
+        poid : PUINT;
+        cUnChg : UINT;
+        cChg : UINT;
+        lpbVolumeID : LPBYTE;
+        cbVolumeID : UINT;
+        lpvUser : LPVOID;
+     end;
+   FINDOBJINFO = tagFindObjInfo;
+   PFINDOBJINFO = ^FINDOBJINFO;
+   PPFINDOBJINFO = ^PFINDOBJINFO;
+
+{ Functions exported by client's device module }
+{ for Function: InitObjType }
+   PINITOBJPROC = function (lpszObjType:LPWSTR; var ppObjHandler:IReplObjHandler; uPartnerBit:UINT):BOOL;cdecl;
+{ for Function: ObjectNotify }
+   POBJNOTIFYPROC = function (_para1:POBJNOTIFY):BOOL;cdecl;
+{ for Function: GetObjTypeInfo }
+   PGETOBJTYPEINFO = function (_para1:POBJTYPEINFO):BOOL;cdecl;
+{ for Function: ReportStatus }
+   PREPORTSTATUS = function (lpszObjType:LPWSTR; uCode:UINT; uParam:UINT):BOOL;cdecl;
+{ for Function: FindObjects }
+   PFINDOBJECTS = function (_para1:PFINDOBJINFO):HRESULT;cdecl;
+{ for Function: SyncData }
+   PSYNCDATA = function (psd:PSDREQUEST):HRESULT;cdecl;
+
+{$endif UNDER_CE}
+
+const
+   SZ_OUTSTORE_PROG_ID = 'MS.WinCE.OutLook';   
+   SZ_SCDSTORE_PROG_ID = 'MS.WinCE.SchedulePlus';   
+   SZ_APPT = 'Appointment';   
+   SZ_CONTACT = 'Contact';   
+   SZ_TASK = 'Task';   
+   SZ_FILE = 'File';   
+   SZ_INBOX = 'Inbox';   
+   SZ_CHANNELS = 'Channel';
+   
+implementation
+
+end.

+ 18 - 27
rtl/wince/wininc/commctrl.inc → packages/winceunits/src/commctrl.pp

@@ -1,6 +1,6 @@
 {
     This file is part of the Free Pascal run time library.
-    Copyright (c) 2006 Free Pascal development team.
+    Copyright (c) 2006-2008 Free Pascal development team.
 
     See the file COPYING.FPC, included in this distribution,
     for details about the copyright.
@@ -80,7 +80,13 @@
             33    Str_SetPtrW
 }
 
-{$ifdef read_interface}
+unit commctrl;
+
+interface
+
+uses windows;
+
+{$calling cdecl}
 
 //*****************************************************************************
 // consts
@@ -170,19 +176,6 @@ const
   NM_KEYDOWN            =  (NM_FIRST-15);
   NM_RECOGNIZEGESTURE   =  (NM_FIRST-50);
 
-  { Header control  }
-  HDM_DELETEITEM = 4610;
-  HDM_GETITEMW = 4619;
-  HDM_INSERTITEMW = 4618;
-  HDM_SETITEMW = 4620;
-
-  HDM_GETITEM = HDM_GETITEMW;
-  HDM_INSERTITEM = HDM_INSERTITEMW;
-  HDM_SETITEM = HDM_SETITEMW;
-
-  HDM_GETITEMCOUNT = 4608;
-  HDM_HITTEST = 4614;
-  HDM_LAYOUT = 4613;
   { Header control notifications  }
   HDN_BEGINTRACKW = HDN_FIRST-26;
   HDN_DIVIDERDBLCLICKW = HDN_FIRST-25;
@@ -430,7 +423,7 @@ type
 
   tagNMDATETIMEWMKEYDOWNA = record
     nmhdr     : NMHDR;
-    nVirtKey  : integer;
+    nVirtKey  : longint;
     pszFormat : LPCSTR;
     st        : SYSTEMTIME;
   end;
@@ -440,7 +433,7 @@ type
 
   tagNMDATETIMEWMKEYDOWNW = record
     nmhdr     : NMHDR;
-    nVirtKey  : integer;
+    nVirtKey  : longint;
     pszFormat : LPCWSTR;
     st        : SYSTEMTIME;
   end;
@@ -529,7 +522,7 @@ type
   TBBUTTONINFO=TBBUTTONINFOW;
   TTBButtonInfo=TBBUTTONINFO;
 
-  tagNMCUSTOMDRAWINFO = packed record
+  tagNMCUSTOMDRAWINFO = record
     hdr: TNMHdr;
     dwDrawStage: DWORD;
     hdc: HDC;
@@ -541,19 +534,19 @@ type
   PNMCustomDraw = ^TNMCustomDraw;
   TNMCustomDraw = tagNMCUSTOMDRAWINFO;
   
-  tagNMLVCUSTOMDRAW = packed record
+  tagNMLVCUSTOMDRAW = record
     nmcd: TNMCustomDraw;
     clrText: COLORREF;
     clrTextBk: COLORREF;
-    iSubItem: Integer;
+    iSubItem: longint;
   end;
   PNMLVCustomDraw = ^TNMLVCustomDraw;
   TNMLVCustomDraw = tagNMLVCUSTOMDRAW;
   
-  tagNMLVODSTATECHANGE = packed record
+  tagNMLVODSTATECHANGE = record
     hdr: TNMHdr;
-    iFrom: Integer;
-    iTo: Integer;
+    iFrom: longint;
+    iTo: longint;
     uNewState: UINT;
     uOldState: UINT;
   end;
@@ -678,9 +671,7 @@ function CommandBar_AddToolTips(hwndCB: HWND; cbToolTips : UINT; lpToolTipsStrin
 function CommandBands_Height(hwndCmdBands : HWND) : UINT;
 function CommandBands_IsVisible(hwndCmdBands : HWND) : BOOL;
 
-{$endif read_interface}
-
-{$ifdef read_implementation}
+implementation
 
 procedure CommandBar_Destroy(hwndCB : HWND);
 begin
@@ -717,4 +708,4 @@ begin
    CommandBands_IsVisible:=IsWindowVisible(hwndCmdBands);
 end;
 
-{$endif read_implementation}
+end.

+ 9 - 9
rtl/wince/wininc/commdlg.inc → packages/winceunits/src/commdlg.pp

@@ -1,6 +1,6 @@
 {
     This file is part of the Free Pascal run time library.
-    Copyright (c) 2005 Free Pascal development team.
+    Copyright (c) 2005-2008 Free Pascal development team.
 
     See the file COPYING.FPC, included in this distribution,
     for details about the copyright.
@@ -14,8 +14,13 @@
 {  Declarations for comdlg WinCE API
 
 }
+unit commdlg;
 
-{$ifdef read_interface}
+interface
+
+uses windows;
+
+{$calling cdecl}
 
 //*****************************************************************************
 // consts
@@ -53,10 +58,7 @@ function PageSetupDlg(_para1:LPPAGESETUPDLGW):WINBOOL; external ComdlgDLL name '
 function PageSetupDlgW(_para1:LPPAGESETUPDLGW):WINBOOL; external ComdlgDLL name 'PageSetupDlgW';
 function PrintDlg(_para1:LPPRINTDLG):WINBOOL; external ComdlgDLL name 'PrintDlg';
 
-
-{$endif read_interface}
-
-{$ifdef read_implementation}
+implementation
 
 function CommDlg_OpenSave_GetSpecA(_hdlg:HWND;_psz:LPSTR;_cbmax : longint) : LRESULT;
 begin
@@ -123,6 +125,4 @@ begin
   CommDlg_OpenSave_SetDefExt:=SNDMSG(_hdlg,CDM_SETDEFEXT,0,LPARAM(_pszext));
 end;
 
-{$endif read_implementation}
-
-
+end.

+ 172 - 0
packages/winceunits/src/gpsapi.pp

@@ -0,0 +1,172 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2008 Free Pascal development team.
+
+    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.
+
+ **********************************************************************}
+//
+// GPS Intermediate Driver API
+//
+// gpsapi.h
+//
+//*********************************************************
+
+//
+// Microsoft Windows Mobile 5.0 for PocketPC SDK.
+//
+
+unit GPSApi;
+
+{$CALLING cdecl}
+
+interface
+
+uses Windows;
+
+const
+      GPS_MAX_SATELLITES    = 12;
+      GPS_MAX_PREFIX_NAME   = 16;
+      GPS_MAX_FRIENDLY_NAME = 64;
+
+      GPS_VERSION_1         = 1;
+      GPS_VERSION_CURRENT   = GPS_VERSION_1;
+
+type
+     GPS_FIX_TYPE = (GPS_FIX_UNKNOWN := 0,
+                     GPS_FIX_2D,
+                     GPS_FIX_3D);
+
+     GPS_FIX_SELECTION = (GPS_FIX_SELECTION_UNKNOWN := 0,
+                          GPS_FIX_SELECTION_AUTO,
+                          GPS_FIX_SELECTION_MANUAL);
+
+     GPS_FIX_QUALITY = (GPS_FIX_QUALITY_UNKNOWN := 0,
+                        GPS_FIX_QUALITY_GPS,
+                        GPS_FIX_QUALITY_DGPS);
+
+//
+// GPS_VALID_XXX bit flags in GPS_POSITION structure are valid.
+//
+const
+      GPS_VALID_UTC_TIME                                 = $00000001;
+      GPS_VALID_LATITUDE                                 = $00000002;
+      GPS_VALID_LONGITUDE                                = $00000004;
+      GPS_VALID_SPEED                                    = $00000008;
+      GPS_VALID_HEADING                                  = $00000010;
+      GPS_VALID_MAGNETIC_VARIATION                       = $00000020;
+      GPS_VALID_ALTITUDE_WRT_SEA_LEVEL                   = $00000040;
+      GPS_VALID_ALTITUDE_WRT_ELLIPSOID                   = $00000080;
+      GPS_VALID_POSITION_DILUTION_OF_PRECISION           = $00000100;
+      GPS_VALID_HORIZONTAL_DILUTION_OF_PRECISION         = $00000200;
+      GPS_VALID_VERTICAL_DILUTION_OF_PRECISION           = $00000400;
+      GPS_VALID_SATELLITE_COUNT                          = $00000800;
+      GPS_VALID_SATELLITES_USED_PRNS                     = $00001000;
+      GPS_VALID_SATELLITES_IN_VIEW                       = $00002000;
+      GPS_VALID_SATELLITES_IN_VIEW_PRNS                  = $00004000;
+      GPS_VALID_SATELLITES_IN_VIEW_ELEVATION             = $00008000;
+      GPS_VALID_SATELLITES_IN_VIEW_AZIMUTH               = $00010000;
+      GPS_VALID_SATELLITES_IN_VIEW_SIGNAL_TO_NOISE_RATIO = $00020000;
+
+
+//
+// GPS_DATA_FLAGS_XXX bit flags set in GPS_POSITION dwFlags field
+// provide additional information about the state of the query.
+// 
+
+// Set when GPS hardware is not connected to GPSID and we 
+// are returning cached data.
+const
+      GPS_DATA_FLAGS_HARDWARE_OFF = $00000001;
+
+//
+// GPS_POSITION contains our latest physical coordinates, the time,
+// and satellites used in determining these coordinates.
+//
+
+type
+     _GPS_POSITION = record
+	      dwVersion:DWORD;             // Current version of GPSID client is using.
+	      dwSize:DWORD;                // sizeof(_GPS_POSITION)
+
+      // Not all fields in the structure below are guaranteed to be valid.
+	     // Which fields are valid depend on GPS device being used, how stale the API allows
+	     // the data to be, and current signal.
+	     // Valid fields are specified in dwValidFields, based on GPS_VALID_XXX flags.
+	      dwValidFields:DWORD;
+
+      // Additional information about this location structure (GPS_DATA_FLAGS_XXX)
+	      dwFlags:DWORD;
+
+      //** Time related
+	      stUTCTime:SYSTEMTIME; 	//  UTC according to GPS clock.
+
+      //** Position + heading related
+       dblLatitude:double;            // Degrees latitude.  North is positive
+       dblLongitude:double;           // Degrees longitude.  East is positive
+       flSpeed:single;                // Speed in knots
+       flHeading:single;              // Degrees heading (course made good).  True North=0
+       dblMagneticVariation:double;   // Magnetic variation.  East is positive
+       flAltitudeWRTSeaLevel:single;  // Altitute with regards to sea level, in meters
+       flAltitudeWRTEllipsoid:single; // Altitude with regards to ellipsoid, in meters
+
+      //** Quality of this fix
+       FixQuality:GPS_FIX_QUALITY;             // Where did we get fix from?
+       FixType:GPS_FIX_TYPE;                   // Is this 2d or 3d fix?
+       SelectionType:GPS_FIX_SELECTION;        // Auto or manual selection between 2d or 3d mode
+       flPositionDilutionOfPrecision:single;   // Position Dilution Of Precision
+       flHorizontalDilutionOfPrecision:single; // Horizontal Dilution Of Precision
+       flVerticalDilutionOfPrecision:single;   // Vertical Dilution Of Precision
+
+      //** Satellite information
+       dwSatelliteCount:DWORD;                                               // Number of satellites used in solution
+       rgdwSatellitesUsedPRNs:array[0..GPS_MAX_SATELLITES-1] of DWORD;       // PRN numbers of satellites used in the solution
+
+       dwSatellitesInView:DWORD;                      	                      // Number of satellites in view.  From 0-GPS_MAX_SATELLITES
+       rgdwSatellitesInViewPRNs:array[0..GPS_MAX_SATELLITES-1] of DWORD;     // PRN numbers of satellites in view
+       rgdwSatellitesInViewElevation:array[0..GPS_MAX_SATELLITES-1] of DWORD;// Elevation of each satellite in view
+       rgdwSatellitesInViewAzimuth:array[0..GPS_MAX_SATELLITES-1] of DWORD;  // Azimuth of each satellite in view
+       rgdwSatellitesInViewSignalToNoiseRatio:array[0..GPS_MAX_SATELLITES-1] of DWORD; // Signal to noise ratio of each satellite in view
+     end;
+     GPS_POSITION = _GPS_POSITION;
+     PGPS_POSITION = ^GPS_POSITION;
+
+
+//
+// GPS_DEVICE contains information about the device driver and the
+// service itself and is returned on a call to GPSGetDeviceState().
+// States are indicated with SERVICE_STATE_XXX flags defined in service.h
+// 
+type
+     _GPS_DEVICE = record
+       dwVersion:DWORD;                                 // Current version of GPSID client is using.
+	      dwSize:DWORD;                                    // sizeof this structure
+	      dwServiceState:DWORD;                            // State of the GPS Intermediate Driver service.
+	      dwDeviceState:DWORD;                             // Status of the actual GPS device driver.
+	      ftLastDataReceived:FILETIME;                     // Last time that the actual GPS device sent information to the intermediate driver.
+       szGPSDriverPrefix:array[0..GPS_MAX_PREFIX_NAME-1] of WCHAR;    // Prefix name we are using to communicate to the base GPS driver
+	      szGPSMultiplexPrefix:array[0..GPS_MAX_PREFIX_NAME-1] of WCHAR; // Prefix name that GPS Intermediate Driver Multiplexer is running on
+	      szGPSFriendlyName:array[0..GPS_MAX_FRIENDLY_NAME-1] of WCHAR;  // Friendly name real GPS device we are currently using
+     end;
+     GPS_DEVICE = _GPS_DEVICE;
+     PGPS_DEVICE = ^_GPS_DEVICE;
+
+const
+      gpsapidll = 'gpsapi.dll';
+
+function GPSOpenDevice(hNewLocationData:HANDLE; hDeviceStateChange:HANDLE; const szDeviceName:PWCHAR; dwFlags:DWORD):HANDLE; external gpsapidll name 'GPSOpenDevice';
+
+function GPSCloseDevice(hGPSDevice:HANDLE):DWORD; external gpsapidll name 'GPSCloseDevice';
+
+function GPSGetPosition(hGPSDevice:HANDLE; pGPSPosition:PGPS_POSITION; dwMaximumAge:DWORD; dwFlags:DWORD):DWORD; external gpsapidll name 'GPSGetPosition';
+
+function GPSGetDeviceState(pGPSDevice:PGPS_DEVICE):DWORD; external gpsapidll name 'GPSGetDeviceState';
+
+implementation
+
+end.

+ 0 - 0
rtl/wince/gx.pp → packages/winceunits/src/gx.pp


+ 10 - 8
rtl/wince/wininc/iphlpapi.inc → packages/winceunits/src/iphlpapi.pp

@@ -1,6 +1,6 @@
 {
     This file is part of the Free Pascal run time library.
-    Copyright (c) 2006 Free Pascal development team.
+    Copyright (c) 2006-2008 Free Pascal development team.
 
     See the file COPYING.FPC, included in this distribution,
     for details about the copyright.
@@ -78,7 +78,13 @@
                   UnenableRouter
 }
 
-{$ifdef read_interface}
+unit iphlpapi;
+
+interface
+
+uses windows;
+
+{$calling cdecl}
 
 //*****************************************************************************
 // consts
@@ -164,10 +170,6 @@ type
 function GetNumberOfInterfaces(var dwNumIf : DWORD): DWORD; external IpHlpApiDLL name 'GetNumberOfInterfaces';
 function GetAdaptersInfo( pAdapterInfo : PIP_ADAPTER_INFO; var OutBufLen : ULONG): DWORD; external IpHlpApiDLL name 'GetAdaptersInfo';
 
-{$endif read_interface}
-
-{$ifdef read_implementation}
-
-{$endif read_implementation}
-
+implementation
 
+end.

+ 206 - 198
rtl/wince/wininc/notify.inc → packages/winceunits/src/notify.pp

@@ -1,198 +1,206 @@
-{
-    This file is part of the Free Pascal run time library.
-    Copyright (c) 2007 Free Pascal development team.
-
-    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.
-
- **********************************************************************
-
-  Automatically converted by H2Pas 1.0.0 from notify.h
-  The following command line parameters were used:
-    -d
-    -c
-    -w
-    notify.h
-}
-
-{$ifdef read_interface}
-
-const
-   NOTIFICATION_EVENT_NONE = 0;   
-   NOTIFICATION_EVENT_TIME_CHANGE = 1;   
-   NOTIFICATION_EVENT_SYNC_END = 2;   
-   NOTIFICATION_EVENT_ON_AC_POWER = 3;   
-   NOTIFICATION_EVENT_OFF_AC_POWER = 4;   
-   NOTIFICATION_EVENT_NET_CONNECT = 5;   
-   NOTIFICATION_EVENT_NET_DISCONNECT = 6;   
-   NOTIFICATION_EVENT_DEVICE_CHANGE = 7;   
-   NOTIFICATION_EVENT_IR_DISCOVERED = 8;   
-   NOTIFICATION_EVENT_RS232_DETECTED = 9;   
-   NOTIFICATION_EVENT_RESTORE_END = 10;   
-   NOTIFICATION_EVENT_WAKEUP = 11;   
-   NOTIFICATION_EVENT_TZ_CHANGE = 12;   
-   NOTIFICATION_EVENT_MACHINE_NAME_CHANGE = 13;   
-   NOTIFICATION_EVENT_LAST = NOTIFICATION_EVENT_MACHINE_NAME_CHANGE;   
-{
- * String passed on the command line when an app is run as the result
- * of a call to CeRunAppAtTime().
-  }
-   APP_RUN_AT_TIME = 'AppRunAtTime';   
-{
- * Prefix of the command line when the user requests to run the application
- * that "owns" a notification.  It is followed by a space, and the
- * stringized version of the notification handle.
-  }
-   APP_RUN_TO_HANDLE_NOTIFICATION = 'AppRunToHandleNotification';   
-{
- * Strings passed on the command line when an event occurs that the
- * app has requested via CeRunAppAtEvent.  Note that some of these
- * strings will be used as the command line *prefix*, since the rest
- * of the command line will be used as a parameter.
-  }
-   APP_RUN_AFTER_TIME_CHANGE = 'AppRunAfterTimeChange';   
-   APP_RUN_AFTER_SYNC = 'AppRunAfterSync';   
-   APP_RUN_AT_AC_POWER_ON = 'AppRunAtAcPowerOn';   
-   APP_RUN_AT_AC_POWER_OFF = 'AppRunAtAcPowerOff';   
-   APP_RUN_AT_NET_CONNECT = 'AppRunAtNetConnect';   
-   APP_RUN_AT_NET_DISCONNECT = 'AppRunAtNetDisconnect';   
-   APP_RUN_AT_DEVICE_CHANGE = 'AppRunDeviceChange';   
-   APP_RUN_AT_IR_DISCOVERY = 'AppRunAtIrDiscovery';   
-   APP_RUN_AT_RS232_DETECT = 'AppRunAtRs232Detect';   
-   APP_RUN_AFTER_RESTORE = 'AppRunAfterRestore';   
-   APP_RUN_AFTER_WAKEUP = 'AppRunAfterWakeup';   
-   APP_RUN_AFTER_TZ_CHANGE = 'AppRunAfterTzChange';   
-   APP_RUN_AFTER_EXTENDED_EVENT = 'AppRunAfterExtendedEvent';   
-{
- * Strings passed on the end of the command line for the event,
- * NOTIFICATION_EVENT_DEVICE_CHANGE.  The general form will be
- * "/op devicename" for instance "/ADD COM2:"
-  }
-   NOTIFY_DEVICE_ADD = '/ADD';   
-   NOTIFY_DEVICE_REMOVE = '/REMOVE';   
-{
- * @struct CE_USER_NOTIFICATION | User Notification Structure
- *
- * @comm  This structure is passed in to <f CeGetUserNotificationPreferences>.
- * Initial settings are used to populate the dialog.  If the function
- * returns TRUE, the returned settings should be saved, and considered when
- * calling <f CeSetUserNotification>.  Settings for hardware not on the
- * current device will be ignored.
- *
- * It is also used when calling <f CeSetUserNotification>, to describe
- * what should happen when the notification time is reached.  
-  }
-{ PUN_* flags.  Flags not valid on a given }
-{ hardware platform will be ignored. }
-   PUN_LED = 1;   {@flag PUN_LED | LED flag.  Set if the LED should be }
-{ flashed when the notification occurs. }
-   PUN_VIBRATE = 2;   {@flag PUN_VIBRATE | Vibrate flag.  Set if the device should }
-{ be vibrated. }
-   PUN_DIALOG = 4;   {@flag PUN_DIALOG | Dialog flag.  Set if a dialog should be }
-{ displayed (the app must provide title and text }
-{ when calling <f CeSetUserNotification>). }
-   PUN_SOUND = 8;   {@flag PUN_SOUND | Sound flag.  Set if the sound specified }
-{ in pwszSound should be played. }
-   PUN_REPEAT = 16;   {@flag PUN_REPEAT | Sound repeat flag.  Set if the sound }
-{ specified in pwszSound should be repeated progressively. }
-   PUN_PRIVATE = 32;   {@flag PUN_PRIVATE | Dialog box z-order flag.  Set if the }
-{ notification dialog box should come up behind the password. }
-{@field Action Flags.  Any combination of the }
-{@field Dialog Title.  Required if PUN_DIALOG is set, ignored }
-{ otherwise. Ignored by CeGetUserNotificationPreferences(). }
-{@field Dialog Text.  Required if PUN_DIALOG is set, ignored }
-{ otherwise. Ignored by CeGetUserNotificationPreferences(). }
-{@field Sound string as supplied to sndPlaySound. }
-{ CeSetUserNotification() ignores it if PUN_SOUND is not set. }
-{@field Max Sound string length.  Specifies the }
-{ maximum length of the string that can be copied }
-{ into the pwszSound buffer by }
-{ CeGetUserNotificationPreferences(). }
-{ Should be at least MAX_PATH * sizeof(TCHAR). }
-{ Ignored by CeSetUserNotification(). }
-{	union  }
-{@field Reserved.  Must be NULL or a pointer to }
-{ platform-defined expansion structure. }
-{ The first dword of the structure }
-{ indicates the size of the structure. }
-{	    void *pExpansion; }
-{	; }
-type
-   UserNotificationType = record
-        ActionFlags : DWORD;
-        pwszDialogTitle : ^TCHAR;
-        pwszDialogText : ^TCHAR;
-        pwszSound : ^TCHAR;
-        nMaxSound : DWORD;
-        dwReserved : DWORD;
-     end;
-   CE_USER_NOTIFICATION = UserNotificationType;
-   PCE_USER_NOTIFICATION = ^UserNotificationType;
-
-const
-   CNT_EVENT = 1;   {@flag CNT_EVENT  | System event notification }
-   CNT_TIME = 2;   {@flag CNT_TIME   | Time-based notification }
-   CNT_PERIOD = 3;   {@flag CNT_PERIOD | Time-based notification is active for }
-{ time period between stStart and stEnd }
-   CNT_CLASSICTIME = 4;   {@flag CNT_CLASSICTIME | equivalent to using (obsolete) }
-{ CeSetUserNotification function - standard command line is }
-{ supplied. lpszArguments must be NULL }
-{@field dwType Notification type }
-{@field dwEvent - type of event if dwType == CNT_EVENT }
-{@field lpszApplication - name of application to execute }
-{@field lpszArguments   - command line (sans app name) }
-{@field stStartTime - begin of notification period }
-{@field stEndTime   - end of notification period }
-type
-   UserNotificationTrigger = record
-        dwSize : DWORD;
-        dwType : DWORD;
-        dwEvent : DWORD;
-        lpszApplication : ^TCHAR;
-        lpszArguments : ^TCHAR;
-        stStartTime : SYSTEMTIME;
-        stEndTime : SYSTEMTIME;
-     end;
-   CE_NOTIFICATION_TRIGGER = UserNotificationTrigger;
-   PCE_NOTIFICATION_TRIGGER = ^UserNotificationTrigger;
-{ }
-{	Application name can be prefixed with the following strings to specify different }
-{	named objects rather than an application. The action varies depending on the prefix. }
-{  In case of named event, the event gets signaled. }
-{ }
-
-const
-   NAMED_EVENT_PREFIX_TEXT = '\\.\Notifications\NamedEvents\';
-   NAMED_EVENT_PREFIX_LEN = 30;
-   CNS_SIGNALLED = 1;
-
-type
-   UserNotificationInfoHeader = record
-        hNotification : HANDLE;
-        dwStatus : DWORD;
-        pcent : ^CE_NOTIFICATION_TRIGGER;
-        pceun : ^CE_USER_NOTIFICATION;
-     end;
-   CE_NOTIFICATION_INFO_HEADER = UserNotificationInfoHeader;
-   PCE_NOTIFICATION_INFO_HEADER = ^UserNotificationInfoHeader;
-{ Declarations of User Notification APIs.  }
-{ C++ extern C conditionnal removed }
-{__cplusplus }
-{ @CESYSGEN IF GWES_NOTIFY }
-
-function CeGetUserNotificationPreferences(hWndParent:HWND; lpNotification:PCE_USER_NOTIFICATION):BOOL;external KernelDLL name 'CeGetUserNotificationPreferences';
-function CeSetUserNotificationEx(hNotification:HANDLE; pcnt:PCE_NOTIFICATION_TRIGGER; pceun:PCE_USER_NOTIFICATION):HANDLE;external KernelDLL name 'CeSetUserNotificationEx';
-function CeClearUserNotification(hNotification:HANDLE):BOOL;external KernelDLL name 'CeClearUserNotification';
-function CeGetUserNotification(hNotification:HANDLE; cBufferSize:DWORD; pcBytesNeeded:LPDWORD; pBuffer:LPBYTE):BOOL;external KernelDLL name 'CeGetUserNotification';
-function CeGetUserNotificationHandles(rghNotifications:PHANDLE; cHandles:DWORD; pcHandlesNeeded:LPDWORD):BOOL;external KernelDLL name 'CeGetUserNotificationHandles';
-{	Obsolete; provided to maintain compatibility only }
-function CeSetUserNotification(hNotification:HANDLE; pwszAppName:pTCHAR; var lpTime:SYSTEMTIME; lpUserNotification:PCE_USER_NOTIFICATION):HANDLE;external KernelDLL name 'CeSetUserNotification';
-function CeRunAppAtTime(pwszAppName:pTCHAR; var lpTime:SYSTEMTIME):BOOL;external KernelDLL name 'CeRunAppAtTime';
-function CeRunAppAtEvent(pwszAppName:pTCHAR; lWhichEvent:LONG):BOOL;external KernelDLL name 'CeRunAppAtEvent';
-function CeHandleAppNotifications(pwszAppName:pTCHAR):BOOL;external KernelDLL name 'CeHandleAppNotifications';
-
-{$endif read_interface}
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2007-2008 Free Pascal development team.
+
+    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.
+
+ **********************************************************************
+
+  Automatically converted by H2Pas 1.0.0 from notify.h
+  The following command line parameters were used:
+    -d
+    -c
+    -w
+    notify.h
+}
+
+unit notify;
+
+interface
+
+uses windows;
+
+{$calling cdecl}
+
+const
+   NOTIFICATION_EVENT_NONE = 0;   
+   NOTIFICATION_EVENT_TIME_CHANGE = 1;   
+   NOTIFICATION_EVENT_SYNC_END = 2;   
+   NOTIFICATION_EVENT_ON_AC_POWER = 3;   
+   NOTIFICATION_EVENT_OFF_AC_POWER = 4;   
+   NOTIFICATION_EVENT_NET_CONNECT = 5;   
+   NOTIFICATION_EVENT_NET_DISCONNECT = 6;   
+   NOTIFICATION_EVENT_DEVICE_CHANGE = 7;   
+   NOTIFICATION_EVENT_IR_DISCOVERED = 8;   
+   NOTIFICATION_EVENT_RS232_DETECTED = 9;   
+   NOTIFICATION_EVENT_RESTORE_END = 10;   
+   NOTIFICATION_EVENT_WAKEUP = 11;   
+   NOTIFICATION_EVENT_TZ_CHANGE = 12;   
+   NOTIFICATION_EVENT_MACHINE_NAME_CHANGE = 13;   
+   NOTIFICATION_EVENT_LAST = NOTIFICATION_EVENT_MACHINE_NAME_CHANGE;   
+{
+ * String passed on the command line when an app is run as the result
+ * of a call to CeRunAppAtTime().
+  }
+   APP_RUN_AT_TIME = 'AppRunAtTime';   
+{
+ * Prefix of the command line when the user requests to run the application
+ * that "owns" a notification.  It is followed by a space, and the
+ * stringized version of the notification handle.
+  }
+   APP_RUN_TO_HANDLE_NOTIFICATION = 'AppRunToHandleNotification';   
+{
+ * Strings passed on the command line when an event occurs that the
+ * app has requested via CeRunAppAtEvent.  Note that some of these
+ * strings will be used as the command line *prefix*, since the rest
+ * of the command line will be used as a parameter.
+  }
+   APP_RUN_AFTER_TIME_CHANGE = 'AppRunAfterTimeChange';   
+   APP_RUN_AFTER_SYNC = 'AppRunAfterSync';   
+   APP_RUN_AT_AC_POWER_ON = 'AppRunAtAcPowerOn';   
+   APP_RUN_AT_AC_POWER_OFF = 'AppRunAtAcPowerOff';   
+   APP_RUN_AT_NET_CONNECT = 'AppRunAtNetConnect';   
+   APP_RUN_AT_NET_DISCONNECT = 'AppRunAtNetDisconnect';   
+   APP_RUN_AT_DEVICE_CHANGE = 'AppRunDeviceChange';   
+   APP_RUN_AT_IR_DISCOVERY = 'AppRunAtIrDiscovery';   
+   APP_RUN_AT_RS232_DETECT = 'AppRunAtRs232Detect';   
+   APP_RUN_AFTER_RESTORE = 'AppRunAfterRestore';   
+   APP_RUN_AFTER_WAKEUP = 'AppRunAfterWakeup';   
+   APP_RUN_AFTER_TZ_CHANGE = 'AppRunAfterTzChange';   
+   APP_RUN_AFTER_EXTENDED_EVENT = 'AppRunAfterExtendedEvent';   
+{
+ * Strings passed on the end of the command line for the event,
+ * NOTIFICATION_EVENT_DEVICE_CHANGE.  The general form will be
+ * "/op devicename" for instance "/ADD COM2:"
+  }
+   NOTIFY_DEVICE_ADD = '/ADD';   
+   NOTIFY_DEVICE_REMOVE = '/REMOVE';   
+{
+ * @struct CE_USER_NOTIFICATION | User Notification Structure
+ *
+ * @comm  This structure is passed in to <f CeGetUserNotificationPreferences>.
+ * Initial settings are used to populate the dialog.  If the function
+ * returns TRUE, the returned settings should be saved, and considered when
+ * calling <f CeSetUserNotification>.  Settings for hardware not on the
+ * current device will be ignored.
+ *
+ * It is also used when calling <f CeSetUserNotification>, to describe
+ * what should happen when the notification time is reached.  
+  }
+{ PUN_* flags.  Flags not valid on a given }
+{ hardware platform will be ignored. }
+   PUN_LED = 1;   {@flag PUN_LED | LED flag.  Set if the LED should be }
+{ flashed when the notification occurs. }
+   PUN_VIBRATE = 2;   {@flag PUN_VIBRATE | Vibrate flag.  Set if the device should }
+{ be vibrated. }
+   PUN_DIALOG = 4;   {@flag PUN_DIALOG | Dialog flag.  Set if a dialog should be }
+{ displayed (the app must provide title and text }
+{ when calling <f CeSetUserNotification>). }
+   PUN_SOUND = 8;   {@flag PUN_SOUND | Sound flag.  Set if the sound specified }
+{ in pwszSound should be played. }
+   PUN_REPEAT = 16;   {@flag PUN_REPEAT | Sound repeat flag.  Set if the sound }
+{ specified in pwszSound should be repeated progressively. }
+   PUN_PRIVATE = 32;   {@flag PUN_PRIVATE | Dialog box z-order flag.  Set if the }
+{ notification dialog box should come up behind the password. }
+{@field Action Flags.  Any combination of the }
+{@field Dialog Title.  Required if PUN_DIALOG is set, ignored }
+{ otherwise. Ignored by CeGetUserNotificationPreferences(). }
+{@field Dialog Text.  Required if PUN_DIALOG is set, ignored }
+{ otherwise. Ignored by CeGetUserNotificationPreferences(). }
+{@field Sound string as supplied to sndPlaySound. }
+{ CeSetUserNotification() ignores it if PUN_SOUND is not set. }
+{@field Max Sound string length.  Specifies the }
+{ maximum length of the string that can be copied }
+{ into the pwszSound buffer by }
+{ CeGetUserNotificationPreferences(). }
+{ Should be at least MAX_PATH * sizeof(TCHAR). }
+{ Ignored by CeSetUserNotification(). }
+{	union  }
+{@field Reserved.  Must be NULL or a pointer to }
+{ platform-defined expansion structure. }
+{ The first dword of the structure }
+{ indicates the size of the structure. }
+{	    void *pExpansion; }
+{	; }
+type
+   UserNotificationType = record
+        ActionFlags : DWORD;
+        pwszDialogTitle : ^TCHAR;
+        pwszDialogText : ^TCHAR;
+        pwszSound : ^TCHAR;
+        nMaxSound : DWORD;
+        dwReserved : DWORD;
+     end;
+   CE_USER_NOTIFICATION = UserNotificationType;
+   PCE_USER_NOTIFICATION = ^UserNotificationType;
+
+const
+   CNT_EVENT = 1;   {@flag CNT_EVENT  | System event notification }
+   CNT_TIME = 2;   {@flag CNT_TIME   | Time-based notification }
+   CNT_PERIOD = 3;   {@flag CNT_PERIOD | Time-based notification is active for }
+{ time period between stStart and stEnd }
+   CNT_CLASSICTIME = 4;   {@flag CNT_CLASSICTIME | equivalent to using (obsolete) }
+{ CeSetUserNotification function - standard command line is }
+{ supplied. lpszArguments must be NULL }
+{@field dwType Notification type }
+{@field dwEvent - type of event if dwType == CNT_EVENT }
+{@field lpszApplication - name of application to execute }
+{@field lpszArguments   - command line (sans app name) }
+{@field stStartTime - begin of notification period }
+{@field stEndTime   - end of notification period }
+type
+   UserNotificationTrigger = record
+        dwSize : DWORD;
+        dwType : DWORD;
+        dwEvent : DWORD;
+        lpszApplication : ^TCHAR;
+        lpszArguments : ^TCHAR;
+        stStartTime : SYSTEMTIME;
+        stEndTime : SYSTEMTIME;
+     end;
+   CE_NOTIFICATION_TRIGGER = UserNotificationTrigger;
+   PCE_NOTIFICATION_TRIGGER = ^UserNotificationTrigger;
+{ }
+{	Application name can be prefixed with the following strings to specify different }
+{	named objects rather than an application. The action varies depending on the prefix. }
+{  In case of named event, the event gets signaled. }
+{ }
+
+const
+   NAMED_EVENT_PREFIX_TEXT = '\\.\Notifications\NamedEvents\';
+   NAMED_EVENT_PREFIX_LEN = 30;
+   CNS_SIGNALLED = 1;
+
+type
+   UserNotificationInfoHeader = record
+        hNotification : HANDLE;
+        dwStatus : DWORD;
+        pcent : ^CE_NOTIFICATION_TRIGGER;
+        pceun : ^CE_USER_NOTIFICATION;
+     end;
+   CE_NOTIFICATION_INFO_HEADER = UserNotificationInfoHeader;
+   PCE_NOTIFICATION_INFO_HEADER = ^UserNotificationInfoHeader;
+{ Declarations of User Notification APIs.  }
+{ C++ extern C conditionnal removed }
+{__cplusplus }
+{ @CESYSGEN IF GWES_NOTIFY }
+
+function CeGetUserNotificationPreferences(hWndParent:HWND; lpNotification:PCE_USER_NOTIFICATION):BOOL;external KernelDLL name 'CeGetUserNotificationPreferences';
+function CeSetUserNotificationEx(hNotification:HANDLE; pcnt:PCE_NOTIFICATION_TRIGGER; pceun:PCE_USER_NOTIFICATION):HANDLE;external KernelDLL name 'CeSetUserNotificationEx';
+function CeClearUserNotification(hNotification:HANDLE):BOOL;external KernelDLL name 'CeClearUserNotification';
+function CeGetUserNotification(hNotification:HANDLE; cBufferSize:DWORD; pcBytesNeeded:LPDWORD; pBuffer:LPBYTE):BOOL;external KernelDLL name 'CeGetUserNotification';
+function CeGetUserNotificationHandles(rghNotifications:PHANDLE; cHandles:DWORD; pcHandlesNeeded:LPDWORD):BOOL;external KernelDLL name 'CeGetUserNotificationHandles';
+{	Obsolete; provided to maintain compatibility only }
+function CeSetUserNotification(hNotification:HANDLE; pwszAppName:pTCHAR; var lpTime:SYSTEMTIME; lpUserNotification:PCE_USER_NOTIFICATION):HANDLE;external KernelDLL name 'CeSetUserNotification';
+function CeRunAppAtTime(pwszAppName:pTCHAR; var lpTime:SYSTEMTIME):BOOL;external KernelDLL name 'CeRunAppAtTime';
+function CeRunAppAtEvent(pwszAppName:pTCHAR; lWhichEvent:LONG):BOOL;external KernelDLL name 'CeRunAppAtEvent';
+function CeHandleAppNotifications(pwszAppName:pTCHAR):BOOL;external KernelDLL name 'CeHandleAppNotifications';
+
+implementation
+
+end.

+ 14 - 14
rtl/wince/wininc/oleaut32.inc → packages/winceunits/src/oleaut32.pp

@@ -1,6 +1,6 @@
 {
     This file is part of the Free Pascal run time library.
-    Copyright (c) 2006 Free Pascal development team.
+    Copyright (c) 2006-2008 Free Pascal development team.
 
     See the file COPYING.FPC, included in this distribution,
     for details about the copyright.
@@ -240,7 +240,13 @@
        E2 VectorFromBstr
 }
 
-{$ifdef read_interface}
+unit oleaut32;
+
+interface
+
+uses windows;
+
+{$calling cdecl}
 
 //*****************************************************************************
 // consts
@@ -258,19 +264,13 @@ const
 //*****************************************************************************
 
 //BSTR API
-function  SysAllocString(psz: pointer): Integer; external oleaut32dll name 'SysAllocString';
-function  SysAllocStringLen(psz: pointer; len:dword): Integer; external oleaut32dll name 'SysAllocStringLen';
+function  SysAllocString(psz: pointer): longint; external oleaut32dll name 'SysAllocString';
+function  SysAllocStringLen(psz: pointer; len:dword): longint; external oleaut32dll name 'SysAllocStringLen';
 procedure SysFreeString(bstr:pointer); external oleaut32dll name 'SysFreeString';
 function  SysStringLen(bstr:pointer):UINT; external oleaut32dll name 'SysStringLen';
-function  SysReAllocString(var bstr:pointer;psz: pointer): Integer; external oleaut32dll name 'SysReAllocString';
-function  SysReAllocStringLen(var bstr:pointer;psz: pointer; len:dword): Integer; external oleaut32dll name 'SysReAllocStringLen';
-
-
-{$endif read_interface}
-
-
-{$ifdef read_implementation}
-
-{$endif read_implementation}
+function  SysReAllocString(var bstr:pointer;psz: pointer): longint; external oleaut32dll name 'SysReAllocString';
+function  SysReAllocStringLen(var bstr:pointer;psz: pointer; len:dword): longint; external oleaut32dll name 'SysReAllocStringLen';
 
+implementation
 
+end.

+ 160 - 151
rtl/wince/wininc/power.inc → packages/winceunits/src/power.pp

@@ -1,151 +1,160 @@
-{
-    This file is part of the Free Pascal run time library.
-    Copyright (c) 2007 Free Pascal development team.
-
-    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.
-
- **********************************************************************
-
-  Automatically converted by H2Pas 1.0.0 from power.h
-  The following command line parameters were used:
-    -d
-    -c
-    -w
-    power.h
-}
-
-{ Power Management APIs }
-
-{$ifdef read_interface}
-const
-   AC_LINE_OFFLINE = $00;   
-   AC_LINE_ONLINE = $01;   
-   AC_LINE_BACKUP_POWER = $02;   
-   AC_LINE_UNKNOWN = $FF;   
-   BATTERY_FLAG_HIGH = $01;
-   BATTERY_FLAG_LOW = $02;   
-   BATTERY_FLAG_CRITICAL = $04;   
-   BATTERY_FLAG_CHARGING = $08;   
-   BATTERY_FLAG_NO_BATTERY = $80;   
-   BATTERY_FLAG_UNKNOWN = $FF;   
-   BATTERY_PERCENTAGE_UNKNOWN = $FF;   
-   BATTERY_LIFE_UNKNOWN = $FFFFFFFF;   
-type
-
-   _SYSTEM_POWER_STATUS_EX = record
-        ACLineStatus : BYTE;
-        BatteryFlag : BYTE;
-        BatteryLifePercent : BYTE;
-        Reserved1 : BYTE;
-        BatteryLifeTime : DWORD;
-        BatteryFullLifeTime : DWORD;
-        Reserved2 : BYTE;
-        BackupBatteryFlag : BYTE;
-        BackupBatteryLifePercent : BYTE;
-        Reserved3 : BYTE;
-        BackupBatteryLifeTime : DWORD;
-        BackupBatteryFullLifeTime : DWORD;
-     end;
-   SYSTEM_POWER_STATUS_EX = _SYSTEM_POWER_STATUS_EX;
-   PSYSTEM_POWER_STATUS_EX = ^_SYSTEM_POWER_STATUS_EX;
-   LPSYSTEM_POWER_STATUS_EX = ^_SYSTEM_POWER_STATUS_EX;
-{
-	@struct SYSTEM_POWER_STATUS_EX2 | contains information about the power status
-	of the system.
-
-    @field BYTE | ACLineStatus | AC power status. Must be one of
-    AC_LINE_OFFLINE, AC_LINE_ONLINE, AC_LINE_BACKUP_POWER, or AC_LINE_UNKNOWN.
-
-    @field BYTE | BatteryFlag | Battery charge status.  Must be one of
-	BATTERY_FLAG_HIGH, BATTERY_FLAG_LOW, BATTERY_FLAG_CRITICAL,
-	BATTERY_FLAG_CHARGING, BATTERY_FLAG_NO_BATTERY, or BATTERY_FLAG_UNKNOWN
-
-    @field BYTE | BatteryLifePercent | Percentage of full battery charge
-    remaining.  Must be in the range 0 to 100, or BATTERY_PERCENTAGE_UNKNOWN.
-
-	@field BYTE | Reserved1 | Must be zero.
-
-    @field DWORD |  BatteryLifeTime | Number of seconds of battery life
-    remaining, or BATTERY_LIFE_UNKNOWN if remaining seconds are unknown.
-
-    @field DWORD | BatteryFullLifeTime | Number of seconds of battery life when
-    at full charge, or BATTERY_LIFE_UNKNOWN if full lifetime is unknown.
-
-	@field BYTE | Reserved2 | Must be zero.
-
-    @field BYTE | BackupBatteryFlag | Backup battery charge status.  Must be one
-    of BATTERY_FLAG_HIGH, BATTERY_FLAG_LOW, BATTERY_FLAG_CRITICAL,
-	BATTERY_FLAG_CHARGING, BATTERY_FLAG_NO_BATTERY, or BATTERY_FLAG_UNKNOWN.
-
-    @field BYTE | BackupBatteryLifePercent |  Percentage of full backup battery
-    charge remaining.  Must be in the range 0 to 100, or
-    BATTERY_PERCENTAGE_UNKNOWN.
-
-	@field BYTE | Reserved3 | Must be zero.
-
-    @field DWORD | BackupBatteryLifeTime | Number of seconds of backup battery
-    life remaining, or BATTERY_LIFE_UNKNOWN if remaining seconds are unknown.
-
-    @field DWORD | BackupBatteryFullLifeTime | Number of seconds of backup
-    battery life when at full charge, or BATTERY_LIFE_UNKNOWN if full lifetime
-    is unknown.
-
- }
-
-const
-   BATTERY_CHEMISTRY_ALKALINE = $01;   
-   BATTERY_CHEMISTRY_NICD = $02;   
-   BATTERY_CHEMISTRY_NIMH = $03;   
-   BATTERY_CHEMISTRY_LION = $04;   
-   BATTERY_CHEMISTRY_LIPOLY = $05;   
-   BATTERY_CHEMISTRY_ZINCAIR = $06;   
-   BATTERY_CHEMISTRY_UNKNOWN = $FF;   
-{ Above here is old struct, below are new fields }
-{ Reports Reading of battery voltage in millivolts (0..65535 mV) }
-{ Reports Instantaneous current drain (mA). 0..32767 for charge, 0 to -32768 for discharge }
-{ Reports short term average of device current drain (mA). 0..32767 for charge, 0 to -32768 for discharge }
-{ Reports time constant (mS) of integration used in reporting BatteryAverageCurrent }
-{ Reports long-term cumulative average DISCHARGE (mAH). Reset by charging or changing the batteries. 0 to 32767 mAH }
-{ Reports Battery temp in 0.1 degree C (-3276.8 to 3276.7 degrees C) }
-{ Reports Reading of backup battery voltage }
-{ See Chemistry defines above }
-{ New fields can be added below, but don't change any existing ones }
-type
-
-   _SYSTEM_POWER_STATUS_EX2 = record
-        ACLineStatus : BYTE;
-        BatteryFlag : BYTE;
-        BatteryLifePercent : BYTE;
-        Reserved1 : BYTE;
-        BatteryLifeTime : DWORD;
-        BatteryFullLifeTime : DWORD;
-        Reserved2 : BYTE;
-        BackupBatteryFlag : BYTE;
-        BackupBatteryLifePercent : BYTE;
-        Reserved3 : BYTE;
-        BackupBatteryLifeTime : DWORD;
-        BackupBatteryFullLifeTime : DWORD;
-        BatteryVoltage : DWORD;
-        BatteryCurrent : DWORD;
-        BatteryAverageCurrent : DWORD;
-        BatteryAverageInterval : DWORD;
-        BatterymAHourConsumed : DWORD;
-        BatteryTemperature : DWORD;
-        BackupBatteryVoltage : DWORD;
-        BatteryChemistry : BYTE;
-     end;
-   SYSTEM_POWER_STATUS_EX2 = _SYSTEM_POWER_STATUS_EX2;
-   PSYSTEM_POWER_STATUS_EX2 = ^_SYSTEM_POWER_STATUS_EX2;
-   LPSYSTEM_POWER_STATUS_EX2 = ^_SYSTEM_POWER_STATUS_EX2;
-{ @CESYSGEN IF COREDLL_BATTERY }
-
-function GetSystemPowerStatusEx(var SystemPowerStatusEx: SYSTEM_POWER_STATUS_EX; fUpdate:BOOL):BOOL;external KernelDLL name 'GetSystemPowerStatusEx';
-{ Return value : 0 = fail.  Non-zero indicates length of returned data. }
-function GetSystemPowerStatusEx2(var SystemPowerStatusEx2: SYSTEM_POWER_STATUS_EX2; dwLen:DWORD; fUpdate:BOOL):DWORD;external KernelDLL name 'GetSystemPowerStatusEx2';
-
-{$endif read_interface}
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2007-2008 Free Pascal development team.
+
+    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.
+
+ **********************************************************************
+
+  Automatically converted by H2Pas 1.0.0 from power.h
+  The following command line parameters were used:
+    -d
+    -c
+    -w
+    power.h
+}
+
+{ Power Management APIs }
+
+unit power;
+
+interface
+
+uses windows;
+
+{$calling cdecl}
+
+const
+   AC_LINE_OFFLINE = $00;   
+   AC_LINE_ONLINE = $01;   
+   AC_LINE_BACKUP_POWER = $02;   
+   AC_LINE_UNKNOWN = $FF;   
+   BATTERY_FLAG_HIGH = $01;
+   BATTERY_FLAG_LOW = $02;   
+   BATTERY_FLAG_CRITICAL = $04;   
+   BATTERY_FLAG_CHARGING = $08;   
+   BATTERY_FLAG_NO_BATTERY = $80;   
+   BATTERY_FLAG_UNKNOWN = $FF;   
+   BATTERY_PERCENTAGE_UNKNOWN = $FF;   
+   BATTERY_LIFE_UNKNOWN = $FFFFFFFF;   
+type
+
+   _SYSTEM_POWER_STATUS_EX = record
+        ACLineStatus : BYTE;
+        BatteryFlag : BYTE;
+        BatteryLifePercent : BYTE;
+        Reserved1 : BYTE;
+        BatteryLifeTime : DWORD;
+        BatteryFullLifeTime : DWORD;
+        Reserved2 : BYTE;
+        BackupBatteryFlag : BYTE;
+        BackupBatteryLifePercent : BYTE;
+        Reserved3 : BYTE;
+        BackupBatteryLifeTime : DWORD;
+        BackupBatteryFullLifeTime : DWORD;
+     end;
+   SYSTEM_POWER_STATUS_EX = _SYSTEM_POWER_STATUS_EX;
+   PSYSTEM_POWER_STATUS_EX = ^_SYSTEM_POWER_STATUS_EX;
+   LPSYSTEM_POWER_STATUS_EX = ^_SYSTEM_POWER_STATUS_EX;
+{
+	@struct SYSTEM_POWER_STATUS_EX2 | contains information about the power status
+	of the system.
+
+    @field BYTE | ACLineStatus | AC power status. Must be one of
+    AC_LINE_OFFLINE, AC_LINE_ONLINE, AC_LINE_BACKUP_POWER, or AC_LINE_UNKNOWN.
+
+    @field BYTE | BatteryFlag | Battery charge status.  Must be one of
+	BATTERY_FLAG_HIGH, BATTERY_FLAG_LOW, BATTERY_FLAG_CRITICAL,
+	BATTERY_FLAG_CHARGING, BATTERY_FLAG_NO_BATTERY, or BATTERY_FLAG_UNKNOWN
+
+    @field BYTE | BatteryLifePercent | Percentage of full battery charge
+    remaining.  Must be in the range 0 to 100, or BATTERY_PERCENTAGE_UNKNOWN.
+
+	@field BYTE | Reserved1 | Must be zero.
+
+    @field DWORD |  BatteryLifeTime | Number of seconds of battery life
+    remaining, or BATTERY_LIFE_UNKNOWN if remaining seconds are unknown.
+
+    @field DWORD | BatteryFullLifeTime | Number of seconds of battery life when
+    at full charge, or BATTERY_LIFE_UNKNOWN if full lifetime is unknown.
+
+	@field BYTE | Reserved2 | Must be zero.
+
+    @field BYTE | BackupBatteryFlag | Backup battery charge status.  Must be one
+    of BATTERY_FLAG_HIGH, BATTERY_FLAG_LOW, BATTERY_FLAG_CRITICAL,
+	BATTERY_FLAG_CHARGING, BATTERY_FLAG_NO_BATTERY, or BATTERY_FLAG_UNKNOWN.
+
+    @field BYTE | BackupBatteryLifePercent |  Percentage of full backup battery
+    charge remaining.  Must be in the range 0 to 100, or
+    BATTERY_PERCENTAGE_UNKNOWN.
+
+	@field BYTE | Reserved3 | Must be zero.
+
+    @field DWORD | BackupBatteryLifeTime | Number of seconds of backup battery
+    life remaining, or BATTERY_LIFE_UNKNOWN if remaining seconds are unknown.
+
+    @field DWORD | BackupBatteryFullLifeTime | Number of seconds of backup
+    battery life when at full charge, or BATTERY_LIFE_UNKNOWN if full lifetime
+    is unknown.
+
+ }
+
+const
+   BATTERY_CHEMISTRY_ALKALINE = $01;   
+   BATTERY_CHEMISTRY_NICD = $02;   
+   BATTERY_CHEMISTRY_NIMH = $03;   
+   BATTERY_CHEMISTRY_LION = $04;   
+   BATTERY_CHEMISTRY_LIPOLY = $05;   
+   BATTERY_CHEMISTRY_ZINCAIR = $06;   
+   BATTERY_CHEMISTRY_UNKNOWN = $FF;   
+{ Above here is old struct, below are new fields }
+{ Reports Reading of battery voltage in millivolts (0..65535 mV) }
+{ Reports Instantaneous current drain (mA). 0..32767 for charge, 0 to -32768 for discharge }
+{ Reports short term average of device current drain (mA). 0..32767 for charge, 0 to -32768 for discharge }
+{ Reports time constant (mS) of integration used in reporting BatteryAverageCurrent }
+{ Reports long-term cumulative average DISCHARGE (mAH). Reset by charging or changing the batteries. 0 to 32767 mAH }
+{ Reports Battery temp in 0.1 degree C (-3276.8 to 3276.7 degrees C) }
+{ Reports Reading of backup battery voltage }
+{ See Chemistry defines above }
+{ New fields can be added below, but don't change any existing ones }
+type
+
+   _SYSTEM_POWER_STATUS_EX2 = record
+        ACLineStatus : BYTE;
+        BatteryFlag : BYTE;
+        BatteryLifePercent : BYTE;
+        Reserved1 : BYTE;
+        BatteryLifeTime : DWORD;
+        BatteryFullLifeTime : DWORD;
+        Reserved2 : BYTE;
+        BackupBatteryFlag : BYTE;
+        BackupBatteryLifePercent : BYTE;
+        Reserved3 : BYTE;
+        BackupBatteryLifeTime : DWORD;
+        BackupBatteryFullLifeTime : DWORD;
+        BatteryVoltage : DWORD;
+        BatteryCurrent : DWORD;
+        BatteryAverageCurrent : DWORD;
+        BatteryAverageInterval : DWORD;
+        BatterymAHourConsumed : DWORD;
+        BatteryTemperature : DWORD;
+        BackupBatteryVoltage : DWORD;
+        BatteryChemistry : BYTE;
+     end;
+   SYSTEM_POWER_STATUS_EX2 = _SYSTEM_POWER_STATUS_EX2;
+   PSYSTEM_POWER_STATUS_EX2 = ^_SYSTEM_POWER_STATUS_EX2;
+   LPSYSTEM_POWER_STATUS_EX2 = ^_SYSTEM_POWER_STATUS_EX2;
+{ @CESYSGEN IF COREDLL_BATTERY }
+
+function GetSystemPowerStatusEx(var SystemPowerStatusEx: SYSTEM_POWER_STATUS_EX; fUpdate:BOOL):BOOL;external KernelDLL name 'GetSystemPowerStatusEx';
+{ Return value : 0 = fail.  Non-zero indicates length of returned data. }
+function GetSystemPowerStatusEx2(var SystemPowerStatusEx2: SYSTEM_POWER_STATUS_EX2; dwLen:DWORD; fUpdate:BOOL):DWORD;external KernelDLL name 'GetSystemPowerStatusEx2';
+
+implementation
+
+end.

+ 1500 - 0
packages/winceunits/src/rapi.pp

@@ -0,0 +1,1500 @@
+{$mode delphi}
+UNIT RAPI;
+
+// Created and donated to the public domain 2001
+//   by Scott Crossen, [email protected]
+// Modified 2003 by Terence Goguin, [email protected]
+// Modified 2005 by Octavio Hernandez, [email protected]
+
+INTERFACE
+
+uses Windows;
+
+const
+  FAF_ATTRIBUTES = $00000001;
+  FAF_CREATION_TIME = $00000002;
+  FAF_LASTACCESS_TIME = $00000004;
+  FAF_LASTWRITE_TIME = $00000008;
+  FAF_SIZE_HIGH = $00000010;
+  FAF_SIZE_LOW = $00000020;
+  FAF_OID = $00000040;
+  FAF_NAME = $00000080;
+  FAF_FLAG_COUNT = 8;
+  FAF_ATTRIB_CHILDREN = $00001000;
+  FAF_ATTRIB_NO_HIDDEN = $00002000;
+  FAF_FOLDERS_ONLY = $00004000;
+  FAF_NO_HIDDEN_SYS_ROMMODULES = $00008000;
+
+  FAD_OID = $1;
+  FAD_FLAGS = $2;
+  FAD_NAME = $4;
+  FAD_TYPE = $8;
+  FAD_NUM_RECORDS = $10;
+  FAD_NUM_SORT_ORDER = $20;
+  FAD_SIZE = $40;
+  FAD_LAST_MODIFIED = $80;
+  FAD_SORT_SPECS = $100;
+  FAD_FLAG_COUNT = $9;
+
+  CeDB_SORT_DESCENDING = $00000001;
+  CeDB_SORT_CASEINSENSITIVE = $00000002;
+  CeDB_SORT_UNKNOWNFIRST = $00000004;
+  CeDB_SORT_GENERICORDER = $00000008;
+
+  CeDB_MAXDBASENAMELEN = 32;
+  CeDB_MAXSORTORDER = 4;
+
+  CeDB_VALIDNAME = $0001;
+  CeDB_VALIDTYPE = $0002;
+  CeDB_VALIDSORTSPEC = $0004;
+  CeDB_VALIDMODTIME = $0008;
+  OBJTYPE_INVALID = 0;
+  OBJTYPE_FILE = 1;
+  OBJTYPE_DIRECTORY = 2;
+  OBJTYPE_DATABASE = 3;
+  OBJTYPE_RECORD = 4;
+
+  CeDB_AUTOINCREMENT = $00000001;
+
+  CeDB_SEEK_CeOID = $00000001;
+  CeDB_SEEK_BEGINNING = $00000002;
+  CeDB_SEEK_END = $00000004;
+  CeDB_SEEK_CURRENT = $00000008;
+  CeDB_SEEK_VALUESMALLER = $00000010;
+  CeDB_SEEK_VALUEFIRSTEQUAL = $00000020;
+  CeDB_SEEK_VALUEGREATER = $00000040;
+  CeDB_SEEK_VALUENEXTEQUAL = $00000080;
+  CeVT_I2 = 2;
+  CeVT_UI2 = 18;
+  CeVT_I4 = 3;
+  CeVT_UI4 = 19;
+  CeVT_FILETIME = 64;
+  CeVT_LPWSTR = 31;
+  CeVT_BLOB = 65;
+  CeDB_PROPNOTFOUND = $0100;
+  CeDB_PROPDELETE = $0200;
+  CeDB_MAXDATABLOCKSIZE = 4092;
+  CeDB_MAXPROPDATASIZE =(CeDB_MAXDATABLOCKSIZE*16);
+  CeDB_MAXRECORDSIZE =(128*1024);
+
+  CeDB_ALLOWREALLOC = $00000001;
+
+  SYSMEM_CHANGED = 0;
+  SYSMEM_MUSTREBOOT = 1;
+  SYSMEM_REBOOTPENDING = 2;
+  SYSMEM_FAILED = 3;
+  AC_LINE_OFFLINE = $00;
+  AC_LINE_ONLINE = $01;
+  AC_LINE_BACKUP_POWER = $02;
+  AC_LINE_UNKNOWN = $FF;
+
+  BATTERY_FLAG_HIGH = $01;
+  BATTERY_FLAG_LOW = $02;
+  BATTERY_FLAG_CRITICAL = $04;
+  BATTERY_FLAG_CHARGING = $08;
+  BATTERY_FLAG_NO_BATTERY = $80;
+  BATTERY_FLAG_UNKNOWN = $FF;
+
+  BATTERY_PERCENTAGE_UNKNOWN = $FF;
+
+  BATTERY_LIFE_UNKNOWN = $FFFFFFFF;
+
+type
+  //
+  // The Pegasus WIN32_FIND_DATA structure differs from the
+  // Windows WIN32_FIND_DATA stucture so we copy the Pegasus
+  // definition to here so that both sides match.
+  //
+  TCe_Find_Data = record
+    dwFileAttributes: DWORD;
+    ftCreationTime: TFileTime;
+    ftLastAccessTime: TFileTime;
+    ftLastWriteTime: TFileTime;
+    nFileSizeHigh: DWORD;
+    nFileSizeLow: DWORD;
+    dwOID: DWord;
+    cFileName: array[0..MAX_PATH - 1] of WideChar;
+  end;
+  PCe_Find_Data = ^TCe_Find_Data;
+  TCe_Find_Data_array = array[0..MaxInt div sizeof(TCe_Find_Data)-1] of TCe_Find_Data;
+  PCe_Find_Data_array = ^TCe_Find_Data_array;
+
+  TStore_Information = record
+    dwStoreSize: DWORD;
+    dwFreeSize: DWORD;
+  end;
+  PStore_Information = ^TStore_Information;
+
+  CePROPID = DWORD;
+  PCePROPID = ^CePROPID;
+  TCe_PropID_array = array[0..MaxInt div sizeof(CePROPID)-1] of CePROPID;
+  PCe_PropID_array = ^TCe_PropID_array;
+
+  CeOID = DWORD;
+  PCeOID = ^CeOID;
+
+  TCeFileInfo = record
+    dwAttributes: DWORD;
+    oidParent: CeOID;
+    szFileName: array [0..MAX_PATH-1] of WCHAR;
+    ftLastChanged: TFileTime;
+    dwLength: DWORD;
+  end;
+
+  TCeDirInfo = record
+    dwAttributes: DWORD;
+    oidParent: CeOID;
+    szDirName: array [0..MAX_PATH-1] of WCHAR;
+  end;
+
+  TCeRecordInfo = record
+    oidParent: CeOID;
+  end;
+
+  TSortOrderSpec= record
+    propid: CePROPID;
+    dwFlags: DWORD;
+  end;
+
+  TCeDBaseInfo = record
+    dwFlags: DWORD;
+    szDbaseName: array [0..CeDB_MAXDBASENAMELEN-1] of WCHAR;
+    dwDbaseType: DWORD;
+    wNumRecords: WORD;
+    wNumSortOrder: WORD;
+    dwSize: DWORD;
+    ftLastModified: TFileTime;
+    rgSortSpecs: array [0..CeDB_MAXSORTORDER-1] of TSortOrderSpec;
+  end;
+
+  TCeDB_File_Data = record
+    OidDb: CeOID;
+    DbInfo: TCeDBaseInfo;
+  end;
+  PCeDB_File_Data= ^TCeDB_File_Data;
+
+  TCeDB_File_Data_Array = array [0..MaxInt div sizeof(TCeDB_File_Data)-1] of TCeDB_File_Data;
+  PCeDB_File_Data_Array = ^TCeDB_File_Data_Array;
+
+  TCeOIdInfo = record
+    wObjType: WORD;
+    wPad: WORD;
+    case Integer of
+    0: (infFile: TCeFileInfo);
+    1: (infDirectory: TCeDIRINFO);
+    2: (infDatabase: TCeDBASEINFO);
+    3: (infRecord: TCeRECORDINFO);
+  end;
+  PCeOIDInfo = ^TCeOIDInfo;
+
+  TCeOIContainerStruct = record
+    OID: CeOID;
+    OIDInfo: TCeOIDInfo;
+  end;
+  PCeOIContainerStruct = ^TCeOIContainerStruct;
+
+  TCeBlob = record
+    dwCount: DWORD;
+    lpb: DWORD;
+  end;
+
+  TCeValUnion = record
+    iVal: SHORT;
+    uiVal: WORD;
+    lVal: LongInt;
+    ulVal: ULONG;
+    fletime: TFileTime;
+    lpwstr: LPWSTR;
+    blob: TCeBlob;
+  end;
+
+  TCePROPVAL = record
+    propid: CePROPID;
+    wLenData: Word;
+    wFlags: WORD;
+    val: TCeVALUNION;
+  end;
+
+  TCeOSVersionInfo= record
+    wOSVersionInfoSize: DWORD;
+    dwMajorVersion: DWORD;
+    dwMinorVersion: DWORD;
+    dwBuildNumber: DWORD;
+    dwPlatformId: DWORD;
+    szCSDVersion: array[0..128-1] of WCHAR;
+  end;
+  PCeOSVersionInfo = ^TCeOSVersionInfo;
+
+  TSystem_Power_Status_Ex = record
+    ACLineStatus: BYTE;
+    BatteryFlag: BYTE;
+    BatteryLifePercent: BYTE;
+    Reserved1: BYTE;
+    BatteryLifeTime: BYTE;
+    BatteryFullLifeTime: BYTE;
+    Reserved2: BYTE;
+    BackupBatteryFlag: BYTE;
+    BackupBatteryLifePercent: BYTE;
+    Reserved3: BYTE;
+    BackupBatteryLifeTime: DWORD;
+    BackupBatteryFullLifeTime: DWORD;
+  end;
+  PSystem_Power_Status_Ex = ^TSystem_Power_Status_Ex;
+  TSystem_Power_Status_ExArray = array [0..MaxInt div Sizeof(TSystem_Power_Status_Ex) -1] of TSystem_Power_Status_Ex;
+  PSystem_Power_Status_ExArray = ^TSystem_Power_Status_ExArray;
+
+  TRapiInit = record
+    cbSize: DWORD;
+    heRapiInit: THandle;
+    hrRapiInit: HResult;
+  end;
+
+  TCeRapiInit = function : LongInt stdcall;
+  TCeRapiInitEx = function(var RInit: TRapiInit) : LongInt stdcall;
+  TCeCreateDatabase = function(lpszName: LPWSTR; dwDbaseType: DWORD; wNumSortOrder: WORD;
+    var rgSortSpecs: TSortOrderSpec): CeOID stdcall;
+  TCeDeleteDatabase = function(oidDBase: CeOId): BOOL stdcall;
+  TCeDeleteRecord = function(hDatabase: THandle; oidRecord: CeOID): BOOL stdcall;
+  TCeFindFirstDatabase = function(dwDbaseType: DWORD): THandle stdcall;
+  TCeFindNextDatabase = function(hEnum: THandle): CeOID stdcall;
+  TCeOidGetInfo = function(oid: CeOID; var poidInfo: TCeOIDINFO): BOOL stdcall;
+  TCeOpenDatabase = function(var poid: CeOID; lpszName: LPWSTR; propid: CePROPID;
+    dwFlags: DWORD; hwndNotify: HWND): THandle stdcall;
+  TCeReadRecordProps = function(hDbase: THandle; dwFlags: DWORD;var cPropID : WORD;
+    var rgPropID : PCe_PropID_array;Buffer: Pointer; var cbBuffer: DWORD): CeOID stdcall;
+  TCeSeekDatabase = function(hDatabase: THandle; dwSeekType: DWORD; dwValue: LongInt;
+    dwIndex: PDWORD): CeOID stdcall;
+  TCeSetDatabaseInfo = function(oidDbase: CeOID; var NewInfo: TCeDBaseInfo): BOOL stdcall;
+  TCeWriteRecordProps = function(hDbase: THandle; oidRecord: CeOID; cPropID: WORD; PropVal: TCePROPVAL): CeOID stdcall;
+  TCeFindFirstFile = function(lpFileName: LPCWSTR; lpFindFileData: PCe_FIND_DATA): THandle stdcall;
+  TCeFindNextFile = function(hFindFile: THandle; lpFindFileData: PCe_FIND_DATA): BOOL stdcall;
+  TCeFindClose = function(hFindFile: THandle): BOOL stdcall;
+  TCeGetFileAttributes = function(lpFileName: LPCWSTR): DWORD stdcall;
+  TCeSetFileAttributes = function(FileName: LPCWSTR; dwFileAttributes: DWORD): BOOL stdcall;
+  TCeCreateFile = function(lpFileName: LPCWSTR; dwDesiredAccess: DWORD; dwShareMode: DWORD;
+    lpSecurityAttributes: PSecurityAttributes; dwCreationDistribution: DWORD;
+    dwFlagsAndAttributes: DWORD;hTemplateFile: THandle): THandle stdcall;
+  TCeReadFile = function(hFile: THandle; lpBuffer: Pointer; nNumberOfBytesToRead: DWORD;
+    var NumberOfBytesRead : DWORD; Overlapped: POVERLAPPED): BOOL stdcall;
+  TCeWriteFile = function(hFile: THandle; Buffer: Pointer; NumberOfBytesToWrite: DWORD;
+    var NumberOfBytesWritten: DWORD; Overlapped: POVERLAPPED): BOOL stdcall;
+  TCeCloseHandle = function(hObject: THandle): BOOL stdcall;
+  TCeFindAllDatabases = function(dwDbaseType: DWORD; wFlags: WORD; var cFindData: DWORD;
+    var ppFindData: PCeDB_File_Data_Array): BOOL stdcall;
+  TCeGetLastError = function : DWORD stdcall;
+  TGetRapiError = function : LongInt stdcall;
+  TCeSetFilePointer = function(hFile: THandle; DistanceToMove: LongInt; DistanceToMoveHigh: PULONG;
+    dwMoveMethod: DWORD): DWORD stdcall;
+  TCeSetEndOfFile = function(hFile: THandle): BOOL stdcall;
+  TCeCreateDirectory = function(lpPathName: LPCWSTR; lpSecurityAttributes: PSecurityAttributes): BOOL stdcall;
+  TCeRemoveDirectory = function(PathName: LPCWSTR): BOOL stdcall;
+  TCeCreateProcess = function(lpApplicationName: LPCWSTR;lpCommandLine: LPCWSTR; lpProcessAttributes: PSecurityAttributes;
+    lpThreadAttributes: PSecurityAttributes;bInheritHandles : BOOL;dwCreateFlags : DWORD; lpEnvironment: Pointer; lpCurrentDirectory : LPWSTR;
+    lpStartupInfo: PSTARTUPINFO; lpProcessInformation: PProcessInformation): BOOL stdcall;
+  TCeMoveFile = function(lpExistingFileName: LPCWSTR; lpNewFileName: LPCWSTR): BOOL stdcall;
+  TCeCopyFile = function(lpExistingFileName: LPCWSTR; lpNewFileName: LPCWSTR; bFailIfExists: BOOL): BOOL stdcall;
+  TCeDeleteFile = function(lpFileName: LPCWSTR): BOOL stdcall;
+  TCeGetFileSize = function(hFile: THandle; lpFileSizeHigh: PDWORD): DWORD stdcall;
+  TCeRegOpenKeyEx = function(hKey: HKEY; SubKey: LPCWSTR; Reserved: DWORD; samDesired: REGSAM;
+    Result: PHKEY): LongInt stdcall;
+  TCeRegEnumKeyEx = function(hKey: HKEY; dwIndex: DWORD; KeyName: LPWSTR; chName: PDWORD;
+    reserved: PDWORD; szClass: LPWSTR; cchClass: PDWORD; ftLastWrite: PFILETIME): LongInt stdcall;
+  TCeRegCreateKeyEx = function(hKey: HKEY; lpSzSubKey: LPCWSTR; dwReserved: DWORD;
+    lpszClass: LPWSTR; dwOption: DWORD; samDesired: REGSAM; lpSecurityAttributes: PSecurityAttributes;
+    phkResult: PHKEY; lpdwDisposition: PDWORD): LongInt stdcall;
+  TCeRegCloseKey = function(hKey: HKEY): LongInt stdcall;
+  TCeRegDeleteKey = function(hKey: HKEY; lpszSubKey: LPCWSTR): LongInt stdcall;
+  TCeRegEnumValue = function(hKey: HKEY; dwIndex: DWORD; lpszName: LPWSTR; lpcchName: PDWORD;
+    lpReserved: PDWORD; lpszClass: PDWORD; lpcchClass: PBYTE; lpftLastWrite: PDWORD): LongInt stdcall;
+  TCeRegDeleteValue = function(hKey: HKEY; lpszValueName: LPCWSTR): LongInt stdcall;
+  TCeRegQueryInfoKey = function(hKey: HKEY; ClassName: LPWSTR; cchClass: PDWORD; Reserved: PDWORD;
+    cSubKeys: PDWORD; cchMaxSubKeyLen: PDWORD; cchMaxClassLen: PDWORD; cValues: PDWORD;
+    cchMaxValueNameLen: PDWORD; cbMaxValueData: PDWORD; cbSecurityDescriptor: PDWORD;
+    LastWriteTime: PFILETIME): LongInt stdcall;
+  TCeRegQueryValueEx = function(hKey: HKEY; ValueName: LPCWSTR; Reserved: PDWORD; pType: PDWORD;
+  pData: PBYTE; cbData: PDWORD): LongInt stdcall;
+  TCeRegSetValueEx = function(hKey: HKEY; ValueName: LPCWSTR; reserved: DWORD;
+    dwType: DWORD; pData: PBYTE; cbData: DWORD): LongInt stdcall;
+  TCeGetStoreInformation= function(lpsi: PSTORE_INFORMATION): BOOL stdcall;
+  TCeGetSystemMetrics = function(nIndex: Integer): Integer stdcall;
+  TCeGetDesktopDeviceCaps= function(nIndedx: Integer): LongInt stdcall;
+  TCeGetSystemInfo = procedure(lpSystemInfo: PSystemInfo)stdcall;
+  TCeSHCreateShortcut = function(ShortCut: LPWSTR; Target: LPWSTR): DWORD stdcall;
+  TCeSHGetShortcutTarget= function(ShortCut: LPWSTR; Target: LPWSTR; cbMax: integer): BOOL stdcall;
+  TCeCheckPassword = function(lpszPassword: LPWSTR): BOOL stdcall;
+  TCeGetFileTime = function(hFile: THandle; lpCreationTime: PFILETIME;
+    lpLastAccessTime: PFILETIME; lpLastWriteTime: PFILETIME): BOOL stdcall;
+  TCeSetFileTime = function(hFile: THandle; CreationTime: PFILETIME;
+    LastAccessTime: PFILETIME; lastWriteTime: PFILETIME): BOOL stdcall;
+  TCeGetVersionEx = function(lpVersionInfo: PCeOSVERSIONINFO): BOOL stdcall;
+  TCeGetWindow = function(hWnd: HWND; uCmd: UINT): HWND stdcall;
+  TCeGetWindowLong = function(hWnd: HWND; nIndex: integer): LongInt stdcall;
+  TCeGetWindowText = function(hWnd: HWND; lpString: LPWSTR; nMaxCount: integer): Integer stdcall;
+  TCeGetClassName = function(hWnd: HWND; lpClassName: LPWSTR; nMaxCount: integer): Integer stdcall;
+  TCeGlobalMemoryStatus = procedure(lpmst: PMemoryStatus)stdcall;
+  TCeGetSystemPowerStatusEx= function(pStatus: PSYSTEM_POWER_STATUS_EX; fUpdate: BOOL): BOOL stdcall;
+
+  //added 10/16/2000 - Terence Goggin; [email protected]
+  TDesktopToDevice = function(DesktopLocation, TableList: String; Sync: BOOL; Overwrite: Integer; DeviceLocation: String): Longint stdcall;
+  //added 01/19/2003 - Octavio Hernandez; [email protected]
+  TDeviceToDesktop = function(DesktopLocation, TableList: String; Sync: BOOL; Overwrite: Integer; DeviceLocation: String): Longint stdcall;
+
+  TCeRapiUnInit = function : LongInt stdcall;
+  TCeFindAllFiles = function(Path: PWideChar; Attr: DWORD; var Count: DWord;
+    var FindData: PCe_Find_Data_array): BOOL stdcall;
+  TRapiFreeBuffer = procedure(p: Pointer) stdcall;
+
+function CeRapiInit: LongInt;
+function CeRapiInitEx(var RInit: TRapiInit) : LongInt;
+function CeRapiUnInit: LongInt;
+function CeFindAllFiles(Path: PWideChar; Attr: DWORD;
+  var Count: DWord; var FindData: PCe_Find_Data_array): BOOL;
+procedure RapiFreeBuffer(p: Pointer);
+function CeCreateDatabase(lpszName: LPWSTR; dwDbaseType: DWORD; wNumSortOrder: WORD;
+  var rgSortSpecs: TSortOrderSpec): CeOID;
+function CeDeleteDatabase(oidDBase: CeOId): BOOL;
+function CeDeleteRecord(hDatabase: THandle; oidRecord: CeOID): BOOL;
+function CeFindFirstDatabase(dwDbaseType: DWORD): THandle;
+function CeFindNextDatabase(hEnum: THandle): CeOID;
+function CeOidGetInfo(oid: CeOID; var poidInfo: TCeOIDINFO): BOOL;
+function CeOpenDatabase(var poid: CeOID; lpszName: LPWSTR; propid: CePROPID;
+  dwFlags: DWORD; hwndNotify: HWND): THandle;
+function CeReadRecordProps(hDbase: THandle; dwFlags: DWORD;var cPropID : WORD;
+  var rgPropID : PCe_PropID_array; Buffer: Pointer; var cbBuffer: DWORD): CeOID;
+function CeSeekDatabase(hDatabase: THandle; dwSeekType: DWORD; dwValue: LongInt;
+  dwIndex: PDWORD): CeOID;
+function CeSetDatabaseInfo(oidDbase: CeOID; var NewInfo: TCeDBaseInfo): BOOL;
+function CeWriteRecordProps(hDbase: THandle; oidRecord: CeOID; cPropID: WORD; PropVal: TCePROPVAL): CeOID;
+function CeFindFirstFile(lpFileName: LPCWSTR; lpFindFileData: PCe_FIND_DATA): THandle;
+function CeFindNextFile(hFindFile: THandle; lpFindFileData: PCe_FIND_DATA): BOOL;
+function CeFindClose(hFindFile: THandle): BOOL;
+function CeGetFileAttributes(lpFileName: LPCWSTR): DWORD;
+function CeSetFileAttributes(FileName: LPCWSTR; dwFileAttributes: DWORD): BOOL;
+function CeCreateFile(lpFileName: LPCWSTR; dwDesiredAccess: DWORD; dwShareMode: DWORD;
+  lpSecurityAttributes: PSecurityAttributes; dwCreationDistribution: DWORD;
+  dwFlagsAndAttributes: DWORD;hTemplateFile: THandle): THandle;
+function CeReadFile(hFile: THandle; lpBuffer: Pointer; nNumberOfBytesToRead: DWORD;
+  var NumberOfBytesRead : DWORD; Overlapped: POVERLAPPED): BOOL;
+function CeWriteFile(hFile: THandle; Buffer: Pointer; NumberOfBytesToWrite: DWORD;
+  var NumberOfBytesWritten: DWORD; Overlapped: POVERLAPPED): BOOL;
+function CeCloseHandle(hObject: THandle): BOOL;
+function CeFindAllDatabases(dwDbaseType: DWORD; wFlags: WORD; var cFindData: DWORD;var ppFindData: PCeDB_File_Data_Array): BOOL;
+function CeGetLastError : DWORD;
+function GetRapiError : LongInt;
+function CeSetFilePointer(hFile: THandle; DistanceToMove: LongInt; DistanceToMoveHigh: PULONG;
+  dwMoveMethod: DWORD): DWORD;
+function CeSetEndOfFile(hFile: THandle): BOOL;
+function CeCreateDirectory(lpPathName: LPCWSTR; lpSecurityAttributes: PSecurityAttributes): BOOL;
+function CeRemoveDirectory(PathName: LPCWSTR): BOOL;
+function CeCreateProcess(lpApplicationName: LPCWSTR;lpCommandLine: LPCWSTR; lpProcessAttributes: PSecurityAttributes;
+  lpThreadAttributes: PSecurityAttributes;bInheritHandles : BOOL;dwCreateFlags : DWORD; lpEnvironment: Pointer; lpCurrentDirectory : LPWSTR;
+  lpStartupInfo: PSTARTUPINFO; lpProcessInformation: PProcessInformation): BOOL;
+function CeMoveFile(lpExistingFileName: LPCWSTR; lpNewFileName: LPCWSTR): BOOL;
+function CeCopyFile(lpExistingFileName: LPCWSTR; lpNewFileName: LPCWSTR; bFailIfExists: BOOL): BOOL;
+function CeDeleteFile(lpFileName: LPCWSTR): BOOL;
+function CeGetFileSize(hFile: THandle; lpFileSizeHigh: PDWORD): DWORD;
+function CeRegOpenKeyEx(hKey: HKEY; SubKey: LPCWSTR; Reserved: DWORD; samDesired: REGSAM;
+  pResult: PHKEY): LongInt;
+function CeRegEnumKeyEx(hKey: HKEY; dwIndex: DWORD; KeyName: LPWSTR; chName: PDWORD;
+  reserved: PDWORD; szClass: LPWSTR; cchClass: PDWORD; ftLastWrite: PFILETIME): LongInt;
+function CeRegCreateKeyEx(hKey: HKEY; lpSzSubKey: LPCWSTR; dwReserved: DWORD;
+  lpszClass: LPWSTR; dwOption: DWORD; samDesired: REGSAM; lpSecurityAttributes: PSecurityAttributes;
+  phkResult: PHKEY; lpdwDisposition: PDWORD): LongInt;
+function CeRegCloseKey(hKey: HKEY): LongInt;
+function CeRegDeleteKey(hKey: HKEY; lpszSubKey: LPCWSTR): LongInt;
+function CeRegEnumValue(hKey: HKEY; dwIndex: DWORD; lpszName: LPWSTR; lpcchName: PDWORD;
+  lpReserved: PDWORD; lpszClass: PDWORD; lpcchClass: PBYTE; lpftLastWrite: PDWORD): LongInt;
+function CeRegDeleteValue(hKey: HKEY; lpszValueName: LPCWSTR): LongInt;
+function CeRegQueryInfoKey(hKey: HKEY; ClassName: LPWSTR; cchClass: PDWORD; Reserved: PDWORD;
+  cSubKeys: PDWORD; cchMaxSubKeyLen: PDWORD; cchMaxClassLen: PDWORD; cValues: PDWORD;
+  cchMaxValueNameLen: PDWORD; cbMaxValueData: PDWORD; cbSecurityDescriptor: PDWORD;
+  LastWriteTime: PFILETIME): LongInt;
+function CeRegQueryValueEx(hKey: HKEY; ValueName: LPCWSTR; Reserved: PDWORD; pType: PDWORD;
+  pData: PBYTE; cbData: PDWORD): LongInt;
+function CeRegSetValueEx(hKey: HKEY; ValueName: LPCWSTR; reserved: DWORD;
+  dwType: DWORD; pData: PBYTE; cbData: DWORD): LongInt;
+function CeGetStoreInformation(lpsi: PSTORE_INFORMATION): BOOL;
+function CeGetSystemMetrics(nIndex: Integer): Integer;
+function CeGetDesktopDeviceCaps(nIndedx: Integer): LongInt;
+procedure CeGetSystemInfo(lpSystemInfo: PSystemInfo);
+function CeSHCreateShortcut(ShortCut: LPWSTR; Target: LPWSTR): DWORD;
+function CeSHGetShortcutTarget(ShortCut: LPWSTR; Target: LPWSTR; cbMax: integer): BOOL;
+function CeCheckPassword(lpszPassword: LPWSTR): BOOL;
+function CeGetFileTime(hFile: THandle; lpCreationTime: PFILETIME;
+  lpLastAccessTime: PFILETIME; lpLastWriteTime: PFILETIME): BOOL;
+function CeSetFileTime(hFile: THandle; CreationTime: PFILETIME;
+  LastAccessTime: PFILETIME; lastWriteTime: PFILETIME): BOOL;
+function CeGetVersionEx(lpVersionInfo: PCeOSVERSIONINFO): BOOL;
+function CeGetWindow(hWnd: HWND; uCmd: UINT): HWND;
+function CeGetWindowLong(hWnd: HWND; nIndex: integer): LongInt;
+function CeGetWindowText(hWnd: HWND; lpString: LPWSTR; nMaxCount: integer): Integer;
+function CeGetClassName(hWnd: HWND; lpClassName: LPWSTR; nMaxCount: integer): Integer;
+procedure CeGlobalMemoryStatus(lpmst: PMemoryStatus);
+function CeGetSystemPowerStatusEx(pStatus: PSYSTEM_POWER_STATUS_EX; fUpdate: BOOL): BOOL;
+//added 10/16/2000 - Terence Goggin; [email protected]
+function DesktopToDevice(DesktopLocation, TableList: String; Sync: BOOL; Overwrite: Integer; DeviceLocation: String): Longint;
+//added 01/19/2003 - Octavio Hernandez
+function DeviceToDesktop(DesktopLocation, TableList: String; Sync: BOOL; Overwrite: Integer; DeviceLocation: String): Longint;
+
+IMPLEMENTATION
+
+var
+  mCeRapiInit : TCeRapiInit;
+  mCeRapiUnInit : TCeRapiUnInit;
+  mCeFindAllFiles: TCeFindAllFiles;
+  mRapiFreeBuffer : TRapiFreeBuffer;
+  mCeRapiInitEx: TCeRapiInitEx;
+  mCeCreateDatabase: TCeCreateDatabase;
+  mCeDeleteDatabase: TCeDeleteDatabase;
+  mCeDeleteRecord: TCeDeleteRecord;
+  mCeFindFirstDatabase: TCeFindFirstDatabase;
+  mCeFindNextDatabase: TCeFindNextDatabase;
+  mCeOidGetInfo: TCeOidGetInfo;
+  mCeOpenDatabase: TCeOpenDatabase;
+  mCeReadRecordProps: TCeReadRecordProps;
+  mCeSeekDatabase: TCeSeekDatabase;
+  mCeSetDatabaseInfo: TCeSetDatabaseInfo;
+  mCeWriteRecordProps: TCeWriteRecordProps;
+  mCeFindFirstFile: TCeFindFirstFile;
+  mCeFindNextFile: TCeFindNextFile;
+  mCeFindClose: TCeFindClose;
+  mCeGetFileAttributes: TCeGetFileAttributes;
+  mCeSetFileAttributes: TCeSetFileAttributes;
+  mCeCreateFile: TCeCreateFile;
+  mCeReadFile: TCeReadFile;
+  mCeWriteFile: TCeWriteFile;
+  mCeCloseHandle: TCeCloseHandle;
+  mCeFindAllDatabases: TCeFindAllDatabases;
+  mCeGetLastError: TCeGetLastError;
+  mGetRapiError: TGetRapiError;
+  mCeSetFilePointer: TCeSetFilePointer;
+  mCeSetEndOfFile: TCeSetEndOfFile;
+  mCeCreateDirectory: TCeCreateDirectory;
+  mCeRemoveDirectory: TCeRemoveDirectory;
+  mCeCreateProcess: TCeCreateProcess;
+  mCeMoveFile: TCeMoveFile;
+  mCeCopyFile: TCeCopyFile;
+  mCeDeleteFile: TCeDeleteFile;
+  mCeGetFileSize: TCeGetFileSize;
+  mCeRegOpenKeyEx: TCeRegOpenKeyEx;
+  mCeRegEnumKeyEx: TCeRegEnumKeyEx;
+  mCeRegCreateKeyEx: TCeRegCreateKeyEx;
+  mCeRegCloseKey: TCeRegCloseKey;
+  mCeRegDeleteKey: TCeRegDeleteKey;
+  mCeRegEnumValue: TCeRegEnumValue;
+  mCeRegDeleteValue: TCeRegDeleteValue;
+  mCeRegQueryInfoKey: TCeRegQueryInfoKey;
+  mCeRegQueryValueEx: TCeRegQueryValueEx;
+  mCeRegSetValueEx: TCeRegSetValueEx;
+  mCeGetStoreInformation: TCeGetStoreInformation;
+  mCeGetSystemMetrics: TCeGetSystemMetrics;
+  mCeGetDesktopDeviceCaps: TCeGetDesktopDeviceCaps;
+  mCeGetSystemInfo: TCeGetSystemInfo;
+  mCeSHCreateShortcut: TCeSHCreateShortcut;
+  mCeSHGetShortcutTarget: TCeSHGetShortcutTarget;
+  mCeCheckPassword: TCeCheckPassword;
+  mCeGetFileTime: TCeGetFileTime;
+  mCeSetFileTime: TCeSetFileTime;
+  mCeGetVersionEx: TCeGetVersionEx;
+  mCeGetWindow: TCeGetWindow;
+  mCeGetWindowLong: TCeGetWindowLong;
+  mCeGetWindowText: TCeGetWindowText;
+  mCeGetClassName: TCeGetClassName;
+  mCeGlobalMemoryStatus: TCeGlobalMemoryStatus;
+  mCeGetSystemPowerStatusEx: TCeGetSystemPowerStatusEx;
+  //added 10/16/2000 - Terence Goggin; [email protected]
+  mDesktopToDevice: TDesktopToDevice;
+  //added 01/19/2003 - Octavio Hernandez
+  mDeviceToDesktop: TDeviceToDesktop;
+
+  RapiModule, AdoCEModule: THandle;
+
+function RapiLoaded : BOOL;
+{-Assure that RAPI is loaded and globals are set}
+begin
+  if RapiModule <> 0 then begin
+    Result := True;
+    Exit;
+  end;
+
+  {Load RAPI}
+  RapiModule := LoadLibrary('RAPI.DLL');
+  if RapiModule <> 0 then begin
+    {Say it's loaded...}
+    Result := True;
+    {...and load all globals}
+    @mCeRapiInit := GetProcAddress(RapiModule, 'CeRapiInit');
+    @mCeRapiInitEx := GetProcAddress(RapiModule, 'CeRapiInitEx');
+    @mCeRapiUnInit := GetProcAddress(RapiModule, 'CeRapiUnInit');
+    @mCeFindAllFiles := GetProcAddress(RapiModule, 'CeFindAllFiles');
+    @mRapiFreeBuffer := GetProcAddress(RapiModule, 'RapiFreeBuffer');
+
+
+    @mCeCreateDatabase:= GetProcAddress(RapiModule, 'CeCreateDatabase');
+    @mCeDeleteDatabase:= GetProcAddress(RapiModule, 'CeDeleteDatabase');
+    @mCeDeleteRecord:= GetProcAddress(RapiModule, 'CeDeleteRecord');
+    @mCeFindFirstDatabase:= GetProcAddress(RapiModule, 'CeFindFirstDatabase');
+    @mCeFindNextDatabase:= GetProcAddress(RapiModule, 'CeFindNextDatabase');
+    @mCeOidGetInfo:= GetProcAddress(RapiModule, 'CeOidGetInfo');
+    @mCeOpenDatabase:= GetProcAddress(RapiModule, 'CeOpenDatabase');
+    @mCeReadRecordProps:= GetProcAddress(RapiModule, 'CeReadRecordProps');
+    @mCeSeekDatabase:= GetProcAddress(RapiModule, 'CeSeekDatabase');
+    @mCeSetDatabaseInfo:= GetProcAddress(RapiModule, 'CeSetDatabaseInfo');
+    @mCeWriteRecordProps:= GetProcAddress(RapiModule, 'CeWriteRecordProps');
+    @mCeFindFirstFile:= GetProcAddress(RapiModule, 'CeFindFirstFile');
+    @mCeFindNextFile:= GetProcAddress(RapiModule, 'CeFindNextFile');
+    @mCeFindClose:= GetProcAddress(RapiModule, 'CeFindClose');
+    @mCeGetFileAttributes:= GetProcAddress(RapiModule, 'CeGetFileAttributes');
+    @mCeSetFileAttributes:= GetProcAddress(RapiModule, 'CeSetFileAttributes');
+    @mCeCreateFile:= GetProcAddress(RapiModule, 'CeCreateFile');
+    @mCeReadFile:= GetProcAddress(RapiModule, 'CeReadFile');
+    @mCeWriteFile:= GetProcAddress(RapiModule, 'CeWriteFile');
+    @mCeCloseHandle:= GetProcAddress(RapiModule, 'CeCloseHandle');
+    @mCeFindAllDatabases:= GetProcAddress(RapiModule, 'CeFindAllDatabases');
+    @mCeGetLastError:= GetProcAddress(RapiModule, 'CeGetLastError');
+    @mGetRapiError:= GetProcAddress(RapiModule, 'GetRapiError');
+    @mCeSetFilePointer:= GetProcAddress(RapiModule, 'CeSetFilePointer');
+    @mCeSetEndOfFile:= GetProcAddress(RapiModule, 'CeSetEndOfFile');
+    @mCeCreateDirectory:= GetProcAddress(RapiModule, 'CeCreateDirectory');
+    @mCeRemoveDirectory:= GetProcAddress(RapiModule, 'CeRemoveDirectory');
+    @mCeCreateProcess:= GetProcAddress(RapiModule, 'CeCreateProcess');
+    @mCeMoveFile:= GetProcAddress(RapiModule, 'CeMoveFile');
+    @mCeCopyFile:= GetProcAddress(RapiModule, 'CeCopyFile');
+    @mCeDeleteFile:= GetProcAddress(RapiModule, 'CeDeleteFile');
+    @mCeGetFileSize:= GetProcAddress(RapiModule, 'CeGetFileSize');
+    @mCeRegOpenKeyEx:= GetProcAddress(RapiModule, 'CeRegOpenKeyEx');
+    @mCeRegEnumKeyEx:= GetProcAddress(RapiModule, 'CeRegEnumKeyEx');
+    @mCeRegCreateKeyEx:= GetProcAddress(RapiModule, 'CeRegCreateKeyEx');
+    @mCeRegCloseKey:= GetProcAddress(RapiModule, 'CeRegCloseKey');
+    @mCeRegDeleteKey:= GetProcAddress(RapiModule, 'CeRegDeleteKey');
+    @mCeRegEnumValue:= GetProcAddress(RapiModule, 'CeRegEnumValue');
+    @mCeRegDeleteValue:= GetProcAddress(RapiModule, 'CeRegDeleteValue');
+    @mCeRegQueryInfoKey:= GetProcAddress(RapiModule, 'CeRegQueryInfoKey');
+    @mCeRegQueryValueEx:= GetProcAddress(RapiModule, 'CeRegQueryValueEx');
+    @mCeRegSetValueEx:= GetProcAddress(RapiModule, 'CeRegSetValueEx');
+    @mCeGetStoreInformation:= GetProcAddress(RapiModule, 'CeGetStoreInformation');
+    @mCeGetSystemMetrics:= GetProcAddress(RapiModule, 'CeGetSystemMetrics');
+    @mCeGetDesktopDeviceCaps:= GetProcAddress(RapiModule, 'CeGetDesktopDeviceCaps');
+    @mCeGetSystemInfo:= GetProcAddress(RapiModule, 'CeGetSystemInfo');
+    @mCeSHCreateShortcut:= GetProcAddress(RapiModule, 'CeSHCreateShortcut');
+    @mCeSHGetShortcutTarget:= GetProcAddress(RapiModule, 'CeSHGetShortcutTarget');
+    @mCeCheckPassword:= GetProcAddress(RapiModule, 'CeCheckPassword');
+    @mCeGetFileTime:= GetProcAddress(RapiModule, 'CeGetFileTime');
+    @mCeSetFileTime:= GetProcAddress(RapiModule, 'CeSetFileTime');
+    @mCeGetVersionEx:= GetProcAddress(RapiModule, 'CeGetVersionEx');
+    @mCeGetWindow:= GetProcAddress(RapiModule, 'CeGetWindow');
+    @mCeGetWindowLong:= GetProcAddress(RapiModule, 'CeGetWindowLong');
+    @mCeGetWindowText:= GetProcAddress(RapiModule, 'CeGetWindowText');
+    @mCeGetClassName:= GetProcAddress(RapiModule, 'CeGetClassName');
+    @mCeGlobalMemoryStatus:= GetProcAddress(RapiModule, 'CeGlobalMemoryStatus');
+    @mCeGetSystemPowerStatusEx:= GetProcAddress(RapiModule, 'CeGetSystemPowerStatusEx');
+  end
+  else
+    Result := False;
+end;
+
+function AdoCELoaded : BOOL;
+begin
+  if AdoCEModule <> 0 then begin
+    Result := True;
+    Exit;
+  end;
+
+  {Load ADOCE}
+  AdoCEModule := LoadLibrary('C: \Archivos de Programa\Microsoft ActiveSync\adofiltr.dll');
+
+  if AdoCEModule > HINSTANCE_ERROR then
+  begin
+    {Say it's loaded...}
+    Result := True;
+
+    {...and load all globals}
+    @mDesktopToDevice := GetProcAddress(AdoCEModule, 'DESKTOPTODEVICE');
+    @mDeviceToDesktop := GetProcAddress(AdoCEModule, 'DEVICETODESKTOP');
+  end
+  else
+    Result := False;
+end;
+
+function CeFindAllFiles(Path: PWideChar; Attr: DWORD; var Count: DWord;
+  var FindData: PCe_Find_Data_array): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeFindAllFiles <> nil then
+    Result := mCeFindAllFiles(Path, Attr, Count, FindData)
+  else
+    Result := False;
+end;
+
+procedure RapiFreeBuffer(p: Pointer);
+begin
+  if not RapiLoaded then begin
+    Exit;
+  end;
+
+  if @mRapiFreeBuffer <> nil then
+    mRapiFreeBuffer(p);
+end;
+
+function CeRapiInit : LongInt;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeRapiInit <> nil then
+    Result := mCeRapiInit
+  else
+    Result := $FFFF;
+end;
+
+function CeRapiUnInit : LongInt;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeRapiUnInit <> nil then
+    Result := mCeRapiUnInit
+  else
+    Result := $FFFF;
+end;
+
+function CeRapiInitEx(var RInit: TRapiInit) : LongInt;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeRapiInitEx <> nil then
+    Result := mCeRapiInitEx(RInit)
+  else
+    Result := $FFFF;
+end;
+
+function CeCreateDatabase(lpszName: LPWSTR; dwDbaseType: DWORD; wNumSortOrder: WORD;
+  var rgSortSpecs: TSortOrderSpec): CeOID;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeCreateDatabase <> nil then
+    Result := mCeCreateDatabase(lpszName, dwDbaseType, wNumSortOrder, rgSortSpecs)
+  else
+    Result := $FFFF;
+end;
+
+function CeDeleteDatabase(oidDBase: CeOId): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeDeleteDatabase <> nil then
+    Result := mCeDeleteDatabase(oidDBase)
+  else
+    Result := False;
+end;
+
+function CeDeleteRecord(hDatabase: THandle; oidRecord: CeOID): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeDeleteRecord <> nil then
+    Result := mCeDeleteRecord(hDatabase, oidRecord)
+  else
+    Result := False;
+end;
+
+function CeFindFirstDatabase(dwDbaseType: DWORD): THandle;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeFindFirstDatabase <> nil then
+    Result := mCeFindFirstDatabase(dwDbaseType)
+  else
+    Result := $FFFF;
+end;
+
+function CeFindNextDatabase(hEnum: THandle): CeOID;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeFindNextDatabase <> nil then
+    Result := mCeFindNextDatabase(hEnum)
+  else
+    Result := $FFFF;
+end;
+
+function CeOidGetInfo(oid: CeOID; var poidInfo: TCeOIDINFO): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeOidGetInfo <> nil then
+    Result := mCeOidGetInfo(oid, poidInfo)
+  else
+    Result := False;
+end;
+
+function CeOpenDatabase(var poid: CeOID; lpszName: LPWSTR; propid: CePROPID;
+  dwFlags: DWORD; hwndNotify: HWND): THandle;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeOpenDatabase <> nil then
+    Result := mCeOpenDatabase(poid, lpszName, propid, dwFlags, hwndNotify)
+  else
+    Result := $FFFF;
+end;
+
+function CeReadRecordProps(hDbase: THandle; dwFlags: DWORD; var cPropID : WORD;
+  var rgPropID : PCe_PropID_array; Buffer: Pointer; var cbBuffer: DWORD): CeOID;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeReadRecordProps <> nil then
+    Result := mCeReadRecordProps(hDbase, dwFlags, cPropID, rgPropID, Buffer, cbBuffer)
+  else
+    Result := $FFFF;
+end;
+
+function CeSeekDatabase(hDatabase: THandle; dwSeekType: DWORD; dwValue: LongInt;
+  dwIndex: PDWORD): CeOID;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeSeekDatabase <> nil then
+    Result := mCeSeekDatabase(hDatabase, dwSeekType, dwValue, dwIndex)
+  else
+    Result := $FFFF;
+end;
+
+function CeSetDatabaseInfo(oidDbase: CeOID; var NewInfo: TCeDBaseInfo): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeSetDatabaseInfo <> nil then
+    Result := mCeSetDatabaseInfo(oidDbase, NewInfo)
+  else
+    Result := False;
+end;
+
+function CeWriteRecordProps(hDbase: THandle; oidRecord: CeOID; cPropID: WORD; PropVal: TCePROPVAL): CeOID;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeWriteRecordProps <> nil then
+    Result := mCeWriteRecordProps(hDbase, oidRecord, cPropID, PropVal)
+  else
+    Result := $FFFF;
+end;
+
+function CeFindFirstFile(lpFileName: LPCWSTR; lpFindFileData: PCe_FIND_DATA): THandle;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeFindFirstFile <> nil then
+    Result := mCeFindFirstFile(lpFileName, lpFindFileData)
+  else
+    Result := $FFFF;
+end;
+
+function CeFindNextFile(hFindFile: THandle; lpFindFileData: PCe_FIND_DATA): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeFindNextFile <> nil then
+    Result := mCeFindNextFile(hFindFile, lpFindFileData)
+  else
+    Result := False;
+end;
+
+function CeFindClose(hFindFile: THandle): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeFindClose <> nil then
+    Result := mCeFindClose(hFindFile)
+  else
+    Result := False;
+end;
+
+function CeGetFileAttributes(lpFileName: LPCWSTR): DWORD;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeGetFileAttributes <> nil then
+    Result := mCeGetFileAttributes(lpFileName)
+  else
+    Result := $FFFF;
+end;
+
+function CeSetFileAttributes(FileName: LPCWSTR; dwFileAttributes: DWORD): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeSetFileAttributes <> nil then
+    Result := mCeSetFileAttributes(FileName, dwFileAttributes)
+  else
+    Result := False;
+end;
+
+function CeCreateFile(lpFileName: LPCWSTR; dwDesiredAccess: DWORD; dwShareMode: DWORD;
+  lpSecurityAttributes: PSecurityAttributes; dwCreationDistribution: DWORD;
+  dwFlagsAndAttributes: DWORD; hTemplateFile: THandle): THandle;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeCreateFile <> nil then
+    Result := mCeCreateFile(lpFileName, dwDesiredAccess, dwShareMode,
+      lpSecurityAttributes, dwCreationDistribution, dwFlagsAndAttributes, hTemplateFile)
+  else
+    Result := $FFFF;
+end;
+
+function CeReadFile(hFile: THandle; lpBuffer: Pointer; nNumberOfBytesToRead: DWORD;
+  var NumberOfBytesRead : DWORD; Overlapped: POVERLAPPED): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeReadFile <> nil then
+    Result := mCeReadFile(hFile, lpBuffer, nNumberOfBytesToRead,
+      NumberOfBytesRead, Overlapped)
+  else
+    Result := False;
+end;
+
+function CeWriteFile(hFile: THandle; Buffer: Pointer; NumberOfBytesToWrite: DWORD;
+  var NumberOfBytesWritten: DWORD; Overlapped: POVERLAPPED): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeWriteFile <> nil then
+    Result := mCeWriteFile(hFile, Buffer, NumberOfBytesToWrite,
+      NumberOfBytesWritten, Overlapped)
+  else
+    Result := False;
+end;
+
+function CeCloseHandle(hObject: THandle): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeCloseHandle <> nil then
+    Result := mCeCloseHandle(hObject)
+  else
+    Result := False;
+end;
+
+function CeFindAllDatabases(dwDbaseType: DWORD; wFlags: WORD; var cFindData: DWORD; var ppFindData: PCeDB_File_Data_Array): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeFindAllDatabases <> nil then
+    Result := mCeFindAllDatabases(dwDbaseType, wFlags, cFindData, ppFindData)
+  else
+    Result := False;
+end;
+
+function CeGetLastError : DWORD;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeGetLastError <> nil then
+    Result := mCeGetLastError
+  else
+    Result := $FFFF;
+end;
+
+function GetRapiError : LongInt;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mGetRapiError <> nil then
+    Result := mGetRapiError
+  else
+    Result := $FFFF;
+end;
+
+function CeSetFilePointer(hFile: THandle; DistanceToMove: LongInt; DistanceToMoveHigh: PULONG;
+dwMoveMethod: DWORD): DWORD;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeSetFilePointer <> nil then
+    Result := mCeSetFilePointer(hFile, DistanceToMove, DistanceToMoveHigh, dwMoveMethod)
+  else
+    Result := $FFFF;
+end;
+
+function CeSetEndOfFile(hFile: THandle): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeSetEndOfFile <> nil then
+    Result := mCeSetEndOfFile(hFile)
+  else
+    Result := False;
+end;
+
+function CeCreateDirectory(lpPathName: LPCWSTR;
+  lpSecurityAttributes: PSecurityAttributes): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeCreateDirectory <> nil then
+    Result := mCeCreateDirectory(lpPathName, lpSecurityAttributes)
+  else
+    Result := False;
+end;
+
+function CeRemoveDirectory(PathName: LPCWSTR): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeRemoveDirectory <> nil then
+    Result := mCeRemoveDirectory(PathName)
+  else
+    Result := False;
+end;
+
+function CeCreateProcess(lpApplicationName: LPCWSTR;lpCommandLine: LPCWSTR;
+  lpProcessAttributes: PSecurityAttributes; lpThreadAttributes: PSecurityAttributes;
+  bInheritHandles : BOOL;dwCreateFlags : DWORD; lpEnvironment: Pointer;
+  lpCurrentDirectory : LPWSTR; lpStartupInfo: PSTARTUPINFO;
+  lpProcessInformation: PProcessInformation): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeCreateProcess <> nil then
+    Result := mCeCreateProcess(lpApplicationName, lpCommandLine, lpProcessAttributes,
+      lpThreadAttributes, bInheritHandles, dwCreateFlags, lpEnvironment, lpCurrentDirectory,
+      lpStartupInfo, lpProcessInformation)
+  else
+    Result := False;
+end;
+
+function CeMoveFile(lpExistingFileName: LPCWSTR; lpNewFileName: LPCWSTR): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeMoveFile <> nil then
+    Result := mCeMoveFile(lpExistingFileName, lpNewFileName)
+  else
+    Result := False;
+end;
+
+function CeCopyFile(lpExistingFileName: LPCWSTR; lpNewFileName: LPCWSTR; bFailIfExists: BOOL): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeCopyFile <> nil then
+    Result := mCeCopyFile(lpExistingFileName, lpNewFileName, bFailIfExists)
+  else
+    Result := False;
+end;
+
+function CeDeleteFile(lpFileName: LPCWSTR): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeDeleteFile <> nil then
+    Result := mCeDeleteFile(lpFileName)
+  else
+    Result := False;
+end;
+
+function CeGetFileSize(hFile: THandle; lpFileSizeHigh: PDWORD): DWORD;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeGetFileSize <> nil then
+    Result := mCeGetFileSize(hFile, lpFileSizeHigh)
+  else
+    Result := $FFFF;
+end;
+
+function CeRegOpenKeyEx(hKey: HKEY; SubKey: LPCWSTR; Reserved: DWORD;
+  samDesired: REGSAM; pResult: PHKEY): LongInt;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeRegOpenKeyEx <> nil then
+    Result := mCeRegOpenKeyEx(hKey, SubKey, Reserved, samDesired, pResult)
+  else
+    Result := $FFFF;
+end;
+
+function CeRegEnumKeyEx(hKey: HKEY; dwIndex: DWORD; KeyName: LPWSTR; chName: PDWORD;
+  reserved: PDWORD; szClass: LPWSTR; cchClass: PDWORD; ftLastWrite: PFILETIME): LongInt;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeRegEnumKeyEx <> nil then
+    Result := mCeRegEnumKeyEx(hKey, dwIndex, KeyName, chName,
+      reserved, szClass, cchClass, ftLastWrite)
+  else
+    Result := $FFFF;
+end;
+
+function CeRegCreateKeyEx(hKey: HKEY; lpSzSubKey: LPCWSTR; dwReserved: DWORD;
+  lpszClass: LPWSTR; dwOption: DWORD; samDesired: REGSAM;
+  lpSecurityAttributes: PSecurityAttributes; phkResult: PHKEY; lpdwDisposition: PDWORD): LongInt;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeRegCreateKeyEx <> nil then
+    Result := mCeRegCreateKeyEx(hKey, lpSzSubKey, dwReserved,
+      lpszClass, dwOption, samDesired, lpSecurityAttributes, phkResult, lpdwDisposition)
+  else
+    Result := $FFFF;
+end;
+
+function CeRegCloseKey(hKey: HKEY): LongInt;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeRegCloseKey <> nil then
+    Result := mCeRegCloseKey(hKey)
+  else
+    Result := $FFFF;
+end;
+
+function CeRegDeleteKey(hKey: HKEY; lpszSubKey: LPCWSTR): LongInt;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeRegDeleteKey <> nil then
+    Result := mCeRegDeleteKey(hKey, lpszSubKey)
+  else
+    Result := $FFFF;
+end;
+
+function CeRegEnumValue(hKey: HKEY; dwIndex: DWORD; lpszName: LPWSTR; lpcchName: PDWORD;
+lpReserved: PDWORD; lpszClass: PDWORD; lpcchClass: PBYTE; lpftLastWrite: PDWORD): LongInt;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeRegEnumValue <> nil then
+    Result := mCeRegEnumValue(hKey, dwIndex, lpszName, lpcchName,
+      lpReserved, lpszClass, lpcchClass, lpftLastWrite)
+  else
+    Result := $FFFF;
+end;
+
+function CeRegDeleteValue(hKey: HKEY; lpszValueName: LPCWSTR): LongInt;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeRegDeleteValue <> nil then
+    Result := mCeRegDeleteValue(hKey, lpszValueName)
+  else
+    Result := $FFFF;
+end;
+
+function CeRegQueryInfoKey(hKey: HKEY; ClassName: LPWSTR; cchClass: PDWORD; Reserved: PDWORD;
+  cSubKeys: PDWORD; cchMaxSubKeyLen: PDWORD; cchMaxClassLen: PDWORD; cValues: PDWORD;
+  cchMaxValueNameLen: PDWORD; cbMaxValueData: PDWORD; cbSecurityDescriptor: PDWORD;
+  LastWriteTime: PFILETIME): LongInt;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeRegQueryInfoKey <> nil then
+    Result := mCeRegQueryInfoKey(hKey, ClassName, cchClass, Reserved,
+      cSubKeys, cchMaxSubKeyLen, cchMaxClassLen, cValues,
+      cchMaxValueNameLen, cbMaxValueData, cbSecurityDescriptor, LastWriteTime)
+  else
+    Result := $FFFF;
+end;
+
+function CeRegQueryValueEx(hKey: HKEY; ValueName: LPCWSTR; Reserved: PDWORD; pType: PDWORD;
+  pData: PBYTE; cbData: PDWORD): LongInt;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeRegQueryValueEx <> nil then
+    Result := mCeRegQueryValueEx(hKey, ValueName, Reserved, pType, pData, cbData)
+  else
+    Result := $FFFF;
+end;
+
+function CeRegSetValueEx(hKey: HKEY; ValueName: LPCWSTR; reserved: DWORD;
+  dwType: DWORD; pData: PBYTE; cbData: DWORD): LongInt;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeRegSetValueEx <> nil then
+    Result := mCeRegSetValueEx(hKey, ValueName, reserved, dwType, pData, cbData)
+  else
+    Result := $FFFF;
+end;
+
+function CeGetStoreInformation(lpsi: PSTORE_INFORMATION): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeGetStoreInformation <> nil then
+    Result := mCeGetStoreInformation(lpsi)
+  else
+    Result := False;
+end;
+
+function CeGetSystemMetrics(nIndex: Integer): Integer;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeGetSystemMetrics <> nil then
+    Result := mCeGetSystemMetrics(nIndex)
+  else
+    Result := $FFFF;
+end;
+
+function CeGetDesktopDeviceCaps(nIndedx: Integer): LongInt;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeGetDesktopDeviceCaps <> nil then
+    Result := mCeGetDesktopDeviceCaps(nIndedx)
+  else
+    Result := $FFFF;
+end;
+
+procedure CeGetSystemInfo(lpSystemInfo: PSystemInfo);
+begin
+  if not RapiLoaded then begin
+    Exit;
+  end;
+
+  if @mCeGetSystemInfo <> nil then
+    mCeGetSystemInfo(lpSystemInfo);
+end;
+
+function CeSHCreateShortcut(ShortCut: LPWSTR; Target: LPWSTR): DWORD;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeSHCreateShortcut <> nil then
+    Result := mCeSHCreateShortcut(ShortCut, Target)
+  else
+    Result := $FFFF;
+end;
+
+function CeSHGetShortcutTarget(ShortCut: LPWSTR; Target: LPWSTR; cbMax: integer): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeSHGetShortcutTarget <> nil then
+    Result := mCeSHGetShortcutTarget(ShortCut, Target, cbMax)
+  else
+    Result := False;
+end;
+
+function CeCheckPassword(lpszPassword: LPWSTR): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeCheckPassword <> nil then
+    Result := mCeCheckPassword(lpszPassword)
+  else
+    Result := False;
+end;
+
+function CeGetFileTime(hFile: THandle; lpCreationTime: PFILETIME;
+  lpLastAccessTime: PFILETIME; lpLastWriteTime: PFILETIME): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeGetFileTime <> nil then
+    Result := mCeGetFileTime( hFile, lpCreationTime, lpLastAccessTime, lpLastWriteTime)
+  else
+    Result := False;
+end;
+
+function CeSetFileTime(hFile: THandle; CreationTime: PFILETIME;
+  lastAccessTime: PFILETIME; lastWriteTime: PFILETIME): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeSetFileTime <> nil then
+    Result := mCeSetFileTime(hFile, CreationTime, lastAccessTime, lastWriteTime)
+else
+  Result := False;
+end;
+
+function CeGetVersionEx(lpVersionInfo: PCeOSVERSIONINFO): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeGetVersionEx <> nil then
+    Result := mCeGetVersionEx(lpVersionInfo)
+  else
+    Result := False;
+end;
+
+function CeGetWindow(hWnd: HWND; uCmd: UINT): HWND;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeGetWindow <> nil then
+    Result := mCeGetWindow(hWnd, uCmd)
+  else
+    Result := $FFFF;
+end;
+
+function CeGetWindowLong(hWnd: HWND; nIndex: integer): LongInt;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeGetWindowLong <> nil then
+    Result := mCeGetWindowLong(hWnd , nIndex)
+  else
+    Result := $FFFF;
+end;
+
+function CeGetWindowText(hWnd: HWND; lpString: LPWSTR; nMaxCount: integer): Integer;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeGetWindowText <> nil then
+    Result := mCeGetWindowText(hWnd, lpString, nMaxCount)
+  else
+    Result := $FFFF;
+end;
+
+function CeGetClassName(hWnd: HWND; lpClassName: LPWSTR; nMaxCount: integer): Integer;
+begin
+  if not RapiLoaded then begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mCeGetClassName <> nil then
+    Result := mCeGetClassName(hWnd, lpClassName, nMaxCount)
+  else
+    Result := $FFFF;
+  end;
+
+procedure CeGlobalMemoryStatus(lpmst: PMemoryStatus);
+begin
+  if not RapiLoaded then begin
+    Exit;
+  end;
+
+  if @mCeGlobalMemoryStatus <> nil then
+    mCeGlobalMemoryStatus(lpmst);
+end;
+
+function CeGetSystemPowerStatusEx(pStatus: PSYSTEM_POWER_STATUS_EX; fUpdate: BOOL): BOOL;
+begin
+  if not RapiLoaded then begin
+    Result := False;
+    Exit;
+  end;
+
+  if @mCeGetSystemPowerStatusEx <> nil then
+    Result := mCeGetSystemPowerStatusEx(pStatus, fUpdate)
+  else
+    Result := False;
+end;
+
+//added 10/16/00 - Terence Goggin; [email protected]
+function DesktopToDevice(DesktopLocation, TableList: String; Sync: BOOL; Overwrite: Integer; DeviceLocation: String): Longint;
+begin
+  if not AdoCELoaded then
+  begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mDesktopToDevice <> nil then
+    Result := mDesktopToDevice(DesktopLocation, TableList, Sync, Overwrite, DeviceLocation)
+  else
+    Result := $FFFF;
+end;
+
+//added 01/19/2003 - Octavio Hernandez
+function DeviceToDesktop(DesktopLocation, TableList: String; Sync: BOOL; Overwrite: Integer; DeviceLocation: String): Longint;
+begin
+  if not AdoCELoaded then
+  begin
+    Result := $FFFF;
+    Exit;
+  end;
+
+  if @mDeviceToDesktop <> nil then
+    Result := mDeviceToDesktop(DesktopLocation, TableList, Sync, Overwrite, DeviceLocation)
+  else
+    Result := $FFFF;
+end;
+
+INITIALIZATION
+  RapiModule := 0;
+  AdoCEModule := 0;
+END.
+

+ 14 - 8
rtl/wince/wininc/ceshell.inc → packages/winceunits/src/shellapi.pp

@@ -1,6 +1,6 @@
 {
     This file is part of the Free Pascal run time library.
-    Copyright (c) 2006 Free Pascal development team.
+    Copyright (c) 2006-2008 Free Pascal development team.
 
     See the file COPYING.FPC, included in this distribution,
     for details about the copyright.
@@ -172,7 +172,14 @@
 
 }
 
-{$ifdef read_interface}
+{$mode objfpc}
+unit shellapi;
+
+interface
+
+uses windows;
+
+{$calling cdecl}
 
 //*****************************************************************************
 // consts
@@ -210,7 +217,7 @@ type
     function Realloc(pv: Pointer; cb: Longint): Pointer;
     procedure Free(pv: Pointer);
     function GetSize(pv: Pointer): Longint;
-    function DidAlloc(pv: Pointer): Integer;
+    function DidAlloc(pv: Pointer): longint;
     procedure HeapMinimize;
   end;
   LPMALLOC = ^IMalloc;
@@ -220,15 +227,14 @@ type
 // functions
 //*****************************************************************************
 function SHFileOperation(lpFileOp:LPSHFILEOPSTRUCTW): longint; external ShellDLL name 'SHFileOperationW';
+function SHFileOperation(const lpFileOp:SHFILEOPSTRUCTW): longint; external ShellDLL name 'SHFileOperationW';
 function SHFileOperationW(lpFileOp:LPSHFILEOPSTRUCTW): longint; external ShellDLL name 'SHFileOperationW';
+function SHFileOperationW(const lpFileOp:SHFILEOPSTRUCTW): longint; external ShellDLL name 'SHFileOperationW';
 function SHGetPathFromIDList(_para1:LPCITEMIDLIST; _para2:LPTSTR):WINBOOL; external ShellDLL name 'SHGetPathFromIDList';
 function SHGetPathFromIDListW(_para1:LPCITEMIDLIST; _para2:LPTSTR):WINBOOL; external ShellDLL name 'SHGetPathFromIDList';
 function SHGetMalloc(var ppMalloc: LPMALLOC): HRESULT; external ShellDLL name 'SHGetMalloc';
 function SHGetSpecialFolderLocation(_para1:HWND; _para2:longint; var _para3:LPITEMIDLIST):HRESULT; external ShellDLL name 'SHGetSpecialFolderLocation';
 
-{$endif read_interface}
-
-{$ifdef read_implementation}
-
+implementation
 
-{$endif read_implementation}
+end.

+ 10 - 6
rtl/wince/wininc/simmgr.inc → packages/winceunits/src/simmgr.pp

@@ -1,6 +1,6 @@
 {
     This file is part of the Free Pascal run time library.
-    Copyright (c) 2007 Free Pascal development team.
+    Copyright (c) 2007-2008 Free Pascal development team.
 
     See the file COPYING.FPC, included in this distribution,
     for details about the copyright.
@@ -20,7 +20,13 @@
   contact S0vNark0m for more information [email protected] (en, ru)
 }
 
-{$ifdef read_interface}
+unit simmgr;
+
+interface
+
+uses windows;
+
+{$calling cdecl}
 
 //*****************************************************************************
 // consts
@@ -533,8 +539,6 @@ function SimWriteRecord(hSim:HSIM; dwAddress:DWORD; dwRecordType:DWORD; dwIndex:
 // Points to a SIM record information structure
 function SimGetRecordInfo(hSim:HSIM; dwAddress:DWORD; lpSimRecordInfo:LPSIMRECORDINFO):HRESULT;external KernelDLL name 'SimGetRecordInfo';
 
-{$endif read_interface}
-
-{$ifdef read_implementation}
+implementation
 
-{$endif read_implementation}
+end.

+ 10 - 6
rtl/wince/wininc/tapi.inc → packages/winceunits/src/tapi.pp

@@ -1,6 +1,6 @@
 {
     This file is part of the Free Pascal run time library.
-    Copyright (c) 2007 Free Pascal development team.
+    Copyright (c) 2007-2008 Free Pascal development team.
 
     See the file COPYING.FPC, included in this distribution,
     for details about the copyright.
@@ -19,7 +19,13 @@
   contact S0vNark0m for more information [email protected] (en, ru)
 }
 
-{$ifdef read_interface}
+unit tapi;
+
+interface
+
+uses windows;
+
+{$calling cdecl}
 
 //*****************************************************************************
 // consts
@@ -1793,9 +1799,7 @@ function phoneShutdown(hPhoneApp:HPHONEAPP):LONG;external KernelDLL name 'phoneS
 
 function TAPIERROR_FORMATMESSAGE(const AErrCode: Longword): Longword; // C Macros conversion, may be wrong
 
-{$endif read_interface}
-
-{$ifdef read_implementation}
+implementation
 
 function TAPIERROR_FORMATMESSAGE(const AErrCode: Longword): Longword;
 begin
@@ -1804,4 +1808,4 @@ begin
  Exit(AErrCode-$80000000+$E000);
 end;
 
-{$endif read_implementation}
+end.

+ 147 - 0
packages/winceunits/src/todaycmn.pp

@@ -0,0 +1,147 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2007-2008 Free Pascal development team.
+
+    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.
+}
+//*****************************************************************************/
+//*                                                                           */
+//*  TodayCmn.h                                                               */
+//*                                                                           */
+//*  Today screen common header file                                          */
+//*                                                                           */
+//*****************************************************************************/
+
+//
+// Microsoft Windows Mobile 6.0 for PocketPC SDK.
+//
+
+unit TodayCmn;
+
+interface
+
+uses Windows;
+
+// list item types
+type
+     _TODAYLISTITEMTYPE = (tlitOwnerInfo := 0,  // name, company
+                           tlitAppointments,   // today's appointments, events
+                           tlitMail,           // message information
+                           tlitTasks,          // overdue and upcoming tasks
+                           tlitCustom,         // other
+                           tlitReserved1,      // reserved value
+                           tlitReserved2,      // reserved value
+                           tlitNil);           // sentinel
+
+     TODAYLISTITEMTYPE = _TODAYLISTITEMTYPE;
+
+
+const
+      MAX_ITEMNAME    = 32;
+
+type
+     TODAY_SELECTABILITY = (TODAY_SELECTABILITY_NOTSELECTABLE := 0,
+                            TODAY_SELECTABILITY_SELECTABLE,
+                            TODAY_SELECTABILITY_CUSTOMSELECTION,
+                            TODAY_SELECTABILITY_LAST);
+
+// information for a single today item
+type
+     _TODAYLISTITEM = record
+       szName:array[0..MAX_ITEMNAME-1] of WideChar;
+       tlit:TODAYLISTITEMTYPE;
+       dwOrder:DWORD;
+       cyp:DWORD;
+       fEnabled:BOOL;
+       fOptions:BOOL;
+       grfFlags:DWORD;
+       szDLLPath:array[0..MAX_PATH-1] of WideChar;
+       hinstDLL:HINST;
+       hwndCustom:HWND;
+       fSizeOnDraw:BOOL;
+       prgbCachedData:LPBYTE;
+       cbCachedData:DWORD;
+       dwSelectability:DWORD;
+     end;
+     TODAYLISTITEM = _TODAYLISTITEM;
+     LPTODAYLISTITEM = ^_TODAYLISTITEM;
+
+const
+      TODAYM_GETCOLOR            = WM_USER + 100; // wParam == TODAYCOLOR_*
+      TODAYCOLOR_TEXT            = $10000004;
+      TODAYCOLOR_HIGHLIGHT       = $10000022;
+      TODAYCOLOR_HIGHLIGHTEDTEXT = $10000023;
+
+
+const
+      TODAYM_DRAWWATERMARK       = WM_USER + 101; // lParam == TODAYDRAWWATERMARKINFO*
+
+type
+     TODAYDRAWWATERMARKINFO = record
+       _hdc:HDC;
+       rc:RECT;
+       _hwnd:HWND;
+     end;
+     LPTODAYDRAWWATERMARKINFO = ^TODAYDRAWWATERMARKINFO;
+
+
+const
+      TODAYM_TOOKSELECTION       = WM_USER + 102;
+
+
+const
+      TODAYM_REQUESTREFRESH      = WM_USER + 103;
+      TODAYREFRESH_NOHEIGHTCHANGE = $00000001;
+
+
+// the following block of message id #'s is reserved for internal use
+const
+      TODAYM_RESERVEDSTART      = WM_USER + 300;
+      TODAYM_RESERVEDEND        = WM_USER + 399;
+
+      
+// maximum number of today items
+const
+      k_cTodayItemsMax          = 30;
+
+
+// custom DLL resources
+const
+      IDI_ICON                  = 128;
+      IDD_TODAY_CUSTOM          = 500;
+
+
+// custom DLL functions
+const
+      ORDINAL_INITIALIZEITEM    = 240;
+
+type
+     PFNCUSTOMINITIALIZEITEM = function(ptli:LPTODAYLISTITEM; hwndParent:HWND):HWND; cdecl;
+     TInitializeCustomItemProc = PFNCUSTOMINITIALIZEITEM;
+
+const
+      ORDINAL_OPTIONSDIALOGPROC = 241;
+
+type
+     PFNCUSTOMOPTIONSDLGPROC = function(_hDlg:HWND; _message:UINT; wParam:UINT; lParam:LONG):BOOL; cdecl;
+     TCustomItemOptionsDlgProc = PFNCUSTOMOPTIONSDLGPROC;
+
+
+// custom DLL messages
+const
+      WM_TODAYCUSTOM_CLEARCACHE           = WM_USER+242;
+      WM_TODAYCUSTOM_QUERYREFRESHCACHE    = WM_USER+243;
+      WM_TODAYCUSTOM_RECEIVEDSELECTION    = WM_USER+244;
+      WM_TODAYCUSTOM_LOSTSELECTION        = WM_USER+245;
+      WM_TODAYCUSTOM_USERNAVIGATION       = WM_USER+246;
+      WM_TODAYCUSTOM_ACTION               = WM_USER+247;
+      WM_TODAYCUSTOM_CLOSEDATABASES       = WM_USER+248;
+
+implementation
+
+end.

+ 834 - 0
packages/winceunits/src/windbase.pp

@@ -0,0 +1,834 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2008 Free Pascal development team.
+
+    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.
+
+    conversion of windbase.h by Carolos Foscolos
+ **********************************************************************}
+
+{$mode objfpc}
+unit windbase;
+interface
+ uses Windows;
+
+{$IFDEF FPC}
+{$PACKRECORDS C}
+{$ENDIF}
+
+{ convention is cdecl for WinCE API}
+{$calling cdecl}
+
+  {*
+
+
+   Module: windbase.h
+
+   Purpose: Master include file for WINCE Database APIs
+
+  * }
+  { @doc OBJSTORE }
+  {
+  @topic Windows CE Object Store |
+      The Windows CE object store has 3 parts - a registry API, a file system API and a database API.
+      <nl>The standard Win32 API's supported by the registry are:
+      <nl>RegCloseKey
+      <nl>RegCreateKeyEx
+      <nl>RegDeleteKey
+      <nl>RegDeleteValue
+      <nl>RegEnumValue
+      <nl>RegEnumKeyEx
+      <nl>RegOpenKeyEx
+      <nl>RegQueryInfoKey
+      <nl>RegQueryValueEx
+      <nl>RegSetValueEx
+
+      The standard Win32 API's supported by the filesytem are:
+      <nl>CreateDirectory
+      <nl>RemoveDirectory
+      <nl>MoveFile
+      <nl>CopyFile
+      <nl>DeleteFile
+      <nl>GetFileAttributes
+      <nl>FindFirstFile
+      <nl>CreateFileW
+      <nl>ReadFile
+      <nl>WriteFile
+      <nl>GetFileSize
+      <nl>SetFilePointer
+      <nl>GetFileInformationByHandle
+      <nl>FlushFileBuffers
+      <nl>GetFileTime
+      <nl>SetFileTime
+      <nl>SetEndOfFile
+      <nl>FindClose
+      <nl>FindNextFile
+
+      In addition, the following additional filesystem call is available:
+      <nl>CreateContainer
+
+      The various functions and data structures are described in this
+      document.
+   }
+{$ifndef __WINDBASE__}
+{$define __WINDBASE__}
+  { @CESYSGEN IF CE_MODULES_FILESYS }
+  {
+  @type CEOID | Unique identifier for all WINCE objects
+  @comm Every WINCE object can be efficiently referred to by its OID. OID's are unique
+        in the system and are not reused
+   }
+
+  type
+     CEOID = DWORD;
+     PCEOID = CEOID;
+
+     CEGUID = record
+          Data1 : DWORD;
+          Data2 : DWORD;
+          Data3 : DWORD;
+          Data4 : DWORD;
+       end;
+     _CEGUID = CEGUID;
+     PCEGUID = ^CEGUID;
+     TCEGUID = CEGUID;
+{$ifndef WM_DBNOTIFICATION}
+
+  const
+     WM_DBNOTIFICATION = $03FD;
+{$else}
+(* error
+ERRFALSE(WM_DBNOTIFICATION == 0x03FD);
+ in declarator_list *)
+{$endif}
+
+  const
+     CEDB_EXNOTIFICATION = $00000001;
+  { must be set to the structure size }
+  { window handle for notifications to be posted }
+  { heap from which to allocate EX-NOTIFICATIONS }
+
+  type
+
+     CENOTIFYREQUEST = record
+          dwSize : DWORD;
+          hwnd : HWND;
+          dwFlags : DWORD;
+          hHeap : HANDLE;
+          dwParam : DWORD;
+       end;
+     _CENOTIFYREQUEST = CENOTIFYREQUEST;
+     PCENOTIFYREQUEST = ^CENOTIFYREQUEST;
+     TCENOTIFYREQUEST = CENOTIFYREQUEST;
+
+     CENOTIFICATION = record
+          dwSize : DWORD;
+          dwParam : DWORD;
+          uType : UINT;
+          guid : CEGUID;
+          oid : CEOID;
+          oidParent : CEOID;
+       end;
+     _CENOTIFICATION = CENOTIFICATION;
+     PCENOTIFICATION = ^CENOTIFICATION;
+     TCENOTIFICATION = CENOTIFICATION;
+  { @CESYSGEN IF FILESYS_FSMAIN }
+  { @struct CEFILEINFO | Contains information about a file object     }
+  {@field File attributes }
+  {@field CEOID of parent directory }
+  {@field Full path name of the file }
+  {@field Time stamp of last change }
+  {@field Length of file }
+
+     CEFILEINFO = record
+          dwAttributes : DWORD;
+          oidParent : CEOID;
+          szFileName : array[0..(MAX_PATH)-1] of WCHAR;
+          ftLastChanged : FILETIME;
+          dwLength : DWORD;
+       end;
+     _CEFILEINFO = CEFILEINFO;
+     PCEFILEINFO = ^CEFILEINFO;
+     TCEFILEINFO = CEFILEINFO;
+  {@struct CEDIRINFO | Contains information about a directory object     }
+  {@field Directory attributes }
+  {@field CEOID of parent directory }
+  {@field Full path name of the directory }
+
+     CEDIRINFO = record
+          dwAttributes : DWORD;
+          oidParent : CEOID;
+          szDirName : array[0..(MAX_PATH)-1] of WCHAR;
+       end;
+     _CEDIRINFO = CEDIRINFO;
+     PCEDIRINFO = ^CEDIRINFO;
+     TCEDIRINFO = CEDIRINFO;
+  {
+  @msg DB_CEOID_CREATED | Msg sent on creation of new oid
+  @comm WParam == CEOID modified
+        LParam == CEOID's parent CEOID
+  @xref <f CeRegisterReplNotification>
+   }
+
+  const
+     DB_CEOID_CREATED = WM_USER+$1;
+  {
+  @msg DB_CEOID_DATABASE_DELETED | Msg sent on deletion of database
+  @comm WParam == CEOID modified
+        LParam == CEOID's parent CEOID
+  @xref <f CeRegisterReplNotification>
+   }
+     DB_CEOID_DATABASE_DELETED = WM_USER+$2;
+  {
+  @msg DB_CEOID_RECORD_DELETED | Msg sent on deletion of record
+  @comm WParam == CEOID modified
+        LParam == CEOID's parent CEOID
+  @xref <f CeRegisterReplNotification>
+   }
+     DB_CEOID_RECORD_DELETED = WM_USER+$3;
+  {
+  @msg DB_CEOID_FILE_DELETED | Msg sent on deletion of file
+  @comm WParam == CEOID modified
+        LParam == CEOID's parent CEOID
+  @xref <f CeRegisterReplNotification>
+   }
+     DB_CEOID_FILE_DELETED = WM_USER+$4;
+  {
+  @msg DB_CEOID_DIRECTORY_DELETED | Msg sent on deletion of directory
+  @comm WParam == CEOID modified
+        LParam == CEOID's parent CEOID
+  @xref <f CeRegisterReplNotification>
+   }
+     DB_CEOID_DIRECTORY_DELETED = WM_USER+$5;
+  {
+  @msg DB_CEOID_CHANGED | Msg sent on item modification
+  @comm WParam == CEOID modified
+        LParam == CEOID's parent CEOID
+  @xref <f CeRegisterReplNotification>
+   }
+     DB_CEOID_CHANGED = WM_USER+$6;
+  { flags for CeGetReplChangeMask }
+     REPL_CHANGE_WILLCLEAR = $00000001;
+
+  type
+
+     STORE_INFORMATION = record
+          dwStoreSize : DWORD;
+          dwFreeSize : DWORD;
+       end;
+     LPSTORE_INFORMATION = ^STORE_INFORMATION;
+     PSTORE_INFORMATION = ^STORE_INFORMATION;
+     TSTORE_INFORMATION = STORE_INFORMATION;
+
+  function GetStoreInformation(lpsi:LPSTORE_INFORMATION):BOOL;cdecl;external KernelDLL name 'GetStoreInformation';
+
+  { @CESYSGEN ENDIF }
+  { @CESYSGEN IF FILESYS_FSDBASE }
+  {
+  @type CEPROPID | PropID's for WINCE properties
+  @comm PropID's on the WINCE match PropID's used by Mapi1. The top 2 bytes are an ID
+       and the low 2 bytes are the type. For a list of supported types look at the tags
+       supported in <t CEVALUNION>. We reserve one bit (0x4000) in the type as the
+       flag <b CEPROPVAL_NULL> as a special flag. It denotes that a property was not
+       found in a Read call, or that the property should be deleted in a write call.
+   }
+
+  type
+
+     CEPROPID = DWORD;
+     PCEPROPID = CEPROPID;
+     TCEPROPID = CEPROPID;
+
+  { was #define dname(params) para_def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function TypeFromPropID(propid : longint) : longint;
+
+  {@struct CERECORDINFO | Contains information about a record object     }
+  {@field CEOID of parent database }
+
+  type
+
+     CERECORDINFO = record
+          oidParent : CEOID;
+       end;
+     _CERECORDINFO = CERECORDINFO;
+     PCERECORDINFO = ^CERECORDINFO;
+     TCERECORDINFO = CERECORDINFO;
+
+  const
+     CEDB_SORT_DESCENDING = $00000001;
+     CEDB_SORT_CASEINSENSITIVE = $00000002;
+     CEDB_SORT_UNKNOWNFIRST = $00000004;
+     CEDB_SORT_GENERICORDER = $00000008;     { internally used for generic ordering }
+     CEDB_SORT_IGNORENONSPACE = $00000010;
+     CEDB_SORT_IGNORESYMBOLS = $00000020;
+     CEDB_SORT_IGNOREKANATYPE = $00000040;
+     CEDB_SORT_IGNOREWIDTH = $00000080;
+     CEDB_SORT_STRINGSORT = $00000100;
+     CEDB_SORT_UNIQUE = $00000200;
+     CEDB_SORT_NONNULL = $00000400;
+  { High nibble of flags reserved }
+  {@struct SORTORDERSPEC | Specifies details about a sort order in a database }
+  {@comm Note that we only support simple sorts on a primary key. Records with the same key value }
+  {      will be sorted in arbitrary order. }
+  {@field PropID to be sorted on. }
+  {@field Any combination of the following }
+  {@flag CEDB_SORT_DESCENDING | Sort in descending order. Default is ascending. }
+  {@flag CEDB_SORT_CASEINSENSITIVE | Only valid for strings. }
+  {@flag CEDB_SORT_UNKNOWNFIRST | Puts records which do  }
+  { not contain this property before all the other records. }
+  { Default is to put them last. }
+  {@flag CEDB_SORT_IGNORENONSPACE | Only valid for strings. }
+  { This flag only has an effect for the locales in which  }
+  { accented characters are sorted in a second pass from }
+  { main characters. }
+  {@flag CEDB_SORT_IGNORESYMBOLS | Only valid for strings. }
+  {@flag CEDB_SORT_IGNOREKANATYPE | Only valid for strings. }
+  { Do not differentiate between Hiragana and Katakana characters. }
+  {@flag CEDB_SORT_IGNOREWIDTH | Only valid for strings. }
+  { Do not differentiate between a single-byte character  }
+  { and the same character as a double-byte character. }
+  {@flag CEDB_SORT_UNIQUE | Require the property to be }
+  { unique across all records in the database. }
+  {@flag CEDB_SORT_NONNULL | Require the property to be }
+  { present in all records. }
+
+  type
+
+     SORTORDERSPEC = record
+          propid : CEPROPID;
+          dwFlags : DWORD;
+       end;
+     _SORTORDERSPEC = SORTORDERSPEC;
+     PSORTORDERSPEC = ^SORTORDERSPEC;
+     TSORTORDERSPEC = SORTORDERSPEC;
+
+  const
+     CEDB_MAXSORTPROP = 3;
+     SORTORDERSPECEX_VERSION = 1;
+  {@struct SORTORDERSPECEX | Specifies details about a sort order in a database }
+  {@comm Supports a hierarchy of sorts. }
+  {@field Version of this structure. }
+  {@field Number of properties in this sort order. }
+  { Must not be more than CEDB_MAXSORTPROP. }
+  {@field Flags that correspond to the sort key. }
+  { Any combination of the following: }
+  {@flag CEDB_SORT_UNIQUE | Require the key to be }
+  { unique across all records in the database. }
+  {Padding for DWORD alignment }
+  {@field Array of PropIDs to be sorted }
+  { on, in order of importance. }
+  {@field Flags that correspond to the sort PropIDs }
+  { Any combination of the following: }
+  {@flag CEDB_SORT_DESCENDING | Sort in descending order. Default is ascending }
+  {@flag CEDB_SORT_CASEINSENSITIVE | Only valid for strings. }
+  {@flag CEDB_SORT_UNKNOWNFIRST | Puts records which do  }
+  { not contain this property before all the other records. }
+  { Default is to put them last. }
+  {@flag CEDB_SORT_IGNORENONSPACE | Only valid for strings. }
+  { This flag only has an effect for the locales in which  }
+  { accented characters are sorted in a second pass from }
+  { main characters. }
+  {@flag CEDB_SORT_IGNORESYMBOLS | Only valid for strings. }
+  {@flag CEDB_SORT_IGNOREKANATYPE | Only valid for strings. }
+  { Do not differentiate between Hiragana and Katakana characters. }
+  {@flag CEDB_SORT_IGNOREWIDTH | Only valid for strings. }
+  { Do not differentiate between a single-byte character  }
+  { and the same character as a double-byte character. }
+  {@flag CEDB_SORT_NONNULL | Require the property to be }
+  { present in all records. }
+
+  type
+
+     SORTORDERSPECEX = record
+          wVersion : WORD;
+          wNumProps : WORD;
+          wKeyFlags : WORD;
+          wReserved : WORD;
+          rgPropID : array[0..(CEDB_MAXSORTPROP)-1] of CEPROPID;
+          rgdwFlags : array[0..(CEDB_MAXSORTPROP)-1] of DWORD;
+       end;
+     _SORTORDERSPECEX = SORTORDERSPECEX;
+     PSORTORDERSPECEX = ^_SORTORDERSPECEX;
+     TSORTORDERSPECEX = SORTORDERSPECEX;
+  { NOTENOTE someday this should become a separate CE-only error code }
+
+  const
+     ERROR_DBPROP_NOT_FOUND = ERROR_ACCESS_DENIED;
+     ERROR_REPEATED_KEY = ERROR_ALREADY_EXISTS;
+     CEDB_MAXDBASENAMELEN = 32;
+     CEDB_MAXSORTORDER = 4;
+  { values for validity mask flags }
+     CEDB_VALIDNAME = $0001;
+     CEDB_VALIDTYPE = $0002;
+     CEDB_VALIDSORTSPEC = $0004;
+     CEDB_VALIDMODTIME = $0008;
+     CEDB_VALIDDBFLAGS = $0010;
+     CEDB_VALIDCREATE = ((CEDB_VALIDNAME or CEDB_VALIDTYPE) or CEDB_VALIDSORTSPEC) or CEDB_VALIDDBFLAGS;
+  { values for dbflags }
+     CEDB_NOCOMPRESS = $00010000;
+     CEDB_SYSTEMDB = $00020000;
+  { @struct CEDBASEINFO | Contains information about a database object     }
+  {@field Indicates which fields are valid. Possible values are: }
+  {  @flag CEDB_VALIDNAME | The name field is valid and should be used }
+  {  @flag CEDB_VALIDTYPE | The type field is valid and should be used }
+  {  @flag CEDB_VALIDSORTSPEC | The sortspecs are valid and should be used }
+  {@field Name of Database. Max CEDB_MAXDBASENAMELEN characters. }
+  {@field A type ID for this database }
+  {@field Number of records in the database }
+  {@field Number of sort orders active in the database }
+  { Maximum is CEDB_MAXSORTORDER. }
+  {@field Size in bytes that this database is using }
+  {@field Last time this database was modified }
+  {@field Actual sort order descriptions.  }
+  { Only first wNumSortOrder of this array are valid. }
+
+  type
+
+     CEDBASEINFO = record
+          dwFlags : DWORD;
+          szDbaseName : array[0..(CEDB_MAXDBASENAMELEN)-1] of WCHAR;
+          dwDbaseType : DWORD;
+          wNumRecords : WORD;
+          wNumSortOrder : WORD;
+          dwSize : DWORD;
+          ftLastModified : FILETIME;
+          rgSortSpecs : array[0..(CEDB_MAXSORTORDER)-1] of SORTORDERSPEC;
+       end;
+     _CEDBASEINFO = CEDBASEINFO;
+     PCEDBASEINFO = ^CEDBASEINFO;
+     TCEDBASEINFO = CEDBASEINFO;
+
+  const
+     CEDBASEINFOEX_VERSION = 1;
+  { @struct CEDBASEINFOEX | Contains extended information about a database object     }
+  {@field Version of this structure }
+  {@field Number of sort orders active in the database }
+  { Maximum is CEDB_MAXSORTORDER. }
+  {@field Indicates which fields are valid. Possible values are: }
+  {  @flag CEDB_VALIDNAME | The name field is valid and should be used }
+  {  @flag CEDB_VALIDTYPE | The type field is valid and should be used }
+  {  @flag CEDB_VALIDSORTSPEC | The sortspecs are valid and should be used }
+  {@field Name of Database. Max CEDB_MAXDBASENAMELEN characters. }
+  {@field A type ID for this database }
+  {@field Number of records in the database }
+  {@field Size in bytes that this database is using }
+  {@field Last time this database was modified }
+  {@field Actual sort order descriptions.  }
+  { Only first wNumSortOrder of this array are valid. }
+
+  type
+     CEDBASEINFOEX = record
+          wVersion : WORD;
+          wNumSortOrder : WORD;
+          dwFlags : DWORD;
+          szDbaseName : array[0..(CEDB_MAXDBASENAMELEN)-1] of WCHAR;
+          dwDbaseType : DWORD;
+          dwNumRecords : DWORD;
+          dwSize : DWORD;
+          ftLastModified : FILETIME;
+          rgSortSpecs : array[0..(CEDB_MAXSORTORDER)-1] of SORTORDERSPECEX;
+       end;
+     LPCEDBASEINFOEX = ^CEDBASEINFOEX;
+     _CEDBASEINFOEX = CEDBASEINFOEX;
+     TCEDBASEINFOEX = CEDBASEINFOEX;
+     PCEDBASEINFOEX = ^CEDBASEINFOEX;
+
+  const
+     BY_HANDLE_DB_INFORMATION_VERSION = 1;
+  { @struct BY_HANDLE_DB_INFORMATION | Contains extended information about an open database }
+  {@field Version of this structure }
+  {Padding for DWORD alignment }
+  {@field GUID of parent volume }
+  {@field OID of database }
+  {@field Extended database information }
+
+  type
+
+     BY_HANDLE_DB_INFORMATION = record
+          wVersion : WORD;
+          wReserved : WORD;
+          guidVol : CEGUID;
+          oidDbase : CEOID;
+          infDatabase : CEDBASEINFOEX;
+       end;
+     _BY_HANDLE_DB_INFORMATION = BY_HANDLE_DB_INFORMATION;
+     LPBY_HANDLE_DB_INFORMATION = ^BY_HANDLE_DB_INFORMATION;
+     TBY_HANDLE_DB_INFORMATION = BY_HANDLE_DB_INFORMATION;
+     PBY_HANDLE_DB_INFORMATION = ^BY_HANDLE_DB_INFORMATION;
+  { flags for open database - use low word }
+
+  const
+     CEDB_AUTOINCREMENT = $00000001;
+     CEDB_SEEK_CEOID = $00000001;
+     CEDB_SEEK_BEGINNING = $00000002;
+     CEDB_SEEK_END = $00000004;
+     CEDB_SEEK_CURRENT = $00000008;
+     CEDB_SEEK_VALUESMALLER = $00000010;
+     CEDB_SEEK_VALUEFIRSTEQUAL = $00000020;
+     CEDB_SEEK_VALUEGREATER = $00000040;
+     CEDB_SEEK_VALUENEXTEQUAL = $00000080;
+
+  type
+
+     CEBLOB = record
+          dwCount : DWORD;
+          lpb : LPBYTE;
+       end;
+     _CEBLOB = CEBLOB;
+     PCEBLOB = ^CEBLOB;
+     TCEBLOB = CEBLOB;
+
+  const
+     CEVT_I2 = 2;
+     CEVT_UI2 = 18;
+     CEVT_I4 = 3;
+     CEVT_UI4 = 19;
+     CEVT_FILETIME = 64;
+     CEVT_LPWSTR = 31;
+     CEVT_BLOB = 65;
+     CEVT_BOOL = 11;
+     CEVT_R8 = 5;
+  { @union CEVALUNION | value types for a property }
+  {@field CEVT_I2 }
+  {@field CEVT_UI2 }
+  {@field CEVT_I4 }
+  {@field CEVT_UI4 }
+  {@field CEVT_FILETIME  }
+  {@field CEVT_LPWSTR - Ptr to null terminated string }
+  {@field CEVT_BLOB - DWORD count, and Ptr to bytes }
+  {@field CEVT_BOOL }
+  {@field CEVT_R8 }
+
+  type
+
+     CEVALUNION = record
+         case longint of
+            0 : ( iVal : smallint );
+            1 : ( uiVal : USHORT );
+            2 : ( lVal : longint );
+            3 : ( ulVal : ULONG );
+            4 : ( filetime : FILETIME );
+            5 : ( lpwstr : LPWSTR );
+            6 : ( blob : CEBLOB );
+            7 : ( boolVal : BOOL );
+            8 : ( dblVal : double );
+         end;
+     _CEVALUNION = CEVALUNION;
+     PCEVALUNION = ^CEVALUNION;
+     TCEVALUNION = CEVALUNION;
+  { @struct CEPROPVAL | Contains a property value }
+  { Don't define flags in low byte or high nibble }
+
+  const
+     CEDB_PROPNOTFOUND = $0100;
+     CEDB_PROPDELETE = $0200;
+  {@field PropID of the value. }
+  {@field Private field - can be garbage on entry }
+  {@field Special flags for this property. Possible flags }
+  {@flag CEDB_PROPNOTFOUND | Set by <f CeReadRecordProps> if property not found }
+  {@flag CEDB_PROPDELETE | If passed to <f CeWriteRecordProps> it causes  }
+  { this property to be deleted }
+  {@field Actual value for simple types, ptr for strings/blobs                         }
+
+  type
+
+     CEPROPVAL = record
+          propid : CEPROPID;
+          wLenData : WORD;
+          wFlags : WORD;
+          val : CEVALUNION;
+       end;
+     _CEPROPVAL = CEPROPVAL;
+     PCEPROPVAL = ^CEPROPVAL;
+     TCEPROPVAL = CEPROPVAL;
+  { Max record length defines }
+  { zero is a valid length so we cant have full 4196 }
+
+  const
+     CEDB_MAXDATABLOCKSIZE = 4092;
+     CEDB_MAXPROPDATASIZE  = ((CEDB_MAXDATABLOCKSIZE*16)-1);
+(* error
+#define CEDB_MAXPROPDATASIZE  ((CEDB_MAXDATABLOCKSIZE*16)-1)
+in define line 405 *)
+    { max record size is bound only by the max logging space we want to consume }
+    { this is not explicitly checked for - if you read too much data and cause the log }
+    { page to overflow the call will fail. }
+       CEDB_MAXRECORDSIZE = 128*1024;
+    { Max number of records allowed in a single database. }
+       CEDB_MAXNUMRECORDS = $FFFF;
+    { flags for ReadRecord }
+       CEDB_ALLOWREALLOC = $00000001;
+    { was #define dname(params) para_def_expr }
+    { argument types are unknown }
+    { return type might be wrong }
+    //function CREATE_SYSTEMGUID(pguid : longint) : longint;
+    procedure CREATE_SYSTEMGUID(out pguid : CEGUID);
+
+    { was #define dname(params) para_def_expr }
+    { argument types are unknown }
+    { return type might be wrong }
+    //function CREATE_INVALIDGUID(pguid : longint) : longint;
+    procedure CREATE_INVALIDGUID(out pguid : CEGUID);
+
+
+    { was #define dname(params) para_def_expr }
+    { argument types are unknown }
+    { return type might be wrong }
+    //function CHECK_SYSTEMGUID(pguid : longint) : longint;
+    function CHECK_SYSTEMGUID(pguid : PCEGUID) : longint;
+
+    { was #define dname(params) para_def_expr }
+    { argument types are unknown }
+    { return type might be wrong }
+    //function CHECK_INVALIDGUID(pguid : longint) : longint;
+    function CHECK_INVALIDGUID(pguid : PCEGUID) : longint;
+
+    { Obsolete versions for backward compatibility }
+    function CeFindFirstDatabase(dwClassID:DWORD):HANDLE; external KernelDLL name 'CeFindFirstDatabase';
+
+    function CeFindNextDatabase(hEnum:HANDLE):CEOID; external KernelDLL name 'CeFindNextDatabase';
+
+    function CeCreateDatabase(lpszname:LPWSTR; dwClassID:DWORD; wNumSortOrder:WORD; var rgSortSpecs:SORTORDERSPEC):CEOID; external KernelDLL name 'CeCreateDatabase';
+
+    function CeCreateDatabaseEx(pguid:PCEGUID; var pInfo:CEDBASEINFO):CEOID; external KernelDLL name 'CeCreateDatabaseEx';
+
+    function CeSetDatabaseInfo(oidDbase:CEOID; var pNewInfo:CEDBASEINFO):Boolean; external KernelDLL name 'CeSetDatabaseInfo';
+
+    function CeSetDatabaseInfoEx(pguid:PCEGUID; oidDbase:CEOID; var pNewInfo:CEDBASEINFO):Boolean; external KernelDLL name 'CeSetDatabaseInfoEx';
+
+    function CeOpenDatabase(poid:PCEOID; lpszName:LPWSTR; propid:CEPROPID; dwFlags:DWORD; hwndNotify:HWND):HANDLE; external KernelDLL name 'CeOpenDatabase';
+
+    function CeOpenDatabaseEx(pguid:PCEGUID; poid:PCEOID; lpszName:LPWSTR; propid:CEPROPID; dwFlags:DWORD;
+               var pReq:CENOTIFYREQUEST):HANDLE; external KernelDLL name 'CeOpenDatabaseEx';
+
+    function CeDeleteDatabase(oid:CEOID):BOOL; external KernelDLL name 'CeDeleteDatabase';
+
+    function CeReadRecordProps(hDbase:HANDLE; dwFlags:DWORD; lpcPropID:LPWORD; var rgPropID:CEPROPID; var lplpBuffer:LPBYTE;
+               lpcbBuffer:LPDWORD):CEOID; external KernelDLL name 'CeReadRecordProps';
+
+    function CeSeekDatabase(hDatabase:HANDLE; dwSeekType:DWORD; dwValue:DWORD; lpdwIndex:LPDWORD):CEOID; external KernelDLL name 'CeSeekDatabase';
+
+    function CeGetDBInformationByHandle(hDbase:HANDLE; lpDBInfo:LPBY_HANDLE_DB_INFORMATION):Boolean; external KernelDLL name 'CeGetDBInformationByHandle';
+
+    function CeFindFirstDatabaseEx(pguid:PCEGUID; dwClassID:DWORD):HANDLE; external KernelDLL name 'CeFindFirstDatabaseEx';
+
+    function CeFindNextDatabaseEx(hEnum:HANDLE; pguid:PCEGUID):CEOID; external KernelDLL name 'CeFindNextDatabaseEx';
+
+    function CeCreateDatabaseEx2(pguid:PCEGUID; pInfo:PCEDBASEINFOEX):CEOID; external KernelDLL name 'CeCreateDatabaseEx2';
+
+    function CeSetDatabaseInfoEx2(pguid:PCEGUID; oidDbase:CEOID; var pNewInfo:CEDBASEINFOEX):Boolean; external KernelDLL name 'CeSetDatabaseInfoEx2';
+
+    function CeOpenDatabaseEx2(pguid:PCEGUID; poid:PCEOID; lpszName:LPWSTR; var pSort:SORTORDERSPECEX; dwFlags:DWORD;
+               var pReq:CENOTIFYREQUEST):HANDLE; external KernelDLL name 'CeOpenDatabaseEx2';
+
+    function CeDeleteDatabaseEx(pguid:PCEGUID; oid:CEOID):Boolean; external KernelDLL name 'CeDeleteDatabaseEx';
+
+    function CeSeekDatabaseEx(hDatabase:HANDLE; dwSeekType:DWORD; dwValue:DWORD; wNumVals:WORD; lpdwIndex:LPDWORD):CEOID; external KernelDLL name 'CeSeekDatabaseEx';
+
+    function CeDeleteRecord(hDatabase:HANDLE; oidRecord:CEOID):Boolean; external KernelDLL name 'CeDeleteRecord';
+
+    function CeReadRecordPropsEx(hDbase:HANDLE; dwFlags:DWORD; lpcPropID:LPWORD; var rgPropID:CEPROPID; var lplpBuffer:LPBYTE;
+               lpcbBuffer:LPDWORD; hHeap:HANDLE):CEOID; external KernelDLL name 'CeReadRecordPropsEx';
+
+    function CeWriteRecordProps(hDbase:HANDLE; oidRecord:CEOID; cPropID:WORD; var rgPropVal:CEPROPVAL):CEOID; external KernelDLL name 'CeWriteRecordProps';
+
+    function CeMountDBVol(pguid:PCEGUID; lpszVol:LPWSTR; dwFlags:DWORD):Boolean; external KernelDLL name 'CeMountDBVol';
+
+    function CeUnmountDBVol(pguid:PCEGUID):Boolean; external KernelDLL name 'CeUnmountDBVol';
+
+    function CeFlushDBVol(pguid:PCEGUID):Boolean; external KernelDLL name 'CeFlushDBVol';
+
+    function CeEnumDBVolumes(pguid:PCEGUID; lpBuf:LPWSTR; dwSize:DWORD):Boolean; external KernelDLL name 'CeEnumDBVolumes';
+
+    function CeFreeNotification(pRequest:PCENOTIFYREQUEST; pNotify:PCENOTIFICATION):Boolean; external KernelDLL name 'CeFreeNotification';
+
+    { @CESYSGEN ENDIF }
+    { @CESYSGEN IF FILESYS_FSMAIN }
+    {
+    @struct CEOIDINFO | Contains information about a WINCE object
+    @field WORD | wObjType | Type of object
+       @flag   OBJTYPE_INVALID   | There was no valid object with this CEOID
+       @flag   OBJTYPE_FILE      | The object is a file
+       @flag   OBJTYPE_DIRECTORY | The object is a directory
+       @flag   OBJTYPE_DATABASE  | The object is a database
+       @flag   OBJTYPE_RECORD    | The object is a record inside a database
+    @field <lt>SeeBelow<gt> | <lt>CEOIDINFOUNIONref<gt> | Note: The remaining members form a union
+    @field CEFILEINFO   | infFile      | Valid for file objects
+    @field CEDIRINFO    | infDirectory | Valid for directory objects
+    @field CEDBASEINFO  | infDatabase  | Valid for database objects
+    @field CERECORDINFO | infRecord    | Valid for record objects
+    @xref   <t CEFILEINFO>  <t CEDIRINFO> <t CEDBASEINFO>  <t CERECORDINFO>
+     }
+
+    const
+       OBJTYPE_INVALID = 0;
+       OBJTYPE_FILE = 1;
+       OBJTYPE_DIRECTORY = 2;
+       OBJTYPE_DATABASE = 3;
+       OBJTYPE_RECORD = 4;
+    {Type of object }
+    {        OBJTYPE_INVALID   | There was no valid object with this CEOID }
+    {        OBJTYPE_FILE      | The object is a file }
+    {        OBJTYPE_DIRECTORY | The object is a directory }
+    {        OBJTYPE_DATABASE  | The object is a database }
+    {        OBJTYPE_RECORD    | The object is a record inside a database }
+    { dword alignment             }
+    {This is a union  }
+    {Valid for file objects }
+    {Valid for directory objects }
+    { @CESYSGEN IF FILESYS_FSDBASE }
+    {Valid for database objects }
+    {Valid for record objects }
+    { @CESYSGEN ENDIF }
+
+type CEOIDINFO = record
+  wObjType : WORD; //Type of object
+            //        OBJTYPE_INVALID   | There was no valid object with this CEOID
+            //        OBJTYPE_FILE      | The object is a file
+            //        OBJTYPE_DIRECTORY | The object is a directory
+            //        OBJTYPE_DATABASE  | The object is a database
+            //        OBJTYPE_RECORD    | The object is a record inside a database
+  wPad : WORD;        // dword alignment
+  case longint of
+    0 : ( infFile : CEFILEINFO ); //Valid for file objects
+    1 : ( infDirectory : CEDIRINFO; ); //Valid for directory objects
+    2 : ( infDatabase : CEDBASEINFO; ); //Valid for database objects
+    3 : ( infRecord : CERECORDINFO; );  //Valid for record objects
+  end;
+  _CEOIDINFO = CEOIDINFO;
+  PCEOIDINFO = ^CEOIDINFO;
+  TCEOIDINFO = CEOIDINFO;
+
+  const CEOIDINFOEX_VERSION =  1;
+
+  type  CEOIDINFOEX = record
+    wVersion : Word;  //@field Version of this structure
+                //@flag OBJTYPE_INVALID   | There was no valid object with this CEOID
+                //@flag OBJTYPE_FILE      | The object is a file
+                //@flag OBJTYPE_DIRECTORY | The object is a directory
+                //@flag OBJTYPE_DATABASE  | The object is a database
+                //@flag OBJTYPE_RECORD    | The object is a record inside a database
+    wObjType : Word;  //@field Type of object
+    u : record  //This is a union
+      case longint of
+        0 : ( infFile : CEFILEINFO ); //Valid for file objects
+        1 : ( infDirectory : CEDIRINFO; ); //Valid for directory objects
+        // @CESYSGEN IF FILESYS_FSDBASE
+        2 : ( infDatabase : CEDBASEINFO; ); //Valid for database objects
+        3 : ( infRecord : CERECORDINFO; );  //Valid for record objects
+      end;
+  end;
+  _CEOIDINFOEX = CEOIDINFOEX;
+  PCEOIDINFOEX = ^CEOIDINFOEX;
+  TCEOIDINFOEX = CEOIDINFOEX;
+
+(* error
+    };
+ in member_list *)
+(* error
+#define CEOIDINFOEX_VERSION 1
+    {
+    @struct CEOIDINFOEX | Contains extended information about a WINCE object
+    @field WORD | wObjType | Type of object
+       @flag   OBJTYPE_INVALID   | There was no valid object with this CEOID
+       @flag   OBJTYPE_FILE      | The object is a file
+       @flag   OBJTYPE_DIRECTORY | The object is a directory
+       @flag   OBJTYPE_DATABASE  | The object is a database
+       @flag   OBJTYPE_RECORD    | The object is a record inside a database
+    @field <lt>SeeBelow<gt> | <lt>CEOIDINFOUNIONref<gt> | Note: The remaining members form a union
+    @field CEFILEINFO   | infFile      | Valid for file objects
+    @field CEDIRINFO    | infDirectory | Valid for directory objects
+    @field CEDBASEINFO  | infDatabase  | Valid for database objects
+    @field CERECORDINFO | infRecord    | Valid for record objects
+    @xref   <t CEFILEINFO>  <t CEDIRINFO> <t CEDBASEINFO>  <t CERECORDINFO>
+     }
+    {@field Version of this structure }
+    {@field Type of object }
+    {@flag OBJTYPE_INVALID   | There was no valid object with this CEOID }
+    {@flag OBJTYPE_FILE      | The object is a file }
+    {@flag OBJTYPE_DIRECTORY | The object is a directory }
+    {@flag OBJTYPE_DATABASE  | The object is a database }
+    {@flag OBJTYPE_RECORD    | The object is a record inside a database }
+    { Valid for file objects }
+    { Valid for directory objects }
+    { @CESYSGEN IF FILESYS_FSDBASE }
+    { Valid for database objects }
+    { Valid for record objects }
+    { @CESYSGEN ENDIF }
+ in member_list *)
+(* error
+    };
+in declaration at line 541 *)
+(* error
+} CEOIDINFOEX, PCEOIDINFOEX;
+in declaration at line 542 *)
+    { Functions }
+
+    function CeOidGetInfoEx2(pguid:PCEGUID; oid:CEOID; var oidInfo:CEOIDINFOEX):Boolean; external KernelDLL name 'CeOidGetInfoEx2';
+    function CeOidGetInfoEx(pguid:PCEGUID; oid:CEOID; var oidInfo:CEOIDINFO):Boolean; external KernelDLL name 'CeOidGetInfoEx';
+    function CeOidGetInfo(oid:CEOID; var oidInfo:CEOIDINFO):Boolean; external KernelDLL name 'CeOidGetInfo';
+
+    { @CESYSGEN ENDIF }
+{$ifdef WINCEOEM}
+{$include <pwindbas.h>   // internal defines }
+{$ifdef WINCEMACRO}
+{$include <mwindbas.h>}
+{$endif}
+{$endif}
+    { @CESYSGEN ENDIF }
+{$endif}
+
+implementation
+
+  { was #define dname(params) para_def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function TypeFromPropID(propid : longint) : longint;
+    begin
+       TypeFromPropID:=LOWORD(propid);
+    end;
+
+    { was #define dname(params) para_def_expr }
+    { argument types are unknown }
+    { return type might be wrong }
+    procedure CREATE_SYSTEMGUID(out pguid : CEGUID);
+      begin
+         //CREATE_SYSTEMGUID:=memset(pguid,0,sizeof(CEGUID));
+         fillchar(pguid,0,sizeof(CEGUID));
+      end;
+
+    { was #define dname(params) para_def_expr }
+    { argument types are unknown }
+    { return type might be wrong }
+    procedure CREATE_INVALIDGUID(out pguid : CEGUID);
+      begin
+         //CREATE_INVALIDGUID:=memset(pguid,-(1),sizeof(CEGUID));
+         fillchar(pguid,-(1),sizeof(CEGUID));
+      end;
+
+    { was #define dname(params) para_def_expr }
+    { argument types are unknown }
+    { return type might be wrong }
+    function CHECK_SYSTEMGUID(pguid : PCEGUID) : longint;
+      begin
+         CHECK_SYSTEMGUID:= not ((((pguid^.Data1) or (pguid^.Data2)) or (pguid^.Data3)) or (pguid^.Data4));
+         //CHECK_SYSTEMGUID:= _CEGUID(not ((((pguid.Data1) or (pguid.Data2)) or (pguid.Data3)) or (pguid.Data4)));
+      end;
+
+    { was #define dname(params) para_def_expr }
+    { argument types are unknown }
+    { return type might be wrong }
+    function CHECK_INVALIDGUID(pguid : PCEGUID) : longint;
+      begin
+         CHECK_INVALIDGUID:= not ( not ((((pguid^.Data1) and (pguid^.Data2)) and (pguid^.Data3)) and (pguid^.Data4)));
+      end;
+
+
+end.

+ 54 - 54
rtl/wince/Makefile

@@ -1,5 +1,5 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/01/22]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/05/08]
 #
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded
@@ -260,163 +260,163 @@ GRAPHDIR=$(INC)/graph
 include $(WININC)/makefile.inc
 WINDOWS_SOURCE_FILES=$(addprefix $(WININC)/,$(addsuffix .inc,$(WINDOWS_FILES)))
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 ifeq ($(FULL_TARGET),i386-linux)
 override TARGET_IMPLICITUNITS+=exeinfo

+ 1 - 2
rtl/wince/Makefile.fpc

@@ -16,8 +16,7 @@ units=$(SYSTEMUNIT) ctypes objpas macpas strings \
       varutils variants fmtbcd \
       matrix ucomplex \
       charset getopts winsock winsock2 sockets \
-      cmem sharemem \
-      gx
+      cmem sharemem
 #    initc  signals \
 #    crt graph \
 #    wincrt winmouse winevent  printer \

+ 0 - 17
rtl/wince/windows.pp

@@ -41,16 +41,6 @@ interface
 {$i struct.inc}
 {$i messages.inc}
 {$i coredll.inc}
-{$i aygshell.inc}
-{$i commctrl.inc}
-{$i commdlg.inc}
-{$i ceshell.inc}
-{$i oleaut32.inc}
-{$i iphlpapi.inc}
-{$i simmgr.inc}
-{$i tapi.inc}
-{$i notify.inc}
-{$i power.inc}
 {$i cemiss.inc}
 
 {$i redef.inc}
@@ -67,13 +57,6 @@ implementation
 {$i struct.inc}
 {$i messages.inc}
 {$i coredll.inc}
-{$i aygshell.inc}
-{$i commctrl.inc}
-{$i commdlg.inc}
-{$i ceshell.inc}
-{$i oleaut32.inc}
-{$i simmgr.inc}
-{$i tapi.inc}
 {$i cemiss.inc}
 
 {$i redef.inc}

+ 1 - 1
rtl/wince/wininc/makefile.inc

@@ -1 +1 @@
-WINDOWS_FILES=base errors defines struct redef aygshell cemiss ceshell commctrl coredll iphlpapi oleaut32
+WINDOWS_FILES=base errors defines struct redef cemiss coredll

+ 14 - 0
rtl/wince/wininc/messages.inc

@@ -247,6 +247,20 @@
      EN_SAVECLIPBOARD = 1800;
      EN_SELCHANGE = 1794;
      EN_STOPNOUNDO = 1798;
+     
+     { Header control  }
+     HDM_DELETEITEM = 4610;
+     HDM_GETITEMW = 4619;
+     HDM_INSERTITEMW = 4618;
+     HDM_SETITEMW = 4620;
+
+     HDM_GETITEM = HDM_GETITEMW;
+     HDM_INSERTITEM = HDM_INSERTITEMW;
+     HDM_SETITEM = HDM_SETITEMW;
+
+     HDM_GETITEMCOUNT = 4608;
+     HDM_HITTEST = 4614;
+     HDM_LAYOUT = 4613;
 
   { Hot key control  }
   const

+ 0 - 2
rtl/wince/wininc/redef.inc

@@ -278,8 +278,6 @@ function SetScrollInfo(hWnd: HWND; BarFlag: Integer; const ScrollInfo: TScrollIn
 function SetSysColors(cElements: Integer; const lpaElements; const lpaRgbValues): BOOL; external KernelDLL name 'SetSysColors';
 function SetSystemTime(var lpSystemTime:SYSTEMTIME):WINBOOL; external KernelDLL name 'SetSystemTime';
 function SetThreadContext(hThread: THandle; const lpContext: TContext): BOOL; external KernelDLL name 'SetThreadContext';
-function SHFileOperation(const lpFileOp:SHFILEOPSTRUCTW): longint; external ShellDLL name 'SHFileOperationW';
-function SHFileOperationW(const lpFileOp:SHFILEOPSTRUCTW): longint; external ShellDLL name 'SHFileOperationW';
 function StartDoc(DC: HDC; const p2: TDocInfo): Integer;external KernelDLL name 'StartDocW';
 function StartDocW(DC: HDC; const p2: TDocInfoW): Integer;external KernelDLL name 'StartDocW';
 function SubtractRect(var lprcDst: TRect; const lprcSrc1, lprcSrc2: TRect): BOOL; external KernelDLL name 'SubtractRect';

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно