فهرست منبع

--- Merging r20522 into '.':
A packages/fcl-db/src/sqldb/mssql
A packages/fcl-db/src/sqldb/mssql/fpmake.pp
A packages/fcl-db/src/sqldb/mssql/Makefile.fpc
A packages/fcl-db/src/sqldb/mssql/fpmake.inc
A packages/fcl-db/src/sqldb/mssql/mssqlconn.pp
A packages/fcl-db/src/sqldb/mssql/readme.txt
A packages/fcl-db/src/sqldb/mssql/Makefile
U packages/fcl-db/src/sqldb/Makefile.fpc
U packages/fcl-db/src/sqldb/fpmake.inc
C packages/fcl-db/src/sqldb/Makefile
A packages/dblib
A packages/dblib/fpmake.pp
A packages/dblib/Makefile.fpc
A packages/dblib/src
A packages/dblib/src/dblib.pp
A packages/dblib/Makefile
--- Merging r20534 into '.':
C packages/fcl-db/fpmake.pp
A packages/fcl-db/src/sqldb/mysql/mysql55conn.pas
U packages/fcl-db/src/sqldb/mysql/Makefile.fpc
U packages/fcl-db/src/sqldb/mysql/mysqlconn.inc
C packages/fcl-db/src/sqldb/mysql/Makefile
U packages/mysql/fpmake.pp
A packages/mysql/src/mysql55.pp
A packages/mysql/src/mysql55dyn.pp
U packages/mysql/src/mysql.inc
--- Merging r20541 into '.':
U packages/fcl-db/src/sqldb/mssql/Makefile.fpc
Summary of conflicts:
Text conflicts: 3

# revisions: 20522,20534,20541
------------------------------------------------------------------------
r20522 | michael | 2012-03-16 09:36:12 +0100 (Fri, 16 Mar 2012) | 1 line
Changed paths:
A /trunk/packages/dblib
A /trunk/packages/dblib/Makefile
A /trunk/packages/dblib/Makefile.fpc
A /trunk/packages/dblib/fpmake.pp
A /trunk/packages/dblib/src
A /trunk/packages/dblib/src/dblib.pp
M /trunk/packages/fcl-db/src/sqldb/Makefile
M /trunk/packages/fcl-db/src/sqldb/Makefile.fpc
M /trunk/packages/fcl-db/src/sqldb/fpmake.inc
A /trunk/packages/fcl-db/src/sqldb/mssql
A /trunk/packages/fcl-db/src/sqldb/mssql/Makefile
A /trunk/packages/fcl-db/src/sqldb/mssql/Makefile.fpc
A /trunk/packages/fcl-db/src/sqldb/mssql/fpmake.inc
A /trunk/packages/fcl-db/src/sqldb/mssql/fpmake.pp
A /trunk/packages/fcl-db/src/sqldb/mssql/mssqlconn.pp
A /trunk/packages/fcl-db/src/sqldb/mssql/readme.txt

* Added ms-sql server connector by LaCak2
------------------------------------------------------------------------
------------------------------------------------------------------------
r20534 | marco | 2012-03-17 18:17:40 +0100 (Sat, 17 Mar 2012) | 3 lines
Changed paths:
M /trunk/packages/fcl-db/fpmake.pp
M /trunk/packages/fcl-db/src/sqldb/mysql/Makefile
M /trunk/packages/fcl-db/src/sqldb/mysql/Makefile.fpc
A /trunk/packages/fcl-db/src/sqldb/mysql/mysql55conn.pas
M /trunk/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc
M /trunk/packages/mysql/fpmake.pp
M /trunk/packages/mysql/src/mysql.inc
A /trunk/packages/mysql/src/mysql55.pp
A /trunk/packages/mysql/src/mysql55dyn.pp

* Merged Andrew Brunners and Lacak2's patches from Mantis #19736 that
implement mysql 5.5 header + sqldb connection support.

------------------------------------------------------------------------
------------------------------------------------------------------------
r20541 | michael | 2012-03-19 12:06:00 +0100 (Mon, 19 Mar 2012) | 1 line
Changed paths:
M /trunk/packages/fcl-db/src/sqldb/mssql/Makefile.fpc

IB -> MSSQl
------------------------------------------------------------------------

git-svn-id: branches/fixes_2_6@20984 -

marco 13 سال پیش
والد
کامیت
828e22b317

+ 13 - 0
.gitattributes

@@ -1600,6 +1600,10 @@ packages/cocoaint/utils/uikit-skel/src/opengles/OpenGLES.inc svneol=native#text/
 packages/cocoaint/utils/uikit-skel/src/patches/NSObjCRuntime.patch svneol=native#text/plain
 packages/cocoaint/utils/uikit-skel/src/quartzcore/QuartzCore.inc svneol=native#text/plain
 packages/cocoaint/utils/uikit-skel/src/uikit/UIKit.inc svneol=native#text/plain
+packages/dblib/Makefile svneol=native#text/plain
+packages/dblib/Makefile.fpc svneol=native#text/plain
+packages/dblib/fpmake.pp svneol=native#text/plain
+packages/dblib/src/dblib.pp svneol=native#text/plain
 packages/dbus/Makefile svneol=native#text/plain
 packages/dbus/Makefile.fpc svneol=native#text/plain
 packages/dbus/examples/Makefile svneol=native#text/plain
@@ -1937,6 +1941,12 @@ packages/fcl-db/src/sqldb/interbase/Makefile.fpc svneol=native#text/plain
 packages/fcl-db/src/sqldb/interbase/fpmake.inc svneol=native#text/plain
 packages/fcl-db/src/sqldb/interbase/fpmake.pp svneol=native#text/plain
 packages/fcl-db/src/sqldb/interbase/ibconnection.pp svneol=native#text/plain
+packages/fcl-db/src/sqldb/mssql/Makefile svneol=native#text/plain
+packages/fcl-db/src/sqldb/mssql/Makefile.fpc svneol=native#text/plain
+packages/fcl-db/src/sqldb/mssql/fpmake.inc svneol=native#text/plain
+packages/fcl-db/src/sqldb/mssql/fpmake.pp svneol=native#text/plain
+packages/fcl-db/src/sqldb/mssql/mssqlconn.pp svneol=native#text/plain
+packages/fcl-db/src/sqldb/mssql/readme.txt svneol=native#text/plain
 packages/fcl-db/src/sqldb/mysql/Makefile svneol=native#text/plain
 packages/fcl-db/src/sqldb/mysql/Makefile.fpc svneol=native#text/plain
 packages/fcl-db/src/sqldb/mysql/fpmake.inc svneol=native#text/plain
@@ -1946,6 +1956,7 @@ packages/fcl-db/src/sqldb/mysql/mysql41conn.pas svneol=native#text/plain
 packages/fcl-db/src/sqldb/mysql/mysql4conn.pas svneol=native#text/plain
 packages/fcl-db/src/sqldb/mysql/mysql50conn.pas svneol=native#text/plain
 packages/fcl-db/src/sqldb/mysql/mysql51conn.pas svneol=native#text/plain
+packages/fcl-db/src/sqldb/mysql/mysql55conn.pas svneol=native#text/plain
 packages/fcl-db/src/sqldb/mysql/mysqlconn.inc svneol=native#text/plain
 packages/fcl-db/src/sqldb/odbc/Makefile svneol=native#text/plain
 packages/fcl-db/src/sqldb/odbc/Makefile.fpc svneol=native#text/plain
@@ -5019,6 +5030,8 @@ packages/mysql/src/mysql50dyn.pp svneol=native#text/plain
 packages/mysql/src/mysql51.pp svneol=native#text/plain
 packages/mysql/src/mysql51dyn.pp svneol=native#text/plain
 packages/mysql/src/mysql51emb.pp svneol=native#text/plain
+packages/mysql/src/mysql55.pp svneol=native#text/plain
+packages/mysql/src/mysql55dyn.pp svneol=native#text/plain
 packages/ncurses/Makefile svneol=native#text/plain
 packages/ncurses/Makefile.fpc svneol=native#text/plain
 packages/ncurses/examples/Makefile svneol=native#text/plain

+ 336 - 30
packages/Makefile

@@ -1,10 +1,10 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/12/30]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2012/04/21]
 #
 default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux
 BSDs = freebsd netbsd openbsd darwin
-UNIXs = linux $(BSDs) solaris qnx haiku
+UNIXs = linux $(BSDs) solaris qnx haiku aix
 LIMIT83fs = go32v2 os2 emx watcom
 OSNeedsComspecToRunBatch = go32v2 watcom
 FORCE:
@@ -178,6 +178,12 @@ else
 ARCH=$(CPU_TARGET)
 endif
 endif
+ifeq ($(FULL_TARGET),arm-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t or SUBARCH=armv7m) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
 ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
 TARGETSUFFIX=$(OS_TARGET)
 SOURCESUFFIX=$(OS_SOURCE)
@@ -287,28 +293,28 @@ FPCFPMAKE=$(FPC)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib gmp libsee ptc graph libc unixutil graph pxlib bzip2
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib gmp libsee ptc dblib graph libc unixutil graph pxlib bzip2
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv graph unzip gdbint
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv winunits-base winunits-jedi fcl-web fastcgi ibase mysql zlib oracle odbc postgres sqlite imagemagick gdbint libpng mad tcl opengl gtk1 gtk2 librsvg a52 cdrom fpgtk openal fftw lua fcl-extra zorba oggvorbis sdl openssl graph pcap  httpd22 pxlib numlib winceunits cairo libxml gmp opencl libsee nvapi ptc aspell
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv winunits-base winunits-jedi fcl-web fastcgi ibase mysql zlib oracle odbc postgres sqlite imagemagick gdbint libpng mad tcl opengl gtk1 gtk2 librsvg a52 cdrom fpgtk openal fftw lua fcl-extra zorba oggvorbis sdl openssl graph pcap  httpd22 pxlib numlib winceunits cairo libxml gmp opencl libsee nvapi ptc aspell dblib
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv zlib libpng x11 tcl fpgtk rexx os2units gtk1 imlib
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo  bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg  httpd22 pxlib numlib users iconvenc gmp fcl-extra libxml
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo  bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg  httpd22 pxlib numlib users iconvenc gmp fcl-extra libxml dblib
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg  httpd22 pxlib numlib iconvenc
 endif
 ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg  httpd22 pxlib numlib iconvenc
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg  httpd22 pxlib numlib iconvenc dblib
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib dblib
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 bfd svgalib fcl-extra imlib utmp  fpgtk xforms fftw pcap ggi  openssl gnome1  httpd22 numlib iconvenc gtk2 cairo
@@ -320,7 +326,7 @@ ifeq ($(FULL_TARGET),i386-netware)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv zlib unzip
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc  postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc  postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib dblib
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg
@@ -353,13 +359,13 @@ ifeq ($(FULL_TARGET),i386-iphonesim)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick libpng gdbm tcl syslog libcurl bfd aspell utmp fftw pcap openssl numlib iconvenc gmp fcl-extra univint httpd22 opengles objcrtl
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib gmp libsee ptc graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib gmp libsee ptc dblib graph
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo  bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg  httpd22 pxlib numlib users iconvenc gmp fcl-extra libxml
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo  bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg  httpd22 pxlib numlib users iconvenc gmp fcl-extra libxml dblib
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib dblib
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  amunits
@@ -368,7 +374,7 @@ ifeq ($(FULL_TARGET),m68k-atari)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc  postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc  postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib dblib
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  palmunits
@@ -377,10 +383,10 @@ ifeq ($(FULL_TARGET),m68k-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib gmp libsee ptc graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib gmp libsee ptc dblib graph
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib dblib
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  amunits
@@ -400,11 +406,14 @@ endif
 ifeq ($(FULL_TARGET),powerpc-wii)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  libogcfpc
 endif
+ifeq ($(FULL_TARGET),powerpc-aix)
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg
+endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib gmp libsee ptc graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib gmp libsee ptc dblib graph
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib dblib
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 bfd svgalib fcl-extra imlib utmp  fpgtk xforms fftw pcap ggi  openssl gnome1  httpd22 numlib iconvenc gtk2 cairo
@@ -413,25 +422,28 @@ ifeq ($(FULL_TARGET),sparc-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib gmp libsee ptc graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib gmp libsee ptc dblib graph
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo  bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg  httpd22 pxlib numlib users iconvenc gmp fcl-extra libxml
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo  bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg  httpd22 pxlib numlib users iconvenc gmp fcl-extra libxml dblib
 endif
 ifeq ($(FULL_TARGET),x86_64-solaris)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 bfd svgalib fcl-extra imlib utmp  fpgtk xforms fftw pcap ggi  openssl gnome1  httpd22 numlib iconvenc gtk2 cairo
 endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc  postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib dblib
+endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick libpng gdbm tcl syslog libcurl bfd aspell utmp fftw pcap openssl numlib iconvenc gmp fcl-extra univint opengl x11 cairo gtk1 gtk2 librsvg fpgtk xforms gnome1  httpd22 imlib cocoaint
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv winunits-base winunits-jedi fcl-web fastcgi ibase mysql zlib oracle odbc postgres sqlite imagemagick gdbint tcl opengl gtk1 fpgtk fftw sdl openssl cdrom  httpd22 numlib fcl-extra opencl nvapi ptc graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv winunits-base winunits-jedi fcl-web fastcgi ibase mysql zlib oracle odbc postgres sqlite imagemagick gdbint tcl opengl gtk1 fpgtk fftw sdl openssl cdrom  httpd22 numlib fcl-extra opencl nvapi ptc graph dblib
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib gmp libsee ptc graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib gmp libsee ptc dblib graph
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  palmunits
@@ -455,7 +467,7 @@ ifeq ($(FULL_TARGET),arm-symbian)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib gmp libsee ptc graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib gmp libsee ptc dblib graph
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick libpng gdbm tcl syslog libcurl bfd aspell utmp fftw pcap openssl numlib iconvenc gmp fcl-extra univint opengl x11 cairo gtk1 gtk2 librsvg fpgtk xforms gnome1  httpd22 imlib cocoaint
@@ -463,17 +475,23 @@ endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg
 endif
+ifeq ($(FULL_TARGET),powerpc64-aix)
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg
+endif
 ifeq ($(FULL_TARGET),avr-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg
 endif
 ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib gmp libsee ptc
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib gmp libsee ptc dblib
 endif
 ifeq ($(FULL_TARGET),armeb-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg
 endif
+ifeq ($(FULL_TARGET),mips-linux)
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib gmp libsee ptc dblib
+endif
 ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib gmp libsee ptc
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib gmp libsee ptc dblib
 endif
 override INSTALL_FPCPACKAGE=y
 override INSTALL_FPCSUBDIR=packages
@@ -829,6 +847,11 @@ EXEEXT=.dol
 SHAREDLIBEXT=.so
 SHORTSUFFIX=wii
 endif
+ifeq ($(OS_TARGET),aix)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=aix
+endif
 ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
 FPCMADE=fpcmade.$(SHORTSUFFIX)
 ZIPSUFFIX=$(SHORTSUFFIX)
@@ -1086,12 +1109,16 @@ endif
 ifndef CROSSBOOTSTRAP
 ifneq ($(BINUTILSPREFIX),)
 override FPCOPT+=-XP$(BINUTILSPREFIX)
-override FPCMAKEOPT+=-XP$(BINUTILSPREFIX)
 endif
 ifneq ($(BINUTILSPREFIX),)
 override FPCOPT+=-Xr$(RLINKPATH)
 endif
 endif
+ifndef CROSSCOMPILE
+ifneq ($(BINUTILSPREFIX),)
+override FPCMAKEOPT+=-XP$(BINUTILSPREFIX)
+endif
+endif
 ifdef UNITDIR
 override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
 endif
@@ -1503,6 +1530,7 @@ TARGET_DIRS_NUMLIB=1
 TARGET_DIRS_GMP=1
 TARGET_DIRS_LIBSEE=1
 TARGET_DIRS_PTC=1
+TARGET_DIRS_DBLIB=1
 TARGET_DIRS_GRAPH=1
 TARGET_DIRS_LIBC=1
 TARGET_DIRS_UNIXUTIL=1
@@ -1611,6 +1639,7 @@ TARGET_DIRS_LIBSEE=1
 TARGET_DIRS_NVAPI=1
 TARGET_DIRS_PTC=1
 TARGET_DIRS_ASPELL=1
+TARGET_DIRS_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 TARGET_DIRS_HASH=1
@@ -1721,6 +1750,7 @@ TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_GMP=1
 TARGET_DIRS_FCL-EXTRA=1
 TARGET_DIRS_LIBXML=1
+TARGET_DIRS_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 TARGET_DIRS_HASH=1
@@ -1861,6 +1891,7 @@ TARGET_DIRS_HTTPD22=1
 TARGET_DIRS_PXLIB=1
 TARGET_DIRS_NUMLIB=1
 TARGET_DIRS_ICONVENC=1
+TARGET_DIRS_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
 TARGET_DIRS_HASH=1
@@ -1929,6 +1960,7 @@ TARGET_DIRS_GNOME1=1
 TARGET_DIRS_HTTPD22=1
 TARGET_DIRS_PXLIB=1
 TARGET_DIRS_NUMLIB=1
+TARGET_DIRS_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 TARGET_DIRS_HASH=1
@@ -2118,6 +2150,7 @@ TARGET_DIRS_GNOME1=1
 TARGET_DIRS_HTTPD22=1
 TARGET_DIRS_PXLIB=1
 TARGET_DIRS_NUMLIB=1
+TARGET_DIRS_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
 TARGET_DIRS_HASH=1
@@ -2580,6 +2613,7 @@ TARGET_DIRS_NUMLIB=1
 TARGET_DIRS_GMP=1
 TARGET_DIRS_LIBSEE=1
 TARGET_DIRS_PTC=1
+TARGET_DIRS_DBLIB=1
 TARGET_DIRS_GRAPH=1
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
@@ -2655,6 +2689,7 @@ TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_GMP=1
 TARGET_DIRS_FCL-EXTRA=1
 TARGET_DIRS_LIBXML=1
+TARGET_DIRS_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
 TARGET_DIRS_HASH=1
@@ -2723,6 +2758,7 @@ TARGET_DIRS_GNOME1=1
 TARGET_DIRS_HTTPD22=1
 TARGET_DIRS_PXLIB=1
 TARGET_DIRS_NUMLIB=1
+TARGET_DIRS_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
 TARGET_DIRS_HASH=1
@@ -2844,6 +2880,7 @@ TARGET_DIRS_GNOME1=1
 TARGET_DIRS_HTTPD22=1
 TARGET_DIRS_PXLIB=1
 TARGET_DIRS_NUMLIB=1
+TARGET_DIRS_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
 TARGET_DIRS_HASH=1
@@ -2988,6 +3025,7 @@ TARGET_DIRS_NUMLIB=1
 TARGET_DIRS_GMP=1
 TARGET_DIRS_LIBSEE=1
 TARGET_DIRS_PTC=1
+TARGET_DIRS_DBLIB=1
 TARGET_DIRS_GRAPH=1
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
@@ -3057,6 +3095,7 @@ TARGET_DIRS_GNOME1=1
 TARGET_DIRS_HTTPD22=1
 TARGET_DIRS_PXLIB=1
 TARGET_DIRS_NUMLIB=1
+TARGET_DIRS_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
 TARGET_DIRS_HASH=1
@@ -3264,6 +3303,32 @@ TARGET_DIRS_HERMES=1
 TARGET_DIRS_FPPKG=1
 TARGET_DIRS_LIBOGCFPC=1
 endif
+ifeq ($(FULL_TARGET),powerpc-aix)
+TARGET_DIRS_HASH=1
+TARGET_DIRS_PASJPEG=1
+TARGET_DIRS_PASZLIB=1
+TARGET_DIRS_FPMKUNIT=1
+TARGET_DIRS_FCL-XML=1
+TARGET_DIRS_FCL-BASE=1
+TARGET_DIRS_FCL-DB=1
+TARGET_DIRS_FCL-IMAGE=1
+TARGET_DIRS_FCL-NET=1
+TARGET_DIRS_FCL-PASSRC=1
+TARGET_DIRS_FCL-REGISTRY=1
+TARGET_DIRS_FCL-FPCUNIT=1
+TARGET_DIRS_FCL-JSON=1
+TARGET_DIRS_FCL-JS=1
+TARGET_DIRS_FCL-PROCESS=1
+TARGET_DIRS_UNZIP=1
+TARGET_DIRS_REGEXPR=1
+TARGET_DIRS_CHM=1
+TARGET_DIRS_FCL-RES=1
+TARGET_DIRS_LIBGD=1
+TARGET_DIRS_SYMBOLIC=1
+TARGET_DIRS_BZIP2=1
+TARGET_DIRS_HERMES=1
+TARGET_DIRS_FPPKG=1
+endif
 ifeq ($(FULL_TARGET),sparc-linux)
 TARGET_DIRS_HASH=1
 TARGET_DIRS_PASJPEG=1
@@ -3354,6 +3419,7 @@ TARGET_DIRS_NUMLIB=1
 TARGET_DIRS_GMP=1
 TARGET_DIRS_LIBSEE=1
 TARGET_DIRS_PTC=1
+TARGET_DIRS_DBLIB=1
 TARGET_DIRS_GRAPH=1
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
@@ -3423,6 +3489,7 @@ TARGET_DIRS_GNOME1=1
 TARGET_DIRS_HTTPD22=1
 TARGET_DIRS_PXLIB=1
 TARGET_DIRS_NUMLIB=1
+TARGET_DIRS_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 TARGET_DIRS_HASH=1
@@ -3606,6 +3673,7 @@ TARGET_DIRS_NUMLIB=1
 TARGET_DIRS_GMP=1
 TARGET_DIRS_LIBSEE=1
 TARGET_DIRS_PTC=1
+TARGET_DIRS_DBLIB=1
 TARGET_DIRS_GRAPH=1
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
@@ -3681,6 +3749,7 @@ TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_GMP=1
 TARGET_DIRS_FCL-EXTRA=1
 TARGET_DIRS_LIBXML=1
+TARGET_DIRS_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),x86_64-solaris)
 TARGET_DIRS_HASH=1
@@ -3748,6 +3817,75 @@ TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_GTK2=1
 TARGET_DIRS_CAIRO=1
 endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+TARGET_DIRS_HASH=1
+TARGET_DIRS_PASJPEG=1
+TARGET_DIRS_PASZLIB=1
+TARGET_DIRS_FPMKUNIT=1
+TARGET_DIRS_FCL-XML=1
+TARGET_DIRS_FCL-BASE=1
+TARGET_DIRS_FCL-DB=1
+TARGET_DIRS_FCL-IMAGE=1
+TARGET_DIRS_FCL-NET=1
+TARGET_DIRS_FCL-PASSRC=1
+TARGET_DIRS_FCL-REGISTRY=1
+TARGET_DIRS_FCL-FPCUNIT=1
+TARGET_DIRS_FCL-JSON=1
+TARGET_DIRS_FCL-JS=1
+TARGET_DIRS_FCL-PROCESS=1
+TARGET_DIRS_UNZIP=1
+TARGET_DIRS_REGEXPR=1
+TARGET_DIRS_CHM=1
+TARGET_DIRS_FCL-RES=1
+TARGET_DIRS_LIBGD=1
+TARGET_DIRS_SYMBOLIC=1
+TARGET_DIRS_BZIP2=1
+TARGET_DIRS_HERMES=1
+TARGET_DIRS_FPPKG=1
+TARGET_DIRS_FV=1
+TARGET_DIRS_FCL-WEB=1
+TARGET_DIRS_FASTCGI=1
+TARGET_DIRS_FCL-ASYNC=1
+TARGET_DIRS_IBASE=1
+TARGET_DIRS_MYSQL=1
+TARGET_DIRS_NCURSES=1
+TARGET_DIRS_ZLIB=1
+TARGET_DIRS_ORACLE=1
+TARGET_DIRS_ODBC=1
+TARGET_DIRS_POSTGRES=1
+TARGET_DIRS_SQLITE=1
+TARGET_DIRS_PTHREADS=1
+TARGET_DIRS_IMAGEMAGICK=1
+TARGET_DIRS_GDBINT=1
+TARGET_DIRS_LIBPNG=1
+TARGET_DIRS_X11=1
+TARGET_DIRS_GDBM=1
+TARGET_DIRS_TCL=1
+TARGET_DIRS_SYSLOG=1
+TARGET_DIRS_LIBCURL=1
+TARGET_DIRS_OPENGL=1
+TARGET_DIRS_CAIRO=1
+TARGET_DIRS_GTK1=1
+TARGET_DIRS_GTK2=1
+TARGET_DIRS_LIBRSVG=1
+TARGET_DIRS_BFD=1
+TARGET_DIRS_ASPELL=1
+TARGET_DIRS_SVGALIB=1
+TARGET_DIRS_IMLIB=1
+TARGET_DIRS_UTMP=1
+TARGET_DIRS_FPGTK=1
+TARGET_DIRS_XFORMS=1
+TARGET_DIRS_FFTW=1
+TARGET_DIRS_PCAP=1
+TARGET_DIRS_GGI=1
+TARGET_DIRS_SDL=1
+TARGET_DIRS_OPENSSL=1
+TARGET_DIRS_GNOME1=1
+TARGET_DIRS_HTTPD22=1
+TARGET_DIRS_PXLIB=1
+TARGET_DIRS_NUMLIB=1
+TARGET_DIRS_DBLIB=1
+endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
 TARGET_DIRS_HASH=1
 TARGET_DIRS_PASJPEG=1
@@ -3870,6 +4008,7 @@ TARGET_DIRS_OPENCL=1
 TARGET_DIRS_NVAPI=1
 TARGET_DIRS_PTC=1
 TARGET_DIRS_GRAPH=1
+TARGET_DIRS_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
 TARGET_DIRS_HASH=1
@@ -3987,6 +4126,7 @@ TARGET_DIRS_NUMLIB=1
 TARGET_DIRS_GMP=1
 TARGET_DIRS_LIBSEE=1
 TARGET_DIRS_PTC=1
+TARGET_DIRS_DBLIB=1
 TARGET_DIRS_GRAPH=1
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
@@ -4313,6 +4453,7 @@ TARGET_DIRS_NUMLIB=1
 TARGET_DIRS_GMP=1
 TARGET_DIRS_LIBSEE=1
 TARGET_DIRS_PTC=1
+TARGET_DIRS_DBLIB=1
 TARGET_DIRS_GRAPH=1
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
@@ -4409,6 +4550,32 @@ TARGET_DIRS_BZIP2=1
 TARGET_DIRS_HERMES=1
 TARGET_DIRS_FPPKG=1
 endif
+ifeq ($(FULL_TARGET),powerpc64-aix)
+TARGET_DIRS_HASH=1
+TARGET_DIRS_PASJPEG=1
+TARGET_DIRS_PASZLIB=1
+TARGET_DIRS_FPMKUNIT=1
+TARGET_DIRS_FCL-XML=1
+TARGET_DIRS_FCL-BASE=1
+TARGET_DIRS_FCL-DB=1
+TARGET_DIRS_FCL-IMAGE=1
+TARGET_DIRS_FCL-NET=1
+TARGET_DIRS_FCL-PASSRC=1
+TARGET_DIRS_FCL-REGISTRY=1
+TARGET_DIRS_FCL-FPCUNIT=1
+TARGET_DIRS_FCL-JSON=1
+TARGET_DIRS_FCL-JS=1
+TARGET_DIRS_FCL-PROCESS=1
+TARGET_DIRS_UNZIP=1
+TARGET_DIRS_REGEXPR=1
+TARGET_DIRS_CHM=1
+TARGET_DIRS_FCL-RES=1
+TARGET_DIRS_LIBGD=1
+TARGET_DIRS_SYMBOLIC=1
+TARGET_DIRS_BZIP2=1
+TARGET_DIRS_HERMES=1
+TARGET_DIRS_FPPKG=1
+endif
 ifeq ($(FULL_TARGET),avr-embedded)
 TARGET_DIRS_HASH=1
 TARGET_DIRS_PASJPEG=1
@@ -4525,6 +4692,7 @@ TARGET_DIRS_NUMLIB=1
 TARGET_DIRS_GMP=1
 TARGET_DIRS_LIBSEE=1
 TARGET_DIRS_PTC=1
+TARGET_DIRS_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),armeb-embedded)
 TARGET_DIRS_HASH=1
@@ -4552,6 +4720,98 @@ TARGET_DIRS_BZIP2=1
 TARGET_DIRS_HERMES=1
 TARGET_DIRS_FPPKG=1
 endif
+ifeq ($(FULL_TARGET),mips-linux)
+TARGET_DIRS_HASH=1
+TARGET_DIRS_PASJPEG=1
+TARGET_DIRS_PASZLIB=1
+TARGET_DIRS_FPMKUNIT=1
+TARGET_DIRS_FCL-XML=1
+TARGET_DIRS_FCL-BASE=1
+TARGET_DIRS_FCL-DB=1
+TARGET_DIRS_FCL-IMAGE=1
+TARGET_DIRS_FCL-NET=1
+TARGET_DIRS_FCL-PASSRC=1
+TARGET_DIRS_FCL-REGISTRY=1
+TARGET_DIRS_FCL-FPCUNIT=1
+TARGET_DIRS_FCL-JSON=1
+TARGET_DIRS_FCL-JS=1
+TARGET_DIRS_FCL-PROCESS=1
+TARGET_DIRS_UNZIP=1
+TARGET_DIRS_REGEXPR=1
+TARGET_DIRS_CHM=1
+TARGET_DIRS_FCL-RES=1
+TARGET_DIRS_LIBGD=1
+TARGET_DIRS_SYMBOLIC=1
+TARGET_DIRS_BZIP2=1
+TARGET_DIRS_HERMES=1
+TARGET_DIRS_FPPKG=1
+TARGET_DIRS_FV=1
+TARGET_DIRS_FCL-WEB=1
+TARGET_DIRS_FASTCGI=1
+TARGET_DIRS_FCL-ASYNC=1
+TARGET_DIRS_IBASE=1
+TARGET_DIRS_MYSQL=1
+TARGET_DIRS_NCURSES=1
+TARGET_DIRS_UNZIP=1
+TARGET_DIRS_ZLIB=1
+TARGET_DIRS_ORACLE=1
+TARGET_DIRS_DBUS=1
+TARGET_DIRS_ODBC=1
+TARGET_DIRS_POSTGRES=1
+TARGET_DIRS_SQLITE=1
+TARGET_DIRS_PTHREADS=1
+TARGET_DIRS_IMAGEMAGICK=1
+TARGET_DIRS_GDBINT=1
+TARGET_DIRS_LIBPNG=1
+TARGET_DIRS_X11=1
+TARGET_DIRS_UUID=1
+TARGET_DIRS_LDAP=1
+TARGET_DIRS_MODPLUG=1
+TARGET_DIRS_DTS=1
+TARGET_DIRS_MAD=1
+TARGET_DIRS_GDBM=1
+TARGET_DIRS_TCL=1
+TARGET_DIRS_SYSLOG=1
+TARGET_DIRS_LIBCURL=1
+TARGET_DIRS_OPENGL=1
+TARGET_DIRS_OPENCL=1
+TARGET_DIRS_CAIRO=1
+TARGET_DIRS_GTK1=1
+TARGET_DIRS_GTK2=1
+TARGET_DIRS_LIBRSVG=1
+TARGET_DIRS_A52=1
+TARGET_DIRS_BFD=1
+TARGET_DIRS_ASPELL=1
+TARGET_DIRS_SVGALIB=1
+TARGET_DIRS_NEWT=1
+TARGET_DIRS_CDROM=1
+TARGET_DIRS_USERS=1
+TARGET_DIRS_ICONVENC=1
+TARGET_DIRS_LIBXML=1
+TARGET_DIRS_PROJ4=1
+TARGET_DIRS_FCL-EXTRA=1
+TARGET_DIRS_ZORBA=1
+TARGET_DIRS_IMLIB=1
+TARGET_DIRS_UTMP=1
+TARGET_DIRS_FPGTK=1
+TARGET_DIRS_OPENAL=1
+TARGET_DIRS_LUA=1
+TARGET_DIRS_OGGVORBIS=1
+TARGET_DIRS_XFORMS=1
+TARGET_DIRS_FFTW=1
+TARGET_DIRS_PCAP=1
+TARGET_DIRS_GGI=1
+TARGET_DIRS_SDL=1
+TARGET_DIRS_OPENSSL=1
+TARGET_DIRS_GNOME1=1
+TARGET_DIRS_HTTPD22=1
+TARGET_DIRS_PXLIB=1
+TARGET_DIRS_NUMLIB=1
+TARGET_DIRS_GMP=1
+TARGET_DIRS_LIBSEE=1
+TARGET_DIRS_PTC=1
+TARGET_DIRS_DBLIB=1
+endif
 ifeq ($(FULL_TARGET),mipsel-linux)
 TARGET_DIRS_HASH=1
 TARGET_DIRS_PASJPEG=1
@@ -4642,6 +4902,7 @@ TARGET_DIRS_NUMLIB=1
 TARGET_DIRS_GMP=1
 TARGET_DIRS_LIBSEE=1
 TARGET_DIRS_PTC=1
+TARGET_DIRS_DBLIB=1
 endif
 ifdef TARGET_DIRS_HASH
 hash_all:
@@ -8603,6 +8864,51 @@ ptc:
 	$(MAKE) -C ptc all
 .PHONY: ptc_all ptc_debug ptc_smart ptc_release ptc_units ptc_examples ptc_shared ptc_install ptc_sourceinstall ptc_exampleinstall ptc_distinstall ptc_zipinstall ptc_zipsourceinstall ptc_zipexampleinstall ptc_zipdistinstall ptc_clean ptc_distclean ptc_cleanall ptc_info ptc_makefiles ptc
 endif
+ifdef TARGET_DIRS_DBLIB
+dblib_all:
+	$(MAKE) -C dblib all
+dblib_debug:
+	$(MAKE) -C dblib debug
+dblib_smart:
+	$(MAKE) -C dblib smart
+dblib_release:
+	$(MAKE) -C dblib release
+dblib_units:
+	$(MAKE) -C dblib units
+dblib_examples:
+	$(MAKE) -C dblib examples
+dblib_shared:
+	$(MAKE) -C dblib shared
+dblib_install:
+	$(MAKE) -C dblib install
+dblib_sourceinstall:
+	$(MAKE) -C dblib sourceinstall
+dblib_exampleinstall:
+	$(MAKE) -C dblib exampleinstall
+dblib_distinstall:
+	$(MAKE) -C dblib distinstall
+dblib_zipinstall:
+	$(MAKE) -C dblib zipinstall
+dblib_zipsourceinstall:
+	$(MAKE) -C dblib zipsourceinstall
+dblib_zipexampleinstall:
+	$(MAKE) -C dblib zipexampleinstall
+dblib_zipdistinstall:
+	$(MAKE) -C dblib zipdistinstall
+dblib_clean:
+	$(MAKE) -C dblib clean
+dblib_distclean:
+	$(MAKE) -C dblib distclean
+dblib_cleanall:
+	$(MAKE) -C dblib cleanall
+dblib_info:
+	$(MAKE) -C dblib info
+dblib_makefiles:
+	$(MAKE) -C dblib makefiles
+dblib:
+	$(MAKE) -C dblib all
+.PHONY: dblib_all dblib_debug dblib_smart dblib_release dblib_units dblib_examples dblib_shared dblib_install dblib_sourceinstall dblib_exampleinstall dblib_distinstall dblib_zipinstall dblib_zipsourceinstall dblib_zipexampleinstall dblib_zipdistinstall dblib_clean dblib_distclean dblib_cleanall dblib_info dblib_makefiles dblib
+endif
 ifdef TARGET_DIRS_GRAPH
 graph_all:
 	$(MAKE) -C graph all
@@ -9464,11 +9770,11 @@ fastcgi_smart: fpmkunit_smart
 fastcgi_release: fpmkunit_release
 fastcgi_shared: fpmkunit_shared
 ifneq ($(findstring $(OS_TARGET),linux freebsd openbsd netbsd win32 beos haiku),)
-fcl-db_all: fcl-xml_all fcl-base_all mysql_all ibase_all oracle_all odbc_all postgres_all sqlite_all pxlib_all fcl-json_all
-fcl-db_debug: fcl-xml_debug fcl-base_debug mysql_debug ibase_debug oracle_debug odbc_debug postgres_debug sqlite_debug pxlib_debug fcl-json_debug
-fcl-db_smart: fcl-xml_smart fcl-base_smart mysql_smart ibase_smart oracle_smart odbc_smart postgres_smart sqlite_smart pxlib_smart fcl-json_smart
-fcl-db_release: fcl-xml_release fcl-base_release mysql_release ibase_release oracle_release odbc_release postgres_release sqlite_release pxlib_release fcl-json_release
-fcl-db_shared: fcl-xml_shared fcl-base_shared mysql_shared ibase_shared oracle_shared odbc_shared postgres_shared sqlite_shared pxlib_shared fcl-json_shared
+fcl-db_all: fcl-xml_all fcl-base_all mysql_all ibase_all oracle_all odbc_all postgres_all sqlite_all pxlib_all fcl-json_all dblib_all
+fcl-db_debug: fcl-xml_debug fcl-base_debug mysql_debug ibase_debug oracle_debug odbc_debug postgres_debug sqlite_debug pxlib_debug fcl-json_debug dblib_debug
+fcl-db_smart: fcl-xml_smart fcl-base_smart mysql_smart ibase_smart oracle_smart odbc_smart postgres_smart sqlite_smart pxlib_smart fcl-json_smart dblib_smart
+fcl-db_release: fcl-xml_release fcl-base_release mysql_release ibase_release oracle_release odbc_release postgres_release sqlite_release pxlib_release fcl-json_release dblib_release
+fcl-db_shared: fcl-xml_shared fcl-base_shared mysql_shared ibase_shared oracle_shared odbc_shared postgres_shared sqlite_shared pxlib_shared fcl-json_shared dblib_shared
 else
 ifneq ($(findstring $(OS_TARGET),win64 wince solaris darwin iphonesim),)
 fcl-db_all: fcl-xml_all fcl-base_all mysql_all ibase_all oracle_all odbc_all postgres_all sqlite_all fcl-json_all

+ 13 - 13
packages/Makefile.fpc

@@ -16,15 +16,15 @@ dirs_m68k_linux=graph
 dirs_beos=fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick \
                gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo bfd aspell svgalib \
                imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg  httpd22 pxlib numlib \
-               iconvenc
+               iconvenc 
 dirs_haiku=fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick \
                gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo bfd aspell svgalib \
                imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg  httpd22 pxlib numlib \
-               iconvenc
+               iconvenc dblib
 dirs_freebsd=fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick \
                gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo  bfd aspell svgalib \
                imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg  httpd22 pxlib numlib \
-               users iconvenc gmp fcl-extra libxml
+               users iconvenc gmp fcl-extra libxml dblib
 dirs_darwin=fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick \
                libpng gdbm tcl syslog libcurl bfd aspell utmp fftw pcap openssl numlib iconvenc gmp fcl-extra univint
 dirs_iphonesim=fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick \
@@ -40,21 +40,21 @@ dirs_solaris=fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc p
                imlib utmp  fpgtk xforms fftw pcap ggi  openssl gnome1  httpd22 numlib iconvenc gtk2 cairo
 dirs_netbsd=fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick \
                gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib \
-               imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib
+               imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib dblib
 dirs_openbsd=fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc  postgres sqlite pthreads imagemagick \
                gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib \
-               imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib
+               imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 pxlib numlib dblib
 dirs_linux=fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick \
                gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg \
                a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba \
                imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 \
-               pxlib numlib gmp libsee ptc
+               pxlib numlib gmp libsee ptc dblib
 dirs_win32=fv winunits-base winunits-jedi fcl-web fastcgi ibase mysql zlib oracle odbc postgres sqlite imagemagick \
                gdbint libpng mad tcl opengl gtk1 gtk2 librsvg a52 cdrom fpgtk openal fftw lua fcl-extra zorba \
                oggvorbis sdl openssl graph pcap  httpd22 pxlib numlib winceunits cairo libxml \
-               gmp opencl libsee nvapi ptc aspell
+               gmp opencl libsee nvapi ptc aspell dblib
 dirs_win64=fv winunits-base winunits-jedi fcl-web fastcgi ibase mysql zlib oracle odbc postgres sqlite imagemagick gdbint \
-                tcl opengl gtk1 fpgtk fftw sdl openssl cdrom  httpd22 numlib fcl-extra opencl nvapi ptc graph
+                tcl opengl gtk1 fpgtk fftw sdl openssl cdrom  httpd22 numlib fcl-extra opencl nvapi ptc graph dblib
 dirs_wince=winceunits httpd22 fcl-web fastcgi 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
@@ -205,11 +205,11 @@ fastcgi_release: fpmkunit_release
 fastcgi_shared: fpmkunit_shared
 
 ifneq ($(findstring $(OS_TARGET),linux freebsd openbsd netbsd win32 beos haiku),)
-fcl-db_all: fcl-xml_all fcl-base_all mysql_all ibase_all oracle_all odbc_all postgres_all sqlite_all pxlib_all fcl-json_all
-fcl-db_debug: fcl-xml_debug fcl-base_debug mysql_debug ibase_debug oracle_debug odbc_debug postgres_debug sqlite_debug pxlib_debug fcl-json_debug
-fcl-db_smart: fcl-xml_smart fcl-base_smart mysql_smart ibase_smart oracle_smart odbc_smart postgres_smart sqlite_smart pxlib_smart fcl-json_smart
-fcl-db_release: fcl-xml_release fcl-base_release mysql_release ibase_release oracle_release odbc_release postgres_release sqlite_release pxlib_release fcl-json_release
-fcl-db_shared: fcl-xml_shared fcl-base_shared mysql_shared ibase_shared oracle_shared odbc_shared postgres_shared sqlite_shared pxlib_shared fcl-json_shared
+fcl-db_all: fcl-xml_all fcl-base_all mysql_all ibase_all oracle_all odbc_all postgres_all sqlite_all pxlib_all fcl-json_all dblib_all
+fcl-db_debug: fcl-xml_debug fcl-base_debug mysql_debug ibase_debug oracle_debug odbc_debug postgres_debug sqlite_debug pxlib_debug fcl-json_debug dblib_debug
+fcl-db_smart: fcl-xml_smart fcl-base_smart mysql_smart ibase_smart oracle_smart odbc_smart postgres_smart sqlite_smart pxlib_smart fcl-json_smart dblib_smart
+fcl-db_release: fcl-xml_release fcl-base_release mysql_release ibase_release oracle_release odbc_release postgres_release sqlite_release pxlib_release fcl-json_release dblib_release
+fcl-db_shared: fcl-xml_shared fcl-base_shared mysql_shared ibase_shared oracle_shared odbc_shared postgres_shared sqlite_shared pxlib_shared fcl-json_shared dblib_shared
 else
 ifneq ($(findstring $(OS_TARGET),win64 wince solaris darwin iphonesim),)
 fcl-db_all: fcl-xml_all fcl-base_all mysql_all ibase_all oracle_all odbc_all postgres_all sqlite_all fcl-json_all

+ 2322 - 0
packages/dblib/Makefile

@@ -0,0 +1,2322 @@
+#
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2012/04/22]
+#
+default: all
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
+BSDs = freebsd netbsd openbsd darwin
+UNIXs = linux $(BSDs) solaris qnx haiku
+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)),)
+ifndef RUNBATCH
+RUNBATCH=$(COMSPEC) /C
+endif
+endif
+endif
+ifdef inUnix
+PATHSEP=/
+else
+PATHSEP:=$(subst /,\,/)
+ifdef inCygWin
+PATHSEP=/
+endif
+endif
+ifdef PWD
+BASEDIR:=$(subst \,/,$(shell $(PWD)))
+ifdef inCygWin
+ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
+BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
+BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
+BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
+endif
+endif
+else
+BASEDIR=.
+endif
+ifdef inOS2
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO=echo
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+endif
+override DEFAULT_FPCDIR=../..
+ifndef FPC
+ifdef PP
+FPC=$(PP)
+endif
+endif
+ifndef FPC
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+ifneq ($(CPU_TARGET),)
+FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB)
+else
+FPC:=$(shell $(FPCPROG) -PB)
+endif
+ifneq ($(findstring Error,$(FPC)),)
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+else
+ifeq ($(strip $(wildcard $(FPC))),)
+FPC:=$(firstword $(FPCPROG))
+endif
+endif
+else
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+endif
+override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
+override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
+FOUNDFPC:=$(strip $(wildcard $(FPC)))
+ifeq ($(FOUNDFPC),)
+FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
+ifeq ($(FOUNDFPC),)
+$(error Compiler $(FPC) not found)
+endif
+endif
+ifndef FPC_COMPILERINFO
+FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
+endif
+ifndef FPC_VERSION
+FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
+endif
+export FPC FPC_VERSION FPC_COMPILERINFO
+unexport CHECKDEPEND ALLDEPENDENCIES
+ifndef CPU_TARGET
+ifdef CPU_TARGET_DEFAULT
+CPU_TARGET=$(CPU_TARGET_DEFAULT)
+endif
+endif
+ifndef OS_TARGET
+ifdef OS_TARGET_DEFAULT
+OS_TARGET=$(OS_TARGET_DEFAULT)
+endif
+endif
+ifndef CPU_SOURCE
+CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
+endif
+ifndef CPU_TARGET
+CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
+endif
+ifndef OS_SOURCE
+OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
+endif
+ifndef OS_TARGET
+OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
+endif
+FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifeq ($(CPU_TARGET),armeb)
+ARCH=arm
+override FPCOPT+=-Cb
+else
+ifeq ($(CPU_TARGET),armel)
+ARCH=arm
+override FPCOPT+=-CaEABI
+else
+ARCH=$(CPU_TARGET)
+endif
+endif
+ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
+TARGETSUFFIX=$(OS_TARGET)
+SOURCESUFFIX=$(OS_SOURCE)
+else
+ifneq ($(findstring $(OS_TARGET),$(LIMIT83fs)),)
+TARGETSUFFIX=$(OS_TARGET)
+else
+TARGETSUFFIX=$(FULL_TARGET)
+endif
+SOURCESUFFIX=$(FULL_SOURCE)
+endif
+ifneq ($(FULL_TARGET),$(FULL_SOURCE))
+CROSSCOMPILE=1
+endif
+ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
+ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
+$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
+endif
+endif
+ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
+BSDhier=1
+endif
+ifeq ($(OS_TARGET),linux)
+linuxHier=1
+endif
+export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
+ifdef FPCDIR
+override FPCDIR:=$(subst \,/,$(FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl 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
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+ifeq ($(OS_SOURCE),darwin)
+DARWIN2DARWIN=1
+endif
+endif
+ifndef BINUTILSPREFIX
+ifndef CROSSBINDIR
+ifdef CROSSCOMPILE
+ifndef DARWIN2DARWIN
+BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
+endif
+endif
+endif
+endif
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
+ifeq ($(UNITSDIR),)
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
+endif
+PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
+ifndef FPCFPMAKE
+ifdef CROSSCOMPILE
+ifeq ($(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))),)
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+FPCFPMAKE:=$(shell $(FPCPROG) -PB)
+ifeq ($(strip $(wildcard $(FPCFPMAKE))),)
+FPCFPMAKE:=$(firstword $(FPCPROG))
+endif
+else
+override FPCFPMAKE=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+else
+FPCFPMAKE=$(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR))))
+FPMAKE_SKIP_CONFIG=-n
+export FPCFPMAKE
+export FPMAKE_SKIP_CONFIG
+endif
+else
+FPMAKE_SKIP_CONFIG=-n
+FPCFPMAKE=$(FPC)
+endif
+endif
+override PACKAGE_NAME=dblib
+override PACKAGE_VERSION=2.6.1
+ifeq ($(FULL_TARGET),i386-linux)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override TARGET_UNITS+=dblib
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override TARGET_UNITS+=dblib
+endif
+override INSTALL_FPCPACKAGE=y
+ifeq ($(FULL_TARGET),i386-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-linux)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+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),i386-nativent)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+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),powerpc-wii)
+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-solaris)
+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-darwin)
+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
+ifeq ($(FULL_TARGET),avr-embedded)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override COMPILER_SOURCEDIR+=src
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override COMPILER_SOURCEDIR+=src
+endif
+override SHARED_BUILD=n
+override SHARED_BUILD=n
+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
+ifeq ($(OS_SOURCE),linux)
+ifndef GCCLIBDIR
+ifeq ($(CPU_TARGET),i386)
+ifneq ($(findstring x86_64,$(shell uname -a)),)
+ifeq ($(BINUTILSPREFIX),)
+GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`)
+endif
+endif
+endif
+ifeq ($(CPU_TARGET),powerpc64)
+ifeq ($(BINUTILSPREFIX),)
+GCCLIBDIR:=$(shell dirname `gcc -m64 -print-libgcc-file-name`)
+endif
+endif
+endif
+ifndef GCCLIBDIR
+CROSSGCC=$(strip $(wildcard $(addsuffix /$(BINUTILSPREFIX)gcc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(CROSSGCC),)
+GCCLIBDIR:=$(shell dirname `$(CROSSGCC) -print-libgcc-file-name`)
+endif
+endif
+ifndef OTHERLIBDIR
+OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
+endif
+endif
+ifdef inUnix
+ifeq ($(OS_SOURCE),netbsd)
+OTHERLIBDIR+=/usr/pkg/lib
+endif
+export GCCLIBDIR OTHERLIB
+endif
+BATCHEXT=.bat
+LOADEREXT=.as
+EXEEXT=.exe
+PPLEXT=.ppl
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.so
+SHAREDLIBPREFIX=libfp
+STATICLIBPREFIX=libp
+IMPORTLIBPREFIX=libimp
+RSTEXT=.rst
+EXEDBGEXT=.dbg
+ifeq ($(OS_TARGET),go32v1)
+STATICLIBPREFIX=
+SHORTSUFFIX=v1
+endif
+ifeq ($(OS_TARGET),go32v2)
+STATICLIBPREFIX=
+SHORTSUFFIX=dos
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),watcom)
+STATICLIBPREFIX=
+OEXT=.obj
+ASMEXT=.asm
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=wat
+IMPORTLIBPREFIX=
+endif
+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
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),emx)
+BATCHEXT=.cmd
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=emx
+ECHO=echo
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),amiga)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=amg
+endif
+ifeq ($(OS_TARGET),morphos)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=mos
+endif
+ifeq ($(OS_TARGET),atari)
+EXEEXT=.ttp
+SHORTSUFFIX=ata
+endif
+ifeq ($(OS_TARGET),beos)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=be
+endif
+ifeq ($(OS_TARGET),haiku)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=hai
+endif
+ifeq ($(OS_TARGET),solaris)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=sun
+endif
+ifeq ($(OS_TARGET),qnx)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=qnx
+endif
+ifeq ($(OS_TARGET),netware)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nw
+IMPORTLIBPREFIX=imp
+endif
+ifeq ($(OS_TARGET),netwlibc)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nwl
+IMPORTLIBPREFIX=imp
+endif
+ifeq ($(OS_TARGET),macos)
+BATCHEXT=
+EXEEXT=
+DEBUGSYMEXT=.xcoff
+SHORTSUFFIX=mac
+IMPORTLIBPREFIX=imp
+endif
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=dwn
+EXEDBGEXT=.dSYM
+endif
+ifeq ($(OS_TARGET),gba)
+EXEEXT=.gba
+SHAREDLIBEXT=.so
+SHORTSUFFIX=gba
+endif
+ifeq ($(OS_TARGET),symbian)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=symbian
+endif
+ifeq ($(OS_TARGET),NativeNT)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=nativent
+endif
+ifeq ($(OS_TARGET),wii)
+EXEEXT=.dol
+SHAREDLIBEXT=.so
+SHORTSUFFIX=wii
+endif
+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
+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
+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-haiku)
+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),i386-nativent)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+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),powerpc-wii)
+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-solaris)
+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-darwin)
+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
+ifeq ($(FULL_TARGET),avr-embedded)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+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
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_RTL)/$(OS_TARGET) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_RTL=
+UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_RTL),)
+UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
+else
+UNITDIR_RTL=
+endif
+endif
+ifdef UNITDIR_RTL
+override COMPILER_UNITDIR+=$(UNITDIR_RTL)
+endif
+ifdef UNITDIR_FPMAKE_RTL
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_RTL)
+endif
+endif
+ifndef NOCPUDEF
+override FPCOPTDEF=$(ARCH)
+endif
+ifneq ($(OS_TARGET),$(OS_SOURCE))
+override FPCOPT+=-T$(OS_TARGET)
+endif
+ifneq ($(CPU_TARGET),$(CPU_SOURCE))
+override FPCOPT+=-P$(ARCH)
+endif
+ifeq ($(OS_SOURCE),openbsd)
+override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
+override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH)
+endif
+ifndef CROSSBOOTSTRAP
+ifneq ($(BINUTILSPREFIX),)
+override FPCOPT+=-XP$(BINUTILSPREFIX)
+override FPCMAKEOPT+=-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)),)
+ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),)
+ifeq ($(CPU_TARGET),x86_64)
+override FPCOPT+=-Cg
+endif
+endif
+endif
+ifdef LINKSHARED
+endif
+ifdef GCCLIBDIR
+override FPCOPT+=-Fl$(GCCLIBDIR)
+endif
+ifdef OTHERLIBDIR
+override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR))
+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)
+	$(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) c$(TAROPT)f $(ZIPDESTFILE) *
+else
+ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(ZIPEXT)
+ZIPCMD_ZIP:=$(subst /,$(ZIPPATHSEP),$(ZIPPROG)) -Dr $(ZIPOPT) $(ZIPDESTFILE) *
+endif
+fpc_zipinstall:
+	$(MAKE) $(ZIPTARGET) INSTALL_PREFIX=$(PACKDIR) ZIPINSTALL=1
+	$(MKDIR) $(DIST_DESTDIR)
+	$(DEL) $(ZIPDESTFILE)
+ifdef USEZIPWRAPPER
+ifneq ($(ECHOREDIR),echo)
+	$(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDPACK))" > $(ZIPWRAPPER)
+	$(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" >> $(ZIPWRAPPER)
+	$(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDBASE))" >> $(ZIPWRAPPER)
+else
+	echo $(ZIPCMD_CDPACK) > $(ZIPWRAPPER)
+	echo $(ZIPCMD_ZIP) >> $(ZIPWRAPPER)
+	echo $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER)
+endif
+ifdef inUnix
+	/bin/sh $(ZIPWRAPPER)
+else
+ifdef RUNBATCH
+	$(RUNBATCH) $(ZIPWRAPPER)
+else
+	$(ZIPWRAPPER)
+endif
+endif
+	$(DEL) $(ZIPWRAPPER)
+else
+	$(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)
+endif
+	$(DELTREE) $(PACKDIR)
+fpc_zipsourceinstall:
+	$(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall ZIPSUFFIX=$(ZIPSOURCESUFFIX)
+fpc_zipexampleinstall:
+ifdef HASEXAMPLES
+	$(MAKE) fpc_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=$(ZIPEXAMPLESUFFIX)
+endif
+fpc_zipdistinstall:
+	$(MAKE) fpc_zipinstall ZIPTARGET=distinstall
+.PHONY: fpc_clean fpc_cleanall fpc_distclean
+ifdef EXEFILES
+override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
+override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
+endif
+ifdef CLEAN_PROGRAMS
+override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
+endif
+ifdef CLEAN_UNITS
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
+endif
+ifdef CLEANPPUFILES
+override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
+ifdef DEBUGSYMEXT
+override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
+endif
+override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
+override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
+endif
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANEXEDBGFILES
+	-$(DELTREE) $(CLEANEXEDBGFILES)
+endif
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+ifdef CLEAN_FILES
+	-$(DEL) $(CLEAN_FILES)
+endif
+ifdef LIB_NAME
+	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
+endif
+	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef COMPILER_UNITTARGETDIR
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+endif
+ifdef CLEAN_FILES
+	-$(DEL) $(CLEAN_FILES)
+endif
+	-$(DELTREE) units
+	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+ifneq ($(PPUEXT),.ppu)
+	-$(DEL) *.o *.ppu *.a
+endif
+	-$(DELTREE) *$(SMARTEXT)
+	-$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+	-$(DEL) *_ppas$(BATCHEXT)
+ifdef AOUTEXT
+	-$(DEL) *$(AOUTEXT)
+endif
+ifdef DEBUGSYMEXT
+	-$(DEL) *$(DEBUGSYMEXT)
+endif
+fpc_distclean: cleanall
+.PHONY: fpc_baseinfo
+override INFORULES+=fpc_baseinfo
+fpc_baseinfo:
+	@$(ECHO)
+	@$(ECHO)  == Package info ==
+	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
+	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
+	@$(ECHO)
+	@$(ECHO)  == Configuration info ==
+	@$(ECHO)
+	@$(ECHO)  FPC.......... $(FPC)
+	@$(ECHO)  FPC Version.. $(FPC_VERSION)
+	@$(ECHO)  Source CPU... $(CPU_SOURCE)
+	@$(ECHO)  Target CPU... $(CPU_TARGET)
+	@$(ECHO)  Source OS.... $(OS_SOURCE)
+	@$(ECHO)  Target OS.... $(OS_TARGET)
+	@$(ECHO)  Full Source.. $(FULL_SOURCE)
+	@$(ECHO)  Full Target.. $(FULL_TARGET)
+	@$(ECHO)  SourceSuffix. $(SOURCESUFFIX)
+	@$(ECHO)  TargetSuffix. $(TARGETSUFFIX)
+	@$(ECHO)  FPC fpmake... $(FPCFPMAKE)
+	@$(ECHO)
+	@$(ECHO)  == Directory info ==
+	@$(ECHO)
+	@$(ECHO)  Required pkgs... $(REQUIRE_PACKAGES)
+	@$(ECHO)
+	@$(ECHO)  Basedir......... $(BASEDIR)
+	@$(ECHO)  FPCDir.......... $(FPCDIR)
+	@$(ECHO)  CrossBinDir..... $(CROSSBINDIR)
+	@$(ECHO)  UnitsDir........ $(UNITSDIR)
+	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
+	@$(ECHO)
+	@$(ECHO)  GCC library..... $(GCCLIBDIR)
+	@$(ECHO)  Other library... $(OTHERLIBDIR)
+	@$(ECHO)
+	@$(ECHO)  == Tools info ==
+	@$(ECHO)
+	@$(ECHO)  As........ $(AS)
+	@$(ECHO)  Ld........ $(LD)
+	@$(ECHO)  Ar........ $(AR)
+	@$(ECHO)  Rc........ $(RC)
+	@$(ECHO)
+	@$(ECHO)  Mv........ $(MVPROG)
+	@$(ECHO)  Cp........ $(CPPROG)
+	@$(ECHO)  Rm........ $(RMPROG)
+	@$(ECHO)  GInstall.. $(GINSTALL)
+	@$(ECHO)  Echo...... $(ECHO)
+	@$(ECHO)  Shell..... $(SHELL)
+	@$(ECHO)  Date...... $(DATE)
+	@$(ECHO)  FPCMake... $(FPCMAKE)
+	@$(ECHO)  PPUMove... $(PPUMOVE)
+	@$(ECHO)  Zip....... $(ZIPPROG)
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  Target Loaders........ $(TARGET_LOADERS)
+	@$(ECHO)  Target Units.......... $(TARGET_UNITS)
+	@$(ECHO)  Target Implicit Units. $(TARGET_IMPLICITUNITS)
+	@$(ECHO)  Target Programs....... $(TARGET_PROGRAMS)
+	@$(ECHO)  Target Dirs........... $(TARGET_DIRS)
+	@$(ECHO)  Target Examples....... $(TARGET_EXAMPLES)
+	@$(ECHO)  Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
+	@$(ECHO)
+	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
+	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
+	@$(ECHO)
+	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
+	@$(ECHO)  Install Files....... $(INSTALL_FILES)
+	@$(ECHO)
+	@$(ECHO)  == Install info ==
+	@$(ECHO)
+	@$(ECHO)  DateStr.............. $(DATESTR)
+	@$(ECHO)  ZipName.............. $(ZIPNAME)
+	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
+	@$(ECHO)  ZipCrossPrefix....... $(ZIPCROSSPREFIX)
+	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
+	@$(ECHO)  FullZipName.......... $(FULLZIPNAME)
+	@$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)
+	@$(ECHO)
+	@$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)
+	@$(ECHO)  Install binary dir... $(INSTALL_BINDIR)
+	@$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)
+	@$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)
+	@$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)
+	@$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)
+	@$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)
+	@$(ECHO)  Install data dir..... $(INSTALL_DATADIR)
+	@$(ECHO)
+	@$(ECHO)  Dist destination dir. $(DIST_DESTDIR)
+	@$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)
+	@$(ECHO)
+.PHONY: fpc_info
+fpc_info: $(INFORULES)
+.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
+	fpc_makefile_dirs
+fpc_makefile:
+	$(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
+fpc_makefile_sub1:
+ifdef TARGET_DIRS
+	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
+endif
+ifdef TARGET_EXAMPLEDIRS
+	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
+endif
+fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
+fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
+fpc_makefiles: fpc_makefile fpc_makefile_dirs
+all: fpc_all
+debug: fpc_debug
+smart: fpc_smart
+release: fpc_release
+units: fpc_units
+examples:
+shared: fpc_shared
+install: fpc_install
+sourceinstall: fpc_sourceinstall
+exampleinstall: fpc_exampleinstall
+distinstall: 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:

+ 31 - 0
packages/dblib/Makefile.fpc

@@ -0,0 +1,31 @@
+#
+#   Makefile.fpc for dblib (msSql) bindings
+#
+
+[package]
+name=dblib
+version=2.6.1
+
+[target]
+units=dblib
+#exampledirs=examples
+
+[require]
+libc=y
+
+[install]
+fpcpackage=y
+
+[default]
+fpcdir=../..
+
+[shared]
+build=n
+
+[compiler]
+includedir=src 
+sourcedir=src
+
+[rules]
+.NOTPARALLEL:
+

+ 39 - 0
packages/dblib/fpmake.pp

@@ -0,0 +1,39 @@
+{$ifndef ALLPACKAGES}
+{$mode objfpc}{$H+}
+program fpmake;
+
+uses fpmkunit;
+
+Const
+  DBLibOSes         = [linux,freebsd,netbsd,openbsd,win32];
+  
+Var
+  P : TPackage;
+  T : TTarget;
+begin
+  With Installer do
+    begin
+{$endif ALLPACKAGES}
+
+    P:=AddPackage('dblib');
+{$ifdef ALLPACKAGES}
+    P.Directory:='dblib';
+{$endif ALLPACKAGES}
+    P.Version:='1.0';
+    P.Author := 'Library: (FreeTDS/Microsoft), header: Lacack2';
+    P.License := 'Library: FreeTDS License, header: LGPL with modification, ';
+    P.HomepageURL := 'www.freepascal.org';
+    P.Email := '';
+    P.Description := 'Headers for the MS SQL Server RDBMS';
+    P.NeedLibC:= true;  // true for headers that indirectly link to libc?
+
+    P.SourcePath.Add('src');
+    P.IncludePath.Add('src');
+
+    T:=P.Targets.AddUnit('dblib.pp',DBLibOSes);
+
+{$ifndef ALLPACKAGES}
+    Run;
+    end;
+end.
+{$endif ALLPACKAGES}

+ 594 - 0
packages/dblib/src/dblib.pp

@@ -0,0 +1,594 @@
+{
+    This file is part of the Free Component Library (FCL)
+
+    Copyright (c) 2010 by the Free Pascal development team
+
+    Header files Microsoft DB-Library for C: sqlfront.h, sqldb.h
+      and FreeTDS: sybdb.h
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+    The Original Code was created by (c) 2010 Ladislav Karrach (Windows)
+    for the Free Pascal project.
+ **********************************************************************
+    FreeTDS (http://www.freetds.org/userguide/choosingtdsprotocol.htm):
+      tds version = 5.0 - Sybase System 10 and above
+                    7.0 - MS SQL Server 7
+                    7.1 - MS SQL Server 2000 (*default*)
+                    7.2 - MS SQL Server 2005
+                    7.3 - MS SQL Server 2008
+      tds version can be set using env.var. TDSVER or in freetds.conf or .freetds.conf
+}
+unit dblib;
+
+{$IFDEF FPC}{$mode objfpc}{$ENDIF}{$H+}
+
+{ $DEFINE ntwdblib}  //if you are using MS SQL Server Client Library (ntwdblib.dll)
+{$IFNDEF ntwdblib}
+ {$DEFINE freetds}  //if you are using db-lib from FreeTDS project (MS SQL Server + Sybase support)
+{$ENDIF}
+
+{$DEFINE LOAD_DYNAMICALLY}
+
+interface
+
+const
+  DBLIBDLL=
+{$IFDEF WINDOWS}
+  {$IFDEF ntwdblib}'ntwdblib.dll'{$ENDIF}
+  {$IFDEF freetds} 'dblib.dll'   {$ENDIF}
+{$ELSE}
+  'libsybdb.so'
+{$ENDIF}
+  ;
+
+  //from sybdb.h:
+  //DBVERSION_xxx are used with dbsetlversion()
+  DBVERSION_100= 2; // Sybase TDS 5.0
+  DBVERSION_42 = 3; // This can be used for old Microsoft and Sybase servers
+  DBVERSION_70 = 4;
+  DBVERSION_71 = 5;
+  DBVERSION_72 = 6;
+  DBVERSION_73 = 7;
+
+  //DBTDS_xxx are returned by DBTDS()
+  DBTDS_UNKNOWN= 0;
+  DBTDS_42     = 4;  // SQL Server 4.2
+  DBTDS_50     = 7;	 // Sybase SQL Server 5.0; use this for connecting to Sybase (ASA or ASE)
+  DBTDS_70     = 8;	 // Microsoft SQL Server 7.0
+  DBTDS_71     = 9;  // Microsoft SQL Server 2000
+  DBTDS_72     = 10; // Microsoft SQL Server 2005
+  DBTDS_73     = 11; // Microsoft SQL Server 2008
+
+  //from sqlfront.h:
+  DBSETHOST=1;
+  DBSETUSER=2;
+  DBSETPWD=3;
+  DBSETAPP=4;
+  DBSETID=5;
+  DBSETLANG=6;
+  DBSETSECURE=7;
+  //These two are defined by Microsoft for dbsetlversion():
+  DBVER42={$IFDEF freetds}DBVERSION_42{$ELSE}8{$ENDIF};
+  DBVER60={$IFDEF freetds}DBVERSION_71{$ELSE}9{$ENDIF};
+  DBSET_LOGINTIME=10;
+  DBSETFALLBACK=12;
+  //dboptions:
+  DBNOAUTOFREE = {$IFDEF freetds}15{$ELSE}8{$ENDIF};
+  DBTEXTLIMIT  = {$IFDEF freetds}7{$ELSE}4{$ENDIF};
+  DBTEXTSIZE   = {$IFDEF freetds}17{$ELSE}5{$ENDIF};
+  DBANSItoOEM  = 14;
+  DBOEMtoANSI  = 15;
+  DBQUOTEDIDENT= {$IFDEF freetds}35{$ELSE}18{$ENDIF};
+
+  TIMEOUT_IGNORE=-1;
+  TIMEOUT_INFINITE=0;
+
+  SUCCEED=1;
+  FAIL=0;
+  NO_MORE_RESULTS=2;
+  NO_MORE_RPC_RESULTS=3;
+
+  MORE_ROWS=-1;
+  REG_ROW=MORE_ROWS;
+  NO_MORE_ROWS=-2;
+  BUF_FULL=-3;     //only if buffering is turned on
+
+  INT_EXIT=0;
+  INT_CONTINUE=1;
+  INT_CANCEL=2;
+
+  SQLVOID=$1f;
+  SQLTEXT=$23;
+  SQLVARBINARY=$25;
+  SQLINTN=$26;     //all nullable integers
+  SQLVARCHAR=$27;
+  SQLBINARY=$2d;
+  SQLIMAGE=$22;
+  SQLCHAR=$2f;
+  SQLINT1=$30;
+  SQLBIT=$32;
+  SQLINT2=$34;
+  SQLINT4=$38;
+  SQLMONEY=$3c;
+  SQLDATETIME=$3d;
+  SQLFLT8=$3e;
+  SQLFLTN=$6d;
+  SQLMONEYN=$6e;
+  SQLDATETIMN=$6f;
+  SQLFLT4=$3b;
+  SQLMONEY4=$7a;
+  SQLDATETIM4=$3a;
+  SQLDECIMAL=$6a;
+  SQLNUMERIC=$6c;
+  //from tds.h:
+  SYBNTEXT=$63;
+  SYBINT8=$7F;
+  SYBUNIQUE=$24;
+  //XSYBVARCHAR=$A7;
+  //XSYBNVARCHAR=$E7;
+  //XSYBNCHAR = $EF;
+  //XSYBBINARY= $AD;
+
+  MAXTABLENAME ={$IFDEF freetds}512+1{$ELSE}30{$ENDIF};
+  MAXCOLNAMELEN={$IFDEF freetds}512+1{$ELSE}30{$ENDIF};
+  MAXNUMERICLEN={$IFDEF freetds}32   {$ELSE}16{$ENDIF};
+  DBMAXCHAR=256; // Max length of DBVARBINARY and DBVARCHAR, etc.
+
+  DEFAULTPRECISION = 18;
+  DEFAULTSCALE     = 0;
+
+  // Used by dbcolinfo:
+  CI_REGULAR=1;
+  CI_ALTERNATE=2;
+  CI_CURSOR=3;
+
+  DBUNKNOWN = 2; //FALSE = 0, TRUE = 1
+
+type
+  PLOGINREC=Pointer;
+  PDBPROCESS=Pointer;
+
+  RETCODE=integer;
+  STATUS=integer;
+
+  INT=longint;
+  SHORT=smallint;
+  BOOL=longbool;
+  ULONG=longword;
+
+  // DB-Library datatypes
+  DBCHAR=char;
+  DBTINYINT=byte;
+  DBSMALLINT=smallint;
+  DBINT=longint;
+	DBUSMALLINT=word;
+  DBFLT8=double;
+  DBBIT=byte;
+  DBBINARY=byte;
+
+  {$PACKRECORDS C}
+  DBDATETIME=packed record
+    dtdays: DBINT;
+    dttime: ULONG;
+  end;
+  PDBDATETIME=^DBDATETIME;
+
+  // DBDATEREC structure used by dbdatecrack
+  DBDATEREC=packed record
+    case boolean of
+    false:(
+      oldyear:INT;         // 1753 - 9999
+      oldmonth: INT;       // 1 - 12
+      oldday: INT;         // 1 - 31
+      olddayofyear: INT;   // 1 - 366 (in sybdb.h dayofyear and day are changed around!)
+      oldweekday: INT;     // 1 - 7  (Mon - Sun)
+      oldhour: INT;        // 0 - 23
+      oldminute: INT;      // 0 - 59
+      oldsecond: INT;      // 0 - 59
+      oldmillisecond: INT; // 0 - 999
+      oldtzone: INT;       // 0 - 127 (Sybase only!)
+    );
+    true:(
+      year:INT;         // 1753 - 9999
+      quarter:INT;      // 1 - 4
+      month: INT;       // 1 - 12
+      {$IFDEF freetds}
+      day: INT;         // 1 - 31
+      dayofyear: INT;   // 1 - 366 (in sybdb.h dayofyear and day are changed around!)
+      {$ELSE}
+      dayofyear: INT;   // 1 - 366 (in sybdb.h dayofyear and day are changed around!)
+      day: INT;         // 1 - 31
+      {$ENDIF}
+      week: INT;        // 1 - 54 (for leap years)
+      weekday: INT;     // 1 - 7  (Mon - Sun)
+      hour: INT;        // 0 - 23
+      minute: INT;      // 0 - 59
+      second: INT;      // 0 - 59
+      millisecond: INT; // 0 - 999
+      tzone: INT;       // 0 - 127 (Sybase only!)
+    );
+  end;
+  PDBDATEREC=^DBDATEREC;
+
+  DBNUMERIC=packed record
+   	precision: BYTE;
+   	scale: BYTE;
+   	sign: BYTE; // 1 = Positive, 0 = Negative
+   	val: array[0..MAXNUMERICLEN-1] of BYTE;
+  end;
+
+  DBVARYBIN=packed record
+    len: {$IFDEF freetds}DBINT{$ELSE}DBSMALLINT{$ENDIF};
+    bytes: array[0..DBMAXCHAR-1] of BYTE;
+  end;
+
+  DBVARYCHAR=packed record
+    len: {$IFDEF freetds}DBINT{$ELSE}DBSMALLINT{$ENDIF};
+    str: array[0..DBMAXCHAR-1] of CHAR;
+  end;
+
+  DBERRHANDLE_PROC=function(dbproc: PDBPROCESS; severity, dberr, oserr:INT; dberrstr, oserrstr:PChar):INT; cdecl;
+  DBMSGHANDLE_PROC=function(dbproc: PDBPROCESS; msgno: DBINT; msgstate, severity:INT; msgtext, srvname, procname:PChar; line:DBUSMALLINT):INT; cdecl;
+
+  {$IFDEF ntwdblib}
+    {$PACKRECORDS 2}
+  {$ENDIF}
+  DBCOL=record
+   	SizeOfStruct: DBINT;
+   	Name: array[0..MAXCOLNAMELEN] of char;
+   	ActualName: array[0..MAXCOLNAMELEN] of char;
+   	TableName: array[0..MAXTABLENAME] of char;
+   	Typ: SHORT;
+   	UserType: DBINT;
+   	MaxLength: DBINT;
+   	Precision: BYTE;
+   	Scale: BYTE;
+   	VarLength: BOOL;     // TRUE, FALSE
+   	Null: BYTE;          // TRUE, FALSE or DBUNKNOWN
+   	CaseSensitive: BYTE; // TRUE, FALSE or DBUNKNOWN
+   	Updatable: BYTE;     // TRUE, FALSE or DBUNKNOWN
+   	Identity: BOOL;      // TRUE, FALSE
+  end;
+  PDBCOL=^DBCOL;
+  {$PACKRECORDS DEFAULT}
+
+
+var
+  DBLibInit: boolean=false; //was dbinit() already called ?
+
+{$IFNDEF LOAD_DYNAMICALLY}
+  function dbinit():{$IFDEF freetds}RETCODE{$ELSE}PChar{$ENDIF}; cdecl; external DBLIBDLL;
+  function dblogin():PLOGINREC; cdecl; external DBLIBDLL;
+  function dbsetlname(login:PLOGINREC; value:PChar; which:INT):RETCODE; cdecl; external DBLIBDLL;
+  function dbsetlogintime(seconds:INT):RETCODE; cdecl; external DBLIBDLL;
+  function dbsettime(seconds:INT):RETCODE; cdecl; external DBLIBDLL;
+  function dberrhandle(handler:DBERRHANDLE_PROC):DBERRHANDLE_PROC; cdecl; external DBLIBDLL;
+  function dbmsghandle(handler:DBMSGHANDLE_PROC):DBMSGHANDLE_PROC; cdecl; external DBLIBDLL;
+  function dbsetopt(dbproc:PDBPROCESS; option: INT; param:PChar {$IFDEF freetds};int_param:INT{$ENDIF}):RETCODE; cdecl; external DBLIBDLL;
+  function dbuse(dbproc:PDBPROCESS; dbname:PChar):RETCODE; cdecl; external DBLIBDLL;
+  function dbcmd(dbproc:PDBPROCESS; cmdstring:PChar):RETCODE; cdecl; external DBLIBDLL;
+  function dbcmdrow(dbproc:PDBPROCESS):RETCODE; cdecl; external DBLIBDLL;
+  function dbsqlexec(dbproc:PDBPROCESS):RETCODE; cdecl; external DBLIBDLL;
+  function dbresults(dbproc:PDBPROCESS):RETCODE; cdecl; external DBLIBDLL;
+  function dbmorecmds(dbproc:PDBPROCESS):RETCODE; cdecl; external DBLIBDLL;
+  function dbnextrow(dbproc:PDBPROCESS):STATUS; cdecl; external DBLIBDLL;
+  function dbnumcols(dbproc:PDBPROCESS):INT; cdecl; external DBLIBDLL;
+  function dbcolname(dbproc:PDBPROCESS; column:INT):PChar; cdecl; external DBLIBDLL;
+  function dbcoltype(dbproc:PDBPROCESS; column:INT):INT; cdecl; external DBLIBDLL;
+  function dbcollen(dbproc:PDBPROCESS; column:INT):DBINT; cdecl; external DBLIBDLL;
+  function dbcolinfo(dbproc:PDBPROCESS; typ:INT; column:DBINT; computeid:DBINT; dbcol:PDBCOL):RETCODE; cdecl; external DBLIBDLL;
+  function dbprtype(token:INT):PChar; cdecl; external DBLIBDLL;
+  function dbdatlen(dbproc:PDBPROCESS; column:INT):DBINT; cdecl; external DBLIBDLL;
+  function dbdata(dbproc:PDBPROCESS; column:INT):PByte; cdecl; external DBLIBDLL;
+  function dbconvert(dbproc:PDBPROCESS; srctype:INT; src:PByte; srclen:DBINT; desttype:INT; dest:PByte; destlen:DBINT):INT; cdecl; external DBLIBDLL;
+  function dbdatecrack(dbproc:PDBPROCESS; dateinfo:PDBDATEREC; datetime: PDBDATETIME):RETCODE; cdecl; external DBLIBDLL;
+  function dbcount(dbproc:PDBPROCESS):DBINT; cdecl; external DBLIBDLL;
+  function dbiscount(dbproc:PDBPROCESS):BOOL; cdecl; external DBLIBDLL;
+  function dbcancel(dbproc:PDBPROCESS):RETCODE; cdecl; external DBLIBDLL;
+  function dbcanquery(dbproc:PDBPROCESS):RETCODE; cdecl; external DBLIBDLL;
+  procedure dbfreelogin(login:PLOGINREC); cdecl; external DBLIBDLL {$IFDEF freetds}name 'dbloginfree'{$ENDIF};
+  procedure dbexit(); cdecl; external DBLIBDLL;
+  {$IFDEF ntwdblib}
+  function dbopen(login:PLOGINREC; servername:PChar):PDBPROCESS; cdecl; external DBLIBDLL;
+  function dbclose(dbproc:PDBPROCESS):RETCODE; cdecl; external DBLIBDLL;
+  procedure dbwinexit; cdecl; external DBLIBDLL;
+  {$ENDIF}
+  {$IFDEF freetds}
+  function tdsdbopen(login:PLOGINREC; servername:PChar; msdblib:INT):PDBPROCESS; cdecl; external DBLIBDLL;
+  function dbtablecolinfo(dbproc:PDBPROCESS; column:DBINT; dbcol:PDBCOL):RETCODE; cdecl; external DBLIBDLL;
+  function dbtds(dbproc:PDBPROCESS):INT; cdecl; external DBLIBDLL;
+  function dbsetlversion(login:PLOGINREC; version:BYTE):RETCODE; cdecl; external DBLIBDLL;
+  function dbservcharset(dbproc:PDBPROCESS):PChar; cdecl; external DBLIBDLL;
+  procedure dbclose(dbproc:PDBPROCESS); cdecl; external DBLIBDLL;
+  {$ENDIF}
+{$ELSE}
+  var
+  dbinit: function():{$IFDEF freetds}RETCODE{$ELSE}PChar{$ENDIF}; cdecl;
+  dblogin: function():PLOGINREC; cdecl;
+  dbsetlname: function(login:PLOGINREC; value:PChar; which:INT):RETCODE; cdecl;
+  dbsetlogintime: function(seconds:INT):RETCODE; cdecl;
+  dbsettime: function(seconds:INT):RETCODE; cdecl;
+  dberrhandle: function(handler:DBERRHANDLE_PROC):DBERRHANDLE_PROC; cdecl;
+  dbmsghandle: function(handler:DBMSGHANDLE_PROC):DBMSGHANDLE_PROC; cdecl;
+  dbsetopt: function(dbproc:PDBPROCESS; option: INT; param:PChar {$IFDEF freetds};int_param:INT{$ENDIF}):RETCODE; cdecl;
+  dbuse: function(dbproc:PDBPROCESS; dbname:PChar):RETCODE; cdecl;
+  dbcmd: function(dbproc:PDBPROCESS; cmdstring:PChar):RETCODE; cdecl;
+  dbcmdrow: function(dbproc:PDBPROCESS):RETCODE; cdecl;
+  dbsqlexec: function(dbproc:PDBPROCESS):RETCODE; cdecl;
+  dbresults: function(dbproc:PDBPROCESS):RETCODE; cdecl;
+  dbmorecmds: function(dbproc:PDBPROCESS):RETCODE; cdecl;
+  dbnextrow: function(dbproc:PDBPROCESS):STATUS; cdecl;
+  dbnumcols: function(dbproc:PDBPROCESS):INT; cdecl;
+  dbcolname: function(dbproc:PDBPROCESS; column:INT):PChar; cdecl;
+  dbcoltype: function(dbproc:PDBPROCESS; column:INT):INT; cdecl;
+  dbcollen: function(dbproc:PDBPROCESS; column:INT):DBINT; cdecl;
+  dbcolinfo: function(dbproc:PDBPROCESS; typ:INT; column:DBINT; computeid:DBINT; dbcol:PDBCOL):RETCODE; cdecl;
+  dbprtype: function(token:INT):PChar; cdecl;
+  dbdatlen: function(dbproc:PDBPROCESS; column:INT):DBINT; cdecl;
+  dbdata: function(dbproc:PDBPROCESS; column:INT):PByte; cdecl;
+  dbconvert: function(dbproc:PDBPROCESS; srctype:INT; src:PByte; srclen:DBINT; desttype:INT; dest:PByte; destlen:DBINT):INT; cdecl;
+  dbdatecrack: function(dbproc:PDBPROCESS; dateinfo:PDBDATEREC; datetime: PDBDATETIME):RETCODE; cdecl;
+  dbcount: function(dbproc:PDBPROCESS):DBINT; cdecl;
+  dbiscount: function(dbproc:PDBPROCESS):BOOL; cdecl;
+  dbcancel: function(dbproc:PDBPROCESS):RETCODE; cdecl;
+  dbcanquery: function(dbproc:PDBPROCESS):RETCODE; cdecl;
+  dbexit: procedure(); cdecl;
+  dbfreelogin: procedure(login:PLOGINREC); cdecl;
+  {$IFDEF ntwdblib}
+  dbopen: function(login:PLOGINREC; servername:PChar):PDBPROCESS; cdecl;
+  dbclose: function(dbproc:PDBPROCESS):RETCODE; cdecl;
+  dbwinexit: procedure; cdecl;
+  {$ENDIF}
+  {$IFDEF freetds}
+  tdsdbopen: function(login:PLOGINREC; servername:PChar; msdblib:INT):PDBPROCESS; cdecl;
+  dbtablecolinfo: function(dbproc:PDBPROCESS; column:DBINT; dbcol:PDBCOL):RETCODE; cdecl;
+  dbtds: function(dbproc:PDBPROCESS):INT; cdecl;
+  dbsetlversion: function(login:PLOGINREC; version:BYTE):RETCODE; cdecl;
+  dbservcharset: function(dbproc:PDBPROCESS):PChar; cdecl;
+  dbclose: procedure(dbproc:PDBPROCESS); cdecl;
+  {$ENDIF}
+
+  DefaultDBLibLibraryName: String = DBLIBDLL;
+{$ENDIF}
+
+{$IFDEF ntwdblib}
+function tdsdbopen(login:PLOGINREC; servername:PChar; msdblib:INT):PDBPROCESS;
+function dbtablecolinfo(dbproc:PDBPROCESS; column:DBINT; dbcol:PDBCOL):RETCODE;
+function dbsetlversion(login:PLOGINREC; version:BYTE):RETCODE;
+function dbtds(dbproc:PDBPROCESS):INT;
+function dbversion():PChar;
+{$ENDIF}
+{$IFDEF freetds}
+function dbopen(login:PLOGINREC; servername:PChar):PDBPROCESS;
+procedure dbwinexit;
+{$ENDIF}
+function dbsetlcharset(login:PLOGINREC; charset:PChar):RETCODE;
+function dbsetlsecure(login:PLOGINREC):RETCODE;
+
+procedure InitialiseDBLib(LibraryName : string = '');
+procedure ReleaseDBLib;
+
+implementation
+
+{$IFDEF LOAD_DYNAMICALLY}
+uses SysUtils, Dynlibs;
+
+var DBLibLibraryHandle: TLibHandle;
+    RefCount: integer;
+
+procedure InitialiseDBLib(LibraryName : string);
+var libname : string;
+begin
+  inc(RefCount);
+  if RefCount = 1 then
+  begin
+    if LibraryName='' then
+      libname:=DefaultDBLibLibraryName
+    else
+      libname:=LibraryName;
+    DBLibLibraryHandle := LoadLibrary(libname);
+    if DBLibLibraryHandle = nilhandle then
+    begin
+      RefCount := 0;
+      raise EInOutError.CreateFmt('Can not load DB-Lib client library "%s". Check your installation.'#13'%s',
+                                  [libname, SysErrorMessage(GetLastOSError)]);
+    end;
+
+   pointer(dbinit) := GetProcedureAddress(DBLibLibraryHandle,'dbinit');
+   pointer(dblogin) := GetProcedureAddress(DBLibLibraryHandle,'dblogin');
+   pointer(dbsetlname) := GetProcedureAddress(DBLibLibraryHandle,'dbsetlname');
+   pointer(dbsetlogintime) := GetProcedureAddress(DBLibLibraryHandle,'dbsetlogintime');
+   pointer(dbsettime) := GetProcedureAddress(DBLibLibraryHandle,'dbsettime');
+   pointer(dberrhandle) := GetProcedureAddress(DBLibLibraryHandle,'dberrhandle');
+   pointer(dbmsghandle) := GetProcedureAddress(DBLibLibraryHandle,'dbmsghandle');
+   pointer(dbsetopt) := GetProcedureAddress(DBLibLibraryHandle,'dbsetopt');
+   pointer(dbuse) := GetProcedureAddress(DBLibLibraryHandle,'dbuse');
+   pointer(dbcmd) := GetProcedureAddress(DBLibLibraryHandle,'dbcmd');
+   pointer(dbcmdrow) := GetProcedureAddress(DBLibLibraryHandle,'dbcmdrow');
+   pointer(dbsqlexec) := GetProcedureAddress(DBLibLibraryHandle,'dbsqlexec');
+   pointer(dbresults) := GetProcedureAddress(DBLibLibraryHandle,'dbresults');
+   pointer(dbmorecmds) := GetProcedureAddress(DBLibLibraryHandle,'dbmorecmds');
+   pointer(dbnextrow) := GetProcedureAddress(DBLibLibraryHandle,'dbnextrow');
+   pointer(dbnumcols) := GetProcedureAddress(DBLibLibraryHandle,'dbnumcols');
+   pointer(dbcolname) := GetProcedureAddress(DBLibLibraryHandle,'dbcolname');
+   pointer(dbcoltype) := GetProcedureAddress(DBLibLibraryHandle,'dbcoltype');
+   pointer(dbcollen) := GetProcedureAddress(DBLibLibraryHandle,'dbcollen');
+   pointer(dbcolinfo) := GetProcedureAddress(DBLibLibraryHandle,'dbcolinfo');
+   pointer(dbprtype) := GetProcedureAddress(DBLibLibraryHandle,'dbprtype');
+   pointer(dbdatlen) := GetProcedureAddress(DBLibLibraryHandle,'dbdatlen');
+   pointer(dbdata) := GetProcedureAddress(DBLibLibraryHandle,'dbdata');
+   pointer(dbconvert) := GetProcedureAddress(DBLibLibraryHandle,'dbconvert');
+   pointer(dbdatecrack) := GetProcedureAddress(DBLibLibraryHandle,'dbdatecrack');
+   pointer(dbcount) := GetProcedureAddress(DBLibLibraryHandle,'dbcount');
+   pointer(dbiscount) := GetProcedureAddress(DBLibLibraryHandle,'dbiscount');
+   pointer(dbcancel) := GetProcedureAddress(DBLibLibraryHandle,'dbcancel');
+   pointer(dbcanquery) := GetProcedureAddress(DBLibLibraryHandle,'dbcanquery');
+   pointer(dbexit) := GetProcedureAddress(DBLibLibraryHandle,'dbexit');
+   pointer(dbfreelogin) := GetProcedureAddress(DBLibLibraryHandle,{$IFDEF freetds}'dbloginfree'{$ELSE}'dbfreelogin'{$ENDIF});
+   pointer(dbclose) := GetProcedureAddress(DBLibLibraryHandle,'dbclose');
+   {$IFDEF ntwdblib}
+   pointer(dbopen) := GetProcedureAddress(DBLibLibraryHandle,'dbopen');
+   pointer(dbwinexit) := GetProcedureAddress(DBLibLibraryHandle,'dbwinexit');
+   {$ENDIF}
+   {$IFDEF freetds}
+   pointer(tdsdbopen) := GetProcedureAddress(DBLibLibraryHandle,'tdsdbopen');
+   pointer(dbtablecolinfo) := GetProcedureAddress(DBLibLibraryHandle,'dbtablecolinfo');
+   pointer(dbtds) := GetProcedureAddress(DBLibLibraryHandle,'dbtds');
+   pointer(dbsetlversion) := GetProcedureAddress(DBLibLibraryHandle,'dbsetlversion');
+   pointer(dbservcharset) := GetProcedureAddress(DBLibLibraryHandle,'dbservcharset');
+   //if not assigned(dbiscount) then
+   //  raise EInOutError.Create('Minimum supported version of FreeTDS client library is 0.91!');
+   {$ENDIF}
+   DBLibInit:=false;
+  end;
+end;
+
+procedure ReleaseDBLib;
+begin
+  if RefCount > 0 then dec(RefCount);
+  if RefCount = 0 then
+  begin
+    dbexit;{$IFDEF WINDOWS}dbwinexit;{$ENDIF}
+    if UnloadLibrary(DBLibLibraryHandle) then
+      DBLibLibraryHandle := NilHandle
+    else
+      inc(RefCount);
+  end;
+end;
+{$ELSE}
+procedure InitialiseDBLib(LibraryName : string);
+begin
+  //no-op for static linked
+end;
+
+procedure ReleaseDBLib;
+begin
+  //no-op for static linked
+end;
+{$ENDIF LOAD_DYNAMICALLY}
+
+//functions, which are not implemented by FreeTDS:
+{$IFDEF freetds}
+function dbopen(login:PLOGINREC; servername:PChar):PDBPROCESS;
+begin
+  Result:=tdsdbopen(login, servername, 1{1=MSDBLIB or 0=SYBDBLIB});
+end;
+
+function dbsetlcharset(login:PLOGINREC; charset:PChar):RETCODE;
+begin
+  Result:=dbsetlname(login, charset, 10);
+end;
+
+function dbsetlsecure(login:PLOGINREC):RETCODE;
+begin
+  //not implemented; see http://www.freetds.org/userguide/domains.htm
+  Result:=SUCCEED;
+end;
+
+procedure dbwinexit;
+begin
+  //do nothing
+end;
+{$ENDIF}
+
+//functions which are not implemented by ntwdblib:
+{$IFDEF ntwdblib}
+function tdsdbopen(login:PLOGINREC; servername:PChar; msdblib:INT):PDBPROCESS;
+begin
+  Result:=dbopen(login, servername);
+end;
+
+function dbtablecolinfo(dbproc:PDBPROCESS; column:DBINT; dbcol:PDBCOL):RETCODE;
+begin
+  Result:=dbcolinfo(dbproc, CI_REGULAR, column, 0, dbcol);
+  if dbcol^.VarLength {true also when column is nullable} then
+    case dbcol^.Typ of
+      SQLCHAR  : dbcol^.Typ := SQLVARCHAR;
+      SQLBINARY: dbcol^.Typ := SQLVARBINARY;
+    end;
+end;
+
+function dbsetlversion(login:PLOGINREC; version:BYTE):RETCODE;
+begin
+  Result:=dbsetlname(login, nil, version);
+end;
+
+function dbsetlcharset(login:PLOGINREC; charset:PChar):RETCODE;
+begin
+  Result:=SUCCEED;
+end;
+
+function dbsetlsecure(login:PLOGINREC):RETCODE;
+begin
+  Result:=dbsetlname(login, nil, DBSETSECURE);
+end;
+
+function dbtds(dbproc:PDBPROCESS):INT;
+begin
+  Result:=0;
+end;
+
+function dbversion():PChar;
+begin
+  Result:='DB Library version 8.00';
+end;
+{$ENDIF}
+
+{
+//ntwdblib uses low significant values first
+//freetds  uses variable length array (based on precision) see numeric.c: tds_numeric_bytes_per_prec
+//         and starts from high significant values first
+function dbnumerictobcd(dbnum: DBNUMERIC): TBCD;
+var i: integer;
+    intval,intbase,intdiv: int64;
+    bcdval,bcdbase,bcddiv, bcd1: TBCD;
+begin
+  intval:=0;
+  intbase:=1;
+  for i:=0 to 6 do
+  begin
+    intval := intval + dbnum.val[i] * intbase;
+    intbase:= intbase*256;
+  end;
+  bcdval := IntegerToBCD(intval);
+
+  if dbnum.precision > 16 then
+  begin
+    bcdbase := IntegerToBCD(intbase);
+    for i:=7 to length(dbnum.val)-1 do
+    begin
+      BCDMultiply(bcdbase, integer(dbnum.val[i]), bcd1);
+      BCDAdd(bcdval, bcd1, bcdval);
+      BCDMultiply(bcdbase, 256, bcdbase);
+    end;
+  end;
+
+  if dbnum.scale > 18 then
+  begin
+    bcddiv:=IntegerToBCD(int64(1000000000000000000));
+    for i:=19 to dbnum.scale do BCDMultiply(bcddiv, 10, bcddiv);
+  end
+  else
+  begin
+    intdiv:=1;
+    for i:=1 to dbnum.scale do intdiv:=intdiv*10;
+    bcddiv:=IntegerToBCD(intdiv);
+  end;
+
+  BCDDivide(bcdval, bcddiv, Result);
+  if dbnum.sign=0 then BCDNegate(Result);
+end;
+}
+
+{$IFNDEF LOAD_DYNAMICALLY}
+finalization
+  dbexit; {$IFDEF WINDOWS}dbwinexit;{$ENDIF}
+{$ENDIF}
+
+end.

+ 147 - 22
packages/fcl-db/src/sqldb/Makefile

@@ -1,5 +1,5 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/12/30]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2012/04/22]
 #
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
@@ -289,22 +289,22 @@ endif
 override PACKAGE_NAME=fcl-db
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-db/Makefile.fpc,$(PACKAGESDIR))))))
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
+override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite mssql
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
+override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite mssql
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
+override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite mssql
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
+override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite mssql
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
+override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite mssql
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
+override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite mssql
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
 override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
@@ -316,46 +316,46 @@ ifeq ($(FULL_TARGET),i386-iphonesim)
 override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
+override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite mssql
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
+override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite mssql
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
+override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite mssql
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
+override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite mssql
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
+override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite mssql
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
+override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite mssql
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
 override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
+override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite mssql
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
+override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite mssql
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
+override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite mssql
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
+override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite mssql
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
 override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_DIRS+=interbase odbc mysql sqlite
+override TARGET_DIRS+=interbase odbc mysql sqlite mssql
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
+override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite mssql
 endif
 ifeq ($(FULL_TARGET),arm-darwin)
 override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
@@ -364,16 +364,16 @@ ifeq ($(FULL_TARGET),arm-wince)
 override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
+override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite mssql
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
 override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
 endif
 ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
+override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite mssql
 endif
 ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite
+override TARGET_DIRS+=interbase postgres mysql odbc oracle sqlite mssql
 endif
 ifeq ($(FULL_TARGET),i386-linux)
 override TARGET_UNITS+=sqldb
@@ -1579,6 +1579,7 @@ REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_ORACLE=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 REQUIRE_PACKAGES_RTL=1
@@ -1595,6 +1596,7 @@ REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_ORACLE=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 REQUIRE_PACKAGES_RTL=1
@@ -1612,6 +1614,7 @@ REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_ORACLE=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 REQUIRE_PACKAGES_RTL=1
@@ -1624,6 +1627,7 @@ REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_ORACLE=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),i386-haiku)
 REQUIRE_PACKAGES_RTL=1
@@ -1641,6 +1645,7 @@ REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_ORACLE=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 REQUIRE_PACKAGES_RTL=1
@@ -1667,6 +1672,7 @@ REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_ORACLE=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
 REQUIRE_PACKAGES_RTL=1
@@ -1751,6 +1757,7 @@ REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_ORACLE=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
 REQUIRE_PACKAGES_RTL=1
@@ -1763,6 +1770,7 @@ REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_ORACLE=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
 REQUIRE_PACKAGES_RTL=1
@@ -1774,6 +1782,7 @@ REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_ORACLE=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
 REQUIRE_PACKAGES_RTL=1
@@ -1795,6 +1804,7 @@ REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_ORACLE=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
 REQUIRE_PACKAGES_RTL=1
@@ -1817,6 +1827,7 @@ REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_ORACLE=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 REQUIRE_PACKAGES_RTL=1
@@ -1828,6 +1839,7 @@ REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_ORACLE=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
 REQUIRE_PACKAGES_RTL=1
@@ -1878,6 +1890,7 @@ REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_ORACLE=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 REQUIRE_PACKAGES_RTL=1
@@ -1889,6 +1902,7 @@ REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_ORACLE=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 REQUIRE_PACKAGES_RTL=1
@@ -1911,6 +1925,7 @@ REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_ORACLE=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
 REQUIRE_PACKAGES_RTL=1
@@ -1923,6 +1938,7 @@ REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_ORACLE=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),x86_64-solaris)
 REQUIRE_PACKAGES_RTL=1
@@ -1950,6 +1966,7 @@ REQUIRE_PACKAGES_IBASE=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
 REQUIRE_PACKAGES_RTL=1
@@ -1967,6 +1984,7 @@ REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_ORACLE=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
 REQUIRE_PACKAGES_RTL=1
@@ -2028,6 +2046,7 @@ REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_ORACLE=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
 REQUIRE_PACKAGES_RTL=1
@@ -2063,6 +2082,7 @@ REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_ORACLE=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifeq ($(FULL_TARGET),armeb-embedded)
 REQUIRE_PACKAGES_RTL=1
@@ -2080,6 +2100,7 @@ REQUIRE_PACKAGES_MYSQL=1
 REQUIRE_PACKAGES_ODBC=1
 REQUIRE_PACKAGES_ORACLE=1
 REQUIRE_PACKAGES_SQLITE=1
+REQUIRE_PACKAGES_DBLIB=1
 endif
 ifdef REQUIRE_PACKAGES_RTL
 PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
@@ -2461,6 +2482,44 @@ ifdef UNITDIR_FPMAKE_SQLITE
 override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_SQLITE)
 endif
 endif
+ifdef REQUIRE_PACKAGES_DBLIB
+PACKAGEDIR_DBLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /dblib/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_DBLIB),)
+ifneq ($(wildcard $(PACKAGEDIR_DBLIB)/units/$(TARGETSUFFIX)),)
+UNITDIR_DBLIB=$(PACKAGEDIR_DBLIB)/units/$(TARGETSUFFIX)
+else
+UNITDIR_DBLIB=$(PACKAGEDIR_DBLIB)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_DBLIB)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_DBLIB=$(PACKAGEDIR_DBLIB)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_DBLIB)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_DBLIB=$(PACKAGEDIR_DBLIB)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_DBLIB=$(PACKAGEDIR_DBLIB)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_DBLIB)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_DBLIB) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_DBLIB)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_DBLIB=
+UNITDIR_DBLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /dblib/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_DBLIB),)
+UNITDIR_DBLIB:=$(firstword $(UNITDIR_DBLIB))
+else
+UNITDIR_DBLIB=
+endif
+endif
+ifdef UNITDIR_DBLIB
+override COMPILER_UNITDIR+=$(UNITDIR_DBLIB)
+endif
+ifdef UNITDIR_FPMAKE_DBLIB
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_DBLIB)
+endif
+endif
 ifdef REQUIRE_PACKAGES_UNIVINT
 PACKAGEDIR_UNIVINT:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /univint/Makefile.fpc,$(PACKAGESDIR))))))
 ifneq ($(PACKAGEDIR_UNIVINT),)
@@ -3005,6 +3064,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifeq ($(FULL_TARGET),i386-win32)
 TARGET_DIRS_INTERBASE=1
@@ -3013,6 +3073,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
 TARGET_DIRS_INTERBASE=1
@@ -3021,6 +3082,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 TARGET_DIRS_INTERBASE=1
@@ -3029,6 +3091,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
 TARGET_DIRS_INTERBASE=1
@@ -3037,6 +3100,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
 TARGET_DIRS_INTERBASE=1
@@ -3045,6 +3109,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
 TARGET_DIRS_INTERBASE=1
@@ -3077,6 +3142,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
 TARGET_DIRS_INTERBASE=1
@@ -3085,6 +3151,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
 TARGET_DIRS_INTERBASE=1
@@ -3093,6 +3160,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
 TARGET_DIRS_INTERBASE=1
@@ -3101,6 +3169,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
 TARGET_DIRS_INTERBASE=1
@@ -3109,6 +3178,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 TARGET_DIRS_INTERBASE=1
@@ -3117,6 +3187,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
 TARGET_DIRS_INTERBASE=1
@@ -3133,6 +3204,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 TARGET_DIRS_INTERBASE=1
@@ -3141,6 +3213,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
 TARGET_DIRS_INTERBASE=1
@@ -3149,6 +3222,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
 TARGET_DIRS_INTERBASE=1
@@ -3157,6 +3231,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
 TARGET_DIRS_INTERBASE=1
@@ -3171,6 +3246,7 @@ TARGET_DIRS_INTERBASE=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_MYSQL=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifeq ($(FULL_TARGET),arm-linux)
 TARGET_DIRS_INTERBASE=1
@@ -3179,6 +3255,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifeq ($(FULL_TARGET),arm-darwin)
 TARGET_DIRS_INTERBASE=1
@@ -3203,6 +3280,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
 TARGET_DIRS_INTERBASE=1
@@ -3219,6 +3297,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifeq ($(FULL_TARGET),mipsel-linux)
 TARGET_DIRS_INTERBASE=1
@@ -3227,6 +3306,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ODBC=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_SQLITE=1
+TARGET_DIRS_MSSQL=1
 endif
 ifdef TARGET_DIRS_INTERBASE
 interbase_all:
@@ -3498,6 +3578,51 @@ sqlite:
 	$(MAKE) -C sqlite all
 .PHONY: sqlite_all sqlite_debug sqlite_smart sqlite_release sqlite_units sqlite_examples sqlite_shared sqlite_install sqlite_sourceinstall sqlite_exampleinstall sqlite_distinstall sqlite_zipinstall sqlite_zipsourceinstall sqlite_zipexampleinstall sqlite_zipdistinstall sqlite_clean sqlite_distclean sqlite_cleanall sqlite_info sqlite_makefiles sqlite
 endif
+ifdef TARGET_DIRS_MSSQL
+mssql_all:
+	$(MAKE) -C mssql all
+mssql_debug:
+	$(MAKE) -C mssql debug
+mssql_smart:
+	$(MAKE) -C mssql smart
+mssql_release:
+	$(MAKE) -C mssql release
+mssql_units:
+	$(MAKE) -C mssql units
+mssql_examples:
+	$(MAKE) -C mssql examples
+mssql_shared:
+	$(MAKE) -C mssql shared
+mssql_install:
+	$(MAKE) -C mssql install
+mssql_sourceinstall:
+	$(MAKE) -C mssql sourceinstall
+mssql_exampleinstall:
+	$(MAKE) -C mssql exampleinstall
+mssql_distinstall:
+	$(MAKE) -C mssql distinstall
+mssql_zipinstall:
+	$(MAKE) -C mssql zipinstall
+mssql_zipsourceinstall:
+	$(MAKE) -C mssql zipsourceinstall
+mssql_zipexampleinstall:
+	$(MAKE) -C mssql zipexampleinstall
+mssql_zipdistinstall:
+	$(MAKE) -C mssql zipdistinstall
+mssql_clean:
+	$(MAKE) -C mssql clean
+mssql_distclean:
+	$(MAKE) -C mssql distclean
+mssql_cleanall:
+	$(MAKE) -C mssql cleanall
+mssql_info:
+	$(MAKE) -C mssql info
+mssql_makefiles:
+	$(MAKE) -C mssql makefiles
+mssql:
+	$(MAKE) -C mssql all
+.PHONY: mssql_all mssql_debug mssql_smart mssql_release mssql_units mssql_examples mssql_shared mssql_install mssql_sourceinstall mssql_exampleinstall mssql_distinstall mssql_zipinstall mssql_zipsourceinstall mssql_zipexampleinstall mssql_zipdistinstall mssql_clean mssql_distclean mssql_cleanall mssql_info mssql_makefiles mssql
+endif
 all: fpc_all $(addsuffix _all,$(TARGET_DIRS))
 debug: fpc_debug
 smart: fpc_smart

+ 8 - 8
packages/fcl-db/src/sqldb/Makefile.fpc

@@ -6,15 +6,15 @@
 main=fcl-db
 
 [target]
-dirs_beos=interbase postgres mysql odbc oracle sqlite
-dirs_linux=interbase postgres mysql odbc oracle sqlite
-dirs_freebsd=interbase postgres mysql odbc oracle sqlite
-dirs_darwin=interbase postgres mysql odbc oracle sqlite
+dirs_beos=interbase postgres mysql odbc oracle sqlite mssql
+dirs_linux=interbase postgres mysql odbc oracle sqlite mssql 
+dirs_freebsd=interbase postgres mysql odbc oracle sqlite mssql
+dirs_darwin=interbase postgres mysql odbc oracle sqlite 
 dirs_iphonesim=interbase postgres mysql odbc oracle sqlite
-dirs_netbsd=interbase postgres mysql odbc oracle sqlite
-dirs_openbsd=interbase postgres mysql odbc oracle sqlite
-dirs_win32=interbase postgres mysql odbc oracle sqlite
-dirs_win64=interbase odbc mysql sqlite
+dirs_netbsd=interbase postgres mysql odbc oracle sqlite mssql
+dirs_openbsd=interbase postgres mysql odbc oracle sqlite mssql
+dirs_win32=interbase postgres mysql odbc oracle sqlite mssql
+dirs_win64=interbase odbc mysql sqlite mssql
 dirs_wince=interbase postgres mysql odbc oracle sqlite
 units=sqldb
 rsts=sqldb

+ 3 - 0
packages/fcl-db/src/sqldb/fpmake.inc

@@ -18,4 +18,7 @@ T.ResourceStrings:=True;
 
 { Interbase/Firebird }
 {$i interbase/fpmake.inc}
+
+{ MS SQL }
+{$i mssql/fpmake.inc}
     

+ 2291 - 0
packages/fcl-db/src/sqldb/mssql/Makefile

@@ -0,0 +1,2291 @@
+#
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2012/04/22]
+#
+default: all
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
+BSDs = freebsd netbsd openbsd darwin
+UNIXs = linux $(BSDs) solaris qnx haiku
+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)),)
+ifndef RUNBATCH
+RUNBATCH=$(COMSPEC) /C
+endif
+endif
+endif
+ifdef inUnix
+PATHSEP=/
+else
+PATHSEP:=$(subst /,\,/)
+ifdef inCygWin
+PATHSEP=/
+endif
+endif
+ifdef PWD
+BASEDIR:=$(subst \,/,$(shell $(PWD)))
+ifdef inCygWin
+ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
+BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
+BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
+BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
+endif
+endif
+else
+BASEDIR=.
+endif
+ifdef inOS2
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO=echo
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+endif
+override DEFAULT_FPCDIR=../../../../..
+ifndef FPC
+ifdef PP
+FPC=$(PP)
+endif
+endif
+ifndef FPC
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+ifneq ($(CPU_TARGET),)
+FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB)
+else
+FPC:=$(shell $(FPCPROG) -PB)
+endif
+ifneq ($(findstring Error,$(FPC)),)
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+else
+ifeq ($(strip $(wildcard $(FPC))),)
+FPC:=$(firstword $(FPCPROG))
+endif
+endif
+else
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+endif
+override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
+override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
+FOUNDFPC:=$(strip $(wildcard $(FPC)))
+ifeq ($(FOUNDFPC),)
+FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
+ifeq ($(FOUNDFPC),)
+$(error Compiler $(FPC) not found)
+endif
+endif
+ifndef FPC_COMPILERINFO
+FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
+endif
+ifndef FPC_VERSION
+FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
+endif
+export FPC FPC_VERSION FPC_COMPILERINFO
+unexport CHECKDEPEND ALLDEPENDENCIES
+ifndef CPU_TARGET
+ifdef CPU_TARGET_DEFAULT
+CPU_TARGET=$(CPU_TARGET_DEFAULT)
+endif
+endif
+ifndef OS_TARGET
+ifdef OS_TARGET_DEFAULT
+OS_TARGET=$(OS_TARGET_DEFAULT)
+endif
+endif
+ifndef CPU_SOURCE
+CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
+endif
+ifndef CPU_TARGET
+CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
+endif
+ifndef OS_SOURCE
+OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
+endif
+ifndef OS_TARGET
+OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
+endif
+FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifeq ($(CPU_TARGET),armeb)
+ARCH=arm
+override FPCOPT+=-Cb
+else
+ifeq ($(CPU_TARGET),armel)
+ARCH=arm
+override FPCOPT+=-CaEABI
+else
+ARCH=$(CPU_TARGET)
+endif
+endif
+ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
+TARGETSUFFIX=$(OS_TARGET)
+SOURCESUFFIX=$(OS_SOURCE)
+else
+ifneq ($(findstring $(OS_TARGET),$(LIMIT83fs)),)
+TARGETSUFFIX=$(OS_TARGET)
+else
+TARGETSUFFIX=$(FULL_TARGET)
+endif
+SOURCESUFFIX=$(FULL_SOURCE)
+endif
+ifneq ($(FULL_TARGET),$(FULL_SOURCE))
+CROSSCOMPILE=1
+endif
+ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
+ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
+$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
+endif
+endif
+ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
+BSDhier=1
+endif
+ifeq ($(OS_TARGET),linux)
+linuxHier=1
+endif
+export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
+ifdef FPCDIR
+override FPCDIR:=$(subst \,/,$(FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl 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
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+ifeq ($(OS_SOURCE),darwin)
+DARWIN2DARWIN=1
+endif
+endif
+ifndef BINUTILSPREFIX
+ifndef CROSSBINDIR
+ifdef CROSSCOMPILE
+ifndef DARWIN2DARWIN
+BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
+endif
+endif
+endif
+endif
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
+ifeq ($(UNITSDIR),)
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
+endif
+PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
+ifndef FPCFPMAKE
+ifdef CROSSCOMPILE
+ifeq ($(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))),)
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+FPCFPMAKE:=$(shell $(FPCPROG) -PB)
+ifeq ($(strip $(wildcard $(FPCFPMAKE))),)
+FPCFPMAKE:=$(firstword $(FPCPROG))
+endif
+else
+override FPCFPMAKE=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+else
+FPCFPMAKE=$(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR))))
+FPMAKE_SKIP_CONFIG=-n
+export FPCFPMAKE
+export FPMAKE_SKIP_CONFIG
+endif
+else
+FPMAKE_SKIP_CONFIG=-n
+FPCFPMAKE=$(FPC)
+endif
+endif
+override PACKAGE_NAME=fcl-db
+PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-db/Makefile.fpc,$(PACKAGESDIR))))))
+ifeq ($(FULL_TARGET),i386-linux)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override TARGET_UNITS+=mssqlconn
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override TARGET_UNITS+=mssqlconn
+endif
+override INSTALL_FPCPACKAGE=y
+ifeq ($(FULL_TARGET),i386-linux)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override COMPILER_OPTIONS+=-S2
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override COMPILER_OPTIONS+=-S2
+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
+ifeq ($(OS_SOURCE),linux)
+ifndef GCCLIBDIR
+ifeq ($(CPU_TARGET),i386)
+ifneq ($(findstring x86_64,$(shell uname -a)),)
+ifeq ($(BINUTILSPREFIX),)
+GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`)
+endif
+endif
+endif
+ifeq ($(CPU_TARGET),powerpc64)
+ifeq ($(BINUTILSPREFIX),)
+GCCLIBDIR:=$(shell dirname `gcc -m64 -print-libgcc-file-name`)
+endif
+endif
+endif
+ifndef GCCLIBDIR
+CROSSGCC=$(strip $(wildcard $(addsuffix /$(BINUTILSPREFIX)gcc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(CROSSGCC),)
+GCCLIBDIR:=$(shell dirname `$(CROSSGCC) -print-libgcc-file-name`)
+endif
+endif
+ifndef OTHERLIBDIR
+OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
+endif
+endif
+ifdef inUnix
+ifeq ($(OS_SOURCE),netbsd)
+OTHERLIBDIR+=/usr/pkg/lib
+endif
+export GCCLIBDIR OTHERLIB
+endif
+BATCHEXT=.bat
+LOADEREXT=.as
+EXEEXT=.exe
+PPLEXT=.ppl
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.so
+SHAREDLIBPREFIX=libfp
+STATICLIBPREFIX=libp
+IMPORTLIBPREFIX=libimp
+RSTEXT=.rst
+EXEDBGEXT=.dbg
+ifeq ($(OS_TARGET),go32v1)
+STATICLIBPREFIX=
+SHORTSUFFIX=v1
+endif
+ifeq ($(OS_TARGET),go32v2)
+STATICLIBPREFIX=
+SHORTSUFFIX=dos
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),watcom)
+STATICLIBPREFIX=
+OEXT=.obj
+ASMEXT=.asm
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=wat
+IMPORTLIBPREFIX=
+endif
+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
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),emx)
+BATCHEXT=.cmd
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=emx
+ECHO=echo
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),amiga)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=amg
+endif
+ifeq ($(OS_TARGET),morphos)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=mos
+endif
+ifeq ($(OS_TARGET),atari)
+EXEEXT=.ttp
+SHORTSUFFIX=ata
+endif
+ifeq ($(OS_TARGET),beos)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=be
+endif
+ifeq ($(OS_TARGET),haiku)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=hai
+endif
+ifeq ($(OS_TARGET),solaris)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=sun
+endif
+ifeq ($(OS_TARGET),qnx)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=qnx
+endif
+ifeq ($(OS_TARGET),netware)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nw
+IMPORTLIBPREFIX=imp
+endif
+ifeq ($(OS_TARGET),netwlibc)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nwl
+IMPORTLIBPREFIX=imp
+endif
+ifeq ($(OS_TARGET),macos)
+BATCHEXT=
+EXEEXT=
+DEBUGSYMEXT=.xcoff
+SHORTSUFFIX=mac
+IMPORTLIBPREFIX=imp
+endif
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=dwn
+EXEDBGEXT=.dSYM
+endif
+ifeq ($(OS_TARGET),gba)
+EXEEXT=.gba
+SHAREDLIBEXT=.so
+SHORTSUFFIX=gba
+endif
+ifeq ($(OS_TARGET),symbian)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=symbian
+endif
+ifeq ($(OS_TARGET),NativeNT)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=nativent
+endif
+ifeq ($(OS_TARGET),wii)
+EXEEXT=.dol
+SHAREDLIBEXT=.so
+SHORTSUFFIX=wii
+endif
+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
+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
+ZIPOPT=-9
+ZIPEXT=.zip
+ifeq ($(USETAR),bz2)
+TAROPT=vj
+TAREXT=.tar.bz2
+else
+TAROPT=vz
+TAREXT=.tar.gz
+endif
+override REQUIRE_PACKAGES=rtl dblib fcl-base
+ifeq ($(FULL_TARGET),i386-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_UNIVINT=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_UNIVINT=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_UNIVINT=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_UNIVINT=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_UNIVINT=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_UNIVINT=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_DBLIB=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifdef REQUIRE_PACKAGES_RTL
+PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_RTL),)
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),)
+UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)
+else
+UNITDIR_RTL=$(PACKAGEDIR_RTL)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_RTL)/$(OS_TARGET) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_RTL=
+UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_RTL),)
+UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
+else
+UNITDIR_RTL=
+endif
+endif
+ifdef UNITDIR_RTL
+override COMPILER_UNITDIR+=$(UNITDIR_RTL)
+endif
+ifdef UNITDIR_FPMAKE_RTL
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_RTL)
+endif
+endif
+ifdef REQUIRE_PACKAGES_DBLIB
+PACKAGEDIR_DBLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /dblib/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_DBLIB),)
+ifneq ($(wildcard $(PACKAGEDIR_DBLIB)/units/$(TARGETSUFFIX)),)
+UNITDIR_DBLIB=$(PACKAGEDIR_DBLIB)/units/$(TARGETSUFFIX)
+else
+UNITDIR_DBLIB=$(PACKAGEDIR_DBLIB)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_DBLIB)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_DBLIB=$(PACKAGEDIR_DBLIB)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_DBLIB)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_DBLIB=$(PACKAGEDIR_DBLIB)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_DBLIB=$(PACKAGEDIR_DBLIB)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_DBLIB)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_DBLIB) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_DBLIB)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_DBLIB=
+UNITDIR_DBLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /dblib/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_DBLIB),)
+UNITDIR_DBLIB:=$(firstword $(UNITDIR_DBLIB))
+else
+UNITDIR_DBLIB=
+endif
+endif
+ifdef UNITDIR_DBLIB
+override COMPILER_UNITDIR+=$(UNITDIR_DBLIB)
+endif
+ifdef UNITDIR_FPMAKE_DBLIB
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_DBLIB)
+endif
+endif
+ifdef REQUIRE_PACKAGES_FCL-BASE
+PACKAGEDIR_FCL-BASE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-base/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_FCL-BASE),)
+ifneq ($(wildcard $(PACKAGEDIR_FCL-BASE)/units/$(TARGETSUFFIX)),)
+UNITDIR_FCL-BASE=$(PACKAGEDIR_FCL-BASE)/units/$(TARGETSUFFIX)
+else
+UNITDIR_FCL-BASE=$(PACKAGEDIR_FCL-BASE)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_FCL-BASE)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FCL-BASE=$(PACKAGEDIR_FCL-BASE)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_FCL-BASE)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FCL-BASE=$(PACKAGEDIR_FCL-BASE)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_FCL-BASE=$(PACKAGEDIR_FCL-BASE)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_FCL-BASE)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_FCL-BASE) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-BASE)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_FCL-BASE=
+UNITDIR_FCL-BASE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-base/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_FCL-BASE),)
+UNITDIR_FCL-BASE:=$(firstword $(UNITDIR_FCL-BASE))
+else
+UNITDIR_FCL-BASE=
+endif
+endif
+ifdef UNITDIR_FCL-BASE
+override COMPILER_UNITDIR+=$(UNITDIR_FCL-BASE)
+endif
+ifdef UNITDIR_FPMAKE_FCL-BASE
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-BASE)
+endif
+endif
+ifdef REQUIRE_PACKAGES_UNIVINT
+PACKAGEDIR_UNIVINT:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /univint/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_UNIVINT),)
+ifneq ($(wildcard $(PACKAGEDIR_UNIVINT)/units/$(TARGETSUFFIX)),)
+UNITDIR_UNIVINT=$(PACKAGEDIR_UNIVINT)/units/$(TARGETSUFFIX)
+else
+UNITDIR_UNIVINT=$(PACKAGEDIR_UNIVINT)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_UNIVINT)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_UNIVINT=$(PACKAGEDIR_UNIVINT)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_UNIVINT)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_UNIVINT=$(PACKAGEDIR_UNIVINT)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_UNIVINT=$(PACKAGEDIR_UNIVINT)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_UNIVINT)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_UNIVINT) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_UNIVINT)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_UNIVINT=
+UNITDIR_UNIVINT:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /univint/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_UNIVINT),)
+UNITDIR_UNIVINT:=$(firstword $(UNITDIR_UNIVINT))
+else
+UNITDIR_UNIVINT=
+endif
+endif
+ifdef UNITDIR_UNIVINT
+override COMPILER_UNITDIR+=$(UNITDIR_UNIVINT)
+endif
+ifdef UNITDIR_FPMAKE_UNIVINT
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_UNIVINT)
+endif
+endif
+ifndef NOCPUDEF
+override FPCOPTDEF=$(ARCH)
+endif
+ifneq ($(OS_TARGET),$(OS_SOURCE))
+override FPCOPT+=-T$(OS_TARGET)
+endif
+ifneq ($(CPU_TARGET),$(CPU_SOURCE))
+override FPCOPT+=-P$(ARCH)
+endif
+ifeq ($(OS_SOURCE),openbsd)
+override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
+override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH)
+endif
+ifndef CROSSBOOTSTRAP
+ifneq ($(BINUTILSPREFIX),)
+override FPCOPT+=-XP$(BINUTILSPREFIX)
+override FPCMAKEOPT+=-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)),)
+ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),)
+ifeq ($(CPU_TARGET),x86_64)
+override FPCOPT+=-Cg
+endif
+endif
+endif
+ifdef LINKSHARED
+endif
+ifdef GCCLIBDIR
+override FPCOPT+=-Fl$(GCCLIBDIR)
+endif
+ifdef OTHERLIBDIR
+override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR))
+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)
+	$(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_clean fpc_cleanall fpc_distclean
+ifdef EXEFILES
+override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
+override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
+endif
+ifdef CLEAN_PROGRAMS
+override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
+endif
+ifdef CLEAN_UNITS
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
+endif
+ifdef CLEANPPUFILES
+override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
+ifdef DEBUGSYMEXT
+override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
+endif
+override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
+override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
+endif
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANEXEDBGFILES
+	-$(DELTREE) $(CLEANEXEDBGFILES)
+endif
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+ifdef CLEAN_FILES
+	-$(DEL) $(CLEAN_FILES)
+endif
+ifdef LIB_NAME
+	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
+endif
+	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef COMPILER_UNITTARGETDIR
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+endif
+ifdef CLEAN_FILES
+	-$(DEL) $(CLEAN_FILES)
+endif
+	-$(DELTREE) units
+	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+ifneq ($(PPUEXT),.ppu)
+	-$(DEL) *.o *.ppu *.a
+endif
+	-$(DELTREE) *$(SMARTEXT)
+	-$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+	-$(DEL) *_ppas$(BATCHEXT)
+ifdef AOUTEXT
+	-$(DEL) *$(AOUTEXT)
+endif
+ifdef DEBUGSYMEXT
+	-$(DEL) *$(DEBUGSYMEXT)
+endif
+fpc_distclean: cleanall
+.PHONY: fpc_baseinfo
+override INFORULES+=fpc_baseinfo
+fpc_baseinfo:
+	@$(ECHO)
+	@$(ECHO)  == Package info ==
+	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
+	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
+	@$(ECHO)
+	@$(ECHO)  == Configuration info ==
+	@$(ECHO)
+	@$(ECHO)  FPC.......... $(FPC)
+	@$(ECHO)  FPC Version.. $(FPC_VERSION)
+	@$(ECHO)  Source CPU... $(CPU_SOURCE)
+	@$(ECHO)  Target CPU... $(CPU_TARGET)
+	@$(ECHO)  Source OS.... $(OS_SOURCE)
+	@$(ECHO)  Target OS.... $(OS_TARGET)
+	@$(ECHO)  Full Source.. $(FULL_SOURCE)
+	@$(ECHO)  Full Target.. $(FULL_TARGET)
+	@$(ECHO)  SourceSuffix. $(SOURCESUFFIX)
+	@$(ECHO)  TargetSuffix. $(TARGETSUFFIX)
+	@$(ECHO)  FPC fpmake... $(FPCFPMAKE)
+	@$(ECHO)
+	@$(ECHO)  == Directory info ==
+	@$(ECHO)
+	@$(ECHO)  Required pkgs... $(REQUIRE_PACKAGES)
+	@$(ECHO)
+	@$(ECHO)  Basedir......... $(BASEDIR)
+	@$(ECHO)  FPCDir.......... $(FPCDIR)
+	@$(ECHO)  CrossBinDir..... $(CROSSBINDIR)
+	@$(ECHO)  UnitsDir........ $(UNITSDIR)
+	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
+	@$(ECHO)
+	@$(ECHO)  GCC library..... $(GCCLIBDIR)
+	@$(ECHO)  Other library... $(OTHERLIBDIR)
+	@$(ECHO)
+	@$(ECHO)  == Tools info ==
+	@$(ECHO)
+	@$(ECHO)  As........ $(AS)
+	@$(ECHO)  Ld........ $(LD)
+	@$(ECHO)  Ar........ $(AR)
+	@$(ECHO)  Rc........ $(RC)
+	@$(ECHO)
+	@$(ECHO)  Mv........ $(MVPROG)
+	@$(ECHO)  Cp........ $(CPPROG)
+	@$(ECHO)  Rm........ $(RMPROG)
+	@$(ECHO)  GInstall.. $(GINSTALL)
+	@$(ECHO)  Echo...... $(ECHO)
+	@$(ECHO)  Shell..... $(SHELL)
+	@$(ECHO)  Date...... $(DATE)
+	@$(ECHO)  FPCMake... $(FPCMAKE)
+	@$(ECHO)  PPUMove... $(PPUMOVE)
+	@$(ECHO)  Zip....... $(ZIPPROG)
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  Target Loaders........ $(TARGET_LOADERS)
+	@$(ECHO)  Target Units.......... $(TARGET_UNITS)
+	@$(ECHO)  Target Implicit Units. $(TARGET_IMPLICITUNITS)
+	@$(ECHO)  Target Programs....... $(TARGET_PROGRAMS)
+	@$(ECHO)  Target Dirs........... $(TARGET_DIRS)
+	@$(ECHO)  Target Examples....... $(TARGET_EXAMPLES)
+	@$(ECHO)  Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
+	@$(ECHO)
+	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
+	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
+	@$(ECHO)
+	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
+	@$(ECHO)  Install Files....... $(INSTALL_FILES)
+	@$(ECHO)
+	@$(ECHO)  == Install info ==
+	@$(ECHO)
+	@$(ECHO)  DateStr.............. $(DATESTR)
+	@$(ECHO)  ZipName.............. $(ZIPNAME)
+	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
+	@$(ECHO)  ZipCrossPrefix....... $(ZIPCROSSPREFIX)
+	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
+	@$(ECHO)  FullZipName.......... $(FULLZIPNAME)
+	@$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)
+	@$(ECHO)
+	@$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)
+	@$(ECHO)  Install binary dir... $(INSTALL_BINDIR)
+	@$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)
+	@$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)
+	@$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)
+	@$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)
+	@$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)
+	@$(ECHO)  Install data dir..... $(INSTALL_DATADIR)
+	@$(ECHO)
+	@$(ECHO)  Dist destination dir. $(DIST_DESTDIR)
+	@$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)
+	@$(ECHO)
+.PHONY: fpc_info
+fpc_info: $(INFORULES)
+.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
+	fpc_makefile_dirs
+fpc_makefile:
+	$(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
+fpc_makefile_sub1:
+ifdef TARGET_DIRS
+	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
+endif
+ifdef TARGET_EXAMPLEDIRS
+	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
+endif
+fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
+fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
+fpc_makefiles: fpc_makefile fpc_makefile_dirs
+all: fpc_all
+debug: fpc_debug
+smart: fpc_smart
+release: fpc_release
+units: fpc_units
+examples:
+shared: fpc_shared
+install: fpc_install
+sourceinstall: fpc_sourceinstall
+exampleinstall: fpc_exampleinstall
+distinstall:
+zipinstall:
+zipsourceinstall:
+zipexampleinstall:
+zipdistinstall:
+clean: fpc_clean
+distclean: fpc_distclean
+cleanall: fpc_cleanall
+info: fpc_info
+makefiles: fpc_makefiles
+.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
+ifneq ($(wildcard fpcmake.loc),)
+include fpcmake.loc
+endif
+.NOTPARALLEL:

+ 24 - 0
packages/fcl-db/src/sqldb/mssql/Makefile.fpc

@@ -0,0 +1,24 @@
+#
+# Makefile.fpc for SQL MSSQLConnection
+#
+
+[package]
+main=fcl-db
+
+[target]
+units=mssqlconn
+
+[require]
+packages=dblib fcl-base
+
+[compiler]
+options=-S2
+
+[install]
+fpcpackage=y
+
+[default]
+fpcdir=../../../../..
+
+[rules]
+.NOTPARALLEL:

+ 11 - 0
packages/fcl-db/src/sqldb/mssql/fpmake.inc

@@ -0,0 +1,11 @@
+{ Make DB directory and all subdirectories }
+{ FULLSQLDB will be defined if included from SQLDB directory alone}
+{ FULLDB will be defined if included from db directory alone}
+{ FULLFCL will be defined if included from main FCL directory }
+
+Targets.ResetDefaults;
+Targets.DefaultDir:='db/sqldb/mssql';
+{ Drivers only for the following OSes }
+Targets.DefaultOS:=[win32,openbsd,netbsd,freebsd,linux];
+T:=Targets.AddUnit('mssqlconn');
+T.ResourceStrings:=False;

+ 20 - 0
packages/fcl-db/src/sqldb/mssql/fpmake.pp

@@ -0,0 +1,20 @@
+{$mode objfpc}
+{$H+}
+program fpmake;
+
+uses fpmkunit;
+
+Var
+  T : TTarget;
+   
+begin
+  ChangeDir('../../..');
+  With Installer do 
+    begin
+    {$i ../../../fclmake.inc}
+    {$i fpmake.inc}
+    EndPackage;
+    Run;
+    end;
+end.
+

+ 896 - 0
packages/fcl-db/src/sqldb/mssql/mssqlconn.pp

@@ -0,0 +1,896 @@
+{
+    This file is part of the Free Component Library (FCL)
+
+    MS SQL Server connection using DB-Library
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+    The Original Code was created by (c) 2010 Ladislav Karrach (Windows)
+    for the Free Pascal project.
+ **********************************************************************
+
+    MS SQL Server Client Library is required (ntwdblib.dll)
+    - or -
+    FreeTDS (dblib.dll)
+      freetds.conf: (http://www.freetds.org/userguide/freetdsconf.htm)
+        [global]
+        tds version = 7.1
+        client charset = UTF-8
+        port = 1433 or instance = ...  (optional)
+        dump file = freetds.log        (optional)
+        text size = 2147483647         (optional)
+
+    TMSSQLConnection properties:
+      HostName - can be specified also as 'servername:port' or 'servername\instance'
+      CharSet - if you use Microsoft DB-Lib and set to 'UTF-8' then char/varchar fields will be UTF8Encoded/Decoded
+                if you use FreeTDS DB-Lib then you must compile with iconv support (requires libiconv2.dll) or cast char/varchar to nchar/nvarchar in SELECTs
+      Params - "AutoCommit=true" - if you don't want explicitly commit/rollback transactions
+               "TextSize=16777216 - set maximum size of text/image data returned
+}
+unit mssqlconn;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, sqldb, db, BufDataset,
+  dblib;
+
+type
+
+  TClientCharset = (ccNone, ccUTF8, ccISO88591, ccUnknown);
+
+  { TMSSQLConnection }
+
+  TMSSQLConnection = class(TSQLConnection)
+  private
+    FDBLogin: PLOGINREC;
+    FDBProc : PDBPROCESS;
+    Ftds    : integer;     // TDS protocol version
+    Fstatus : STATUS;      // current result/rows fetch status
+    procedure DBExecute(const cmd: string);
+    function TranslateFldType(SQLDataType: integer): TFieldType;
+    function ClientCharset: TClientCharset;
+    function AutoCommit: boolean;
+    function IsSybase: boolean;
+  protected
+    // Overrides from TSQLConnection
+    function GetHandle:pointer; override;
+    function GetAsSQLText(Param : TParam) : string; overload; override;
+    // - Connect/disconnect
+    procedure DoInternalConnect; override;
+    procedure DoInternalDisconnect; override;
+    // - Handle (de)allocation
+    function AllocateCursorHandle:TSQLCursor; override;
+    procedure DeAllocateCursorHandle(var cursor:TSQLCursor); override;
+    function AllocateTransactionHandle:TSQLHandle; override;
+    // - Statement handling
+    function StrToStatementType(s : string) : TStatementType; override;
+    procedure PrepareStatement(cursor:TSQLCursor; ATransaction:TSQLTransaction; buf:string; AParams:TParams); override;
+    procedure UnPrepareStatement(cursor:TSQLCursor); override;
+    // - Transaction handling
+    function GetTransactionHandle(trans:TSQLHandle):pointer; override;
+    function StartDBTransaction(trans:TSQLHandle; AParams:string):boolean; override;
+    function Commit(trans:TSQLHandle):boolean; override;
+    function Rollback(trans:TSQLHandle):boolean; override;
+    procedure CommitRetaining(trans:TSQLHandle); override;
+    procedure RollbackRetaining(trans:TSQLHandle); override;
+    // - Statement execution
+    procedure Execute(cursor:TSQLCursor; ATransaction:TSQLTransaction; AParams:TParams); override;
+    function RowsAffected(cursor: TSQLCursor): TRowsCount; override;
+    // - Result retrieving
+    procedure AddFieldDefs(cursor:TSQLCursor; FieldDefs:TFieldDefs); override;
+    function Fetch(cursor:TSQLCursor):boolean; override;
+    function LoadField(cursor:TSQLCursor; FieldDef:TFieldDef; buffer:pointer; out CreateBlob : boolean):boolean; override;
+    procedure LoadBlobIntoBuffer(FieldDef: TFieldDef;ABlobBuf: PBufBlobField; cursor: TSQLCursor; ATransaction : TSQLTransaction); override;
+    procedure FreeFldBuffers(cursor:TSQLCursor); override;
+    // - UpdateIndexDefs
+    procedure UpdateIndexDefs(IndexDefs:TIndexDefs; TableName:string); override;
+    // - Schema info
+    function GetSchemaInfoSQL(SchemaType:TSchemaType; SchemaObjectName, SchemaObjectPattern:string):string; override;
+  public
+    constructor Create(AOwner : TComponent); override;
+    //property TDS:integer read Ftds;
+  published
+    // Redeclare properties from TSQLConnection
+    property Password;
+    property Transaction;
+    property UserName;
+    property CharSet;
+    property HostName;
+    // Redeclare properties from TDatabase
+    property Connected;
+    property Role;
+    property DatabaseName;
+    property KeepConnection;
+    property LoginPrompt;
+    property Params;
+    property OnLogin;
+  end;
+
+  { TSybaseConnection }
+
+  TSybaseConnection = class(TMSSQLConnection)
+  public
+    constructor Create(AOwner : TComponent); override;
+  end;
+
+  { EMSSQLDatabaseError }
+
+  EMSSQLDatabaseError = class(EDatabaseError)
+    public
+      DBErrorCode : integer;
+  end;
+
+  { TMSSQLConnectionDef }
+
+  TMSSQLConnectionDef = Class(TConnectionDef)
+    Class Function TypeName : String; override;
+    Class Function ConnectionClass : TSQLConnectionClass; override;
+    Class Function Description : String; override;
+  end;
+
+  { TSybaseConnectionDef }
+
+  TSybaseConnectionDef = Class(TConnectionDef)
+    Class Function TypeName : String; override;
+    Class Function ConnectionClass : TSQLConnectionClass; override;
+    Class Function Description : String; override;
+  end;
+
+
+var
+   DBLibLibraryName: string = DBLIBDLL;
+
+implementation
+
+uses DBConst, StrUtils, FmtBCD;
+
+type
+
+  { TDBLibCursor }
+
+  TDBLibCursor = class(TSQLCursor)
+  protected
+    FQuery: string;         //:ParamNames converted to $1,$2,..,$n
+    FCanOpen: boolean;      //can return rows?
+    FRowsAffected: integer;
+    FParamReplaceString: string;
+    function ReplaceParams(AParams: TParams; ASQLConnection: TMSSQLConnection): string; //replaces parameters placeholders $1,$2,..$n in FQuery with supplied values in AParams
+  end;
+
+
+const
+  SBeginTransaction = 'BEGIN TRANSACTION';
+  SAutoCommit = 'AUTOCOMMIT';
+  STextSize   = 'TEXTSIZE';
+
+
+var
+  DBErrorStr, DBMsgStr: string;
+  DBErrorNo, DBMsgNo: integer;
+
+function DBErrHandler(dbproc: PDBPROCESS; severity, dberr, oserr:INT; dberrstr, oserrstr:PChar):INT; cdecl;
+begin
+  DBErrorStr:=DBErrorStr+#13+dberrstr;
+  DBErrorNo :=dberr;
+  Result    :=INT_CANCEL;
+end;
+
+function DBMsgHandler(dbproc: PDBPROCESS; msgno: DBINT; msgstate, severity:INT; msgtext, srvname, procname:PChar; line:DBUSMALLINT):INT; cdecl;
+begin
+  DBMsgStr:=DBMsgStr+#13+msgtext;
+  DBMsgNo :=msgno;
+  Result  :=0;
+end;
+
+
+function CheckError(const Ret: RETCODE): RETCODE;
+var E: EMSSQLDatabaseError;
+begin
+  if Ret=FAIL then
+  begin
+    E:=EMSSQLDatabaseError.Create(DBErrorStr+#13+DBMsgStr);
+    E.DBErrorCode:=DBErrorNo;
+    DBErrorStr:='';
+    DBMsgStr:='';
+    raise E;
+  end;
+  Result:=Ret;
+end;
+
+
+{ TDBLibCursor }
+
+function TDBLibCursor.ReplaceParams(AParams: TParams; ASQLConnection: TMSSQLConnection): string;
+var i:integer;
+    ParamNames, ParamValues: array of string;
+begin
+  if Assigned(AParams) and (AParams.Count > 0) then //taken from mysqlconn, pqconnection
+  begin
+    setlength(ParamNames, AParams.Count);
+    setlength(ParamValues, AParams.Count);
+    for i := 0 to AParams.Count -1 do
+    begin
+      ParamNames[AParams.Count-i-1] := format('%s%d', [FParamReplaceString, AParams[i].Index+1]);
+      ParamValues[AParams.Count-i-1] := ASQLConnection.GetAsSQLText(AParams[i]);
+      //showmessage(ParamNames[AParams.Count-i-1] + '=' + ParamValues[AParams.Count-i-1]);
+    end;
+    Result := stringsreplace(FQuery, ParamNames, ParamValues, [rfReplaceAll]);
+  end
+  else
+    Result := FQuery;
+end;
+
+
+{ TSybaseConnection }
+
+constructor TSybaseConnection.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  Ftds := DBTDS_50;
+end;
+
+
+{ TMSSQLConnection }
+
+function TMSSQLConnection.IsSybase: boolean;
+begin
+  Result := (Ftds=DBTDS_50) or (Ftds=DBTDS_42);
+end;
+
+constructor TMSSQLConnection.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FConnOptions := FConnOptions + [sqEscapeRepeat];
+  //FieldNameQuoteChars:=DoubleQuotes; //default
+  Ftds := DBTDS_UNKNOWN;
+end;
+
+function TMSSQLConnection.GetHandle: pointer;
+begin
+  Result:=FDBProc;
+end;
+
+function TMSSQLConnection.GetAsSQLText(Param: TParam): string;
+  function IsBinary(const s: string): boolean;
+  var i: integer;
+  begin
+    for i:=1 to length(s) do if s[i] < #9 then Exit(true);
+    Exit(false);
+  end;
+  function StrToHex(const s: string): string;
+  begin
+    setlength(Result, 2*length(s));
+    BinToHex(PChar(s), PChar(Result), length(s));
+  end;
+begin
+  if not Param.IsNull then
+    case Param.DataType of
+      ftBoolean:
+        if Param.AsBoolean then
+          Result:='1'
+        else
+          Result:='0';
+      ftString, ftFixedChar, ftMemo:
+        //if IsBinary(Param.AsString) then
+        //  Result := '0x' + StrToHex(Param.AsString)
+        //else
+        begin
+          Result := QuotedStr(Param.AsString);
+          if (Ftds >= DBTDS_70) then
+            Result := 'N' + Result
+          else if (Ftds = 0) and (ClientCharset = ccUTF8) then //hack: Microsoft DB-Lib used
+            Result := UTF8Decode(Result);
+        end;
+      ftBlob, ftBytes, ftVarBytes:
+        Result := '0x' + StrToHex(Param.AsString);
+      else
+        Result := inherited GetAsSQLText(Param);
+    end
+  else
+    Result:=inherited GetAsSQLText(Param);
+end;
+
+procedure TMSSQLConnection.DoInternalConnect;
+const
+  DBVERSION: array[boolean] of BYTE = (DBVER60, DBVERSION_100);
+  IMPLICIT_TRANSACTIONS_OFF: array[boolean] of shortstring = ('SET IMPLICIT_TRANSACTIONS OFF', 'SET CHAINED OFF');
+  ANSI_DEFAULTS_ON: array[boolean] of shortstring = ('SET ANSI_DEFAULTS ON', 'SET QUOTED_IDENTIFIER ON');
+  CURSOR_CLOSE_ON_COMMIT_OFF: array[boolean] of shortstring = ('SET CURSOR_CLOSE_ON_COMMIT OFF', 'SET CLOSE ON ENDTRAN OFF');
+begin
+  inherited DoInternalConnect;
+
+  InitialiseDBLib(DBLibLibraryName);
+
+  if not DBLibInit then
+  begin
+    dbinit();
+    dberrhandle(@DBErrHandler);
+    dbmsghandle(@DBMsgHandler);
+    DBLibInit:=true;
+  end;
+
+  FDBLogin:=dblogin();
+  if FDBLogin=nil then DatabaseError('dblogin() failed!');
+
+  // DBVERSION_100 is ATM not implemented by FreeTDS 0.91;
+  // set environment variable TDSVER to 5.0: Windows: SET TDSVER=5.0, Unix/Linux: TDSVER=5.0
+  // or in freetds.conf: include "tds version=5.0"
+  dbsetlversion(FDBLogin, DBVERSION[IsSybase]);
+
+  if UserName = '' then
+    dbsetlsecure(FDBLogin)
+  else
+  begin
+    dbsetlname(FDBLogin, PChar(UserName), DBSETUSER);
+    dbsetlname(FDBLogin, PChar(Password), DBSETPWD);
+  end;
+
+  if CharSet = '' then
+    dbsetlcharset(FDBLogin, 'UTF-8')
+  else
+    dbsetlcharset(FDBLogin, PChar(CharSet));
+
+  //dbsetlname(FDBLogin, PChar(TIMEOUT_IGNORE), DBSET_LOGINTIME);
+  dbsetlogintime(10);
+
+  FDBProc := dbopen(FDBLogin, PChar(HostName));
+  if FDBProc=nil then CheckError(FAIL);
+
+  Ftds := dbtds(FDBProc);
+
+  //CheckError( dbsetopt(FDBProc, DBQUOTEDIDENT, '') ); //in FreeTDS executes: "SET QUOTED_IDENTIFIER ON"
+  //CheckError( dbsetopt(FDBProc, DBTEXTSIZE,  '2147483647') ); //in FreeTDS: unimplemented, returns FAIL
+  //CheckError( dbsetopt(FDBProc, DBTEXTLIMIT, '2147483647') ); //in FreeTDS: unimplemented, returns FAIL, but required by ntwdblib.dll
+  //CheckError( dbsqlexec(FDBProc) ); //after setting DBTEXTSIZE option
+  //CheckError (dbresults(FDBProc));
+  //while dbresults(FDBProc) = SUCCEED do ;
+
+  // Also SQL Server ODBC driver and Microsoft OLE DB Provider for SQL Server set ANSI_DEFAULTS to ON when connecting
+  //DBExecute(ANSI_DEFAULTS_ON[IsSybase]);
+  DBExecute('SET QUOTED_IDENTIFIER ON');
+
+  if Params.IndexOfName(STextSize) <> -1 then
+    DBExecute('SET TEXTSIZE '+Params.Values[STextSize])
+  else
+    DBExecute('SET TEXTSIZE 16777216');
+
+  if AutoCommit then DBExecute(IMPLICIT_TRANSACTIONS_OFF[IsSybase]); //set connection to autocommit mode - default
+
+  CheckError( dbuse(FDBProc, PChar(DatabaseName)) );
+end;
+
+procedure TMSSQLConnection.DoInternalDisconnect;
+begin
+  inherited DoInternalDisconnect;
+
+  dbclose(FDBProc);
+  dbfreelogin(FDBLogin);
+
+  ReleaseDBLib;
+end;
+
+function TMSSQLConnection.AllocateCursorHandle: TSQLCursor;
+begin
+   Result:=TDBLibCursor.Create;
+end;
+
+procedure TMSSQLConnection.DeAllocateCursorHandle(var cursor: TSQLCursor);
+begin
+  FreeAndNil(cursor);
+end;
+
+function TMSSQLConnection.StrToStatementType(s: string): TStatementType;
+begin
+  if s = 'EXEC' then
+    Result:=stExecProcedure
+  else
+    Result:=inherited StrToStatementType(s);
+end;
+
+procedure TMSSQLConnection.PrepareStatement(cursor: TSQLCursor;
+   ATransaction: TSQLTransaction; buf: string; AParams: TParams);
+var
+  ParamBinding : TParamBinding;
+begin
+  with cursor as TDBLibCursor do
+  begin
+    if assigned(AParams) and (AParams.Count > 0) then
+      FQuery:=AParams.ParseSQL(buf, false, sqEscapeSlash in ConnOptions, sqEscapeRepeat in ConnOptions, psSimulated, ParamBinding, FParamReplaceString)
+    else
+      FQuery:=buf;
+  end;
+end;
+
+procedure TMSSQLConnection.UnPrepareStatement(cursor: TSQLCursor);
+begin
+  if assigned(FDBProc) and (Fstatus <> NO_MORE_ROWS) then
+    dbcanquery(FDBProc);
+end;
+
+function TMSSQLConnection.AllocateTransactionHandle: TSQLHandle;
+begin
+  Result:=nil;
+end;
+
+function TMSSQLConnection.GetTransactionHandle(trans: TSQLHandle): pointer;
+begin
+  Result:=nil;
+end;
+
+function TMSSQLConnection.StartDBTransaction(trans: TSQLHandle; AParams: string): boolean;
+begin
+  Result := not AutoCommit;
+  if Result then
+    DBExecute(SBeginTransaction);
+end;
+
+function TMSSQLConnection.Commit(trans: TSQLHandle): boolean;
+begin
+  DBExecute('COMMIT');
+  Result:=true;
+end;
+
+function TMSSQLConnection.Rollback(trans: TSQLHandle): boolean;
+begin
+  DBExecute('ROLLBACK');
+  Result:=true;
+end;
+
+procedure TMSSQLConnection.CommitRetaining(trans: TSQLHandle);
+begin
+  if Commit(trans) then
+    DBExecute(SBeginTransaction);
+end;
+
+procedure TMSSQLConnection.RollbackRetaining(trans: TSQLHandle);
+begin
+  if Rollback(trans) then
+    DBExecute(SBeginTransaction);
+end;
+
+function TMSSQLConnection.AutoCommit: boolean;
+begin
+  Result := StrToBoolDef(Params.Values[SAutoCommit], False);
+end;
+
+procedure TMSSQLConnection.DBExecute(const cmd: string);
+begin
+  DBErrorStr:='';
+  DBMsgStr  :='';
+  CheckError( dbcmd(FDBProc, PChar(cmd)) );
+  CheckError( dbsqlexec(FDBProc) );
+  CheckError( dbresults(FDBProc) );
+end;
+
+function TMSSQLConnection.ClientCharset: TClientCharset;
+begin
+{$IF (FPC_VERSION>=2) AND (FPC_RELEASE>4)}
+  case CharSet of
+    ''           : Result := ccNone;
+    'UTF-8'      : Result := ccUTF8;
+    'ISO-8859-1' : Result := ccISO88591;
+    else           Result := ccUnknown;
+  end;
+{$ELSE}
+  if CharSet = '' then
+    Result := ccNone
+  else if CharSet = 'UTF-8' then
+    Result := ccUTF8
+  else if CharSet = 'ISO-8859-1' then
+    Result := ccISO88591
+  else
+    Result := ccUnknown;
+{$ENDIF}
+end;
+
+procedure TMSSQLConnection.Execute(cursor: TSQLCursor; ATransaction: TSQLTransaction; AParams: TParams);
+var c: TDBLibCursor;
+    cmd: string;
+    res: RETCODE;
+begin
+  c:=cursor as TDBLibCursor;
+
+  cmd := c.ReplaceParams(AParams, Self);
+  DBExecute(cmd);
+
+  res := SUCCEED;
+  repeat
+    c.FCanOpen := dbcmdrow(FDBProc)=SUCCEED;
+    c.FRowsAffected := dbcount(FDBProc);
+    if assigned(dbiscount) and not dbiscount(FDBProc) then
+      c.FRowsAffected := -1;
+
+    if not c.FCanOpen then  //Sybase stored proc.
+    begin
+      repeat until dbnextrow(FDBProc) = NO_MORE_ROWS;
+      res := CheckError( dbresults(FDBProc) );
+    end;
+  until (res = NO_MORE_RESULTS) or c.FCanOpen;
+
+  if res = NO_MORE_RESULTS then
+    Fstatus := NO_MORE_ROWS
+  else
+    Fstatus := MORE_ROWS;
+end;
+
+function TMSSQLConnection.RowsAffected(cursor: TSQLCursor): TRowsCount;
+begin
+  if assigned(cursor) then
+    Result := (cursor as TDBLibCursor).FRowsAffected
+  else
+    Result := inherited RowsAffected(cursor);
+end;
+
+function TMSSQLConnection.TranslateFldType(SQLDataType: integer): TFieldType;
+begin
+  case SQLDataType of
+    SQLCHAR:             Result:=ftFixedChar;
+    SQLVARCHAR:          Result:=ftString;
+    SQLINT1, SQLINT2:    Result:=ftSmallInt;
+    SQLINT4, SQLINTN:    Result:=ftInteger;
+    SYBINT8:             Result:=ftLargeInt;
+    SQLFLT4, SQLFLT8,
+    SQLFLTN:             Result:=ftFloat;
+    SQLMONEY4, SQLMONEY,
+    SQLMONEYN:           Result:=ftCurrency;
+    SQLDATETIM4, SQLDATETIME,
+    SQLDATETIMN:         Result:=ftDateTime;
+    SQLIMAGE:            Result:=ftBlob;
+    SQLTEXT:             Result:=ftMemo;
+    SQLDECIMAL, SQLNUMERIC: Result:=ftBCD;
+    SQLBIT:              Result:=ftBoolean;
+    SQLBINARY:           Result:=ftBytes;
+    SQLVARBINARY:        Result:=ftVarBytes;
+    SYBUNIQUE:           Result:=ftGuid;
+  else
+    DatabaseErrorFmt('Unsupported SQL DataType %d "%s"', [SQLDataType, dbprtype(SQLDataType)]);
+    Result:=ftUnknown;
+  end;
+end;
+
+procedure TMSSQLConnection.AddFieldDefs(cursor: TSQLCursor; FieldDefs: TFieldDefs);
+var i, FieldSize: integer;
+    FieldName: string;
+    FieldType: TFieldType;
+    col: DBCOL;
+begin
+  col.SizeOfStruct:=sizeof(col);
+  for i:=1 to dbnumcols(FDBProc) do
+  begin
+    if dbtablecolinfo(FDBProc, i, @col) = FAIL then continue;
+    FieldName := col.Name;
+    FieldType := TranslateFldType(col.Typ);
+    case FieldType of
+      ftString, ftFixedChar:
+        begin
+        FieldSize := col.MaxLength;
+        if FieldSize > dsMaxStringSize then FieldSize := dsMaxStringSize;
+        end;
+      ftMemo, ftBlob,
+      ftBytes, ftVarBytes:
+        FieldSize := col.MaxLength;
+      ftBCD:
+        begin
+        FieldSize := col.Scale;
+        if (FieldSize > MaxBCDScale) or (col.Precision-col.Scale > MaxBCDPrecision-MaxBCDScale) then
+          FieldType := ftFmtBCD;
+        end;
+      ftGuid:
+        FieldSize := 38;
+    else
+      FieldSize := 0;
+      if col.Identity and (FieldType = ftInteger) then
+        FieldType := ftAutoInc;
+    end;
+
+{   // dbcolinfo(), dbcoltype() maps VARCHAR->CHAR, VARBINARY->BINARY:
+    if col.VarLength {true also when column is nullable} then
+      case FieldType of
+        ftFixedChar: FieldType := ftString;
+        ftBytes    : FieldType := ftVarBytes;
+      end;
+}
+    with TFieldDef.Create(FieldDefs, FieldDefs.MakeNameUnique(FieldName), FieldType, FieldSize, (col.Null=0) and (not col.Identity), i) do
+    begin
+      //if col.Updatable = 0 then Attributes := Attributes + [faReadonly];
+      case FieldType of
+        ftBCD,
+        ftFmtBCD: Precision := col.Precision;
+      end;
+    end;
+  end;
+end;
+
+function TMSSQLConnection.Fetch(cursor: TSQLCursor): boolean;
+begin
+  //Compute rows resulting from the COMPUTE clause are not processed
+  repeat
+    Fstatus := dbnextrow(FDBProc);
+    Result  := Fstatus=REG_ROW;
+  until Result or (Fstatus = NO_MORE_ROWS);
+
+  if Fstatus = NO_MORE_ROWS then
+    while dbresults(FDBProc) <> NO_MORE_RESULTS do //process remaining results if there are any
+      repeat until dbnextrow(FDBProc) = NO_MORE_ROWS;
+end;
+
+function TMSSQLConnection.LoadField(cursor: TSQLCursor; FieldDef: TFieldDef;
+   buffer: pointer; out CreateBlob: boolean): boolean;
+var i: integer;
+    data, dest: PByte;
+    datalen, destlen: DBINT;
+    srctype, desttype: INT;
+    dbdt: DBDATETIME;
+    dbdr: DBDATEREC;
+    bcdstr: array[0..MaxFmtBCDFractionSize+2] of char;
+    f: double;
+begin
+  CreateBlob:=false;
+  i:=FieldDef.FieldNo;
+
+  srctype:=dbcoltype(FDBProc,i);
+  data:=dbdata(FDBProc,i);
+  datalen:=dbdatlen(FDBProc,i);
+  Result:=assigned(data) and (datalen<>0);
+  if not Result then
+    Exit;
+
+  dest:=buffer;
+  destlen:=FieldDef.Size;
+  case FieldDef.DataType of
+    ftString, ftFixedChar:
+      desttype:=SQLCHAR;
+    ftBytes:
+      desttype:=SQLBINARY;
+    ftVarBytes:
+      begin
+      PWord(dest)^:=datalen;
+      inc(dest, sizeof(Word));
+      desttype:=SQLBINARY;
+      end;
+    ftSmallInt:
+      begin
+      desttype:=SQLINT2;
+      destlen:=sizeof(DBSMALLINT); //smallint
+      end;
+    ftAutoInc,
+    ftInteger:
+      begin
+      desttype:=SQLINT4;
+      destlen:=sizeof(DBINT); //integer
+      end;
+    ftLargeInt:
+      begin
+      desttype:=SYBINT8;
+      destlen:=sizeof(int64);
+      end;
+    ftCurrency,
+    ftFloat:
+      begin
+      desttype:=SQLFLT8;
+      destlen:=sizeof(DBFLT8); //double
+      end;
+    ftDateTime:
+      begin
+      dest:=@dbdt;
+      desttype:=SQLDATETIME;
+      destlen:=sizeof(dbdt);
+      end;
+    ftBCD:
+      begin
+      dest:=@f;
+      desttype:=SQLFLT8;
+      destlen:=sizeof(DBFLT8); //double
+      end;
+    ftFmtBCD:
+      begin
+{
+      dbnum.precision:=FieldDef.Precision;
+      dbnum.scale    :=FieldDef.Size;
+      dest:=@dbnum;
+      desttype:=SQLNUMERIC;
+      destlen:=sizeof(dbnum);
+}
+      dest:=@bcdstr[0];
+      desttype:=SQLCHAR;
+      destlen:=sizeof(bcdstr);
+      fillchar(bcdstr, destlen, 0); //required when used ntwdblib.dll
+      end;
+    ftBoolean:
+      begin
+      desttype:=SQLBIT;
+      destlen:=sizeof(WordBool);
+      end;
+    ftGuid:
+      begin
+      desttype:=SQLCHAR;
+      end;
+    ftMemo,
+    ftBlob:
+      begin
+      CreateBlob:=true;
+      Exit;
+      end
+  else
+    //DatabaseErrorFmt('Tried to load field of unsupported field type %s',[FieldTypeNames[FieldDef.DataType]]);
+    Result:=false;
+  end;
+
+  dbconvert(FDBProc, srctype, data , datalen, desttype, dest, destlen);
+
+  case FieldDef.DataType of
+    ftString, ftFixedChar:
+      begin
+        PChar(dest + datalen)^ := #0; //strings must be null-terminated
+        if ((Ftds = 0) and (ClientCharset = ccUTF8)) {hack: MS DB-Lib used} or
+            (ClientCharset = ccISO88591) {hack: FreeTDS} then
+          StrPLCopy(PChar(dest), UTF8Encode(PChar(dest)), destlen);
+      end;
+    ftDateTime:
+      begin
+        //detect DBDATEREC version by pre-setting dbdr
+        dbdr.millisecond := -1;
+        if dbdatecrack(FDBProc, @dbdr, @dbdt) = SUCCEED then
+        begin
+          if dbdr.millisecond = -1 then
+            PDateTime(buffer)^ := composedatetime(
+                  encodedate(dbdr.oldyear, dbdr.oldmonth, dbdr.oldday),
+                  encodetime(dbdr.oldhour, dbdr.oldminute, dbdr.oldsecond, dbdr.oldmillisecond))
+          else
+            PDateTime(buffer)^ := composedatetime(
+                  encodedate(dbdr.year, dbdr.month, dbdr.day),
+                  encodetime(dbdr.hour, dbdr.minute, dbdr.second, dbdr.millisecond));
+        end;
+      end;
+    ftBCD:
+      PCurrency(buffer)^:=FloatToCurr(f);
+    ftFmtBCD:
+      PBCD(buffer)^:=StrToBCD(bcdstr, FSQLFormatSettings); //PBCD(buffer)^:=dbnumerictobcd(dbnum);
+  end;
+end;
+
+procedure TMSSQLConnection.LoadBlobIntoBuffer(FieldDef: TFieldDef;
+   ABlobBuf: PBufBlobField; cursor: TSQLCursor; ATransaction: TSQLTransaction);
+var data: PByte;
+    datalen: DBINT;
+    srctype: INT;
+begin
+  //see also LoadField
+  srctype:=dbcoltype(FDBProc, FieldDef.FieldNo);
+  data:=dbdata(FDBProc, FieldDef.FieldNo);
+  datalen:=dbdatlen(FDBProc, FieldDef.FieldNo);
+
+  ReAllocMem(ABlobBuf^.BlobBuffer^.Buffer, datalen);
+
+  ABlobBuf^.BlobBuffer^.Size :=
+    dbconvert(FDBProc, srctype, data , datalen, srctype, ABlobBuf^.BlobBuffer^.Buffer, datalen);
+end;
+
+procedure TMSSQLConnection.FreeFldBuffers(cursor: TSQLCursor);
+begin
+   inherited FreeFldBuffers(cursor);
+end;
+
+procedure TMSSQLConnection.UpdateIndexDefs(IndexDefs: TIndexDefs; TableName: string);
+const INDEXES_QUERY: array[boolean] of string=(
+      //MS SQL Server; TODO: we can use "execute dbo.sp_helpindex 'TableName'" when Open on Execute will fully work
+      'select i.name, i.indid, c.name as col_name,'+
+              'indexproperty(i.id, i.name, ''IsUnique''),'+
+              'objectproperty(o.id, ''IsPrimaryKey'') '+
+      'from sysindexes i '+
+            ' join sysindexkeys k on i.id=k.id and i.indid=k.indid '+
+            ' join syscolumns c on k.id=c.id and k.colid=c.colid '+
+            ' left join sysobjects o on i.name=o.name and i.id=o.parent_obj '+
+      'where i.id=object_id(''%s'') '+
+      'order by k.indid, k.keyno'
+      ,
+      //Sybase; http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.help.ase.15.7/title.htm
+      'select i.name, i.indid,' +
+              'index_col(object_name(i.id),i.indid,c.colid) as col_name,' +
+              '(i.status & 2)/2 as IsUnique,' +
+              '(i.status & 2048)/2048 as IsPrimaryKey ' +
+      'from sysindexes i '+
+        ' join syscolumns c on c.id=i.id and c.colid<=i.keycnt-case i.indid when 1 then 0 else 1 end ' +
+      'where i.id=object_id(''%s'') '+
+        ' and i.indid between 1 and 254 '+ // indid 0 is the table name, 255 is TEXT,IMAGE
+      'order by i.indid, c.colid'
+      );
+var qry : TSQLQuery;
+begin
+  //if not assigned(Transaction) then
+  //  DatabaseError(SErrConnTransactionnSet);
+
+  qry := TSQLQuery.Create(nil);
+  qry.Transaction := Transaction;
+  qry.Database := Self;
+  with qry do
+  begin
+    ReadOnly := True;
+    SQL.Text := format(INDEXES_QUERY[IsSybase], [TableName]);
+    Open;
+  end;
+  while not qry.Eof do with IndexDefs.AddIndexDef do
+  begin
+    Name := trim(qry.Fields[0].AsString);
+    Fields := trim(qry.Fields[2].AsString);
+    if qry.Fields[3].AsInteger=1 then Options := Options + [ixUnique];
+    if qry.Fields[4].AsInteger=1 then Options := Options + [ixPrimary];
+    qry.Next;
+    while (Name = trim(qry.Fields[0].AsString)) and (not qry.Eof) do
+    begin
+      Fields := Fields + ';' + trim(qry.Fields[2].AsString);
+      qry.Next;
+    end;
+  end;
+  qry.Close;
+  qry.Free;
+end;
+
+function TMSSQLConnection.GetSchemaInfoSQL(SchemaType: TSchemaType; SchemaObjectName, SchemaObjectPattern: string): string;
+const SCHEMA_QUERY='select name as %s from sysobjects where type=''%s'' order by 1';
+begin
+  case SchemaType of
+    stTables     : Result := format(SCHEMA_QUERY, ['table_name','U']);
+    stSysTables  : Result := format(SCHEMA_QUERY, ['table_name','S']);
+    stProcedures : Result := format(SCHEMA_QUERY, ['proc_name','P']);
+    stColumns    : Result := 'select name as column_name from syscolumns where id=object_id(''' + SchemaObjectName + ''') order by colorder';
+  else
+    DatabaseError(SMetadataUnavailable)
+  end;
+end;
+
+
+{ TMSSQLConnectionDef }
+
+class function TMSSQLConnectionDef.TypeName: String;
+begin
+   Result:='MSSQLServer';
+end;
+
+class function TMSSQLConnectionDef.ConnectionClass: TSQLConnectionClass;
+begin
+   Result:=TMSSQLConnection;
+end;
+
+class function TMSSQLConnectionDef.Description: String;
+begin
+   Result:='Connect to MS SQL Server via Microsoft client library or via FreeTDS db-lib';
+end;
+
+
+{ TSybaseConnectionDef }
+
+class function TSybaseConnectionDef.TypeName: String;
+begin
+  Result:='Sybase';
+end;
+
+class function TSybaseConnectionDef.ConnectionClass: TSQLConnectionClass;
+begin
+  Result:=TSybaseConnection;
+end;
+
+class function TSybaseConnectionDef.Description: String;
+begin
+  Result:='Connect to Sybase SQL Server via FreeTDS db-lib';;
+end;
+
+
+initialization
+  RegisterConnection(TMSSQLConnectionDef);
+  RegisterConnection(TSybaseConnectionDef);
+
+finalization
+  UnRegisterConnection(TMSSQLConnectionDef);
+  UnRegisterConnection(TSybaseConnectionDef);
+
+end.
+

+ 54 - 0
packages/fcl-db/src/sqldb/mssql/readme.txt

@@ -0,0 +1,54 @@
+Compiling FreeTDS DB-Lib with MS Visual C++ 2005/2008/2010:
+===========================================================
+1.   Download sources from www.freetds.org
+2.   Open FreeTDS.dsw from /win32/msvc6 source directory
+2.1  in libTDS / Header Files edit config.h and comment "HAVE_INTTYPES_H":
+     /* #undef HAVE_INTTYPES_H */
+     (http://www.freetds.org/userguide/osissues.htm#WINDOWS)
+2.2  In Build / Configuration Manager select "Release"
+     Right-click on project "dblib_dll" and select "Properties". Note: select Configuration Properties first if in Visual C++ 2010.
+     C/C++ / Preprocesor / Preprocessor Definitions add "MSDBLIB" (optionally default TDS version "TDS71")
+     Linker / Input / Additional Dependencies add ".\tds_Release\libTDS.lib"
+     Linker / General / Output File change from ".\dbdll_Release\dblib_dll.dll" to ".\dbdll_Release\dblib.dll"
+3.   Build "dblib_dll"
+4.   The dblib.dll will appear in the .\dbdll_Release\ subdirectory
+     Note: To avoid dependency on msvc*.dll you can set in C/C++ / Code Generation / Runtime Library : "Multi-threaded (/MT)" in all projects
+
+
+Compiling FreeTDS with iconv support:
+=====================================
+(not required when you don't use char/varchar/text datatypes or if you use character set (SBCS) ISO-8859-1 (Latin1) for your char/varchar/text columns)
+1.  Download libiconv developer files and binaries for Windows from http://gnuwin32.sourceforge.net/packages/libiconv.htm
+	Setup program: http://gnuwin32.sourceforge.net/downlinks/libiconv.php
+	- or -
+	Developer files: http://gnuwin32.sourceforge.net/downlinks/libiconv-lib-zip.php (include/iconv.h and lib/libiconv.lib)
+	Binaries: http://gnuwin32.sourceforge.net/downlinks/libiconv-bin-zip.php  (bin/libiconv2.dll)
+    and extract them to a directory, e.g. the directory iconv below your root FreeTDS folder	
+2.  in libTDS / Header Files edit config.h and uncomment /* #undef HAVE_ICONV */:
+    #define HAVE_ICONV 1
+3.  in Project properties:
+    libTDS: C/C++ / General / Additional Include Directories add path to "include/iconv.h" (e.g. "..\..\iconv\src\libiconv\1.9.2\libiconv-1.9.2\include"
+    dblib_dll: Linker / Input / Additional Dependencies add "lib/libiconv.lib" (e.g. "..\..\iconv\lib\libiconv.lib"
+4.  Follow regular compilation instructions above
+5.  Distribute libiconv2.dll with your dblib.dll
+
+
+Using in Lazarus:
+=================
+1. Put on the form TSQLConnector and set property ConnectorType=MSSQLServer
+2. Put into uses clause mssqlconn unit
+
+
+Known problems:
+===============
+- CHAR/VARCHAR data truncated to column length when encoding to UTF-8 (use NCHAR/NVARCHAR instead or CAST char/varchar to nchar/nvarchar)
+- Multiple result sets (for example when SP returns more than 1 result set only 1st is processed)
+- DB-Library error 10038 "Results Pending" - set TSQLQuery.PacketRecords=-1 to fetch all pendings rows
+- BLOB data (IMAGE/TEXT columns) larger than 16MB are truncated to 16MB - (set TMSSQLConnection.Params: 'TEXTSIZE=2147483647' or execute 'SET TEXTSIZE 2147483647')
+  (create temporary stored procedures for prepared statements)
+
+
+Manuals for DB-Library API:
+===========================
+http://msdn.microsoft.com/en-us/library/aa936988(v=sql.80).aspx
+http://manuals.sybase.com/onlinebooks/group-cnarc/cng1110e/dblib/

+ 127 - 127
packages/fcl-db/src/sqldb/mysql/Makefile

@@ -1,5 +1,5 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/12/30]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2012/04/22]
 #
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
@@ -289,382 +289,382 @@ endif
 override PACKAGE_NAME=fcl-db
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-db/Makefile.fpc,$(PACKAGESDIR))))))
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 endif
 override INSTALL_FPCPACKAGE=y
 ifeq ($(FULL_TARGET),i386-linux)

+ 2 - 2
packages/fcl-db/src/sqldb/mysql/Makefile.fpc

@@ -6,8 +6,8 @@
 main=fcl-db
 
 [target]
-units=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
-rsts=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn
+units=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
+rsts=mysql40conn mysql41conn mysql50conn mysql4conn mysql51conn mysql55conn
 [require]
 packages=fcl-xml mysql
 

+ 13 - 0
packages/fcl-db/src/sqldb/mysql/mysql55conn.pas

@@ -0,0 +1,13 @@
+{
+  Contains the TMysqlConnection for MySQL 5.5
+}
+
+unit mysql55conn;
+
+{$DEFINE MYSQL50_UP}
+{$DEFINE MYSQL51_UP}
+{$DEFINE MYSQL55}
+
+{$i mysqlconn.inc}
+
+end.

+ 107 - 73
packages/fcl-db/src/sqldb/mysql/mysqlconn.inc

@@ -5,8 +5,11 @@ interface
 
 uses
   Classes, SysUtils,bufdataset,sqldb,db,dynlibs,ctypes,
-{$IFDEF Mysql51}
-  mysql51dyn;
+ {$IFDEF mysql55}
+  mysql55dyn;
+ {$ELSE}
+{$IFDEF mysql51}
+   mysql51dyn;
 {$ELSE}  
   {$IfDef mysql50}
     mysql50dyn;
@@ -22,9 +25,13 @@ uses
     {$EndIf}
   {$EndIf}
 {$endif}
+{$endif}
 
 Const
-{$IFDEF Mysql51}
+{$IFDEF mysql55}
+   MySQLVersion = '5.5';
+{$else}
+{$IFDEF mysql51}
     MySQLVersion = '5.1';
 {$else}    
   {$IfDef mysql50}
@@ -41,7 +48,7 @@ Const
     {$EndIf}
   {$EndIf}
 {$endif}
-
+{$endif}
 Type
   TTransactionName = Class(TSQLHandle)
   protected
@@ -140,39 +147,45 @@ Type
 
 
   EMySQLError = Class(Exception);
-
-  {$IfDef mysql51}
-    TMySQL51Connection = Class(TConnectionName);
-    TMySQL51ConnectionDef = Class(TMySQLConnectionDef);
-    TMySQL51Transaction = Class(TTransactionName);
-    TMySQL51Cursor = Class(TCursorName);
-  {$ELSE}
-  {$IfDef mysql50}
-    TMySQL50Connection = Class(TConnectionName);
-    TMySQL50ConnectionDef = Class(TMySQLConnectionDef);
-    TMySQL50Transaction = Class(TTransactionName);
-    TMySQL50Cursor = Class(TCursorName);
-  {$ELSE}
-    {$IfDef mysql41}
-      TMySQL41Connection = Class(TConnectionName);
-      TMySQL41ConnectionDef = Class(TMySQLConnectionDef);
-      TMySQL41Transaction = Class(TTransactionName);
-      TMySQL41Cursor = Class(TCursorName);
+  {$ifdef mysql55}
+    TMySQL55Connection = Class(TConnectionName);
+    TMySQL55ConnectionDef = Class(TMySQLConnectionDef);
+    TMySQL55Transaction = Class(TTransactionName);
+    TMySQL55Cursor = Class(TCursorName);
+  {$else}
+    {$IfDef mysql51}
+      TMySQL51Connection = Class(TConnectionName);
+      TMySQL51ConnectionDef = Class(TMySQLConnectionDef);
+      TMySQL51Transaction = Class(TTransactionName);
+      TMySQL51Cursor = Class(TCursorName);
     {$ELSE}
-      {$IFDEF mysql4} // temporary backwards compatibility for Lazarus
-        TMySQLConnection = Class(TConnectionName);
-        TMySQL40ConnectionDef = Class(TMySQLConnectionDef);
-        TMySQLTransaction = Class(TTransactionName);
-        TMySQLCursor = Class(TCursorName);
+      {$IfDef mysql50}
+        TMySQL50Connection = Class(TConnectionName);
+        TMySQL50ConnectionDef = Class(TMySQLConnectionDef);
+        TMySQL50Transaction = Class(TTransactionName);
+        TMySQL50Cursor = Class(TCursorName);
       {$ELSE}
-        TMySQL40Connection = Class(TConnectionName);
-        TMySQL40ConnectionDef = Class(TMySQLConnectionDef);
-        TMySQL40Transaction = Class(TTransactionName);
-        TMySQL40Cursor = Class(TCursorName);
-      {$EndIf}
+        {$IfDef mysql41}
+          TMySQL41Connection = Class(TConnectionName);
+          TMySQL41ConnectionDef = Class(TMySQLConnectionDef);
+          TMySQL41Transaction = Class(TTransactionName);
+          TMySQL41Cursor = Class(TCursorName);
+        {$ELSE}
+          {$IFDEF mysql4} // temporary backwards compatibility for Lazarus
+            TMySQLConnection = Class(TConnectionName);
+            TMySQL40ConnectionDef = Class(TMySQLConnectionDef);
+            TMySQLTransaction = Class(TTransactionName);
+            TMySQLCursor = Class(TCursorName);
+          {$ELSE}
+            TMySQL40Connection = Class(TConnectionName);
+            TMySQL40ConnectionDef = Class(TMySQLConnectionDef);
+            TMySQL40Transaction = Class(TTransactionName);
+            TMySQL40Cursor = Class(TCursorName);
+          {$EndIf}
+        {$EndIf}
+      {$endif}
     {$EndIf}
-  {$EndIf}
-{$ENDIF}
+  {$ENDIF}
 
 implementation
 
@@ -195,6 +208,12 @@ const
      'MYSQL_SECURE_AUTH'
 {$IFDEF MYSQL50_UP}
      ,'MYSQL_REPORT_DATA_TRUNCATION', 'MYSQL_OPT_RECONNECT'
+{$IFDEF mysql51_UP}
+         ,'MYSQL_OPT_SSL_VERIFY_SERVER_CERT'
+{$IFDEF mysql55}
+         ,'MYSQL_PLUGIN_DIR', 'MYSQL_DEFAULT_AUTH'
+{$ENDIF}
+{$ENDIF}
 {$ENDIF}
      );
 
@@ -436,23 +455,27 @@ end;
 
 function TConnectionName.AllocateCursorHandle: TSQLCursor;
 begin
-  {$IfDef mysql51}
-    Result:=TMySQL51Cursor.Create;
+  {$IfDef mysql55}
+    Result:=TMySQL55Cursor.Create;
   {$ELSE}
-    {$IfDef mysql50}
-      Result:=TMySQL50Cursor.Create;
+    {$IfDef mysql51}
+      Result:=TMySQL51Cursor.Create;
     {$ELSE}
-      {$IfDef mysql41}
-        Result:=TMySQL41Cursor.Create;
+      {$IfDef mysql50}
+        Result:=TMySQL50Cursor.Create;
       {$ELSE}
-        {$IFDEF mysql4} // temporary backwards compatibility for Lazarus
-          Result:=TMySQLCursor.Create;
+        {$IfDef mysql41}
+          Result:=TMySQL41Cursor.Create;
         {$ELSE}
-          Result:=TMySQL40Cursor.Create;
+          {$IFDEF mysql4} // temporary backwards compatibility for Lazarus
+            Result:=TMySQLCursor.Create;
+          {$ELSE}
+            Result:=TMySQL40Cursor.Create;
+          {$EndIf}
         {$EndIf}
       {$EndIf}
     {$EndIf}
-  {$EndIf}
+  {$endif}
 end;
 
 Procedure TConnectionName.DeAllocateCursorHandle(var cursor : TSQLCursor);
@@ -1115,22 +1138,26 @@ end;
 
 class function TMySQLConnectionDef.ConnectionClass: TSQLConnectionClass;
 begin
-  {$IfDef mysql51}
-    Result:=TMySQL51Connection;
+  {$IfDef mysql55}
+     Result:=TMySQL55Connection;
   {$ELSE}
-    {$IfDef mysql50}
-      Result:=TMySQL50Connection;
+    {$IfDef mysql51}
+      Result:=TMySQL51Connection;
     {$ELSE}
-      {$IfDef mysql41}
-        Result:=TMySQL41Connection;
+      {$IfDef mysql50}
+        Result:=TMySQL50Connection;
       {$ELSE}
-        {$IFDEF mysql4} // temporary backwards compatibility for Lazarus
-          Result:=TMySQLConnection;
+        {$IfDef mysql41}
+          Result:=TMySQL41Connection;
         {$ELSE}
-          Result:=TMySQL40Connection;
+          {$IFDEF mysql4} // temporary backwards compatibility for Lazarus
+            Result:=TMySQLConnection;
+          {$ELSE}
+            Result:=TMySQL40Connection;
+          {$EndIf}
         {$EndIf}
       {$EndIf}
-    {$EndIf}
+    {$endif}
   {$endif}
 end;
 
@@ -1139,37 +1166,44 @@ begin
   Result:='Connect to a MySQL '+MySQLVersion+'database directly via the client library';
 end;
 
-{$IfDef mysql51}
+{$IfDef mysql55}
   initialization
-    RegisterConnection(TMySQL51ConnectionDef);
+    RegisterConnection(TMySQL55ConnectionDef);
   finalization
-    UnRegisterConnection(TMySQL51ConnectionDef);
-{$ELSE}
-  {$IfDef mysql50}
+    UnRegisterConnection(TMySQL55ConnectionDef);
+{$else}
+  {$IfDef mysql51}
     initialization
-      RegisterConnection(TMySQL50ConnectionDef);
+      RegisterConnection(TMySQL51ConnectionDef);
     finalization
-      UnRegisterConnection(TMySQL50ConnectionDef);
+      UnRegisterConnection(TMySQL51ConnectionDef);
   {$ELSE}
-    {$IfDef mysql41}
+    {$IfDef mysql50}
       initialization
-        RegisterConnection(TMySQL41ConnectionDef);
+        RegisterConnection(TMySQL50ConnectionDef);
       finalization
-        UnRegisterConnection(TMySQL41ConnectionDef);
+        UnRegisterConnection(TMySQL50ConnectionDef);
     {$ELSE}
-      {$IFDEF mysql4} // temporary backwards compatibility for Lazarus
+      {$IfDef mysql41}
         initialization
-          RegisterConnection(TMySQL40ConnectionDef);
+          RegisterConnection(TMySQL41ConnectionDef);
         finalization
-          UnRegisterConnection(TMySQL40ConnectionDef);
+          UnRegisterConnection(TMySQL41ConnectionDef);
       {$ELSE}
-        initialization
-          RegisterConnection(TMySQL40ConnectionDef);
-        finalization
-          UnRegisterConnection(TMySQL40ConnectionDef);
+        {$IFDEF mysql4} // temporary backwards compatibility for Lazarus
+          initialization
+            RegisterConnection(TMySQL40ConnectionDef);
+          finalization
+            UnRegisterConnection(TMySQL40ConnectionDef);
+        {$ELSE}
+          initialization
+            RegisterConnection(TMySQL40ConnectionDef);
+          finalization
+            UnRegisterConnection(TMySQL40ConnectionDef);
+        {$EndIf}
       {$EndIf}
     {$EndIf}
-  {$EndIf}
-{$ENDIF}
+  {$ENDIF}
+{$endif}
 
 end.

+ 64 - 64
packages/mysql/Makefile

@@ -1,5 +1,5 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/12/30]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2012/04/22]
 #
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
@@ -289,193 +289,193 @@ endif
 override PACKAGE_NAME=mysql
 override PACKAGE_VERSION=2.6.1
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 endif
 ifeq ($(FULL_TARGET),i386-linux)
 override TARGET_EXAMPLEDIRS+=examples

+ 1 - 1
packages/mysql/Makefile.fpc

@@ -7,7 +7,7 @@ name=mysql
 version=2.6.1
 
 [target]
-units=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn
+units=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn mysql51 mysql51dyn mysql55 mysql55dyn
 exampledirs=examples
 
 [require]

+ 10 - 0
packages/mysql/fpmake.pp

@@ -120,6 +120,16 @@ begin
         begin
           AddInclude('mysql.inc');
         end;
+    T:=P.Targets.AddUnit('mysql55.pp');
+      with T.Dependencies do
+        begin
+          AddInclude('mysql.inc');
+        end;
+    T:=P.Targets.AddUnit('mysql55dyn.pp');
+      with T.Dependencies do
+        begin
+          AddInclude('mysql.inc');
+        end;
     T.ResourceStrings := True;
 
     P.ExamplePath.Add('tests');

+ 49 - 4
packages/mysql/src/mysql.inc

@@ -31,7 +31,9 @@ uses
   {$DEFINE extdecl:=cdecl}
   const
     mysqllib = 'libmysqlclient.'+sharedsuffix;
-  {$IF DEFINED(mysql51)}
+  {$IF DEFINED(mysql55)}
+    mysqlvlib = mysqllib+'.18';
+  {$ELSEIF DEFINED(mysql51)}
     mysqlvlib = mysqllib+'.16';
   {$ELSEIF DEFINED(mysql50)}
     mysqlvlib = mysqllib+'.15';
@@ -48,6 +50,10 @@ uses
     mysqlvlib = 'libmysql.dll';
 {$ENDIF}
 
+{$IFDEF mysql55}
+  {$DEFINE mysql51}
+{$ENDIF mysql55}
+
 {$IFDEF mysql51}
   {$DEFINE mysql50}
 {$ENDIF mysql51}
@@ -100,6 +106,7 @@ uses
      NAME_LEN = 64;
      HOSTNAME_LENGTH = 60;
      USERNAME_LENGTH = 16;
+     MYSQL_AUTODETECT_CHARSET_NAME = 'auto';
      SERVER_VERSION_LENGTH = 60;
      SQLSTATE_LENGTH = 5;
      LOCAL_HOST = 'localhost';
@@ -180,6 +187,12 @@ uses
        REFRESH_THREADS = 32;       // Flush thread cache
        REFRESH_SLAVE = 64;         // Reset master info and restart slave thread
        REFRESH_MASTER = 128;       // Remove all bin logs in the index and truncate the index
+       REFRESH_ERROR_LOG = 256;    // Rotate only the erorr log
+       REFRESH_ENGINE_LOG = 512;   // Flush all storage engine logs
+       REFRESH_BINARY_LOG = 1024;  // Flush the binary log
+       REFRESH_RELAY_LOG = 2048;   // Flush the relay log
+       REFRESH_GENERAL_LOG = 4096; // Flush the general log
+       REFRESH_SLOW_LOG = 8192;    // Flush the slow query log
 
     { The following can't be set with mysql_refresh()  }
        REFRESH_READ_LOCK = 16384;          // Lock tables for read
@@ -208,10 +221,16 @@ uses
        CLIENT_SECURE_CONNECTION = 32768;   // New 4.1 authentication
        CLIENT_MULTI_STATEMENTS = 65536;    // Enable/disable multi-stmt support
        CLIENT_MULTI_RESULTS = 131072;      // Enable/disable multi-results
+       CLIENT_PS_MULTI_RESULTS : cardinal = 1 shl 18; // Multi-results in PS-protocol
+       CLIENT_PLUGIN_AUTH : cardinal = 1 shl 19;      // Client supports plugin authentication
+       CLIENT_SSL_VERIFY_SERVER_CERT : cardinal = 1 shl 30;
        CLIENT_REMEMBER_OPTIONS : cardinal = 1 shl 31;
 
 
-       SERVER_STATUS_IN_TRANS = 1;         // Transaction has started
+       SERVER_STATUS_IN_TRANS = 1;         // Is raised when a multi-statement transaction
+                                           //  has been started, either explicitly, by means
+                                           //  of BEGIN or COMMIT AND CHAIN, or implicitly, by the first transactional
+                                           //  statement, when autocommit=off
        SERVER_STATUS_AUTOCOMMIT = 2;       // Server in auto_commit mode
        SERVER_STATUS_MORE_RESULTS = 4;     // More results on server
        SERVER_MORE_RESULTS_EXISTS = 8;     // Multi query - next query exists
@@ -238,6 +257,10 @@ uses
     }
        SERVER_STATUS_METADATA_CHANGED = 1024;
 {$ENDIF}
+{$IFDEF mysql55}
+       SERVER_QUERY_WAS_SLOW = 2048;
+       SERVER_PS_OUT_PARAMS = 4096; // To mark ResultSet containing output parameter values.
+{$ENDIF}
 
 {$IFDEF mysql41}
        MYSQL_ERRMSG_SIZE = 512;
@@ -549,8 +572,9 @@ uses
        NULL_LENGTH : culong = culong(not(0)); // For net_store_length
 
     const
-       MYSQL_STMT_HEADER = 4;
+       MYSQL_STMT_HEADER      = 4;
        MYSQL_LONG_DATA_HEADER = 6;
+       NOT_FIXED_DEC          = 31;
 
 {  ------------ Stop of declaration in "mysql_com.h"   -----------------------  }
 
@@ -742,6 +766,12 @@ uses
          MYSQL_SECURE_AUTH
 {$IFDEF MYSQL50}
          ,MYSQL_REPORT_DATA_TRUNCATION, MYSQL_OPT_RECONNECT
+{$IFDEF mysql51}
+         ,MYSQL_OPT_SSL_VERIFY_SERVER_CERT
+{$IFDEF mysql55}
+         ,MYSQL_PLUGIN_DIR, MYSQL_DEFAULT_AUTH
+{$ENDIF}
+{$ENDIF}
 {$ENDIF}
          );
 
@@ -765,6 +795,8 @@ uses
        DYNAMIC_ARRAY = st_dynamic_array;
        Pst_dynamic_array = ^st_dynamic_array;
 
+       st_mysql_options_extention = record end;
+
        Pst_mysql_options = ^st_mysql_options;
        st_mysql_options = record
             connect_timeout : cuint;
@@ -832,6 +864,9 @@ uses
             local_infile_end : procedure (_para1:pointer);
             local_infile_error : function (_para1:pointer; _para2:Pchar; _para3:cuint):cint;
             local_infile_userdata : pointer;
+{$IFDEF mysql51}
+            extension : ^st_mysql_options_extention;
+{$ENDIF}
 {$ENDIF}
          end;
 
@@ -1173,6 +1208,8 @@ uses
        PMYSQL_BIND = ^MYSQL_BIND;
 
     { statement handler  }
+       st_mysql_stmt_extension = record end;
+
        st_mysql_stmt = record
             mem_root : MEM_ROOT;            // root allocations
 //            list : LIST;                    // list to keep track of all stmts
@@ -1212,6 +1249,9 @@ uses
     {   Is set to true if we need to calculate field->max_length for
         metadata fields when doing mysql_stmt_store_result.       }
             update_max_length : my_bool;
+{$IFDEF mysql51}
+            extension: ^st_mysql_stmt_extension;
+{$ENDIF}
          end;
        MYSQL_STMT = st_mysql_stmt;
     {   When doing mysql_stmt_store_result calculate max_length attribute
@@ -1450,6 +1490,7 @@ uses
     function mysql_autocommit(mysql:PMYSQL; auto_mode:my_bool):my_bool;extdecl;external mysqllib name 'mysql_autocommit';
     function mysql_more_results(mysql:PMYSQL):my_bool;extdecl;external mysqllib name 'mysql_more_results';
     function mysql_next_result(mysql:PMYSQL):cint;extdecl;external mysqllib name 'mysql_next_result';
+    function mysql_stmt_next_result(stmt:PMYSQL_STMT):cint;extdecl;external mysqllib name 'mysql_stmt_next_result';
     procedure mysql_close(sock:PMYSQL);extdecl;external mysqllib name 'mysql_close';
 
 {$ELSE}
@@ -1519,6 +1560,7 @@ uses
       mysql_stmt_affected_rows: function (stmt:PMYSQL_STMT):my_ulonglong;extdecl;
       mysql_stmt_insert_id: function (stmt:PMYSQL_STMT):my_ulonglong;extdecl;
       mysql_stmt_field_count: function (stmt:PMYSQL_STMT):cuint;extdecl;
+      mysql_stmt_next_result: function (stmt:PMYSQL_STMT):cint;extdecl;
 
 {$ENDIF}
 
@@ -1686,6 +1728,7 @@ begin
     pointer(mysql_stmt_affected_rows) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_affected_rows');
     pointer(mysql_stmt_insert_id) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_insert_id');
     pointer(mysql_stmt_field_count) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_field_count');
+    pointer(mysql_stmt_next_result) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_next_result');
 
     if mysql_library_init(argc, argv, groups) <> 0 then
       Exit;
@@ -1768,7 +1811,9 @@ end;
 
     function IS_NUM(t : enum_field_types) : boolean;
     begin
-{$IF DEFINED(mysql50) or DEFINED(mysql51)}
+{$IF DEFINED(mysql55)}
+      IS_NUM := ((t <= FIELD_TYPE_INT24) and (t<>FIELD_TYPE_TIMESTAMP)) or (t=FIELD_TYPE_YEAR) or (t=FIELD_TYPE_NEWDECIMAL);
+{$ELSEIF DEFINED(mysql50) or DEFINED(mysql51)}
       IS_NUM := (t <= FIELD_TYPE_INT24) or (t=FIELD_TYPE_YEAR) or (t=FIELD_TYPE_NEWDECIMAL);
 {$ELSE}
       IS_NUM := (t <= FIELD_TYPE_INT24) or (t=FIELD_TYPE_YEAR);

+ 12 - 0
packages/mysql/src/mysql55.pp

@@ -0,0 +1,12 @@
+{
+  Contains the mysql calls for MySQL 5.5
+}
+
+unit mysql55;
+
+{$UNDEF LinkDynamically}
+{$DEFINE MYSQL55}
+
+{$i mysql.inc}
+
+end.

+ 12 - 0
packages/mysql/src/mysql55dyn.pp

@@ -0,0 +1,12 @@
+{
+  Contains the mysql calls for MySQL 5.5
+}
+
+unit mysql55dyn;
+
+{$DEFINE LinkDynamically}
+{$DEFINE MYSQL55}
+
+{$i mysql.inc}
+
+end.