Browse Source

* Moved odbc

git-svn-id: trunk@9939 -
marco 17 years ago
parent
commit
9e8a372a48

+ 9 - 0
.gitattributes

@@ -4272,6 +4272,15 @@ packages/ncurses/src/panel.pp svneol=native#text/plain
 packages/ncurses/src/pxpic.inc svneol=native#text/plain
 packages/ncurses/src/pxpic.txt svneol=native#text/plain
 packages/ncurses/tests/testn.pp svneol=native#text/plain
+packages/odbc/Makefile svneol=native#text/plain
+packages/odbc/Makefile.fpc svneol=native#text/plain
+packages/odbc/README svneol=native#text/plain
+packages/odbc/fpmake.pp svneol=native#text/plain
+packages/odbc/src/odbcsql.inc svneol=native#text/plain
+packages/odbc/src/odbcsql.pas svneol=native#text/plain
+packages/odbc/src/odbcsqldyn.pas svneol=native#text/plain
+packages/odbc/tests/testodbc.mdb -text
+packages/odbc/tests/testodbc.pp svneol=native#text/plain
 packages/oracle/Makefile.fpc svneol=native#text/plain
 packages/oracle/README svneol=native#text/plain
 packages/oracle/examples/Makefile.fpc svneol=native#text/plain

+ 98 - 29
packages/Makefile

@@ -241,28 +241,28 @@ UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
 endif
 PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus  libc
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc  libc
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  winunits-base winunits-jedi fcl-web ibase mysql zlib oracle
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  winunits-base winunits-jedi fcl-web ibase mysql zlib oracle odbc
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  zlib
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle odbc
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle odbc
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle odbc
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip
@@ -271,13 +271,13 @@ ifeq ($(FULL_TARGET),i386-netware)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  zlib
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle odbc
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle odbc
 endif
 ifeq ($(FULL_TARGET),i386-emx)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  zlib
@@ -298,13 +298,13 @@ ifeq ($(FULL_TARGET),i386-symbian)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle odbc
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle odbc
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip
@@ -313,7 +313,7 @@ ifeq ($(FULL_TARGET),m68k-atari)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle odbc
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip
@@ -322,10 +322,10 @@ ifeq ($(FULL_TARGET),m68k-embedded)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle odbc
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip
@@ -334,7 +334,7 @@ ifeq ($(FULL_TARGET),powerpc-macos)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle odbc
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip
@@ -343,34 +343,34 @@ ifeq ($(FULL_TARGET),powerpc-embedded)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle odbc
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle odbc
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle odbc
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle odbc
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  winunits-base winunits-jedi fcl-web ibase mysql zlib oracle
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  winunits-base winunits-jedi fcl-web ibase mysql zlib oracle odbc
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip
@@ -391,10 +391,10 @@ ifeq ($(FULL_TARGET),arm-symbian)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle
+override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip  fcl-web fcl-async ibase mysql ncurses zlib oracle odbc
 endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
 override TARGET_DIRS+=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip
@@ -1506,6 +1506,7 @@ TARGET_DIRS_UNZIP=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_DBUS=1
+TARGET_DIRS_ODBC=1
 TARGET_DIRS_LIBC=1
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
@@ -1554,6 +1555,7 @@ TARGET_DIRS_IBASE=1
 TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 TARGET_DIRS_BASE=1
@@ -1602,6 +1604,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_NCURSES=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 TARGET_DIRS_BASE=1
@@ -1649,6 +1652,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_NCURSES=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 TARGET_DIRS_BASE=1
@@ -1676,6 +1680,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_NCURSES=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 TARGET_DIRS_BASE=1
@@ -1744,6 +1749,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_NCURSES=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
 TARGET_DIRS_BASE=1
@@ -1791,6 +1797,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_NCURSES=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),i386-emx)
 TARGET_DIRS_BASE=1
@@ -1945,6 +1952,7 @@ TARGET_DIRS_UNZIP=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_DBUS=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
 TARGET_DIRS_BASE=1
@@ -1972,6 +1980,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_NCURSES=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
 TARGET_DIRS_BASE=1
@@ -1999,6 +2008,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_NCURSES=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
 TARGET_DIRS_BASE=1
@@ -2066,6 +2076,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_NCURSES=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
 TARGET_DIRS_BASE=1
@@ -2135,6 +2146,7 @@ TARGET_DIRS_UNZIP=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_DBUS=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 TARGET_DIRS_BASE=1
@@ -2162,6 +2174,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_NCURSES=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
 TARGET_DIRS_BASE=1
@@ -2229,6 +2242,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_NCURSES=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
 TARGET_DIRS_BASE=1
@@ -2298,6 +2312,7 @@ TARGET_DIRS_UNZIP=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_DBUS=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 TARGET_DIRS_BASE=1
@@ -2325,6 +2340,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_NCURSES=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 TARGET_DIRS_BASE=1
@@ -2352,6 +2368,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_NCURSES=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
 TARGET_DIRS_BASE=1
@@ -2401,6 +2418,7 @@ TARGET_DIRS_UNZIP=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_DBUS=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
 TARGET_DIRS_BASE=1
@@ -2428,6 +2446,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_NCURSES=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
 TARGET_DIRS_BASE=1
@@ -2455,6 +2474,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_NCURSES=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
 TARGET_DIRS_BASE=1
@@ -2482,6 +2502,7 @@ TARGET_DIRS_IBASE=1
 TARGET_DIRS_MYSQL=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
 TARGET_DIRS_BASE=1
@@ -2531,6 +2552,7 @@ TARGET_DIRS_UNZIP=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_DBUS=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
 TARGET_DIRS_BASE=1
@@ -2683,6 +2705,7 @@ TARGET_DIRS_UNZIP=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
 TARGET_DIRS_DBUS=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
 TARGET_DIRS_BASE=1
@@ -2710,6 +2733,7 @@ TARGET_DIRS_MYSQL=1
 TARGET_DIRS_NCURSES=1
 TARGET_DIRS_ZLIB=1
 TARGET_DIRS_ORACLE=1
+TARGET_DIRS_ODBC=1
 endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
 TARGET_DIRS_BASE=1
@@ -3901,6 +3925,51 @@ dbus:
 	$(MAKE) -C dbus all
 .PHONY: dbus_all dbus_debug dbus_smart dbus_release dbus_units dbus_examples dbus_shared dbus_install dbus_sourceinstall dbus_exampleinstall dbus_distinstall dbus_zipinstall dbus_zipsourceinstall dbus_zipexampleinstall dbus_zipdistinstall dbus_clean dbus_distclean dbus_cleanall dbus_info dbus_makefiles dbus
 endif
+ifdef TARGET_DIRS_ODBC
+odbc_all:
+	$(MAKE) -C odbc all
+odbc_debug:
+	$(MAKE) -C odbc debug
+odbc_smart:
+	$(MAKE) -C odbc smart
+odbc_release:
+	$(MAKE) -C odbc release
+odbc_units:
+	$(MAKE) -C odbc units
+odbc_examples:
+	$(MAKE) -C odbc examples
+odbc_shared:
+	$(MAKE) -C odbc shared
+odbc_install:
+	$(MAKE) -C odbc install
+odbc_sourceinstall:
+	$(MAKE) -C odbc sourceinstall
+odbc_exampleinstall:
+	$(MAKE) -C odbc exampleinstall
+odbc_distinstall:
+	$(MAKE) -C odbc distinstall
+odbc_zipinstall:
+	$(MAKE) -C odbc zipinstall
+odbc_zipsourceinstall:
+	$(MAKE) -C odbc zipsourceinstall
+odbc_zipexampleinstall:
+	$(MAKE) -C odbc zipexampleinstall
+odbc_zipdistinstall:
+	$(MAKE) -C odbc zipdistinstall
+odbc_clean:
+	$(MAKE) -C odbc clean
+odbc_distclean:
+	$(MAKE) -C odbc distclean
+odbc_cleanall:
+	$(MAKE) -C odbc cleanall
+odbc_info:
+	$(MAKE) -C odbc info
+odbc_makefiles:
+	$(MAKE) -C odbc makefiles
+odbc:
+	$(MAKE) -C odbc all
+.PHONY: odbc_all odbc_debug odbc_smart odbc_release odbc_units odbc_examples odbc_shared odbc_install odbc_sourceinstall odbc_exampleinstall odbc_distinstall odbc_zipinstall odbc_zipsourceinstall odbc_zipexampleinstall odbc_zipdistinstall odbc_clean odbc_distclean odbc_cleanall odbc_info odbc_makefiles odbc
+endif
 ifdef TARGET_DIRS_LIBC
 libc_all:
 	$(MAKE) -C libc all
@@ -4126,11 +4195,11 @@ fcl-web_debug: fcl-db_debug fcl-xml_debug fcl-process_debug
 fcl-web_smart: fcl-db_smart fcl-xml_smart fcl-process_smart
 fcl-web_release: fcl-db_release fcl-xml_release fcl-process_release
 fcl-web_shared: fcl-db_shared fcl-xml_shared fcl-process_shared
-fcl-db_all: fcl-base_all mysql_all ibase_all oracle_all
-fcl-db_debug: fcl-base_debug mysql_debug ibase_debug oracle_debug
-fcl-db_smart: fcl-base_smart mysql_smart ibase_smart oracle_smart
-fcl-db_release: fcl-base_release mysql_release ibase_release oracle_release
-fcl-db_shared: fcl-base_shared mysql_shared ibase_shared oracle_shared
+fcl-db_all: fcl-base_all mysql_all ibase_all oracle_all odbc_all
+fcl-db_debug: fcl-base_debug mysql_debug ibase_debug oracle_debug odbc_debug
+fcl-db_smart: fcl-base_smart mysql_smart ibase_smart oracle_smart odbc_smart
+fcl-db_release: fcl-base_release mysql_release ibase_release oracle_release odbc_release
+fcl-db_shared: fcl-base_shared mysql_shared ibase_shared oracle_shared odbc_shared
 fcl_all: fcl-base_all fcl-xml_all fcl-fpcunit_all fcl-db_all fcl-web_all fcl-registry_all fcl-passrc_all fcl-image_all fcl-net_all fcl-json_all
 fcl_debug: fcl-base_debug fcl-xml_debug fcl-fpcunit_debug fcl-db_debug fcl-web_debug fcl-registry_debug fcl-passrc_debug fcl-image_debug fcl-net_debug fcl-json_debug
 fcl_smart: fcl-base_smart fcl-xml_smart fcl-fpcunit_smart fcl-db_smart fcl-web_smart fcl-registry_smart fcl-passrc_smart fcl-image_smart fcl-net_smart fcl-json_smart

+ 14 - 14
packages/Makefile.fpc

@@ -4,15 +4,15 @@
 
 [target]
 dirs=base fv hash pasjpeg paszlib fpmkunit fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-xml fcl-fpcunit fcl-json extra fcl-process unzip
-dirs_linux_i386=libc
-dirs_freebsd=fcl-web fcl-async ibase mysql ncurses zlib oracle
-dirs_darwin=fcl-web fcl-async ibase mysql ncurses zlib oracle
-dirs_solaris=fcl-web fcl-async ibase mysql ncurses zlib oracle
-dirs_netbsd=fcl-web fcl-async ibase mysql ncurses zlib oracle
-dirs_openbsd=fcl-web fcl-async ibase mysql ncurses zlib oracle
-dirs_linux=fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus
-dirs_win32=winunits-base winunits-jedi fcl-web ibase mysql zlib oracle
-dirs_win64=winunits-base winunits-jedi fcl-web ibase mysql zlib oracle
+dirs_linux_i386=libc 
+dirs_freebsd=fcl-web fcl-async ibase mysql ncurses zlib oracle odbc
+dirs_darwin=fcl-web fcl-async ibase mysql ncurses zlib oracle odbc
+dirs_solaris=fcl-web fcl-async ibase mysql ncurses zlib oracle odbc
+dirs_netbsd=fcl-web fcl-async ibase mysql ncurses zlib oracle odbc
+dirs_openbsd=fcl-web fcl-async ibase mysql ncurses zlib oracle odbc
+dirs_linux=fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc
+dirs_win32=winunits-base winunits-jedi fcl-web ibase mysql zlib oracle odbc
+dirs_win64=winunits-base winunits-jedi fcl-web ibase mysql zlib oracle odbc
 dirs_wince=fcl-web ibase mysql
 dirs_os2=zlib
 dirs_emx=zlib
@@ -105,11 +105,11 @@ fcl-web_smart: fcl-db_smart fcl-xml_smart fcl-process_smart
 fcl-web_release: fcl-db_release fcl-xml_release fcl-process_release
 fcl-web_shared: fcl-db_shared fcl-xml_shared fcl-process_shared
 
-fcl-db_all: fcl-base_all mysql_all ibase_all oracle_all
-fcl-db_debug: fcl-base_debug mysql_debug ibase_debug oracle_debug
-fcl-db_smart: fcl-base_smart mysql_smart ibase_smart oracle_smart
-fcl-db_release: fcl-base_release mysql_release ibase_release oracle_release
-fcl-db_shared: fcl-base_shared mysql_shared ibase_shared oracle_shared
+fcl-db_all: fcl-base_all mysql_all ibase_all oracle_all odbc_all
+fcl-db_debug: fcl-base_debug mysql_debug ibase_debug oracle_debug odbc_debug
+fcl-db_smart: fcl-base_smart mysql_smart ibase_smart oracle_smart odbc_smart
+fcl-db_release: fcl-base_release mysql_release ibase_release oracle_release odbc_release
+fcl-db_shared: fcl-base_shared mysql_shared ibase_shared oracle_shared odbc_shared
 
 fcl_all: fcl-base_all fcl-xml_all fcl-fpcunit_all fcl-db_all fcl-web_all fcl-registry_all fcl-passrc_all fcl-image_all fcl-net_all fcl-json_all
 fcl_debug: fcl-base_debug fcl-xml_debug fcl-fpcunit_debug fcl-db_debug fcl-web_debug fcl-registry_debug fcl-passrc_debug fcl-image_debug fcl-net_debug fcl-json_debug

+ 25 - 95
packages/base/Makefile

@@ -241,28 +241,28 @@ UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
 endif
 PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_DIRS+=regexpr  gdbint   postgres  odbc pthreads sqlite imagemagick  httpd
+override TARGET_DIRS+=regexpr  gdbint   postgres   pthreads sqlite imagemagick  httpd
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 override TARGET_DIRS+=regexpr  gdbint
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_DIRS+=regexpr  gdbint   odbc sqlite postgres  imagemagick httpd
+override TARGET_DIRS+=regexpr  gdbint   sqlite postgres  imagemagick httpd
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 override TARGET_DIRS+=regexpr
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_DIRS+=regexpr  gdbint   postgres  odbc sqlite pthreads imagemagick httpd
+override TARGET_DIRS+=regexpr  gdbint   postgres   sqlite pthreads imagemagick httpd
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_DIRS+=regexpr  gdbint   postgres odbc sqlite pthreads imagemagick
+override TARGET_DIRS+=regexpr  gdbint   postgres  sqlite pthreads imagemagick
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_DIRS+=regexpr  gdbint   postgres  odbc imagemagick httpd
+override TARGET_DIRS+=regexpr  gdbint   postgres   imagemagick httpd
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_DIRS+=regexpr  postgres  odbc sqlite pthreads imagemagick httpd
+override TARGET_DIRS+=regexpr  postgres   sqlite pthreads imagemagick httpd
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 override TARGET_DIRS+=regexpr
@@ -271,13 +271,13 @@ ifeq ($(FULL_TARGET),i386-netware)
 override TARGET_DIRS+=regexpr
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_DIRS+=regexpr  gdbint   postgres  odbc imagemagick httpd
+override TARGET_DIRS+=regexpr  gdbint   postgres   imagemagick httpd
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
 override TARGET_DIRS+=regexpr
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_DIRS+=regexpr  postgres  odbc sqlite pthreads imagemagick httpd
+override TARGET_DIRS+=regexpr  postgres   sqlite pthreads imagemagick httpd
 endif
 ifeq ($(FULL_TARGET),i386-emx)
 override TARGET_DIRS+=regexpr
@@ -298,13 +298,13 @@ ifeq ($(FULL_TARGET),i386-symbian)
 override TARGET_DIRS+=regexpr
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_DIRS+=regexpr  gdbint   postgres  odbc pthreads sqlite imagemagick  httpd
+override TARGET_DIRS+=regexpr  gdbint   postgres   pthreads sqlite imagemagick  httpd
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_DIRS+=regexpr  gdbint   postgres  odbc sqlite pthreads imagemagick httpd
+override TARGET_DIRS+=regexpr  gdbint   postgres   sqlite pthreads imagemagick httpd
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_DIRS+=regexpr  gdbint   postgres  odbc imagemagick httpd
+override TARGET_DIRS+=regexpr  gdbint   postgres   imagemagick httpd
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
 override TARGET_DIRS+=regexpr
@@ -313,7 +313,7 @@ ifeq ($(FULL_TARGET),m68k-atari)
 override TARGET_DIRS+=regexpr
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_DIRS+=regexpr  gdbint   postgres  odbc imagemagick httpd
+override TARGET_DIRS+=regexpr  gdbint   postgres   imagemagick httpd
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
 override TARGET_DIRS+=regexpr
@@ -322,10 +322,10 @@ ifeq ($(FULL_TARGET),m68k-embedded)
 override TARGET_DIRS+=regexpr
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_DIRS+=regexpr  gdbint   postgres  odbc pthreads sqlite imagemagick  httpd
+override TARGET_DIRS+=regexpr  gdbint   postgres   pthreads sqlite imagemagick  httpd
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_DIRS+=regexpr  gdbint   postgres  odbc imagemagick httpd
+override TARGET_DIRS+=regexpr  gdbint   postgres   imagemagick httpd
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
 override TARGET_DIRS+=regexpr
@@ -334,7 +334,7 @@ ifeq ($(FULL_TARGET),powerpc-macos)
 override TARGET_DIRS+=regexpr
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_DIRS+=regexpr  postgres  odbc sqlite pthreads imagemagick httpd
+override TARGET_DIRS+=regexpr  postgres   sqlite pthreads imagemagick httpd
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
 override TARGET_DIRS+=regexpr
@@ -343,34 +343,34 @@ ifeq ($(FULL_TARGET),powerpc-embedded)
 override TARGET_DIRS+=regexpr
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_DIRS+=regexpr  gdbint   postgres  odbc pthreads sqlite imagemagick  httpd
+override TARGET_DIRS+=regexpr  gdbint   postgres   pthreads sqlite imagemagick  httpd
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_DIRS+=regexpr  gdbint   postgres  odbc imagemagick httpd
+override TARGET_DIRS+=regexpr  gdbint   postgres   imagemagick httpd
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_DIRS+=regexpr  postgres  odbc sqlite pthreads imagemagick httpd
+override TARGET_DIRS+=regexpr  postgres   sqlite pthreads imagemagick httpd
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
 override TARGET_DIRS+=regexpr
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_DIRS+=regexpr  gdbint   postgres  odbc pthreads sqlite imagemagick  httpd
+override TARGET_DIRS+=regexpr  gdbint   postgres   pthreads sqlite imagemagick  httpd
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_DIRS+=regexpr  gdbint   postgres  odbc sqlite pthreads imagemagick httpd
+override TARGET_DIRS+=regexpr  gdbint   postgres   sqlite pthreads imagemagick httpd
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_DIRS+=regexpr  postgres  odbc sqlite pthreads imagemagick httpd
+override TARGET_DIRS+=regexpr  postgres   sqlite pthreads imagemagick httpd
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_DIRS+=regexpr  odbc sqlite postgres
+override TARGET_DIRS+=regexpr  sqlite postgres
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
 override TARGET_DIRS+=regexpr
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_DIRS+=regexpr  gdbint   postgres  odbc pthreads sqlite imagemagick  httpd
+override TARGET_DIRS+=regexpr  gdbint   postgres   pthreads sqlite imagemagick  httpd
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
 override TARGET_DIRS+=regexpr
@@ -391,10 +391,10 @@ ifeq ($(FULL_TARGET),arm-symbian)
 override TARGET_DIRS+=regexpr
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_DIRS+=regexpr  gdbint   postgres  odbc pthreads sqlite imagemagick  httpd
+override TARGET_DIRS+=regexpr  gdbint   postgres   pthreads sqlite imagemagick  httpd
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_DIRS+=regexpr  postgres  odbc sqlite pthreads imagemagick httpd
+override TARGET_DIRS+=regexpr  postgres   sqlite pthreads imagemagick httpd
 endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
 override TARGET_DIRS+=regexpr
@@ -1482,7 +1482,6 @@ ifeq ($(FULL_TARGET),i386-linux)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_GDBINT=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_PTHREADS=1
 TARGET_DIRS_SQLITE=1
 TARGET_DIRS_IMAGEMAGICK=1
@@ -1495,7 +1494,6 @@ endif
 ifeq ($(FULL_TARGET),i386-win32)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_GDBINT=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_SQLITE=1
 TARGET_DIRS_POSTGRES=1
 TARGET_DIRS_IMAGEMAGICK=1
@@ -1508,7 +1506,6 @@ ifeq ($(FULL_TARGET),i386-freebsd)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_GDBINT=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_SQLITE=1
 TARGET_DIRS_PTHREADS=1
 TARGET_DIRS_IMAGEMAGICK=1
@@ -1518,7 +1515,6 @@ ifeq ($(FULL_TARGET),i386-beos)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_GDBINT=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_SQLITE=1
 TARGET_DIRS_PTHREADS=1
 TARGET_DIRS_IMAGEMAGICK=1
@@ -1527,14 +1523,12 @@ ifeq ($(FULL_TARGET),i386-netbsd)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_GDBINT=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_IMAGEMAGICK=1
 TARGET_DIRS_HTTPD=1
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_SQLITE=1
 TARGET_DIRS_PTHREADS=1
 TARGET_DIRS_IMAGEMAGICK=1
@@ -1550,7 +1544,6 @@ ifeq ($(FULL_TARGET),i386-openbsd)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_GDBINT=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_IMAGEMAGICK=1
 TARGET_DIRS_HTTPD=1
 endif
@@ -1560,7 +1553,6 @@ endif
 ifeq ($(FULL_TARGET),i386-darwin)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_SQLITE=1
 TARGET_DIRS_PTHREADS=1
 TARGET_DIRS_IMAGEMAGICK=1
@@ -1590,7 +1582,6 @@ ifeq ($(FULL_TARGET),m68k-linux)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_GDBINT=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_PTHREADS=1
 TARGET_DIRS_SQLITE=1
 TARGET_DIRS_IMAGEMAGICK=1
@@ -1600,7 +1591,6 @@ ifeq ($(FULL_TARGET),m68k-freebsd)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_GDBINT=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_SQLITE=1
 TARGET_DIRS_PTHREADS=1
 TARGET_DIRS_IMAGEMAGICK=1
@@ -1610,7 +1600,6 @@ ifeq ($(FULL_TARGET),m68k-netbsd)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_GDBINT=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_IMAGEMAGICK=1
 TARGET_DIRS_HTTPD=1
 endif
@@ -1624,7 +1613,6 @@ ifeq ($(FULL_TARGET),m68k-openbsd)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_GDBINT=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_IMAGEMAGICK=1
 TARGET_DIRS_HTTPD=1
 endif
@@ -1638,7 +1626,6 @@ ifeq ($(FULL_TARGET),powerpc-linux)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_GDBINT=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_PTHREADS=1
 TARGET_DIRS_SQLITE=1
 TARGET_DIRS_IMAGEMAGICK=1
@@ -1648,7 +1635,6 @@ ifeq ($(FULL_TARGET),powerpc-netbsd)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_GDBINT=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_IMAGEMAGICK=1
 TARGET_DIRS_HTTPD=1
 endif
@@ -1661,7 +1647,6 @@ endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_SQLITE=1
 TARGET_DIRS_PTHREADS=1
 TARGET_DIRS_IMAGEMAGICK=1
@@ -1677,7 +1662,6 @@ ifeq ($(FULL_TARGET),sparc-linux)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_GDBINT=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_PTHREADS=1
 TARGET_DIRS_SQLITE=1
 TARGET_DIRS_IMAGEMAGICK=1
@@ -1687,14 +1671,12 @@ ifeq ($(FULL_TARGET),sparc-netbsd)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_GDBINT=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_IMAGEMAGICK=1
 TARGET_DIRS_HTTPD=1
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_SQLITE=1
 TARGET_DIRS_PTHREADS=1
 TARGET_DIRS_IMAGEMAGICK=1
@@ -1707,7 +1689,6 @@ ifeq ($(FULL_TARGET),x86_64-linux)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_GDBINT=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_PTHREADS=1
 TARGET_DIRS_SQLITE=1
 TARGET_DIRS_IMAGEMAGICK=1
@@ -1717,7 +1698,6 @@ ifeq ($(FULL_TARGET),x86_64-freebsd)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_GDBINT=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_SQLITE=1
 TARGET_DIRS_PTHREADS=1
 TARGET_DIRS_IMAGEMAGICK=1
@@ -1726,7 +1706,6 @@ endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_SQLITE=1
 TARGET_DIRS_PTHREADS=1
 TARGET_DIRS_IMAGEMAGICK=1
@@ -1734,7 +1713,6 @@ TARGET_DIRS_HTTPD=1
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
 TARGET_DIRS_REGEXPR=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_SQLITE=1
 TARGET_DIRS_POSTGRES=1
 endif
@@ -1745,7 +1723,6 @@ ifeq ($(FULL_TARGET),arm-linux)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_GDBINT=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_PTHREADS=1
 TARGET_DIRS_SQLITE=1
 TARGET_DIRS_IMAGEMAGICK=1
@@ -1775,7 +1752,6 @@ ifeq ($(FULL_TARGET),powerpc64-linux)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_GDBINT=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_PTHREADS=1
 TARGET_DIRS_SQLITE=1
 TARGET_DIRS_IMAGEMAGICK=1
@@ -1784,7 +1760,6 @@ endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
 TARGET_DIRS_REGEXPR=1
 TARGET_DIRS_POSTGRES=1
-TARGET_DIRS_ODBC=1
 TARGET_DIRS_SQLITE=1
 TARGET_DIRS_PTHREADS=1
 TARGET_DIRS_IMAGEMAGICK=1
@@ -1928,51 +1903,6 @@ postgres:
 	$(MAKE) -C postgres all
 .PHONY: postgres_all postgres_debug postgres_smart postgres_release postgres_units postgres_examples postgres_shared postgres_install postgres_sourceinstall postgres_exampleinstall postgres_distinstall postgres_zipinstall postgres_zipsourceinstall postgres_zipexampleinstall postgres_zipdistinstall postgres_clean postgres_distclean postgres_cleanall postgres_info postgres_makefiles postgres
 endif
-ifdef TARGET_DIRS_ODBC
-odbc_all:
-	$(MAKE) -C odbc all
-odbc_debug:
-	$(MAKE) -C odbc debug
-odbc_smart:
-	$(MAKE) -C odbc smart
-odbc_release:
-	$(MAKE) -C odbc release
-odbc_units:
-	$(MAKE) -C odbc units
-odbc_examples:
-	$(MAKE) -C odbc examples
-odbc_shared:
-	$(MAKE) -C odbc shared
-odbc_install:
-	$(MAKE) -C odbc install
-odbc_sourceinstall:
-	$(MAKE) -C odbc sourceinstall
-odbc_exampleinstall:
-	$(MAKE) -C odbc exampleinstall
-odbc_distinstall:
-	$(MAKE) -C odbc distinstall
-odbc_zipinstall:
-	$(MAKE) -C odbc zipinstall
-odbc_zipsourceinstall:
-	$(MAKE) -C odbc zipsourceinstall
-odbc_zipexampleinstall:
-	$(MAKE) -C odbc zipexampleinstall
-odbc_zipdistinstall:
-	$(MAKE) -C odbc zipdistinstall
-odbc_clean:
-	$(MAKE) -C odbc clean
-odbc_distclean:
-	$(MAKE) -C odbc distclean
-odbc_cleanall:
-	$(MAKE) -C odbc cleanall
-odbc_info:
-	$(MAKE) -C odbc info
-odbc_makefiles:
-	$(MAKE) -C odbc makefiles
-odbc:
-	$(MAKE) -C odbc all
-.PHONY: odbc_all odbc_debug odbc_smart odbc_release odbc_units odbc_examples odbc_shared odbc_install odbc_sourceinstall odbc_exampleinstall odbc_distinstall odbc_zipinstall odbc_zipsourceinstall odbc_zipexampleinstall odbc_zipdistinstall odbc_clean odbc_distclean odbc_cleanall odbc_info odbc_makefiles odbc
-endif
 ifdef TARGET_DIRS_PTHREADS
 pthreads_all:
 	$(MAKE) -C pthreads all

+ 9 - 9
packages/base/Makefile.fpc

@@ -4,17 +4,17 @@
 
 [target]
 dirs=regexpr
-dirs_linux=gdbint   postgres  odbc pthreads sqlite imagemagick  httpd
-dirs_win32=gdbint   odbc sqlite postgres  imagemagick httpd 
-dirs_win64=  odbc sqlite postgres  
+dirs_linux=gdbint   postgres   pthreads sqlite imagemagick  httpd
+dirs_win32=gdbint   sqlite postgres  imagemagick httpd 
+dirs_win64=   sqlite postgres  
 dirs_wince= sqlite postgres
 dirs_go32v2=gdbint
-dirs_netbsd=gdbint   postgres  odbc imagemagick httpd
-dirs_openbsd=gdbint   postgres  odbc imagemagick httpd
-dirs_beos=gdbint   postgres odbc sqlite pthreads imagemagick
-dirs_freebsd=gdbint   postgres  odbc sqlite pthreads imagemagick httpd
-dirs_darwin=  postgres  odbc sqlite pthreads imagemagick httpd
-dirs_solaris=  postgres  odbc sqlite pthreads imagemagick httpd
+dirs_netbsd=gdbint   postgres   imagemagick httpd
+dirs_openbsd=gdbint   postgres   imagemagick httpd
+dirs_beos=gdbint   postgres  sqlite pthreads imagemagick
+dirs_freebsd=gdbint   postgres   sqlite pthreads imagemagick httpd
+dirs_darwin=  postgres   sqlite pthreads imagemagick httpd
+dirs_solaris=  postgres   sqlite pthreads imagemagick httpd
 
 
 [rules]

+ 2465 - 0
packages/odbc/Makefile

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

+ 30 - 0
packages/odbc/Makefile.fpc

@@ -0,0 +1,30 @@
+#
+#   Makefile.fpc for odbc bindings
+#
+[package]
+name=odbc
+version=2.0.0
+
+[target]
+units=odbcsql odbcsqldyn
+examples=testodbc
+
+[require]
+libc=n
+
+[install]
+fpcpackage=y
+
+[default]
+fpcdir=../..
+
+[compiler]
+includedir=src
+sourcedir=src tests examples
+
+[shared]
+build=n
+
+[rules]
+.NOTPARALLEL:
+

+ 40 - 0
packages/odbc/README

@@ -0,0 +1,40 @@
+Testing raw ODBC access:
+
+For windows:
+============
+
+1. Compile testodbc. No options should be needed.
+
+2. In the ODBC manager in the Windows Control Panel, create a new system or
+   file DSN called 'FPC' with the 'Microsoft Access (*.mdb)' driver
+   (At least MS-Access 97 or higher)
+
+   Do not enter any username or password.
+   
+   The DSN should point to the testodbc.mdb database file provided with the
+   testodbc.pp program.
+   
+3. Run the program.
+
+For Linux:
+==========
+
+1. Change testodbc.pp and set the UserName and Password constants if needed.
+
+2. Compile testodbc. No options should be needed.
+
+3. Create a MySQL database and table with the mkdb script in the mysql
+   directory. make sure the password and username as set in step 1 have
+   access to this databse.
+
+4. Install a DSN called FPC for the newly created database.
+   (I used the unixODBC ODBCConfig program for this)
+
+5. Run the program.
+
+Enjoy !
+
+Michael.
+
+
+   

+ 37 - 0
packages/odbc/fpmake.pp

@@ -0,0 +1,37 @@
+{$ifndef ALLPACKAGES}
+{$mode objfpc}{$H+}
+program fpmake;
+
+uses fpmkunit;
+
+Var
+  P : TPackage;
+  T : TTarget;
+begin
+  With Installer do
+    begin
+{$endif ALLPACKAGES}
+
+    P:=AddPackage('odbc');
+{$ifdef ALLPACKAGES}
+    P.Directory:='odbc';
+{$endif ALLPACKAGES}
+    P.Version:='2.0.0';
+    P.SourcePath.Add('src');
+
+    T:=P.Targets.AddUnit('odbcsqldyn.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('odbcsql.inc');
+        end;
+    T:=P.Targets.AddUnit('odbcsql.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('odbcsql.inc');
+        end;
+
+{$ifndef ALLPACKAGES}
+    Run;
+    end;
+end.
+{$endif ALLPACKAGES}

+ 1709 - 0
packages/odbc/src/odbcsql.inc

@@ -0,0 +1,1709 @@
+{$ifdef fpc}
+{$mode objfpc}
+{$macro on}
+{$endif}
+
+{$h+}
+
+{$ifdef fpc}
+ // define ODBC version 3.51 by default
+{$define ODBCVER:=$0351}
+{$if ODBCVER >= $0300}
+  {$define ODBCVER3}
+{$endif}
+{$if ODBCVER >= $0350}
+  {$define ODBCVER35}
+{$endif}
+{$else fpc}
+  {$define ODBCVER3}
+  {$define ODBCVER35}
+{$endif fpc}
+
+interface
+
+uses
+{$IFDEF DYNLOADINGODBC}
+     Dynlibs,
+{$ENDIF}
+     ctypes,
+     sysutils;
+
+{$IFDEF Unix}
+  {$DEFINE extdecl:=cdecl}
+  const
+    odbclib = 'libodbc.so';
+{$ENDIF}
+{$IFDEF Windows}
+  {$DEFINE extdecl:=stdcall}
+  const
+    odbclib = 'odbc32.dll';
+{$ENDIF}
+
+(* DATA TYPES CORRESPONDENCE
+   BDE fields  ODBC types
+   ----------  ------------------
+   ftBlob      SQL_BINARY
+   ftBoolean   SQL_BIT
+   ftDate      SQL_TYPE_DATE
+   ftTime      SQL_TYPE_TIME
+   ftDateTime  SQL_TYPE_TIMESTAMP
+   ftInteger   SQL_INTEGER
+   ftSmallint  SQL_SMALLINT
+   ftFloat     SQL_DOUBLE
+   ftString    SQL_CHAR
+   ftMemo      SQL_BINARY // SQL_VARCHAR
+*)
+
+type
+  SQLCHAR      = char;
+  SQLSMALLINT  = csshort;
+  SQLUSMALLINT = cushort;
+  SQLRETURN    = SQLSMALLINT;
+  SQLHANDLE    = pointer;
+  SQLHENV      = SQLHANDLE;
+  SQLHDBC      = SQLHANDLE;
+  SQLHSTMT     = SQLHANDLE;
+  SQLHDESC     = SQLHANDLE;
+  SQLINTEGER   = clong;
+  SQLUINTEGER  = culong;
+  SQLPOINTER   = pointer;
+  SQLREAL      = cfloat;
+  SQLDOUBLE    = cdouble;
+  SQLFLOAT     = cdouble;
+  SQLHWND      = pointer;
+  PSQLCHAR      = PChar;
+  PSQLINTEGER   = ^SQLINTEGER;
+  PSQLUINTEGER  = ^SQLUINTEGER;
+  PSQLSMALLINT  = ^SQLSMALLINT;
+  PSQLUSMALLINT = ^SQLUSMALLINT;
+  PSQLREAL      = ^SQLREAL;
+  PSQLDOUBLE    = ^SQLDOUBLE;
+  PSQLFLOAT     = ^SQLFLOAT;
+  PSQLHANDLE    = ^SQLHANDLE;
+
+const
+  { SQL data type codes }
+  SQL_UNKNOWN_TYPE = 0;
+  SQL_LONGVARCHAR   =(-1);
+  SQL_BINARY        =(-2);
+  SQL_VARBINARY     =(-3);
+  SQL_LONGVARBINARY =(-4);
+  SQL_BIGINT        =(-5);
+  SQL_TINYINT       =(-6);
+  SQL_BIT           =(-7);
+  SQL_WCHAR         =(-8);
+  SQL_WVARCHAR      =(-9);
+  SQL_WLONGVARCHAR  =(-10);
+
+
+  SQL_CHAR          = 1;
+  SQL_NUMERIC       = 2;
+  SQL_DECIMAL       = 3;
+  SQL_INTEGER       = 4;
+  SQL_SMALLINT      = 5;
+  SQL_FLOAT         = 6;
+  SQL_REAL          = 7;
+  SQL_DOUBLE        = 8;
+ {$ifdef ODBCVER3}
+  SQL_DATETIME      = 9;
+ {$endif}
+  SQL_VARCHAR       = 12;
+
+ {$ifdef ODBCVER3}
+  SQL_TYPE_DATE     = 91;
+  SQL_TYPE_TIME     = 92;
+  SQL_TYPE_TIMESTAMP= 93;
+ {$endif}
+
+  SQL_DATE       = 9;
+  SQL_TIME       = 10;
+  SQL_TIMESTAMP  = 11;
+  {$if ODBCVER >= $0300}
+  SQL_INTERVAL   = 10;
+  {$endif}
+  {$if ODBCVER >= $0350}
+  SQL_GUID       = -11;
+  {$endif}
+  
+  { interval codes}
+  {$ifdef ODBCVER3}
+  SQL_CODE_YEAR             = 1;
+  SQL_CODE_MONTH            = 2;
+  SQL_CODE_DAY              = 3;
+  SQL_CODE_HOUR             = 4;
+  SQL_CODE_MINUTE           = 5;
+  SQL_CODE_SECOND           = 6;
+  SQL_CODE_YEAR_TO_MONTH    = 7;
+  SQL_CODE_DAY_TO_HOUR      = 8;
+  SQL_CODE_DAY_TO_MINUTE    = 9;
+  SQL_CODE_DAY_TO_SECOND    = 10;
+  SQL_CODE_HOUR_TO_MINUTE   = 11;
+  SQL_CODE_HOUR_TO_SECOND   = 12;
+  SQL_CODE_MINUTE_TO_SECOND = 13;
+
+  SQL_INTERVAL_YEAR             = 100 + SQL_CODE_YEAR;
+  SQL_INTERVAL_MONTH            = 100 + SQL_CODE_MONTH;
+  SQL_INTERVAL_DAY              = 100 + SQL_CODE_DAY;
+  SQL_INTERVAL_HOUR             = 100 + SQL_CODE_HOUR;
+  SQL_INTERVAL_MINUTE           = 100 + SQL_CODE_MINUTE;
+  SQL_INTERVAL_SECOND           = 100 + SQL_CODE_SECOND;
+  SQL_INTERVAL_YEAR_TO_MONTH    = 100 + SQL_CODE_YEAR_TO_MONTH;
+  SQL_INTERVAL_DAY_TO_HOUR      = 100 + SQL_CODE_DAY_TO_HOUR;
+  SQL_INTERVAL_DAY_TO_MINUTE    = 100 + SQL_CODE_DAY_TO_MINUTE;
+  SQL_INTERVAL_DAY_TO_SECOND    = 100 + SQL_CODE_DAY_TO_SECOND;
+  SQL_INTERVAL_HOUR_TO_MINUTE   = 100 + SQL_CODE_HOUR_TO_MINUTE;
+  SQL_INTERVAL_HOUR_TO_SECOND   = 100 + SQL_CODE_HOUR_TO_SECOND;
+  SQL_INTERVAL_MINUTE_TO_SECOND = 100 + SQL_CODE_MINUTE_TO_SECOND;
+  {$else}
+  SQL_INTERVAL_YEAR             = -80;
+  SQL_INTERVAL_MONTH            = -81;
+  SQL_INTERVAL_YEAR_TO_MONTH    = -82;
+  SQL_INTERVAL_DAY              = -83;
+  SQL_INTERVAL_HOUR             = -84;
+  SQL_INTERVAL_MINUTE           = -85;
+  SQL_INTERVAL_SECOND           = -86;
+  SQL_INTERVAL_DAY_TO_HOUR      = -87;
+  SQL_INTERVAL_DAY_TO_MINUTE    = -88;
+  SQL_INTERVAL_DAY_TO_SECOND    = -89;
+  SQL_INTERVAL_HOUR_TO_MINUTE   = -90;
+  SQL_INTERVAL_HOUR_TO_SECOND   = -91;
+  SQL_INTERVAL_MINUTE_TO_SECOND = -92;
+  {$endif}
+  
+  { Unicode data type codes }
+  {$ifndef ODBCVER3}
+  SQL_UNICODE             = -95;
+  SQL_UNICODE_VARCHAR     = -96;
+  SQL_UNICODE_LONGVARCHAR = -97;
+  SQL_UNICODE_CHAR        = SQL_UNICODE;
+  {$else}
+  { The previous definitions for SQL_UNICODE_ are historical and obsolete }
+  SQL_UNICODE             = SQL_WCHAR;
+  SQL_UNICODE_VARCHAR     = SQL_WVARCHAR;
+  SQL_UNICODE_LONGVARCHAR = SQL_WLONGVARCHAR;
+  SQL_UNICODE_CHAR        = SQL_WCHAR;
+  {$endif}
+
+  { C datatype to SQL datatype mapping }
+  SQL_C_CHAR   = SQL_CHAR;
+  SQL_C_LONG   = SQL_INTEGER;
+  SQL_C_SHORT  = SQL_SMALLINT;
+  SQL_C_FLOAT  = SQL_REAL;
+  SQL_C_DOUBLE = SQL_DOUBLE;
+{$ifdef ODBCVER3}
+  SQL_C_NUMERIC = SQL_NUMERIC;
+{$endif}
+  SQL_C_DEFAULT = 99;
+
+  SQL_SIGNED_OFFSET   = -20;
+  SQL_UNSIGNED_OFFSET = -22;
+
+  SQL_C_DATE      = SQL_DATE;
+  SQL_C_TIME      = SQL_TIME;
+  SQL_C_TIMESTAMP = SQL_TIMESTAMP;
+{$ifdef ODBCVER3}
+  SQL_C_TYPE_DATE       = SQL_TYPE_DATE;
+  SQL_C_TYPE_TIME       = SQL_TYPE_TIME;
+  SQL_C_TYPE_TIMESTAMP  = SQL_TYPE_TIMESTAMP;
+  SQL_C_INTERVAL_YEAR   = SQL_INTERVAL_YEAR;
+  SQL_C_INTERVAL_MONTH  = SQL_INTERVAL_MONTH;
+  SQL_C_INTERVAL_DAY    = SQL_INTERVAL_DAY;
+  SQL_C_INTERVAL_HOUR   = SQL_INTERVAL_HOUR;
+  SQL_C_INTERVAL_MINUTE = SQL_INTERVAL_MINUTE;
+  SQL_C_INTERVAL_SECOND = SQL_INTERVAL_SECOND;
+  SQL_C_INTERVAL_YEAR_TO_MONTH    = SQL_INTERVAL_YEAR_TO_MONTH;
+  SQL_C_INTERVAL_DAY_TO_HOUR      = SQL_INTERVAL_DAY_TO_HOUR;
+  SQL_C_INTERVAL_DAY_TO_MINUTE    = SQL_INTERVAL_DAY_TO_MINUTE;
+  SQL_C_INTERVAL_DAY_TO_SECOND    = SQL_INTERVAL_DAY_TO_SECOND;
+  SQL_C_INTERVAL_HOUR_TO_MINUTE   = SQL_INTERVAL_HOUR_TO_MINUTE;
+  SQL_C_INTERVAL_HOUR_TO_SECOND   = SQL_INTERVAL_HOUR_TO_SECOND;
+  SQL_C_INTERVAL_MINUTE_TO_SECOND = SQL_INTERVAL_MINUTE_TO_SECOND;
+{$endif}
+  SQL_C_BINARY = SQL_BINARY;
+  SQL_C_BIT    = SQL_BIT;
+{$ifdef ODBCVER3}
+  SQL_C_SBIGINT = SQL_BIGINT+SQL_SIGNED_OFFSET;   // SIGNED BIGINT
+  SQL_C_UBIGINT = SQL_BIGINT+SQL_UNSIGNED_OFFSET; // UNSIGNED BIGINT
+{$endif}
+  SQL_C_TINYINT  =  SQL_TINYINT;
+  SQL_C_SLONG    =  SQL_C_LONG +SQL_SIGNED_OFFSET;   // SIGNED INTEGER
+  SQL_C_SSHORT   =  SQL_C_SHORT+SQL_SIGNED_OFFSET;   // SIGNED SMALLINT
+  SQL_C_STINYINT =  SQL_TINYINT+SQL_SIGNED_OFFSET;   // SIGNED TINYINT
+  SQL_C_ULONG    =  SQL_C_LONG +SQL_UNSIGNED_OFFSET; // UNSIGNED INTEGER
+  SQL_C_USHORT   =  SQL_C_SHORT+SQL_UNSIGNED_OFFSET; // UNSIGNED SMALLINT
+  SQL_C_UTINYINT =  SQL_TINYINT+SQL_UNSIGNED_OFFSET; // UNSIGNED TINYINT
+  SQL_C_BOOKMARK = SQL_C_ULONG; // BOOKMARK
+  
+{$ifdef ODBCVER35}
+  SQL_C_GUID    = SQL_GUID;
+{$endif}
+
+  SQL_TYPE_NULL = 0;
+{$ifndef ODBCVER3}
+  SQL_TYPE_MIN  = SQL_BIT;
+  SQL_TYPE_MAX  = SQL_VARCHAR;
+{$endif}
+
+{$ifdef ODBCVER3}
+  SQL_C_VARBOOKMARK = SQL_C_BINARY;
+{$endif}
+
+ SQL_API_SQLDESCRIBEPARAM=58;
+ SQL_NO_TOTAL   = -4;
+
+type
+  SQL_DATE_STRUCT = packed record
+    Year : SQLSMALLINT;
+    Month : SQLUSMALLINT;
+    Day : SQLUSMALLINT;
+  end;
+  PSQL_DATE_STRUCT = ^SQL_DATE_STRUCT;
+
+  SQL_TIME_STRUCT = packed record
+    Hour : SQLUSMALLINT;
+    Minute : SQLUSMALLINT;
+    Second : SQLUSMALLINT;
+  end;
+  PSQL_TIME_STRUCT = ^SQL_TIME_STRUCT;
+
+  SQL_TIMESTAMP_STRUCT = packed record
+    Year :     SQLUSMALLINT;
+    Month :    SQLUSMALLINT;
+    Day :      SQLUSMALLINT;
+    Hour :     SQLUSMALLINT;
+    Minute :   SQLUSMALLINT;
+    Second :   SQLUSMALLINT;
+    Fraction : SQLUINTEGER;
+  end;
+  PSQL_TIMESTAMP_STRUCT = ^SQL_TIMESTAMP_STRUCT;
+
+const
+  SQL_NAME_LEN = 128;
+
+  SQL_OV_ODBC3          = 3;
+  SQL_OV_ODBC2          = 2;
+  SQL_ATTR_ODBC_VERSION = 200;
+
+  { Options for SQLDriverConnect }
+  SQL_DRIVER_NOPROMPT          = 0;
+  SQL_DRIVER_COMPLETE          = 1;
+  SQL_DRIVER_PROMPT            = 2;
+  SQL_DRIVER_COMPLETE_REQUIRED = 3;
+
+  { whether an attribute is a pointer or not }
+  SQL_IS_POINTER    = (-4);
+  SQL_IS_UINTEGER   = (-5);
+  SQL_IS_INTEGER    = (-6);
+  SQL_IS_USMALLINT  = (-7);
+  SQL_IS_SMALLINT   = (-8);
+  { SQLExtendedFetch "fFetchType" values }
+  SQL_FETCH_BOOKMARK = 8;
+
+  SQL_SCROLL_OPTIONS = 44;
+
+  { SQL_USE_BOOKMARKS options }
+  SQL_UB_OFF      = 0;
+  SQL_UB_ON       = 1;
+  SQL_UB_DEFAULT  = SQL_UB_OFF;
+  SQL_UB_FIXED    = SQL_UB_ON;
+  SQL_UB_VARIABLE = 2;
+
+  { SQL_SCROLL_OPTIONS masks }
+  SQL_SO_FORWARD_ONLY  = $01;
+  SQL_SO_KEYSET_DRIVEN = $02;
+  SQL_SO_DYNAMIC       = $04;
+  SQL_SO_MIXED         = $08;
+  SQL_SO_STATIC        = $10;
+
+  SQL_BOOKMARK_PERSISTENCE = 82;
+  SQL_STATIC_SENSITIVITY   = 83;
+
+  { SQL_BOOKMARK_PERSISTENCE values }
+  SQL_BP_CLOSE       = $01;
+  SQL_BP_DELETE      = $02;
+  SQL_BP_DROP        = $04;
+  SQL_BP_TRANSACTION = $08;
+  SQL_BP_UPDATE      = $10;
+  SQL_BP_OTHER_HSTMT = $20;
+  SQL_BP_SCROLL      = $40;
+
+  SQL_DYNAMIC_CURSOR_ATTRIBUTES1      = 144;
+  SQL_DYNAMIC_CURSOR_ATTRIBUTES2      = 145;
+  SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 = 146;
+  SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 = 147;
+  SQL_INDEX_KEYWORDS                  = 148;
+  SQL_INFO_SCHEMA_VIEWS               = 149;
+  SQL_KEYSET_CURSOR_ATTRIBUTES1       = 150;
+  SQL_KEYSET_CURSOR_ATTRIBUTES2       = 151;
+  SQL_STATIC_CURSOR_ATTRIBUTES1       = 167;
+  SQL_STATIC_CURSOR_ATTRIBUTES2       = 168;
+
+  { supported SQLFetchScroll FetchOrientation's }
+  SQL_CA1_NEXT          = 1;
+  SQL_CA1_ABSOLUTE      = 2;
+  SQL_CA1_RELATIVE      = 4;
+  SQL_CA1_BOOKMARK      = 8;
+
+  { supported SQLSetPos LockType's }
+  SQL_CA1_LOCK_NO_CHANGE= $40;
+  SQL_CA1_LOCK_EXCLUSIVE= $80;
+  SQL_CA1_LOCK_UNLOCK   =$100;
+
+  { supported SQLSetPos Operations }
+  SQL_CA1_POS_POSITION  = $200;
+  SQL_CA1_POS_UPDATE    = $400;
+  SQL_CA1_POS_DELETE    = $800;
+  SQL_CA1_POS_REFRESH   =$1000;
+
+  { positioned updates and deletes }
+  SQL_CA1_POSITIONED_UPDATE=$2000;
+  SQL_CA1_POSITIONED_DELETE=$4000;
+  SQL_CA1_SELECT_FOR_UPDATE=$8000;
+
+  { supported SQLBulkOperations operations }
+  SQL_CA1_BULK_ADD                =$10000;
+  SQL_CA1_BULK_UPDATE_BY_BOOKMARK =$20000;
+  SQL_CA1_BULK_DELETE_BY_BOOKMARK =$40000;
+  SQL_CA1_BULK_FETCH_BY_BOOKMARK  =$80000;
+
+  { supported values for SQL_ATTR_SCROLL_CONCURRENCY }
+  SQL_CA2_READ_ONLY_CONCURRENCY = 1;
+  SQL_CA2_LOCK_CONCURRENCY      = 2;
+  SQL_CA2_OPT_ROWVER_CONCURRENCY= 4;
+  SQL_CA2_OPT_VALUES_CONCURRENCY= 8;
+
+  { sensitivity of the cursor to its own inserts, deletes, and updates }
+  SQL_CA2_SENSITIVITY_ADDITIONS =$10;
+  SQL_CA2_SENSITIVITY_DELETIONS =$20;
+  SQL_CA2_SENSITIVITY_UPDATES   =$40;
+
+{  semantics of SQL_ATTR_MAX_ROWS }
+  SQL_CA2_MAX_ROWS_SELECT       = $80;
+  SQL_CA2_MAX_ROWS_INSERT       =$100;
+  SQL_CA2_MAX_ROWS_DELETE       =$200;
+  SQL_CA2_MAX_ROWS_UPDATE       =$400;
+  SQL_CA2_MAX_ROWS_CATALOG      =$800;
+  SQL_CA2_MAX_ROWS_AFFECTS_ALL  =(SQL_CA2_MAX_ROWS_SELECT or
+                                        SQL_CA2_MAX_ROWS_INSERT or SQL_CA2_MAX_ROWS_DELETE or
+                                        SQL_CA2_MAX_ROWS_UPDATE or SQL_CA2_MAX_ROWS_CATALOG);
+
+  { semantics of SQL_DIAG_CURSOR_ROW_COUNT }
+  SQL_CA2_CRC_EXACT             = $1000;
+  SQL_CA2_CRC_APPROXIMATE       = $2000;
+
+  {  the kinds of positioned statements that can be simulated }
+  SQL_CA2_SIMULATE_NON_UNIQUE   = $4000;
+  SQL_CA2_SIMULATE_TRY_UNIQUE   = $8000;
+  SQL_CA2_SIMULATE_UNIQUE       =$10000;
+
+  {  Operations in SQLBulkOperations }
+  SQL_ADD                     = 4;
+  SQL_SETPOS_MAX_OPTION_VALUE = SQL_ADD;
+  SQL_UPDATE_BY_BOOKMARK      = 5;
+  SQL_DELETE_BY_BOOKMARK      = 6;
+  SQL_FETCH_BY_BOOKMARK       = 7;
+
+  { Operations in SQLSetPos }
+  SQL_POSITION                = 0;
+  SQL_REFRESH                 = 1;
+  SQL_UPDATE                  = 2;
+  SQL_DELETE                  = 3;
+
+  { Lock options in SQLSetPos }
+  SQL_LOCK_NO_CHANGE          = 0;
+  SQL_LOCK_EXCLUSIVE          = 1;
+  SQL_LOCK_UNLOCK             = 2;
+
+  { SQLExtendedFetch "rgfRowStatus" element values }
+  SQL_ROW_SUCCESS           = 0;
+  SQL_ROW_DELETED           = 1;
+  SQL_ROW_UPDATED           = 2;
+  SQL_ROW_NOROW             = 3;
+  SQL_ROW_ADDED             = 4;
+  SQL_ROW_ERROR             = 5;
+  SQL_ROW_SUCCESS_WITH_INFO = 6;
+
+  SQL_ROW_PROCEED           = 0;
+  SQL_ROW_IGNORE            = 1;
+
+  SQL_MAX_DSN_LENGTH           = 32; { maximum data source name size }
+
+  SQL_MAX_OPTION_STRING_LENGTH = 256;
+
+  SQL_ODBC_CURSORS      = 110;
+  SQL_ATTR_ODBC_CURSORS = SQL_ODBC_CURSORS;
+  { SQL_ODBC_CURSORS options }
+  SQL_CUR_USE_IF_NEEDED = 0;
+  SQL_CUR_USE_ODBC      = 1;
+  SQL_CUR_USE_DRIVER    = 2;
+  SQL_CUR_DEFAULT       = SQL_CUR_USE_DRIVER;
+
+  SQL_PARAM_TYPE_UNKNOWN = 0;
+  SQL_PARAM_INPUT        = 1;
+  SQL_PARAM_INPUT_OUTPUT = 2;
+  SQL_RESULT_COL         = 3;
+  SQL_PARAM_OUTPUT       = 4;
+  SQL_RETURN_VALUE       = 5;
+
+  { special length/indicator values }
+  SQL_NULL_DATA    = (-1);
+  SQL_DATA_AT_EXEC = (-2);
+
+  SQL_SUCCESS  = 0;
+  SQL_SUCCESS_WITH_INFO = 1;
+
+  SQL_NO_DATA = 100;
+  SQL_ERROR   = (-1);
+  SQL_INVALID_HANDLE = (-2);
+
+  SQL_STILL_EXECUTING =  2;
+  SQL_NEED_DATA       = 99;
+  { flags for null-terminated string }
+  SQL_NTS  = (-3);
+
+  { maximum message length }
+  SQL_MAX_MESSAGE_LENGTH = 512;
+
+  { date/time length constants }
+{$ifdef ODBCVER3}
+  SQL_DATE_LEN      = 10;
+  SQL_TIME_LEN      =  8;  { add P+1 if precision is nonzero }
+  SQL_TIMESTAMP_LEN = 19;  { add P+1 if precision is nonzero }
+{$endif}
+
+  { handle type identifiers }
+  SQL_HANDLE_ENV   = 1;
+  SQL_HANDLE_DBC   = 2;
+  SQL_HANDLE_STMT  = 3;
+  SQL_HANDLE_DESC  = 4;
+
+{$ifdef ODBCVER3}
+  { environment attribute }
+  SQL_ATTR_OUTPUT_NTS  = 10001;
+  { connection attributes }
+  SQL_ATTR_AUTO_IPD    = 10001;
+  SQL_ATTR_METADATA_ID = 10014;
+{$endif}  { ODBCVER >= 0x0300 }
+
+  { statement attributes }
+  SQL_ATTR_APP_ROW_DESC       = 10010;
+  SQL_ATTR_APP_PARAM_DESC     = 10011;
+  SQL_ATTR_IMP_ROW_DESC       = 10012;
+  SQL_ATTR_IMP_PARAM_DESC     = 10013;
+  SQL_ATTR_CURSOR_SCROLLABLE  = (-1);
+  SQL_ATTR_CURSOR_SENSITIVITY = (-2);
+  SQL_QUERY_TIMEOUT           =0;
+  SQL_MAX_ROWS                =1;
+  SQL_NOSCAN                  =2;
+  SQL_MAX_LENGTH              =3;
+  SQL_ASYNC_ENABLE            =4;       // same as SQL_ATTR_ASYNC_ENABLE */
+  SQL_BIND_TYPE               =5;
+  SQL_CURSOR_TYPE             = 6;
+  SQL_CONCURRENCY             = 7;
+  SQL_KEYSET_SIZE             =8;
+  SQL_ROWSET_SIZE             =9;
+  SQL_SIMULATE_CURSOR         =10;
+  SQL_RETRIEVE_DATA           =11;
+  SQL_USE_BOOKMARKS           =12;
+  SQL_GET_BOOKMARK            =13;      //      GetStmtOption Only */
+  SQL_ROW_NUMBER              = 14;     //      GetStmtOption Only */
+  
+  SQL_ATTR_CURSOR_TYPE        = SQL_CURSOR_TYPE;
+  SQL_ATTR_CONCURRENCY        = SQL_CONCURRENCY;
+  SQL_ATTR_FETCH_BOOKMARK_PTR = 16;
+  SQL_ATTR_ROW_STATUS_PTR     = 25;
+  SQL_ATTR_ROWS_FETCHED_PTR   = 26;
+  SQL_AUTOCOMMIT              = 102;
+  SQL_ATTR_AUTOCOMMIT         = SQL_AUTOCOMMIT;
+
+  SQL_ATTR_ROW_NUMBER         = SQL_ROW_NUMBER;
+  SQL_TXN_ISOLATION           = 108;
+  SQL_ATTR_TXN_ISOLATION      = SQL_TXN_ISOLATION;
+  SQL_ATTR_MAX_ROWS           = SQL_MAX_ROWS;
+  SQL_ATTR_USE_BOOKMARKS      = SQL_USE_BOOKMARKS;
+
+//* connection attributes */
+  SQL_ACCESS_MODE             =101;
+//  SQL_AUTOCOMMIT              =102;
+  SQL_LOGIN_TIMEOUT           =103;
+  SQL_OPT_TRACE               =104;
+  SQL_OPT_TRACEFILE           =105;
+  SQL_TRANSLATE_DLL           =106;
+  SQL_TRANSLATE_OPTION        =107;
+//  SQL_TXN_ISOLATION           =108;
+  SQL_CURRENT_QUALIFIER       =109;
+//  SQL_ODBC_CURSORS            =110;
+  SQL_QUIET_MODE              =111;
+  SQL_PACKET_SIZE             =112;
+
+
+//* connection attributes with new names */
+  SQL_ATTR_ACCESS_MODE              =SQL_ACCESS_MODE;
+//  SQL_ATTR_AUTOCOMMIT                       =SQL_AUTOCOMMIT;
+  SQL_ATTR_CONNECTION_DEAD        =1209;        //* GetConnectAttr only */
+  SQL_ATTR_CONNECTION_TIMEOUT   =113;
+  SQL_ATTR_CURRENT_CATALOG        =SQL_CURRENT_QUALIFIER;
+  SQL_ATTR_DISCONNECT_BEHAVIOR=114;
+  SQL_ATTR_ENLIST_IN_DTC                  =1207;
+  SQL_ATTR_ENLIST_IN_XA             =1208;
+  SQL_ATTR_LOGIN_TIMEOUT                  =SQL_LOGIN_TIMEOUT;
+//  SQL_ATTR_ODBC_CURSORS             =SQL_ODBC_CURSORS;
+  SQL_ATTR_PACKET_SIZE              =SQL_PACKET_SIZE;
+  SQL_ATTR_QUIET_MODE                       =SQL_QUIET_MODE;
+  SQL_ATTR_TRACE                                      =SQL_OPT_TRACE;
+  SQL_ATTR_TRACEFILE                        =SQL_OPT_TRACEFILE;
+  SQL_ATTR_TRANSLATE_LIB                  =SQL_TRANSLATE_DLL;
+  SQL_ATTR_TRANSLATE_OPTION       =SQL_TRANSLATE_OPTION;
+//  SQL_ATTR_TXN_ISOLATION                  =SQL_TXN_ISOLATION;
+
+//* SQL_ACCESS_MODE options */
+  SQL_MODE_READ_WRITE         =0;
+  SQL_MODE_READ_ONLY          =1;
+  SQL_MODE_DEFAULT            =SQL_MODE_READ_WRITE;
+
+  //* SQL_AUTOCOMMIT options */
+  SQL_AUTOCOMMIT_OFF          = 0;
+  SQL_AUTOCOMMIT_ON           = 1;
+  SQL_AUTOCOMMIT_DEFAULT      = SQL_AUTOCOMMIT_ON;
+  { SQL_ATTR_CURSOR_SCROLLABLE values }
+  SQL_NONSCROLLABLE              = 0;
+  SQL_SCROLLABLE                 = 1;
+  { SQL_CURSOR_TYPE options }
+  SQL_CURSOR_FORWARD_ONLY     = 0;
+  SQL_CURSOR_KEYSET_DRIVEN    = 1;
+  SQL_CURSOR_DYNAMIC          = 2;
+  SQL_CURSOR_STATIC           = 3;
+  SQL_CURSOR_TYPE_DEFAULT     = SQL_CURSOR_FORWARD_ONLY;{ Default value }
+
+  { SQL_CONCURRENCY options }
+  SQL_CONCUR_READ_ONLY = 1;
+  SQL_CONCUR_LOCK      = 2;
+  SQL_CONCUR_ROWVER    = 3;
+  SQL_CONCUR_VALUES    = 4;
+  SQL_CONCUR_DEFAULT   = SQL_CONCUR_READ_ONLY; { Default value }
+
+   { identifiers of fields in the SQL descriptor }
+  {$ifdef ODBCVER3}
+  SQL_DESC_COUNT                  = 1001;
+  SQL_DESC_TYPE                   = 1002;
+  SQL_DESC_LENGTH                 = 1003;
+  SQL_DESC_OCTET_LENGTH_PTR       = 1004;
+  SQL_DESC_PRECISION              = 1005;
+  SQL_DESC_SCALE                  = 1006;
+  SQL_DESC_DATETIME_INTERVAL_CODE = 1007;
+  SQL_DESC_NULLABLE               = 1008;
+  SQL_DESC_INDICATOR_PTR          = 1009;
+  SQL_DESC_DATA_PTR               = 1010;
+  SQL_DESC_NAME                   = 1011;
+  SQL_DESC_UNNAMED                = 1012;
+  SQL_DESC_OCTET_LENGTH           = 1013;
+  SQL_DESC_ALLOC_TYPE             = 1099;
+  {$endif}
+
+  { identifiers of fields in the diagnostics area }
+{$ifdef ODBCVER3}
+  SQL_DIAG_RETURNCODE            = 1;
+  SQL_DIAG_NUMBER                = 2;
+  SQL_DIAG_ROW_COUNT             = 3;
+  SQL_DIAG_SQLSTATE              = 4;
+  SQL_DIAG_NATIVE                = 5;
+  SQL_DIAG_MESSAGE_TEXT          = 6;
+  SQL_DIAG_DYNAMIC_FUNCTION      = 7;
+  SQL_DIAG_CLASS_ORIGIN          = 8;
+  SQL_DIAG_SUBCLASS_ORIGIN       = 9;
+  SQL_DIAG_CONNECTION_NAME       = 10;
+  SQL_DIAG_SERVER_NAME           = 11;
+  SQL_DIAG_DYNAMIC_FUNCTION_CODE = 12;
+{$endif}
+
+  { dynamic function codes }
+{$ifdef ODBCVER3}
+  SQL_DIAG_ALTER_TABLE           =  4;
+  SQL_DIAG_CREATE_INDEX          = (-1);
+  SQL_DIAG_CREATE_TABLE          = 77;
+  SQL_DIAG_CREATE_VIEW           = 84;
+  SQL_DIAG_DELETE_WHERE          = 19;
+  SQL_DIAG_DROP_INDEX            = (-2);
+  SQL_DIAG_DROP_TABLE            = 32;
+  SQL_DIAG_DROP_VIEW             = 36;
+  SQL_DIAG_DYNAMIC_DELETE_CURSOR = 38;
+  SQL_DIAG_DYNAMIC_UPDATE_CURSOR = 81;
+  SQL_DIAG_GRANT                 = 48;
+  SQL_DIAG_INSERT                = 50;
+  SQL_DIAG_REVOKE                = 59;
+  SQL_DIAG_SELECT_CURSOR         = 85;
+  SQL_DIAG_UNKNOWN_STATEMENT     =  0;
+  SQL_DIAG_UPDATE_WHERE          = 82;
+{$endif}  { ODBCVER >= 0x0300 }
+
+  { Statement attribute values for cursor sensitivity }
+{$ifdef ODBCVER3}
+  SQL_UNSPECIFIED     = 0;
+  SQL_INSENSITIVE     = 1;
+  SQL_SENSITIVE       = 2;
+{$endif}
+
+  { GetTypeInfo() request for all data types }
+  SQL_ALL_TYPES       = 0;
+
+  { Default conversion code for SQLBindCol(), SQLBindParam() and SQLGetData() }
+{$ifdef ODBCVER3}
+  SQL_DEFAULT         = 99;
+{$endif}
+
+  { SQLGetData() code indicating that the application row descriptor
+    specifies the data type }
+{$ifdef ODBCVER3}
+  SQL_ARD_TYPE      = (-99);
+{$endif}
+
+  { SQL date/time type subcodes }
+{$ifdef ODBCVER3}
+  SQL_CODE_DATE       = 1;
+  SQL_CODE_TIME       = 2;
+  SQL_CODE_TIMESTAMP  = 3;
+{$endif}
+
+  { CLI option values }
+{$ifdef ODBCVER3}
+  SQL_FALSE           = 0;
+  SQL_TRUE            = 1;
+{$endif}
+
+     { values of NULLABLE field in descriptor }
+  SQL_NO_NULLS = 0;
+  SQL_NULLABLE = 1;
+
+{ Value returned by SQLGetTypeInfo() to denote that it is
+ not known whether or not a data type supports null values. }
+
+  SQL_NULLABLE_UNKNOWN = 2;
+{
+/* Values returned by SQLGetTypeInfo() to show WHERE clause
+ * supported
+
+#if (ODBCVER >= 0x0300)
+#define SQL_PRED_NONE     0
+#define SQL_PRED_CHAR     1
+#define SQL_PRED_BASIC    2
+#endif
+
+/* values of UNNAMED field in descriptor */
+#if (ODBCVER >= 0x0300)
+#define SQL_NAMED           0
+#define SQL_UNNAMED         1
+#endif
+
+/* values of ALLOC_TYPE field in descriptor */
+#if (ODBCVER >= 0x0300)
+#define SQL_DESC_ALLOC_AUTO 1
+#define SQL_DESC_ALLOC_USER 2
+#endif
+}
+  { FreeStmt() options }
+  SQL_CLOSE        = 0;
+  SQL_DROP         = 1;
+  SQL_UNBIND       = 2;
+  SQL_RESET_PARAMS = 3;
+
+  { Codes used for FetchOrientation in SQLFetchScroll(),
+   and in SQLDataSources() }
+  SQL_FETCH_NEXT     = 1;
+  SQL_FETCH_FIRST    = 2;
+{$ifdef odbcver3}
+  SQL_FETCH_FIRST_USER = 31;
+  SQL_FETCH_FIRST_SYSTEM = 32;
+{$endif}
+
+  { Other codes used for FetchOrientation in SQLFetchScroll() }
+  SQL_FETCH_LAST     = 3;
+  SQL_FETCH_PRIOR    = 4;
+  SQL_FETCH_ABSOLUTE = 5;
+  SQL_FETCH_RELATIVE = 6;
+{
+/* SQLEndTran() options */
+#define SQL_COMMIT          0
+#define SQL_ROLLBACK        1}
+
+//* null handles returned by SQLAllocHandle() */
+  SQL_NULL_HENV       = SQLHENV(0);
+  SQL_NULL_HDBC       = SQLHDBC(0);
+  SQL_NULL_HSTMT      = SQLHSTMT(0);
+{$ifdef odbcver3}
+  SQL_NULL_HDESC      = SQLHDESC(0);
+{$endif}
+
+//* null handle used in place of parent handle when allocating HENV */
+  SQL_NULL_HANDLE = SQLHANDLE(0);
+
+//* Values that may appear in the result set of SQLSpecialColumns() */
+  SQL_SCOPE_CURROW      = 0;
+  SQL_SCOPE_TRANSACTION = 1;
+  SQL_SCOPE_SESSION     = 2;
+
+//* Column types and scopes in SQLSpecialColumns.  */
+  SQL_BEST_ROWID        = 1;
+  SQL_ROWVER            = 2;
+
+{
+#define SQL_PC_UNKNOWN      0
+#if (ODBCVER >= 0x0300)
+#define SQL_PC_NON_PSEUDO   1
+#endif
+#define SQL_PC_PSEUDO       2
+}
+
+//* Reserved value for the IdentifierType argument of SQLSpecialColumns() */
+{$ifdef ODBCVER3}
+  SQL_ROW_IDENTIFIER = 1;
+{$endif}
+
+//* Reserved values for UNIQUE argument of SQLStatistics() */
+  SQL_INDEX_UNIQUE   = 0;
+  SQL_INDEX_ALL      = 1;
+
+//* Reserved values for RESERVED argument of SQLStatistics() */
+  SQL_QUICK   = 0;
+  SQL_ENSURE  = 1;
+
+//* Values that may appear in the result set of SQLStatistics() */
+  SQL_TABLE_STAT      = 0;
+  SQL_INDEX_CLUSTERED = 1;
+  SQL_INDEX_HASHED    = 2;
+  SQL_INDEX_OTHER     = 3;
+//  SQL_INDEX_BTREE     = ???;
+//  SQL_INDEX_CONTENT   = ???;
+
+{
+/* Information requested by SQLGetInfo() */
+#if (ODBCVER >= 0x0300)
+#define SQL_MAX_DRIVER_CONNECTIONS           0
+#define SQL_MAXIMUM_DRIVER_CONNECTIONS          SQL_MAX_DRIVER_CONNECTIONS
+#define SQL_MAX_CONCURRENT_ACTIVITIES        1
+#define SQL_MAXIMUM_CONCURRENT_ACTIVITIES       SQL_MAX_CONCURRENT_ACTIVITIES
+#endif
+#define SQL_DATA_SOURCE_NAME                 2
+#define SQL_FETCH_DIRECTION                  8
+#define SQL_SERVER_NAME                     13
+#define SQL_SEARCH_PATTERN_ESCAPE           14
+#define SQL_DBMS_NAME                       17
+#define SQL_DBMS_VER                        18
+#define SQL_ACCESSIBLE_TABLES               19
+#define SQL_ACCESSIBLE_PROCEDURES               20
+#define SQL_CURSOR_COMMIT_BEHAVIOR          23
+#define SQL_DATA_SOURCE_READ_ONLY           25
+#define SQL_DEFAULT_TXN_ISOLATION           26
+#define SQL_IDENTIFIER_CASE                 28
+#define SQL_IDENTIFIER_QUOTE_CHAR           29
+#define SQL_MAX_COLUMN_NAME_LEN             30
+#define SQL_MAXIMUM_COLUMN_NAME_LENGTH          SQL_MAX_COLUMN_NAME_LEN
+#define SQL_MAX_CURSOR_NAME_LEN             31
+#define SQL_MAXIMUM_CURSOR_NAME_LENGTH          SQL_MAX_CURSOR_NAME_LEN
+#define SQL_MAX_SCHEMA_NAME_LEN             32
+#define SQL_MAXIMUM_SCHEMA_NAME_LENGTH          SQL_MAX_SCHEMA_NAME_LEN
+#define SQL_MAX_CATALOG_NAME_LEN            34
+#define SQL_MAXIMUM_CATALOG_NAME_LENGTH         SQL_MAX_CATALOG_NAME_LEN
+#define SQL_MAX_TABLE_NAME_LEN              35
+}
+  SQL_SCROLL_CONCURRENCY              = 43;
+  SQL_TXN_CAPABLE                     = 46;
+  SQL_TRANSACTION_CAPABLE              = SQL_TXN_CAPABLE;
+  SQL_USER_NAME                       = 47;
+  SQL_TXN_ISOLATION_OPTION            = 72;
+  SQL_TRANSACTION_ISOLATION_OPTION    = SQL_TXN_ISOLATION_OPTION;
+{
+#define SQL_INTEGRITY                       73
+#define SQL_GETDATA_EXTENSIONS              81
+#define SQL_NULL_COLLATION                  85
+#define SQL_ALTER_TABLE                     86
+#define SQL_ORDER_BY_COLUMNS_IN_SELECT      90
+#define SQL_SPECIAL_CHARACTERS              94
+#define SQL_MAX_COLUMNS_IN_GROUP_BY         97
+#define SQL_MAXIMUM_COLUMNS_IN_GROUP_BY         SQL_MAX_COLUMNS_IN_GROUP_BY
+#define SQL_MAX_COLUMNS_IN_INDEX            98
+#define SQL_MAXIMUM_COLUMNS_IN_INDEX            SQL_MAX_COLUMNS_IN_INDEX
+#define SQL_MAX_COLUMNS_IN_ORDER_BY         99
+#define SQL_MAXIMUM_COLUMNS_IN_ORDER_BY         SQL_MAX_COLUMNS_IN_ORDER_BY
+#define SQL_MAX_COLUMNS_IN_SELECT          100
+#define SQL_MAXIMUM_COLUMNS_IN_SELECT      SQL_MAX_COLUMNS_IN_SELECT
+#define SQL_MAX_COLUMNS_IN_TABLE           101
+#define SQL_MAX_INDEX_SIZE                 102
+#define SQL_MAXIMUM_INDEX_SIZE                     SQL_MAX_INDEX_SIZE
+#define SQL_MAX_ROW_SIZE                   104
+#define SQL_MAXIMUM_ROW_SIZE                       SQL_MAX_ROW_SIZE
+#define SQL_MAX_STATEMENT_LEN              105
+#define SQL_MAXIMUM_STATEMENT_LENGTH       SQL_MAX_STATEMENT_LEN
+#define SQL_MAX_TABLES_IN_SELECT           106
+#define SQL_MAXIMUM_TABLES_IN_SELECT       SQL_MAX_TABLES_IN_SELECT
+#define SQL_MAX_USER_NAME_LEN              107
+#define SQL_MAXIMUM_USER_NAME_LENGTH       SQL_MAX_USER_NAME_LEN}
+{$ifdef ODBCVER3}
+  SQL_OJ_CAPABILITIES         = 115;
+  SQL_OUTER_JOIN_CAPABILITIES = SQL_OJ_CAPABILITIES;
+{$endif} { ODBCVER >= 0x0300 }
+
+{$ifdef ODBCVER3}
+  SQL_XOPEN_CLI_YEAR            = 10000;
+  SQL_CURSOR_SENSITIVITY        = 10001;
+  SQL_DESCRIBE_PARAMETER        = 10002;
+  SQL_CATALOG_NAME              = 10003;
+  SQL_COLLATION_SEQ             = 10004;
+  SQL_MAX_IDENTIFIER_LEN        = 10005;
+  SQL_MAXIMUM_IDENTIFIER_LENGTH = SQL_MAX_IDENTIFIER_LEN;
+{$endif} { ODBCVER >= 0x0300 }
+
+{/* SQL_ALTER_TABLE bitmasks */
+#if (ODBCVER >= 0x0200)
+#define SQL_AT_ADD_COLUMN                       0x00000001L
+#define SQL_AT_DROP_COLUMN                      0x00000002L
+#endif /* ODBCVER >= 0x0200 */
+
+#if (ODBCVER >= 0x0300)
+#define SQL_AT_ADD_CONSTRAINT                   0x00000008L
+
+/* The following bitmasks are ODBC extensions and defined in sqlext.h
+*#define        SQL_AT_COLUMN_SINGLE                                    0x00000020L
+*#define        SQL_AT_ADD_COLUMN_DEFAULT                               0x00000040L
+*#define        SQL_AT_ADD_COLUMN_COLLATION                             0x00000080L
+*#define        SQL_AT_SET_COLUMN_DEFAULT                               0x00000100L
+*#define        SQL_AT_DROP_COLUMN_DEFAULT                              0x00000200L
+*#define        SQL_AT_DROP_COLUMN_CASCADE                              0x00000400L
+*#define        SQL_AT_DROP_COLUMN_RESTRICT                             0x00000800L
+*#define SQL_AT_ADD_TABLE_CONSTRAINT                            0x00001000L
+*#define SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE           0x00002000L
+*#define SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT          0x00004000L
+*#define SQL_AT_CONSTRAINT_NAME_DEFINITION                      0x00008000L
+*#define SQL_AT_CONSTRAINT_INITIALLY_DEFERRED           0x00010000L
+*#define SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE          0x00020000L
+*#define SQL_AT_CONSTRAINT_DEFERRABLE                           0x00040000L
+*#define SQL_AT_CONSTRAINT_NON_DEFERRABLE                       0x00080000L
+
+#endif  /* ODBCVER >= 0x0300 */
+
+
+/* SQL_ASYNC_MODE values */
+#if (ODBCVER >= 0x0300)
+#define SQL_AM_NONE                         0
+#define SQL_AM_CONNECTION                   1
+#define SQL_AM_STATEMENT                    2
+#endif
+
+/* SQL_CURSOR_COMMIT_BEHAVIOR values */
+#define SQL_CB_DELETE                       0
+#define SQL_CB_CLOSE                        1
+#define SQL_CB_PRESERVE                     2
+
+/* SQL_FETCH_DIRECTION bitmasks */
+#define SQL_FD_FETCH_NEXT                   0x00000001L
+#define SQL_FD_FETCH_FIRST                  0x00000002L
+#define SQL_FD_FETCH_LAST                   0x00000004L
+#define SQL_FD_FETCH_PRIOR                  0x00000008L
+#define SQL_FD_FETCH_ABSOLUTE               0x00000010L
+#define SQL_FD_FETCH_RELATIVE               0x00000020L
+
+/* SQL_GETDATA_EXTENSIONS bitmasks */
+#define SQL_GD_ANY_COLUMN                   0x00000001L
+#define SQL_GD_ANY_ORDER                    0x00000002L
+
+/* SQL_IDENTIFIER_CASE values */
+#define SQL_IC_UPPER                        1
+#define SQL_IC_LOWER                        2
+#define SQL_IC_SENSITIVE                    3
+#define SQL_IC_MIXED                        4
+
+/* SQL_OJ_CAPABILITIES bitmasks */
+/* NB: this means 'outer join', not what  you may be thinking */
+
+
+#if (ODBCVER >= 0x0201)
+#define SQL_OJ_LEFT                         0x00000001L
+#define SQL_OJ_RIGHT                        0x00000002L
+#define SQL_OJ_FULL                         0x00000004L
+#define SQL_OJ_NESTED                       0x00000008L
+#define SQL_OJ_NOT_ORDERED                  0x00000010L
+#define SQL_OJ_INNER                        0x00000020L
+#define SQL_OJ_ALL_COMPARISON_OPS           0x00000040L
+#endif
+}
+{ SQL_SCROLL_CONCURRENCY bitmasks }
+  SQL_SCCO_READ_ONLY                 = 1;
+  SQL_SCCO_LOCK                      = 2;
+  SQL_SCCO_OPT_ROWVER                = 4;
+  SQL_SCCO_OPT_VALUES                = 8;
+
+//* SQL_TXN_CAPABLE values */
+   SQL_TC_NONE                       = 0;
+   SQL_TC_DML                        = 1;
+   SQL_TC_ALL                        = 2;
+   SQL_TC_DDL_COMMIT                 = 3;
+   SQL_TC_DDL_IGNORE                 = 4;
+
+//* SQL_TXN_ISOLATION_OPTION bitmasks */
+   SQL_TXN_READ_UNCOMMITTED         = 1;
+   SQL_TRANSACTION_READ_UNCOMMITTED = SQL_TXN_READ_UNCOMMITTED;
+   SQL_TXN_READ_COMMITTED           = 2;
+   SQL_TRANSACTION_READ_COMMITTED   = SQL_TXN_READ_COMMITTED;
+   SQL_TXN_REPEATABLE_READ          = 4;
+   SQL_TRANSACTION_REPEATABLE_READ  = SQL_TXN_REPEATABLE_READ;
+   SQL_TXN_SERIALIZABLE             = 8;
+   SQL_TRANSACTION_SERIALIZABLE     = SQL_TXN_SERIALIZABLE;
+{
+/* SQL_NULL_COLLATION values */
+#define SQL_NC_HIGH                         0
+#define SQL_NC_LOW                          1
+
+}
+
+{ SQL_STATIC_SENSITIVITY values }
+
+  SQL_SS_ADDITIONS = 1;
+  SQL_SS_DELETIONS = 2;
+  SQL_SS_UPDATES   = 4;
+
+{ SQLColAttributes defines }
+  SQL_COLUMN_COUNT               = 0;
+  SQL_COLUMN_NAME                = 1;
+  SQL_COLUMN_TYPE                = 2;
+  SQL_COLUMN_LENGTH              = 3;
+  SQL_COLUMN_PRECISION           = 4;
+  SQL_COLUMN_SCALE               = 5;
+  SQL_COLUMN_DISPLAY_SIZE        = 6;
+  SQL_COLUMN_NULLABLE            = 7;
+  SQL_COLUMN_UNSIGNED            = 8;
+  SQL_COLUMN_MONEY               = 9;
+  SQL_COLUMN_UPDATABLE           = 10;
+  SQL_COLUMN_AUTO_INCREMENT      = 11;
+  SQL_COLUMN_CASE_SENSITIVE      = 12;
+  SQL_COLUMN_SEARCHABLE          = 13;
+  SQL_COLUMN_TYPE_NAME           = 14;
+  SQL_COLUMN_TABLE_NAME          = 15;
+  SQL_COLUMN_OWNER_NAME          = 16;
+  SQL_COLUMN_QUALIFIER_NAME      = 17;
+  SQL_COLUMN_LABEL               = 18;
+  SQL_COLATT_OPT_MAX             = SQL_COLUMN_LABEL;
+{$ifdef ODBCVER3}
+  SQL_COLUMN_DRIVER_START        = 1000;
+{$endif} { ODBCVER >= 0x0300 }
+
+ { SQLColAttribute defines }
+{$ifdef ODBCVER3}
+  SQL_DESC_ARRAY_SIZE	     = 20;
+  SQL_DESC_ARRAY_STATUS_PTR  = 21;
+  SQL_DESC_AUTO_UNIQUE_VALUE = SQL_COLUMN_AUTO_INCREMENT;
+  SQL_DESC_BASE_COLUMN_NAME  = 22;
+  SQL_DESC_BASE_TABLE_NAME   = 23;
+  SQL_DESC_BIND_OFFSET_PTR   = 24;
+  SQL_DESC_BIND_TYPE         = 25;
+  SQL_DESC_CASE_SENSITIVE    = SQL_COLUMN_CASE_SENSITIVE;
+  SQL_DESC_CATALOG_NAME      = SQL_COLUMN_QUALIFIER_NAME;
+  SQL_DESC_CONCISE_TYPE      = SQL_COLUMN_TYPE;
+  SQL_DESC_DATETIME_INTERVAL_PRECISION = 26;
+  SQL_DESC_DISPLAY_SIZE      = SQL_COLUMN_DISPLAY_SIZE;
+  SQL_DESC_FIXED_PREC_SCALE  = SQL_COLUMN_MONEY;
+  SQL_DESC_LABEL             = SQL_COLUMN_LABEL;
+  SQL_DESC_LITERAL_PREFIX    = 27;
+  SQL_DESC_LITERAL_SUFFIX    = 28;
+  SQL_DESC_LOCAL_TYPE_NAME   = 29;
+  SQL_DESC_MAXIMUM_SCALE     = 30;
+  SQL_DESC_MINIMUM_SCALE     = 31;
+  SQL_DESC_NUM_PREC_RADIX    = 32;
+  SQL_DESC_PARAMETER_TYPE    = 33;
+  SQL_DESC_ROWS_PROCESSED_PTR = 34;
+  SQL_DESC_SCHEMA_NAME       = SQL_COLUMN_OWNER_NAME;
+  SQL_DESC_SEARCHABLE        = SQL_COLUMN_SEARCHABLE;
+  SQL_DESC_TYPE_NAME         = SQL_COLUMN_TYPE_NAME;
+  SQL_DESC_TABLE_NAME        = SQL_COLUMN_TABLE_NAME;
+  SQL_DESC_UNSIGNED          = SQL_COLUMN_UNSIGNED;
+  SQL_DESC_UPDATABLE         = SQL_COLUMN_UPDATABLE;
+{$endif}
+
+//* SQLEndTran() options */
+  SQL_COMMIT    = 0;
+  SQL_ROLLBACK  = 1;
+
+  SQL_ATTR_ROW_ARRAY_SIZE = 27;
+
+//* SQLConfigDataSource() options */
+  ODBC_ADD_DSN = 1;
+  ODBC_CONFIG_DSN = 2;
+  ODBC_REMOVE_DSN = 3;
+  ODBC_ADD_SYS_DSN = 4;
+  ODBC_CONFIG_SYS_DSN = 5;
+  ODBC_REMOVE_SYS_DSN = 6;
+
+{$ifdef DYNLOADINGODBC}
+
+type   tSQLAllocHandle =function(HandleType: SQLSMALLINT;
+           InputHandle:SQLHANDLE;Var OutputHandlePtr: SQLHANDLE):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   tSQLSetEnvAttr=function (EnvironmentHandle:SQLHENV;
+           Attribute:SQLINTEGER;Value:SQLPOINTER;
+           StringLength:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLFreeHandle=function (HandleType:SQLSMALLINT;
+           Handle:SQLHANDLE):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLGetDiagRec=function (HandleType:SQLSMALLINT;
+           Handle:SQLHANDLE;RecNumber:SQLSMALLINT;
+           Sqlstate:PSQLCHAR;var NativeError:SQLINTEGER;
+           MessageText:PSQLCHAR;BufferLength:SQLSMALLINT;
+           var TextLength:SQLSMALLINT ):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+           
+type   TSQLGetDiagField=function (HandleType:SQLSMALLINT;
+           Handle:SQLHANDLE;RecNumber:SQLSMALLINT;
+           DiagIdentifier:SQLSMALLINT;DiagInfoPtr:SQLPOINTER;
+           BufferLength:SQLSMALLINT;var StringLengthPtr:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLConnect=function (ConnectionHandle:SQLHDBC;
+           ServerName:PSQLCHAR;NameLength1:SQLSMALLINT;
+           UserName:PSQLCHAR;NameLength2:SQLSMALLINT;
+           Authentication:PSQLCHAR;NameLength3:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLDisconnect=function(ConnectionHandle:SQLHDBC):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLDriverConnect=function (hdbc: SQLHDBC;
+           hwnd: SQLHWND;szCsin: PChar;
+           szCLen: SQLSMALLINT;szCsout: PChar;
+           cbCSMax: SQLSMALLINT;Var cbCsOut: SQLSMALLINT;
+           f: SQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLExecDirect=function (StatementHandle:SQLHSTMT;
+           StatementText:PSQLCHAR;TextLength:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLPrepare=function (StatementHandle:SQLHSTMT;
+           StatementText:PSQLCHAR;TextLength:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLCloseCursor=function (StatementHandle:SQLHSTMT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLExecute=function (StatementHandle:SQLHSTMT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLFetch=function (StatementHandle:SQLHSTMT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLNumResultCols=function (StatementHandle:SQLHSTMT;
+           var ColumnCount:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLDescribeCol=function (StatementHandle:SQLHSTMT;
+           ColumnNumber:SQLUSMALLINT;ColumnName:PSQLCHAR;
+           BufferLength:SQLSMALLINT;var NameLength:SQLSMALLINT;
+           var DataType:SQLSMALLINT;var ColumnSize:SQLUINTEGER;
+           var DecimalDigits:SQLSMALLINT;var Nullable:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLFetchScroll=function (StatementHandle:SQLHSTMT;
+           FetchOrientation:SQLSMALLINT;FetchOffset:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLExtendedFetch=function (hstmt:SQLHSTMT;
+           fFetchType:SQLUSMALLINT;irow:SQLINTEGER;
+           pcrow:PSQLUINTEGER;rgfRowStatus:PSQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLGetData=function (StatementHandle:SQLHSTMT;
+           ColumnNumber:SQLUSMALLINT;TargetType:SQLSMALLINT;
+           TargetValue:SQLPOINTER;BufferLength:SQLINTEGER;
+           StrLen_or_Ind:PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLSetStmtAttr=function (StatementHandle:SQLHSTMT;
+           Attribute:SQLINTEGER;Value:SQLPOINTER;
+           StringLength:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLGetStmtAttr=function (StatementHandle:SQLHSTMT;
+           Attribute:SQLINTEGER;Value:SQLPOINTER;
+           BufferLength:SQLINTEGER;StringLength:PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   tSQLGetInfo=function (ConnectionHandle:SQLHDBC;
+           InfoType:SQLUSMALLINT;InfoValue:SQLPOINTER;
+           BufferLength:SQLSMALLINT;StringLength:PSQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLBulkOperations=function (StatementHandle: SQLHSTMT;
+           Operation:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLPutData=function (StatementHandle:SQLHSTMT;
+           Data:SQLPOINTER;StrLen_or_Ind:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLBindCol=function (StatementHandle:SQLHSTMT;
+           ColumnNumber:SQLUSMALLINT;TargetType:SQLSMALLINT;
+           TargetValue:SQLPOINTER;BufferLength:SQLINTEGER;
+           StrLen_or_Ind:PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLSetPos=function (hstmt:SQLHSTMT;
+           irow:SQLUSMALLINT;fOption:SQLUSMALLINT;
+           fLock:SQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLDataSources=function (EnvironmentHandle:SQLHENV;
+           Direction:SQLUSMALLINT;ServerName:PSQLCHAR;
+           BufferLength1:SQLSMALLINT;NameLength1:PSQLSMALLINT;
+           Description:PSQLCHAR;BufferLength2:SQLSMALLINT;
+           NameLength2:PSQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLDrivers=function (EnvironmentHandle:SQLHENV;
+           Direction:SQLUSMALLINT;DriverDescription:PSQLCHAR;
+           BufferLength1:SQLSMALLINT;DescriptionLength1:PSQLSMALLINT;
+           DriverAttributes:PSQLCHAR;BufferLength2:SQLSMALLINT;
+           AttributesLength2:PSQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLSetConnectAttr=function (ConnectionHandle:SQLHDBC;
+           Attribute:SQLINTEGER; Value:SQLPOINTER;
+           StringLength:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLGetCursorName=function (StatementHandle:SQLHSTMT;
+           CursorName:PSQLCHAR; BufferLength:SQLSMALLINT;
+           NameLength:PSQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLSetCursorName=function (StatementHandle:SQLHSTMT;
+           CursorName:PSQLCHAR; NameLength:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLRowCount=function (StatementHandle:SQLHSTMT;
+           Var RowCount:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLBindParameter=function (hstmt:SQLHSTMT;
+           ipar:SQLUSMALLINT;fParamType:SQLSMALLINT;
+           fCType:SQLSMALLINT;fSqlType:SQLSMALLINT;
+           cbColDef:SQLUINTEGER;ibScale:SQLSMALLINT;
+           rgbValue:SQLPOINTER;cbValueMax:SQLINTEGER;
+           pcbValue:PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLFreeStmt=function (StatementHandle:SQLHSTMT;
+           Option:SQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLColAttribute=function (StatementHandle:SQLHSTMT;
+           ColumnNumber:SQLUSMALLINT;FieldIdentifier:SQLUSMALLINT;
+           CharacterAttribute:PSQLCHAR;BufferLength:SQLSMALLINT;
+           StringLength:PSQLSMALLINT;NumericAttribute:SQLPOINTER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLEndTran=function (HandleType:SQLSMALLINT;
+           Handle:SQLHANDLE;CompletionType:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLTables=function ( hstmt : SQLHSTMT;
+           szTableQualifier : PSQLCHAR;cbTableQualifier : SQLSMALLINT;
+           szTableOwner : PSQLCHAR;cbTableOwner : SQLSMALLINT;
+           szTableName : PSQLCHAR;cbTableName : SQLSMALLINT;
+           szTableType : PSQLCHAR;cbTableType : SQLSMALLINT ) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLColumns=function ( hstmt : SQLHSTMT;
+           szTableQualifier : PSQLCHAR;cbTableQualifier : SQLSMALLINT;
+           szTableOwner : PSQLCHAR;cbTableOwner : SQLSMALLINT;
+           szTableName : PSQLCHAR;cbTableName : SQLSMALLINT;
+           szColumnName : PSQLCHAR;cbColumnName : SQLSMALLINT ) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLSpecialColumns=function (StatementHandle:SQLHSTMT;
+           IdentifierType:SQLUSMALLINT;CatalogName:PSQLCHAR;
+           NameLength1:SQLSMALLINT;SchemaName:PSQLCHAR;
+           NameLength2:SQLSMALLINT;TableName:PSQLCHAR;
+           NameLength3:SQLSMALLINT;Scope:SQLUSMALLINT;
+           Nullable:SQLUSMALLINT) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLProcedures=function ( hstmt : SQLHSTMT;
+           szTableQualifier : PSQLCHAR;cbTableQualifier : SQLSMALLINT;
+           szTableOwner : PSQLCHAR;cbTableOwner : SQLSMALLINT;
+           szTableName : PSQLCHAR;cbTableName : SQLSMALLINT ) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+type   TSQLPrimaryKeys=function (hstmt : SQLHSTMT;
+           CatalogName:PSQLCHAR;NameLength1:SQLSMALLINT;
+           SchemaName:PSQLCHAR;NameLength2:SQLSMALLINT;
+           TableName:PSQLCHAR;NameLength3:SQLSMALLINT ):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+type   TSQLProcedureColumns = function(hstmt: SQLHSTMT;
+           CatalogName: PSQLCHAR; NameLength1: SQLSMALLINT;
+           SchemaName: PSQLCHAR; NameLength2: SQLSMALLINT;
+           ProcName: PSQLCHAR; NameLength3: SQLSMALLINT;
+           ColumnName: PSQLCHAR; NameLength4: SQLSMALLINT): SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif};
+type   TSQLStatistics = function (hstmt: SQLHSTMT;
+           CatalogName:PSQLCHAR; NameLength1:SQLSMALLINT;
+           SchemaName:PSQLCHAR; NameLength2:SQLSMALLINT;
+           TableName:PSQLCHAR; NameLength3:SQLSMALLINT;
+           Unique:SQLUSMALLINT;
+           Reserved:SQLUSMALLINT): SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif};
+
+var    SQLAllocHandle:tSQLAllocHandle;
+var    SQLSetEnvAttr:tSQLSetEnvAttr;
+var    SQLFreeHandle:tSQLFreeHandle;
+var    SQLGetInfo:tSQLGetInfo;
+var    SQLProcedures:TSQLProcedures;
+var    SQLColumns:TSQLColumns;
+var    SQLSpecialColumns:TSQLSpecialColumns;
+var    SQLGetDiagRec:TSQLGetDiagRec;
+var    SQLGetDiagField:TSQLGetDiagField;
+var    SQLConnect:TSQLConnect;
+var    SQLDisconnect:TSQLDisconnect;
+var    SQLDriverConnect:TSQLDriverConnect;
+var    SQLExecDirect:TSQLExecDirect;
+var    SQLPrepare:TSQLPrepare;
+var    SQLCloseCursor:TSQLCloseCursor;
+var    SQLExecute:TSQLExecute;
+var    SQLFetch:TSQLFetch;
+var    SQLNumResultCols:TSQLNumResultCols;
+var    SQLDescribeCol:TSQLDescribeCol;
+var    SQLFetchScroll:TSQLFetchScroll;
+var    SQLExtendedFetch:TSQLExtendedFetch;
+var    SQLGetData:TSQLGetData;
+var    SQLSetStmtAttr:TSQLSetStmtAttr;
+var    SQLGetStmtAttr:TSQLGetStmtAttr;
+var    SQLBulkOperations:TSQLBulkOperations;
+var    SQLPutData:TSQLPutData;
+var    SQLBindCol:TSQLBindCol;
+var    SQLSetPos:TSQLSetPos;
+var    SQLDataSources:TSQLDataSources;
+var    SQLDrivers:TSQLDrivers;
+var    SQLSetConnectAttr:TSQLSetConnectAttr;
+var    SQLGetCursorName:TSQLGetCursorName;
+var    SQLSetCursorName:TSQLSetCursorName;
+var    SQLRowCount:TSQLRowCount;
+var    SQLBindParameter:TSQLBindParameter;
+var    SQLFreeStmt:TSQLFreeStmt;
+var    SQLColAttribute:TSQLColAttribute;
+var    SQLEndTran:TSQLEndTran;
+var    SQLTables:TSQLTables;
+var    SQLPrimaryKeys:TSQLPrimaryKeys;
+var    SQLProcedureColumns : TSQLProcedureColumns;
+var    SQLStatistics: TSQLStatistics;
+var    odbcversion:word;
+
+{$else}
+
+  function SQLAllocHandle(
+               HandleType: SQLSMALLINT;
+               InputHandle:SQLHANDLE;
+               Var OutputHandlePtr: SQLHANDLE):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+  function SQLSetEnvAttr(
+               EnvironmentHandle:SQLHENV;
+               Attribute:        SQLINTEGER;
+               Value:            SQLPOINTER;
+               StringLength:     SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLGetEnvAttr(
+               EnvironmentHandle:SQLHENV;
+               Attribute:SQLINTEGER;
+               Value:SQLPOINTER;
+               BufferLength:SQLINTEGER;
+               StringLength:PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLFreeHandle(
+               HandleType: SQLSMALLINT;
+               Handle:     SQLHANDLE):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLGetDiagRec(
+               HandleType:   SQLSMALLINT;
+               Handle:       SQLHANDLE;
+               RecNumber:    SQLSMALLINT;
+               Sqlstate:     PSQLCHAR;
+               var NativeError: SQLINTEGER;
+               MessageText:     PSQLCHAR;
+               BufferLength:    SQLSMALLINT;
+               var TextLength:  SQLSMALLINT ):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLGetDiagField(
+               HandleType:SQLSMALLINT;
+               Handle:SQLHANDLE;
+               RecNumber:SQLSMALLINT;
+               DiagIdentifier:SQLSMALLINT;
+               DiagInfoPtr:SQLPOINTER;
+               BufferLength:SQLSMALLINT;
+               var StringLengthPtr:SQLSMALLINT ):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLConnect(
+               ConnectionHandle:SQLHDBC;
+               ServerName:PSQLCHAR;    NameLength1:SQLSMALLINT;
+               UserName:PSQLCHAR;      NameLength2:SQLSMALLINT;
+               Authentication:PSQLCHAR;NameLength3:SQLSMALLINT
+              ):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLDisconnect(
+               ConnectionHandle:SQLHDBC):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLDriverConnect(
+               hdbc: SQLHDBC;
+               hwnd: SQLHWND;
+               szCsin: PChar;
+               szCLen: SQLSMALLINT;
+               szCsout: PChar;
+               cbCSMax: SQLSMALLINT;
+               Var cbCsOut: SQLSMALLINT;
+               f: SQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLBrowseConnect(
+               hdbc : SQLHDBC;
+               szConnStrIn :PSQLCHAR;
+               cbConnStrIn: SQLSMALLINT;
+               szConnStrOut : PSQLCHAR;
+               cbConnStrOutMax : SQLSMALLINT;
+               Var cbConnStrOut : SQLSMALLINT) : SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLExecDirect(
+               StatementHandle:SQLHSTMT;
+               StatementText:  PSQLCHAR;
+               TextLength:     SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLPrepare(
+               StatementHandle:SQLHSTMT;
+               StatementText:PSQLCHAR;
+               TextLength:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLCloseCursor(
+               StatementHandle:SQLHSTMT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLExecute(
+               StatementHandle:SQLHSTMT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLFetch(
+               StatementHandle:SQLHSTMT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLNumResultCols(
+               StatementHandle:SQLHSTMT;
+               var ColumnCount:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLDescribeCol(
+               StatementHandle:SQLHSTMT;
+               ColumnNumber:SQLUSMALLINT;
+               ColumnName:PSQLCHAR;
+               BufferLength:SQLSMALLINT;
+               var NameLength:SQLSMALLINT;
+               var DataType:SQLSMALLINT;
+               var ColumnSize:SQLUINTEGER;
+               var DecimalDigits:SQLSMALLINT;
+               var Nullable:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLFetchScroll(
+               StatementHandle:SQLHSTMT;
+               FetchOrientation:SQLSMALLINT;
+               FetchOffset:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLExtendedFetch(
+               hstmt:SQLHSTMT;
+               fFetchType:SQLUSMALLINT;
+               irow:SQLINTEGER;
+               pcrow:PSQLUINTEGER;
+               rgfRowStatus:PSQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLGetData(
+               StatementHandle:SQLHSTMT;
+               ColumnNumber:SQLUSMALLINT;
+               TargetType:SQLSMALLINT;
+               TargetValue:SQLPOINTER;
+               BufferLength:SQLINTEGER;
+               StrLen_or_Ind:PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLSetStmtAttr(
+               StatementHandle:SQLHSTMT;
+               Attribute:SQLINTEGER;
+               Value:SQLPOINTER;
+               StringLength:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLGetStmtAttr(
+               StatementHandle:SQLHSTMT;
+               Attribute:SQLINTEGER;
+               Value:SQLPOINTER;
+               BufferLength:SQLINTEGER;
+               StringLength:PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLGetInfo(
+               ConnectionHandle:SQLHDBC;
+               InfoType:SQLUSMALLINT;
+               InfoValue:SQLPOINTER;
+               BufferLength:SQLSMALLINT;
+               StringLength:PSQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLBulkOperations(
+               StatementHandle: SQLHSTMT;
+               Operation:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLPutData(
+               StatementHandle:SQLHSTMT;
+               Data:SQLPOINTER;
+               StrLen_or_Ind:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLBindCol(
+               StatementHandle:SQLHSTMT;
+               ColumnNumber:SQLUSMALLINT;
+               TargetType:SQLSMALLINT;
+               TargetValue:SQLPOINTER;
+               BufferLength:SQLINTEGER;
+               StrLen_or_Ind:PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLSetPos(
+               hstmt:SQLHSTMT;
+               irow:SQLUSMALLINT;
+               fOption:SQLUSMALLINT;
+               fLock:SQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLDataSources(
+               EnvironmentHandle:SQLHENV;
+               Direction:SQLUSMALLINT;
+               ServerName:PSQLCHAR;
+               BufferLength1:SQLSMALLINT;
+               NameLength1:PSQLSMALLINT;
+               Description:PSQLCHAR;
+               BufferLength2:SQLSMALLINT;
+               NameLength2:PSQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLDrivers(
+               EnvironmentHandle:SQLHENV;
+               Direction:SQLUSMALLINT;
+               DriverDescription:PSQLCHAR;
+               BufferLength1:SQLSMALLINT;
+               DescriptionLength1:PSQLSMALLINT;
+               DriverAttributes:PSQLCHAR;
+               BufferLength2:SQLSMALLINT;
+               AttributesLength2:PSQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLSetConnectAttr(
+               ConnectionHandle:SQLHDBC;
+               Attribute:SQLINTEGER; Value:SQLPOINTER;
+               StringLength:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLGetCursorName(
+               StatementHandle:SQLHSTMT;
+               CursorName:PSQLCHAR; BufferLength:SQLSMALLINT;
+               NameLength:PSQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLSetCursorName(
+               StatementHandle:SQLHSTMT;
+               CursorName:PSQLCHAR; NameLength:SQLSMALLINT
+               ):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLRowCount(
+               StatementHandle:SQLHSTMT;
+               Var RowCount:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLBindParameter(
+               hstmt:SQLHSTMT;
+               ipar:SQLUSMALLINT;
+               fParamType:SQLSMALLINT;
+               fCType:SQLSMALLINT;
+               fSqlType:SQLSMALLINT;
+               cbColDef:SQLUINTEGER;
+               ibScale:SQLSMALLINT;
+               rgbValue:SQLPOINTER;
+               cbValueMax:SQLINTEGER;
+               pcbValue:PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLFreeStmt(
+               StatementHandle:SQLHSTMT;
+               Option:SQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLColAttribute (
+               StatementHandle:SQLHSTMT;
+               ColumnNumber:SQLUSMALLINT;
+               FieldIdentifier:SQLUSMALLINT;
+               CharacterAttribute:PSQLCHAR;
+               BufferLength:SQLSMALLINT;
+               StringLength:PSQLSMALLINT;
+               NumericAttribute:SQLPOINTER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+{$ifdef ODBCVER3}
+   function SQLEndTran(
+               HandleType:SQLSMALLINT;
+               Handle:SQLHANDLE;
+               CompletionType:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+{$endif}
+   function SQLTables( hstmt : SQLHSTMT;
+                szTableQualifier : PSQLCHAR;
+                cbTableQualifier : SQLSMALLINT;
+                szTableOwner : PSQLCHAR;
+                cbTableOwner : SQLSMALLINT;
+                szTableName : PSQLCHAR;
+                cbTableName : SQLSMALLINT;
+                szTableType : PSQLCHAR;
+                cbTableType : SQLSMALLINT ) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif}; external odbclib;
+   function SQLColumns( hstmt : SQLHSTMT;
+                szTableQualifier : PSQLCHAR;
+                cbTableQualifier : SQLSMALLINT;
+                szTableOwner : PSQLCHAR;
+                cbTableOwner : SQLSMALLINT;
+                szTableName : PSQLCHAR;
+                cbTableName : SQLSMALLINT;
+                szColumnName : PSQLCHAR;
+                cbColumnName : SQLSMALLINT ) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif}; external odbclib;
+   function SQLSpecialColumns(StatementHandle:SQLHSTMT;
+                IdentifierType:SQLUSMALLINT;
+                CatalogName:PSQLCHAR;
+                NameLength1:SQLSMALLINT;
+                SchemaName:PSQLCHAR;
+                NameLength2:SQLSMALLINT;
+                TableName:PSQLCHAR;
+                NameLength3:SQLSMALLINT;
+                Scope:SQLUSMALLINT;
+                Nullable:SQLUSMALLINT) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif}; external odbclib;
+   function SQLProcedures( hstmt : SQLHSTMT;
+                szTableQualifier : PSQLCHAR;
+                cbTableQualifier : SQLSMALLINT;
+                szTableOwner : PSQLCHAR;
+                cbTableOwner : SQLSMALLINT;
+                szTableName : PSQLCHAR;
+                cbTableName : SQLSMALLINT ) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif}; external odbclib;
+   function SQLPrimaryKeys(hstmt : SQLHSTMT;
+                CatalogName:PSQLCHAR;NameLength1:SQLSMALLINT;
+                SchemaName:PSQLCHAR;NameLength2:SQLSMALLINT;
+                TableName:PSQLCHAR;
+                NameLength3:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+   function SQLProcedureColumns(hstmt: SQLHSTMT;
+                CatalogName: PSQLCHAR; NameLength1: SQLSMALLINT;
+                SchemaName: PSQLCHAR; NameLength2: SQLSMALLINT;
+                ProcName: PSQLCHAR; NameLength3: SQLSMALLINT;
+                ColumnName: PSQLCHAR; NameLength4: SQLSMALLINT): SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif};
+                external odbclib;
+   function SQLStatistics(hstmt: SQLHSTMT;
+                CatalogName:PSQLCHAR; NameLength1:SQLSMALLINT;
+                SchemaName:PSQLCHAR; NameLength2:SQLSMALLINT;
+                TableName:PSQLCHAR; NameLength3:SQLSMALLINT;
+                Unique:SQLUSMALLINT;
+                Reserved:SQLUSMALLINT): SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif}; external odbclib;
+{$endif}
+// This function always load dynamic
+
+function DateStructToDateTime( b:PSQL_DATE_STRUCT):TDateTime;
+function DateTimeToDateStruct( b:TDateTime):SQL_DATE_STRUCT;
+procedure DateTime2TimeStampStruct( var Value:SQL_TIMESTAMP_STRUCT; b:TDateTime);
+Function TimeStampStructToDateTime( B :  PSQL_TIMESTAMP_STRUCT) : TDateTime;
+Function TimeStructToDateTime (B : PSQL_TIME_STRUCT) : TDateTime;
+
+
+{$IFDEF DYNLOADINGODBC}
+Procedure InitialiseODBC;
+Procedure ReleaseODBC;
+
+var ODBCLibraryHandle : TLibHandle;
+{$ENDIF}
+
+implementation
+
+{$IFDEF DYNLOADINGODBC}
+
+var RefCount : integer;
+
+Procedure InitialiseODBC;
+
+begin
+  inc(RefCount);
+  if RefCount = 1 then
+    begin
+    ODBCLibraryHandle := loadlibrary(odbclib);
+    if ODBCLibraryHandle = nilhandle then
+      begin
+      RefCount := 0;
+      Raise EInOutError.Create('Can not load ODBC client. Is it installed? ('+odbclib+')');
+      end;
+
+{$ifdef fpc}
+    pointer(SQLAllocHandle) := GetProcedureAddress(ODBCLibraryHandle,'SQLAllocHandle');
+    pointer(SQLSetEnvAttr) := GetProcedureAddress(ODBCLibraryHandle,'SQLSetEnvAttr');
+    pointer(SQLFreeHandle) := GetProcedureAddress(ODBCLibraryHandle,'SQLFreeHandle');
+    pointer(SQLGetInfo) := GetProcedureAddress(ODBCLibraryHandle,'SQLGetInfo');
+    pointer(SQLProcedures) := GetProcedureAddress(ODBCLibraryHandle,'SQLProcedures');
+    pointer(SQLColumns) := GetProcedureAddress(ODBCLibraryHandle,'SQLColumns');
+    pointer(SQLSpecialColumns) := GetProcedureAddress(ODBCLibraryHandle,'SQLSpecialColumns');
+    pointer(SQLGetDiagRec) := GetProcedureAddress(ODBCLibraryHandle,'SQLGetDiagRec');
+    pointer(SQLGetDiagField) := GetProcedureAddress(ODBCLibraryHandle,'SQLGetDiagField');
+    pointer(SQLConnect) := GetProcedureAddress(ODBCLibraryHandle,'SQLConnect');
+    pointer(SQLDisconnect) := GetProcedureAddress(ODBCLibraryHandle,'SQLDisconnect');
+    pointer(SQLDriverConnect) := GetProcedureAddress(ODBCLibraryHandle,'SQLDriverConnect');
+    pointer(SQLExecDirect) := GetProcedureAddress(ODBCLibraryHandle,'SQLExecDirect');
+    pointer(SQLPrepare) := GetProcedureAddress(ODBCLibraryHandle,'SQLPrepare');
+    pointer(SQLCloseCursor) := GetProcedureAddress(ODBCLibraryHandle,'SQLCloseCursor');
+    pointer(SQLExecute) := GetProcedureAddress(ODBCLibraryHandle,'SQLExecute');
+    pointer(SQLFetch) := GetProcedureAddress(ODBCLibraryHandle,'SQLFetch');
+    pointer(SQLNumResultCols) := GetProcedureAddress(ODBCLibraryHandle,'SQLNumResultCols');
+    pointer(SQLDescribeCol) := GetProcedureAddress(ODBCLibraryHandle,'SQLDescribeCol');
+    pointer(SQLFetchScroll) := GetProcedureAddress(ODBCLibraryHandle,'SQLFetchScroll');
+    pointer(SQLExtendedFetch) := GetProcedureAddress(ODBCLibraryHandle,'SQLExtendedFetch');
+    pointer(SQLGetData) := GetProcedureAddress(ODBCLibraryHandle,'SQLGetData');
+    pointer(SQLSetStmtAttr) := GetProcedureAddress(ODBCLibraryHandle,'SQLSetStmtAttr');
+    pointer(SQLGetStmtAttr) := GetProcedureAddress(ODBCLibraryHandle,'SQLGetStmtAttr');
+    pointer(SQLBulkOperations) := GetProcedureAddress(ODBCLibraryHandle,'SQLBulkOperations');
+    pointer(SQLPutData) := GetProcedureAddress(ODBCLibraryHandle,'SQLPutData');
+    pointer(SQLBindCol) := GetProcedureAddress(ODBCLibraryHandle,'SQLBindCol');
+    pointer(SQLSetPos) := GetProcedureAddress(ODBCLibraryHandle,'SQLSetPos');
+    pointer(SQLDataSources) := GetProcedureAddress(ODBCLibraryHandle,'SQLDataSources');
+    pointer(SQLDrivers) := GetProcedureAddress(ODBCLibraryHandle,'SQLDrivers');
+    pointer(SQLSetConnectAttr) := GetProcedureAddress(ODBCLibraryHandle,'SQLSetConnectAttr');
+    pointer(SQLGetCursorName) := GetProcedureAddress(ODBCLibraryHandle,'SQLGetCursorName');
+    pointer(SQLSetCursorName) := GetProcedureAddress(ODBCLibraryHandle,'SQLSetCursorName');
+    pointer(SQLRowCount) := GetProcedureAddress(ODBCLibraryHandle,'SQLRowCount');
+    pointer(SQLBindParameter) := GetProcedureAddress(ODBCLibraryHandle,'SQLBindParameter');
+    pointer(SQLFreeStmt) := GetProcedureAddress(ODBCLibraryHandle,'SQLFreeStmt');
+    pointer(SQLColAttribute) := GetProcedureAddress(ODBCLibraryHandle,'SQLColAttribute');
+    pointer(SQLEndTran) := GetProcedureAddress(ODBCLibraryHandle,'SQLEndTran');
+    pointer(SQLTables) := GetProcedureAddress(ODBCLibraryHandle,'SQLTables');
+    pointer(SQLPrimaryKeys) := GetProcedureAddress(ODBCLibraryHandle,'SQLPrimaryKeys');
+    pointer(SQLProcedureColumns) := GetProcedureAddress(ODBCLibraryHandle,'SQLProcedureColumns');
+    pointer(SQLStatistics) := GetProcedureAddress(ODBCLibraryHandle,'SQLStatistics');
+{$else}
+    SQLAllocHandle := GetProcedureAddress(ODBCLibraryHandle,'SQLAllocHandle');
+    SQLSetEnvAttr := GetProcedureAddress(ODBCLibraryHandle,'SQLSetEnvAttr');
+    SQLFreeHandle := GetProcedureAddress(ODBCLibraryHandle,'SQLFreeHandle');
+    SQLGetInfo := GetProcedureAddress(ODBCLibraryHandle,'SQLGetInfo');
+    SQLProcedures := GetProcedureAddress(ODBCLibraryHandle,'SQLProcedures');
+    SQLColumns := GetProcedureAddress(ODBCLibraryHandle,'SQLColumns');
+    SQLSpecialColumns := GetProcedureAddress(ODBCLibraryHandle,'SQLSpecialColumns');
+    SQLGetDiagRec := GetProcedureAddress(ODBCLibraryHandle,'SQLGetDiagRec');
+    SQLGetDiagField := GetProcedureAddress(ODBCLibraryHandle,'SQLGetDiagField');
+    SQLConnect := GetProcedureAddress(ODBCLibraryHandle,'SQLConnect');
+    SQLDisconnect := GetProcedureAddress(ODBCLibraryHandle,'SQLDisconnect');
+    SQLDriverConnect := GetProcedureAddress(ODBCLibraryHandle,'SQLDriverConnect');
+    SQLExecDirect := GetProcedureAddress(ODBCLibraryHandle,'SQLExecDirect');
+    SQLPrepare := GetProcedureAddress(ODBCLibraryHandle,'SQLPrepare');
+    SQLCloseCursor := GetProcedureAddress(ODBCLibraryHandle,'SQLCloseCursor');
+    SQLExecute := GetProcedureAddress(ODBCLibraryHandle,'SQLExecute');
+    SQLFetch := GetProcedureAddress(ODBCLibraryHandle,'SQLFetch');
+    SQLNumResultCols := GetProcedureAddress(ODBCLibraryHandle,'SQLNumResultCols');
+    SQLDescribeCol := GetProcedureAddress(ODBCLibraryHandle,'SQLDescribeCol');
+    SQLFetchScroll := GetProcedureAddress(ODBCLibraryHandle,'SQLFetchScroll');
+    SQLExtendedFetch := GetProcedureAddress(ODBCLibraryHandle,'SQLExtendedFetch');
+    SQLGetData := GetProcedureAddress(ODBCLibraryHandle,'SQLGetData');
+    SQLSetStmtAttr := GetProcedureAddress(ODBCLibraryHandle,'SQLSetStmtAttr');
+    SQLGetStmtAttr := GetProcedureAddress(ODBCLibraryHandle,'SQLGetStmtAttr');
+    SQLBulkOperations := GetProcedureAddress(ODBCLibraryHandle,'SQLBulkOperations');
+    SQLPutData := GetProcedureAddress(ODBCLibraryHandle,'SQLPutData');
+    SQLBindCol := GetProcedureAddress(ODBCLibraryHandle,'SQLBindCol');
+    SQLSetPos := GetProcedureAddress(ODBCLibraryHandle,'SQLSetPos');
+    SQLDataSources := GetProcedureAddress(ODBCLibraryHandle,'SQLDataSources');
+    SQLDrivers := GetProcedureAddress(ODBCLibraryHandle,'SQLDrivers');
+    SQLSetConnectAttr := GetProcedureAddress(ODBCLibraryHandle,'SQLSetConnectAttr');
+    SQLGetCursorName := GetProcedureAddress(ODBCLibraryHandle,'SQLGetCursorName');
+    SQLSetCursorName := GetProcedureAddress(ODBCLibraryHandle,'SQLSetCursorName');
+    SQLRowCount := GetProcedureAddress(ODBCLibraryHandle,'SQLRowCount');
+    SQLBindParameter := GetProcedureAddress(ODBCLibraryHandle,'SQLBindParameter');
+    SQLGetFunctions := GetProcedureAddress(ODBCLibraryHandle,'SQLGetFunctions');
+    SQLDescribeParam :=GetProcedureAddress(ODBCLibraryHandle,'SQLDescribeParam');
+    SQLFreeStmt := GetProcedureAddress(ODBCLibraryHandle,'SQLFreeStmt');
+    SQLColAttribute := GetProcedureAddress(ODBCLibraryHandle,'SQLColAttribute');
+    SQLEndTran := GetProcedureAddress(ODBCLibraryHandle,'SQLEndTran');
+    SQLTables := GetProcedureAddress(ODBCLibraryHandle,'SQLTables');
+    SQLPrimaryKeys := GetProcedureAddress(ODBCLibraryHandle,'SQLPrimaryKeys');
+    SQLProcedureColumns := GetProcedureAddress(ODBCLibraryHandle,'SQLProcedureColumns');
+    SQLStatistics := GetProcedureAddress(ODBCLibraryHandle,'SQLStatistics');
+{$endif}
+    end;
+end;
+
+Procedure ReleaseODBC;
+
+begin
+  if RefCount > 0 then dec(RefCount);
+  if RefCount = 0 then
+    begin
+    if not UnloadLibrary(ODBCLibraryHandle) then inc(RefCount);
+    end;
+end;
+
+{$ENDIF}
+
+function DateStructToDateTime( b:PSQL_DATE_STRUCT):TDateTime;
+begin
+  Result:=EncodeDate( b^.Year, b^.Month, b^.Day);
+end;
+
+function DateTimeToDateStruct( b:TDateTime):SQL_DATE_STRUCT;
+var
+  y,m,d: Word;
+begin
+  DecodeDate( b, y, m, d);
+  with Result do
+  begin
+    Year:=y; Month:=m; Day:=d;
+  end;
+end;
+
+procedure DateTime2TimeStampStruct( var Value:SQL_TIMESTAMP_STRUCT; b:TDateTime);
+var
+  w1,w2,w3,w4: Word;
+begin
+   with Value do
+   begin
+      DecodeDate(b,w1,w2,w3);
+      Year   := w1;
+      Month  := w2;
+      Day    := w3;
+      DecodeTime(b,w1,w2,w3,w4);
+      Hour   := w1;
+      Minute := w2;
+      Second := w3;
+      fraction := Integer(w4)*1000000;
+   end;
+end;
+{
+  SQL_DATE_STRUCT = packed record
+    Year : SQLSMALLINT;
+    Month : SQLUSMALLINT;
+    Day : SQLUSMALLINT;
+  end;
+  PSQL_DATE_STRUCT = ^SQL_DATE_STRUCT;
+}
+
+Function TimeStampStructToDateTime( B :  PSQL_TIMESTAMP_STRUCT) : TDateTime;
+
+begin
+ With B^ do
+   Result:=EncodeDate(Year,Month,Day)+
+           EncodeTime(Hour,Minute,Second,0);
+end;
+
+Function TimeStructToDateTime (B : PSQL_TIME_STRUCT) : TDateTime;
+begin
+  With B^ do
+    Result:=EncodeTime(Hour,Minute,Second,0);
+end;
+
+
+

+ 7 - 0
packages/odbc/src/odbcsql.pas

@@ -0,0 +1,7 @@
+unit odbcsql;
+
+{$UNDEF DYNLOADINGODBC}
+
+{$i odbcsql.inc}
+
+end.

+ 7 - 0
packages/odbc/src/odbcsqldyn.pas

@@ -0,0 +1,7 @@
+unit odbcsqldyn;
+
+{$DEFINE DYNLOADINGODBC}
+
+{$i odbcsql.inc}
+
+end.

BIN
packages/odbc/tests/testodbc.mdb


+ 121 - 0
packages/odbc/tests/testodbc.pp

@@ -0,0 +1,121 @@
+Program TestODBC;
+
+uses odbcsql;
+
+
+Const
+  DBDSn : Pchar = 'FPC';
+  Empty : pchar = '';
+  Query : pchar = 'SELECT Id,Username,InstEmail from FPdev Order by UserName';
+// Adapt to needs...
+{$ifdef linux}
+  UserName : pchar = 'michael';  // for mysql test.
+  Password : pchar = 'geen';
+{$else}
+    UserName : pchar = ''; // for MS-Acces test.
+    Password : pchar = '';
+{$endif}
+
+Function ODBCSuccess (Res : Integer) : Boolean;
+
+begin
+  ODBCSuccess:= (res=SQL_SUCCESS) or (res=SQL_SUCCESS_WITH_INFO);
+end;
+
+Var
+  EnvHandle  : SQLHandle;
+  DBHandle   : SQLHandle;
+  StmtHandle : SQLHSTMT;
+  ResID      : Longint;
+  ResName    : Array[0..255] of char; // Matches length of field+1
+  ResEmail   : Array[0..255] of char;
+
+Procedure FreeHandles;
+
+begin
+  If assigned(StmtHAndle) then
+    SQLFreeHandle(SQL_HANDLE_STMT,StmtHandle);
+  If assigned(dbhandle) then
+    SQLFreeHandle(SQL_HANDLE_DBC,DBHandle);
+  If assigned(EnvHandle) then
+    SQLFreeHandle(SQL_HANDLE_ENV,EnvHandle);
+end;
+
+Procedure DoError (Msg : String;ErrCode : Integer);
+
+begin
+  FreeHandles;
+  Writeln(Msg,' Code : ',ErrCode);
+  Halt(1);
+end;
+
+Procedure StartSession;
+
+Var
+  Res : Integer;
+
+begin
+  EnvHandle:=nil;
+  DBHandle:=nil;
+  StmtHandle:=nil;
+  Res:=SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, EnvHandle);
+  if Res <> SQL_SUCCESS then
+    DoError('Could allocate ODBC handle',Res);
+  Res:=SQLSetEnvAttr(EnvHandle,SQL_ATTR_ODBC_VERSION, SQLPOINTER(SQL_OV_ODBC3), 0);
+  If Not ODBCSuccess(res) then
+    DoError('Could not set environment',Res);
+  Res:=SQLAllocHandle(SQL_HANDLE_DBC, envHandle, DBHandle);
+  If res<>SQL_SUCCESS then
+    DoError('Could not create database handle',res);
+  Res:=SQLConnect(DBHandle,PSQLCHAR(DBDSN),SQL_NTS,
+                        PSQLChar(UserName),SQL_NTS,
+                        PSQLCHAR(Password),SQL_NTS);
+  If Not OdbcSuccess(res) then
+    DoError('Could not connect to datasource.',Res);
+end;
+
+Procedure ExecuteStatement;
+
+Var
+  Res,ErrCode : LongInt;
+
+begin
+  Res:=SQLAllocHandle(SQL_HANDLE_STMT,DBHandle,stmtHandle);
+  If not ODBCSuccess(res) then
+    DoError('Could not allocate statement handle.',Res);
+  { Bind result buffers.
+    Note that for many queries, the result is not known on beforehand,
+    And must be queried with SQLPrepare, SQLNumResulCols and SQLDescribeCol
+    before the statement is executed.}
+  SQLBindCol(stmtHandle,1,SQL_INTEGER,SQLPointer(@ResID),4,@ErrCode);
+  SQLBindCol(stmtHandle,2,SQL_CHAR,SQLPointer(@ResName),256,@ErrCode);
+  SQLBindCol(stmtHandle,3,SQL_CHAR,SQLPointer(@ResEmail),256,@ErrCode);
+  // Now actually do it.
+  Res:=SQLExecDirect(StmtHandle,Query,SQL_NTS);
+  if not ODBCSuccess(res) then
+    DoError('Execute of statement failed.',Res);
+end;
+
+Procedure ShowResult;
+
+Var
+  Count,Res : Longint;
+
+begin
+  Res:=SQLFetch(StmtHandle);
+  Count:=0;
+  While Res<>SQL_NO_DATA do
+    begin
+    Inc(Count);
+    Write('Record: ',Count,' : ');
+    Writeln(ResId,' ',PChar(@ResName[0]),' ',Pchar(@ResEmail[0]));
+    Res:=SQLFetch(StmtHandle);
+    end;
+end;
+
+begin
+  StartSession;
+  ExecuteStatement;
+  ShowResult;
+  FreeHandles;
+end.