Skip to content

Commit f7fde67

Browse files
committed
Purge most special cases for building ODBC with specific drivers
PDO_ODBC doesn't do this, and most of these drivers are not in use with PHP, at least like this. Chances are these expose an ODBC driver you can use with a normal driver manager like unixODBC or iODBC. If not, it can be specified as a custom driver, though it does not include any workarounds. There might be some redundant definitions now as a result. IBM Db2 is kept as a special case due to it also being in PDO_ODBC, though I wonder how good of an idea this is. See GH-15630
1 parent 7f3a2bc commit f7fde67

File tree

6 files changed

+6
-458
lines changed

6 files changed

+6
-458
lines changed

ext/odbc/config.m4

Lines changed: 0 additions & 292 deletions
Original file line numberDiff line numberDiff line change
@@ -7,101 +7,6 @@ AC_DEFUN([PHP_ODBC_CHECK_HEADER],
77
[AS_IF([test ! -f "$ODBC_INCDIR/$1"],
88
[AC_MSG_ERROR([ODBC header file '$ODBC_INCDIR/$1' not found!])])])
99

10-
dnl
11-
dnl PHP_ODBC_FIND_SOLID_LIBS(libdir)
12-
dnl
13-
dnl Figure out which library file to link with for the Solid support.
14-
dnl
15-
AC_DEFUN([PHP_ODBC_FIND_SOLID_LIBS],[
16-
AC_MSG_CHECKING([Solid library file])
17-
ac_solid_uname_r=$(uname -r 2>/dev/null)
18-
ac_solid_uname_s=$(uname -s 2>/dev/null)
19-
case $ac_solid_uname_s in
20-
AIX) ac_solid_os=a3x;; # a4x for AIX4/ Solid 2.3/3.0 only
21-
HP-UX) ac_solid_os=h9x;; # h1x for hpux11, h0x for hpux10
22-
Linux)
23-
if ldd -v /bin/sh | grep GLIBC > /dev/null; then
24-
ac_solid_os=l2x
25-
else
26-
ac_solid_os=lux
27-
fi
28-
AC_DEFINE([SS_LINUX], [1],
29-
[Define to 1 to be able to use the obsolete <sqlunix.h> header file on
30-
some Linux systems.])
31-
;;
32-
SunOS)
33-
ac_solid_os=ssx;; # should we deal with SunOS 4?
34-
FreeBSD)
35-
if test $(expr $ac_solid_uname_r : '\(.\)') -gt "2"; then
36-
ac_solid_os=fex
37-
else
38-
ac_solid_os=fbx
39-
fi
40-
AC_DEFINE([SS_FBX], [1],
41-
[Define to 1 to be able to use the wchar defs in the obsolete
42-
<sqlunix.h> header file on some FreeBSD systems.])
43-
;;
44-
esac
45-
46-
if test -f $1/soc${ac_solid_os}35.a; then
47-
ac_solid_version=35
48-
ac_solid_prefix=soc
49-
elif test -f $1/scl${ac_solid_os}30.a; then
50-
ac_solid_version=30
51-
ac_solid_prefix=scl
52-
elif test -f $1/scl${ac_solid_os}23.a; then
53-
ac_solid_version=23
54-
ac_solid_prefix=scl
55-
fi
56-
57-
dnl Check for the library files, and setup the ODBC_LIBS path.
58-
if test ! -f $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.so && \
59-
test ! -f $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.a; then
60-
dnl we have an error and should bail out, as we can't find the libs!
61-
echo ""
62-
echo "*********************************************************************"
63-
echo "* Unable to locate $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.so or $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.a"
64-
echo "* Please correct this by creating the following links and reconfiguring:"
65-
echo "* $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.a -> $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.a"
66-
echo "* $1/${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.so -> $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.so"
67-
echo "*********************************************************************"
68-
else
69-
ODBC_LFLAGS=-L$1
70-
ODBC_LIBS=-l${ac_solid_prefix}${ac_solid_os}${ac_solid_version}
71-
fi
72-
73-
AC_MSG_RESULT([$(echo $ODBC_LIBS | $SED -e 's!.*/!!')])
74-
])
75-
76-
dnl
77-
dnl PHP_ODBC_FIND_EMPRESS_LIBS(libdir)
78-
dnl
79-
dnl Figure out which library file to link with for the Empress support.
80-
dnl
81-
AC_DEFUN([PHP_ODBC_FIND_EMPRESS_LIBS],[
82-
AC_MSG_CHECKING([Empress library file])
83-
ODBC_LIBS=$(echo $1/libempodbccl.so | cut -d' ' -f1)
84-
if test ! -f $ODBC_LIBS; then
85-
ODBC_LIBS=$(echo $1/libempodbccl.so | cut -d' ' -f1)
86-
fi
87-
AC_MSG_RESULT([$(echo $ODBC_LIBS | $SED -e 's!.*/!!')])
88-
])
89-
90-
dnl
91-
dnl PHP_ODBC_FIND_EMPRESS_BCS_LIBS(libdir)
92-
dnl
93-
dnl Figure out which library file to link with for the Empress local access
94-
dnl support.
95-
dnl
96-
AC_DEFUN([PHP_ODBC_FIND_EMPRESS_BCS_LIBS],[
97-
AC_MSG_CHECKING([Empress local access library file])
98-
ODBCBCS_LIBS=$(echo $1/libempodbcbcs.a | cut -d' ' -f1)
99-
if test ! -f $ODBCBCS_LIBS; then
100-
ODBCBCS_LIBS=$(echo $1/libempodbcbcs.a | cut -d' ' -f1)
101-
fi
102-
AC_MSG_RESULT([$(echo $ODBCBCS_LIBS | $SED -e 's!.*/!!')])
103-
])
104-
10510
dnl
10611
dnl configure options
10712
dnl
@@ -113,73 +18,6 @@ PHP_ARG_WITH([odbcver],,
11318
be defined.])],
11419
[0x0350])
11520

116-
AS_VAR_IF([ODBC_TYPE],, [
117-
PHP_ARG_WITH([adabas],
118-
[for Adabas support],
119-
[AS_HELP_STRING([[--with-adabas[=DIR]]],
120-
[Include Adabas D support [/usr/local]])])
121-
122-
AS_VAR_IF([PHP_ADABAS], [no], [], [
123-
AS_VAR_IF([PHP_ADABAS], [yes], [PHP_ADABAS=/usr/local])
124-
PHP_ADD_INCLUDE([$PHP_ADABAS/incl])
125-
PHP_ADD_LIBPATH([$PHP_ADABAS/$PHP_LIBDIR])
126-
ODBC_OBJS="$PHP_ADABAS/$PHP_LIBDIR/odbclib.a"
127-
ODBC_LIB="$abs_builddir/ext/odbc/libodbc_adabas.a"
128-
$srcdir/build/shtool mkdir -f -p ext/odbc
129-
rm -f "$ODBC_LIB"
130-
cp "$ODBC_OBJS" "$ODBC_LIB"
131-
PHP_ADD_LIBRARY([sqlptc])
132-
PHP_ADD_LIBRARY([sqlrte])
133-
PHP_ADD_LIBRARY_WITH_PATH([odbc_adabas], [$abs_builddir/ext/odbc])
134-
ODBC_TYPE=adabas
135-
ODBC_INCDIR=$PHP_ADABAS/incl
136-
PHP_ODBC_CHECK_HEADER([sqlext.h])
137-
AC_DEFINE([HAVE_ADABAS], [1],
138-
[Define to 1 if the odbc extension uses the Adabas D.])
139-
])
140-
])
141-
142-
AS_VAR_IF([ODBC_TYPE],, [
143-
PHP_ARG_WITH([sapdb],
144-
[for SAP DB support],
145-
[AS_HELP_STRING([[--with-sapdb[=DIR]]],
146-
[Include SAP DB support [/usr/local]])])
147-
148-
AS_VAR_IF([PHP_SAPDB], [no], [], [
149-
AS_VAR_IF([PHP_SAPDB], [yes], [PHP_SAPDB=/usr/local])
150-
PHP_ADD_INCLUDE([$PHP_SAPDB/incl])
151-
PHP_ADD_LIBPATH([$PHP_SAPDB/$PHP_LIBDIR])
152-
PHP_ADD_LIBRARY([sqlod])
153-
ODBC_TYPE=sapdb
154-
AC_DEFINE([HAVE_SAPDB], [1],
155-
[Define to 1 if the odbc extension uses the SAP DB.])
156-
])
157-
])
158-
159-
AS_VAR_IF([ODBC_TYPE],, [
160-
PHP_ARG_WITH([solid],
161-
[for Solid support],
162-
[AS_HELP_STRING([[--with-solid[=DIR]]],
163-
[Include Solid support [/usr/local/solid]])])
164-
165-
AS_VAR_IF([PHP_SOLID], [no], [], [
166-
AS_VAR_IF([PHP_SOLID], [yes], [PHP_SOLID=/usr/local/solid])
167-
ODBC_INCDIR=$PHP_SOLID/include
168-
ODBC_LIBDIR=$PHP_SOLID/$PHP_LIBDIR
169-
ODBC_CFLAGS=-I$ODBC_INCDIR
170-
ODBC_TYPE=solid
171-
if test -f $ODBC_LIBDIR/soc*35.a; then
172-
AC_DEFINE([HAVE_SOLID_35], [1], [Define to 1 if Solid DB 3.5 is used.])
173-
elif test -f $ODBC_LIBDIR/scl*30.a; then
174-
AC_DEFINE([HAVE_SOLID_30], [1], [Define to 1 if Solid DB 3.0 is used.])
175-
elif test -f $ODBC_LIBDIR/scl*23.a; then
176-
AC_DEFINE([HAVE_SOLID], [1],
177-
[Define to 1 if the odbc extension uses the Solid DB.])
178-
fi
179-
PHP_ODBC_FIND_SOLID_LIBS([$ODBC_LIBDIR])
180-
])
181-
])
182-
18321
AS_VAR_IF([ODBC_TYPE],, [
18422
PHP_ARG_WITH([ibm-db2],
18523
[for IBM DB2 support],
@@ -217,70 +55,6 @@ PHP configure:
21755
])
21856
])
21957

220-
AS_VAR_IF([ODBC_TYPE],, [
221-
PHP_ARG_WITH([empress],
222-
[for Empress support],
223-
[AS_HELP_STRING([[--with-empress[=DIR]]],
224-
[Include Empress support $EMPRESSPATH (Empress Version >= 8.60
225-
required)])])
226-
227-
AS_VAR_IF([PHP_EMPRESS], [no], [], [
228-
AS_VAR_IF([PHP_EMPRESS], [yes], [
229-
ODBC_INCDIR=$EMPRESSPATH/include/odbc
230-
ODBC_LIBDIR=$EMPRESSPATH/shlib
231-
], [
232-
ODBC_INCDIR=$PHP_EMPRESS/include/odbc
233-
ODBC_LIBDIR=$PHP_EMPRESS/shlib
234-
])
235-
ODBC_CFLAGS=-I$ODBC_INCDIR
236-
ODBC_LFLAGS=-L$ODBC_LIBDIR
237-
ODBC_TYPE=empress
238-
AC_DEFINE([HAVE_EMPRESS], [1],
239-
[Define to 1 if the odbc extension uses the Empress.])
240-
PHP_ODBC_FIND_EMPRESS_LIBS([$ODBC_LIBDIR])
241-
])
242-
])
243-
244-
AS_VAR_IF([ODBC_TYPE],, [
245-
PHP_ARG_WITH([empress-bcs],
246-
[for Empress local access support],
247-
[AS_HELP_STRING([[--with-empress-bcs[=DIR]]],
248-
[Include Empress Local Access support $EMPRESSPATH (Empress Version >=
249-
8.60 required)])])
250-
251-
AS_VAR_IF([PHP_EMPRESS_BCS], [no], [], [
252-
AS_VAR_IF([PHP_EMPRESS_BCS], [yes], [
253-
ODBC_INCDIR=$EMPRESSPATH/include/odbc
254-
ODBC_LIBDIR=$EMPRESSPATH/shlib
255-
], [
256-
ODBC_INCDIR=$PHP_EMPRESS_BCS/include/odbc
257-
ODBC_LIBDIR=$PHP_EMPRESS_BCS/shlib
258-
])
259-
CC="empocc -bcs";export CC;
260-
LD="empocc -bcs";export LD;
261-
ODBC_CFLAGS=-I$ODBC_INCDIR
262-
ODBC_LFLAGS=-L$ODBC_LIBDIR
263-
LIST=$(empocc -listlines -bcs -o a a.c)
264-
265-
NEWLIST=
266-
for I in $LIST
267-
do
268-
case $I in
269-
$EMPRESSPATH/odbccl/lib/* | \
270-
$EMPRESSPATH/rdbms/lib/* | \
271-
$EMPRESSPATH/common/lib/*)
272-
NEWLIST="$NEWLIST $I"
273-
;;
274-
esac
275-
done
276-
ODBC_LIBS="-lempphpbcs -lms -lmscfg -lbasic -lbasic_os -lnlscstab -lnlsmsgtab -lm -ldl -lcrypt"
277-
ODBC_TYPE=empress-bcs
278-
AC_DEFINE([HAVE_EMPRESS], [1],
279-
[Define to 1 if the odbc extension uses the Empress.])
280-
PHP_ODBC_FIND_EMPRESS_BCS_LIBS([$ODBC_LIBDIR])
281-
])
282-
])
283-
28458
AS_VAR_IF([ODBC_TYPE],, [
28559
PHP_ARG_WITH([custom-odbc],
28660
[for a custom ODBC support],
@@ -320,25 +94,6 @@ PHP_ARG_WITH([iodbc],
32094
])
32195
])
32296

323-
AS_VAR_IF([ODBC_TYPE],, [
324-
PHP_ARG_WITH([esoob],
325-
[for Easysoft ODBC-ODBC Bridge support],
326-
[AS_HELP_STRING([[--with-esoob[=DIR]]],
327-
[Include Easysoft OOB support [/usr/local/easysoft/oob/client]])])
328-
329-
AS_VAR_IF([PHP_ESOOB], [no], [], [
330-
AS_VAR_IF([PHP_ESOOB], [yes], [PHP_ESOOB=/usr/local/easysoft/oob/client])
331-
ODBC_INCDIR=$PHP_ESOOB/include
332-
ODBC_LIBDIR=$PHP_ESOOB/$PHP_LIBDIR
333-
ODBC_LFLAGS=-L$ODBC_LIBDIR
334-
ODBC_CFLAGS=-I$ODBC_INCDIR
335-
ODBC_LIBS=-lesoobclient
336-
ODBC_TYPE=esoob
337-
AC_DEFINE([HAVE_ESOOB], [1],
338-
[Define to 1 if the odbc extension uses the Easysoft OOB.])
339-
])
340-
])
341-
34297
AS_VAR_IF([ODBC_TYPE],, [
34398
PHP_ARG_WITH([unixODBC],
34499
[whether to build with unixODBC support],
@@ -367,49 +122,6 @@ PHP_ARG_WITH([unixODBC],
367122
])
368123
])
369124

370-
AS_VAR_IF([ODBC_TYPE],, [
371-
PHP_ARG_WITH([dbmaker],
372-
[for DBMaker support],
373-
[AS_HELP_STRING([[--with-dbmaker[=DIR]]],
374-
[Include DBMaker support])])
375-
376-
AS_VAR_IF([PHP_DBMAKER], [no], [], [
377-
AS_VAR_IF([PHP_DBMAKER], [yes], [
378-
dnl Find dbmaker home directory
379-
DBMAKER_HOME=$(grep "^dbmaker:" /etc/passwd | $AWK -F: '{print $6}')
380-
381-
dnl check DBMaker version (from 5.0 to 2.0)
382-
DBMAKER_VERSION=5.0
383-
384-
while test ! -d $DBMAKER_HOME/$DBMAKER_VERSION && test "$DBMAKER_VERSION" != "2.9"; do
385-
DM_VER=$(echo $DBMAKER_VERSION | $SED -e 's/\.//' | $AWK '{ print $1-1;}')
386-
MAJOR_V=$(echo $DM_VER | $AWK '{ print $1/10; }' | $AWK -F. '{ print $1; }')
387-
MINOR_V=$(echo $DM_VER | $AWK '{ print $1%10; }')
388-
DBMAKER_VERSION=$MAJOR_V.$MINOR_V
389-
done
390-
391-
AS_VAR_IF([DBMAKER_VERSION], [2.9],
392-
[PHP_DBMAKER=$DBMAKER_HOME],
393-
[PHP_DBMAKER=$DBMAKER_HOME/$DBMAKER_VERSION])
394-
])
395-
396-
ODBC_INCDIR=$PHP_DBMAKER/include
397-
ODBC_LIBDIR=$PHP_DBMAKER/$PHP_LIBDIR
398-
ODBC_CFLAGS=-I$ODBC_INCDIR
399-
ODBC_LFLAGS=-L$ODBC_LIBDIR
400-
ODBC_LIBS="-ldmapic -lc"
401-
ODBC_TYPE=dbmaker
402-
403-
AC_DEFINE([HAVE_DBMAKER], [1],
404-
[Define to 1 if the odbc extension uses the DBMaker.])
405-
406-
AS_VAR_IF([ext_shared], [yes], [ODBC_LIBS="-ldmapic -lc -lm"], [
407-
PHP_ADD_LIBRARY_WITH_PATH([dmapic], [$ODBC_LIBDIR])
408-
PHP_ADD_INCLUDE([$ODBC_INCDIR])
409-
])
410-
])
411-
])
412-
413125
AH_TEMPLATE([ODBCVER], [The highest supported ODBC version.])
414126
AS_VAR_IF([PHP_ODBCVER], [no],
415127
[AC_DEFINE([ODBCVER], [0x0350])],
@@ -420,10 +132,6 @@ dnl Extension setup
420132
if test -n "$ODBC_TYPE"; then
421133
AS_VAR_IF([ODBC_TYPE], [dbmaker],, [
422134
PHP_EVAL_LIBLINE([$ODBC_LFLAGS $ODBC_LIBS], [ODBC_SHARED_LIBADD])
423-
AS_VAR_IF([ODBC_TYPE], [solid],,
424-
[AC_DEFINE([HAVE_SQLDATASOURCES], [1],
425-
[Define to 1 if ODBC library has 'SQLDataSources', as a function or
426-
macro.])])
427135
])
428136

429137
AC_DEFINE([HAVE_UODBC], [1],

ext/odbc/odbc.stub.php

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -378,9 +378,7 @@ function odbc_close(Odbc\Connection $odbc): void {}
378378

379379
function odbc_num_rows(Odbc\Result $statement): int {}
380380

381-
#if !defined(HAVE_SOLID) && !defined(HAVE_SOLID_30)
382381
function odbc_next_result(Odbc\Result $statement): bool {}
383-
#endif
384382

385383
function odbc_num_fields(Odbc\Result $statement): int {}
386384

@@ -417,23 +415,19 @@ function odbc_gettypeinfo(Odbc\Connection $odbc, int $data_type = 0): Odbc\Resul
417415

418416
function odbc_primarykeys(Odbc\Connection $odbc, ?string $catalog, string $schema, string $table): Odbc\Result|false {}
419417

420-
#if !defined(HAVE_SOLID) && !defined(HAVE_SOLID_30) && !defined(HAVE_SOLID_35)
421418
function odbc_procedurecolumns(Odbc\Connection $odbc, ?string $catalog = null, ?string $schema = null, ?string $procedure = null, ?string $column = null): Odbc\Result|false {}
422419

423420
function odbc_procedures(Odbc\Connection $odbc, ?string $catalog = null, ?string $schema = null, ?string $procedure = null): Odbc\Result|false {}
424421

425422
function odbc_foreignkeys(Odbc\Connection $odbc, ?string $pk_catalog, string $pk_schema, string $pk_table, string $fk_catalog, string $fk_schema, string $fk_table): Odbc\Result|false {}
426-
#endif
427423

428424
function odbc_specialcolumns(Odbc\Connection $odbc, int $type, ?string $catalog, string $schema, string $table, int $scope, int $nullable): Odbc\Result|false {}
429425

430426
function odbc_statistics(Odbc\Connection $odbc, ?string $catalog, string $schema, string $table, int $unique, int $accuracy): Odbc\Result|false {}
431427

432-
#if !defined(HAVE_DBMAKER) && !defined(HAVE_SOLID) && !defined(HAVE_SOLID_30) &&!defined(HAVE_SOLID_35)
433428
function odbc_tableprivileges(Odbc\Connection $odbc, ?string $catalog, string $schema, string $table): Odbc\Result|false {}
434429

435430
function odbc_columnprivileges(Odbc\Connection $odbc, ?string $catalog, string $schema, string $table, string $column): Odbc\Result|false {}
436-
#endif
437431

438432
/* odbc_utils.c */
439433

0 commit comments

Comments
 (0)