diff options
author | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2008-01-26 16:46:49 +0000 |
---|---|---|
committer | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2008-01-26 16:46:49 +0000 |
commit | 38c2d39048661082e9d3d5131d6460ae9a7a4aca (patch) | |
tree | f970f8349460e9c071d134f61db9dec838f0d265 | |
parent | cb4581a87107976d714d8e1b06a5395df357ffe5 (diff) | |
download | fpc-38c2d39048661082e9d3d5131d6460ae9a7a4aca.tar.gz |
* Moved odbc
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@9939 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | packages/Makefile | 127 | ||||
-rw-r--r-- | packages/Makefile.fpc | 28 | ||||
-rw-r--r-- | packages/base/Makefile | 120 | ||||
-rw-r--r-- | packages/base/Makefile.fpc | 18 | ||||
-rw-r--r-- | packages/odbc/Makefile | 2465 | ||||
-rw-r--r-- | packages/odbc/Makefile.fpc | 30 | ||||
-rw-r--r-- | packages/odbc/README | 40 | ||||
-rw-r--r-- | packages/odbc/fpmake.pp | 37 | ||||
-rw-r--r-- | packages/odbc/src/odbcsql.inc | 1709 | ||||
-rw-r--r-- | packages/odbc/src/odbcsql.pas | 7 | ||||
-rw-r--r-- | packages/odbc/src/odbcsqldyn.pas | 7 | ||||
-rw-r--r-- | packages/odbc/tests/testodbc.mdb | bin | 0 -> 81921 bytes | |||
-rw-r--r-- | packages/odbc/tests/testodbc.pp | 121 |
13 files changed, 4562 insertions, 147 deletions
diff --git a/packages/Makefile b/packages/Makefile index 996797fb3e..04d2d92d99 100644 --- a/packages/Makefile +++ b/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 diff --git a/packages/Makefile.fpc b/packages/Makefile.fpc index 3f67381cb8..fc67cd4cb6 100644 --- a/packages/Makefile.fpc +++ b/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 diff --git a/packages/base/Makefile b/packages/base/Makefile index 7a06996ce2..fd79413642 100644 --- a/packages/base/Makefile +++ b/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 diff --git a/packages/base/Makefile.fpc b/packages/base/Makefile.fpc index 5d388da53e..e4178ff51a 100644 --- a/packages/base/Makefile.fpc +++ b/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] diff --git a/packages/odbc/Makefile b/packages/odbc/Makefile new file mode 100644 index 0000000000..90a5159042 --- /dev/null +++ b/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: diff --git a/packages/odbc/Makefile.fpc b/packages/odbc/Makefile.fpc new file mode 100644 index 0000000000..77cd8c8090 --- /dev/null +++ b/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: + diff --git a/packages/odbc/README b/packages/odbc/README new file mode 100644 index 0000000000..91e1bc99cc --- /dev/null +++ b/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. + + + diff --git a/packages/odbc/fpmake.pp b/packages/odbc/fpmake.pp new file mode 100644 index 0000000000..59fc6f165c --- /dev/null +++ b/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} diff --git a/packages/odbc/src/odbcsql.inc b/packages/odbc/src/odbcsql.inc new file mode 100644 index 0000000000..5c284ff530 --- /dev/null +++ b/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; + + + diff --git a/packages/odbc/src/odbcsql.pas b/packages/odbc/src/odbcsql.pas new file mode 100644 index 0000000000..79036e8435 --- /dev/null +++ b/packages/odbc/src/odbcsql.pas @@ -0,0 +1,7 @@ +unit odbcsql; + +{$UNDEF DYNLOADINGODBC} + +{$i odbcsql.inc} + +end. diff --git a/packages/odbc/src/odbcsqldyn.pas b/packages/odbc/src/odbcsqldyn.pas new file mode 100644 index 0000000000..e95acb963d --- /dev/null +++ b/packages/odbc/src/odbcsqldyn.pas @@ -0,0 +1,7 @@ +unit odbcsqldyn; + +{$DEFINE DYNLOADINGODBC} + +{$i odbcsql.inc} + +end. diff --git a/packages/odbc/tests/testodbc.mdb b/packages/odbc/tests/testodbc.mdb Binary files differnew file mode 100644 index 0000000000..303fe3a873 --- /dev/null +++ b/packages/odbc/tests/testodbc.mdb diff --git a/packages/odbc/tests/testodbc.pp b/packages/odbc/tests/testodbc.pp new file mode 100644 index 0000000000..99edb8062e --- /dev/null +++ b/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. |