Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ PHP NEWS
. Fixed bug GH-11952 (Fix locale strings canonicalization for IntlDateFormatter
and NumberFormatter). (alexandre-daubois)

- ODBC:
. Removed driver-specific build flags and support. (Calvin Buckley)

- Opcache:
. Fixed bug GH-19486 (Incorrect opline after deoptimization). (Arnaud)
. Fixed bug GH-19601 (Wrong JIT stack setup on aarch64/clang). (Arnaud)
Expand Down
3 changes: 3 additions & 0 deletions UPGRADING
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,9 @@ PHP 8.5 UPGRADE NOTES
- ODBC:
. ODBC now assumes that at least ODBC 3.5 functionality is available. The
ODBCVER definition and build system flags to control it have been removed.
. ODBC no longer has build flags to build against specific drivers (except
for DB2) and removes special cases for those drivers. It is strongly
recommended to use a driver manager like iODBC or unixODBC on non-Windows.

- Opcache:
. The Opcache extension is now always built into the PHP binary and is always
Expand Down
295 changes: 1 addition & 294 deletions ext/odbc/config.m4
Original file line number Diff line number Diff line change
Expand Up @@ -7,172 +7,10 @@ AC_DEFUN([PHP_ODBC_CHECK_HEADER],
[AS_IF([test ! -f "$ODBC_INCDIR/$1"],
[AC_MSG_ERROR([ODBC header file '$ODBC_INCDIR/$1' not found!])])])

dnl
dnl PHP_ODBC_FIND_SOLID_LIBS(libdir)
dnl
dnl Figure out which library file to link with for the Solid support.
dnl
AC_DEFUN([PHP_ODBC_FIND_SOLID_LIBS],[
AC_MSG_CHECKING([Solid library file])
ac_solid_uname_r=$(uname -r 2>/dev/null)
ac_solid_uname_s=$(uname -s 2>/dev/null)
case $ac_solid_uname_s in
AIX) ac_solid_os=a3x;; # a4x for AIX4/ Solid 2.3/3.0 only
HP-UX) ac_solid_os=h9x;; # h1x for hpux11, h0x for hpux10
Linux)
if ldd -v /bin/sh | grep GLIBC > /dev/null; then
ac_solid_os=l2x
else
ac_solid_os=lux
fi
AC_DEFINE([SS_LINUX], [1],
[Define to 1 to be able to use the obsolete <sqlunix.h> header file on
some Linux systems.])
;;
SunOS)
ac_solid_os=ssx;; # should we deal with SunOS 4?
FreeBSD)
if test $(expr $ac_solid_uname_r : '\(.\)') -gt "2"; then
ac_solid_os=fex
else
ac_solid_os=fbx
fi
AC_DEFINE([SS_FBX], [1],
[Define to 1 to be able to use the wchar defs in the obsolete
<sqlunix.h> header file on some FreeBSD systems.])
;;
esac

if test -f $1/soc${ac_solid_os}35.a; then
ac_solid_version=35
ac_solid_prefix=soc
elif test -f $1/scl${ac_solid_os}30.a; then
ac_solid_version=30
ac_solid_prefix=scl
elif test -f $1/scl${ac_solid_os}23.a; then
ac_solid_version=23
ac_solid_prefix=scl
fi

dnl Check for the library files, and setup the ODBC_LIBS path.
if test ! -f $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.so && \
test ! -f $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.a; then
dnl we have an error and should bail out, as we can't find the libs!
echo ""
echo "*********************************************************************"
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"
echo "* Please correct this by creating the following links and reconfiguring:"
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"
echo "* $1/${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.so -> $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.so"
echo "*********************************************************************"
else
ODBC_LFLAGS=-L$1
ODBC_LIBS=-l${ac_solid_prefix}${ac_solid_os}${ac_solid_version}
fi

AC_MSG_RESULT([$(echo $ODBC_LIBS | $SED -e 's!.*/!!')])
])

dnl
dnl PHP_ODBC_FIND_EMPRESS_LIBS(libdir)
dnl
dnl Figure out which library file to link with for the Empress support.
dnl
AC_DEFUN([PHP_ODBC_FIND_EMPRESS_LIBS],[
AC_MSG_CHECKING([Empress library file])
ODBC_LIBS=$(echo $1/libempodbccl.so | cut -d' ' -f1)
if test ! -f $ODBC_LIBS; then
ODBC_LIBS=$(echo $1/libempodbccl.so | cut -d' ' -f1)
fi
AC_MSG_RESULT([$(echo $ODBC_LIBS | $SED -e 's!.*/!!')])
])

dnl
dnl PHP_ODBC_FIND_EMPRESS_BCS_LIBS(libdir)
dnl
dnl Figure out which library file to link with for the Empress local access
dnl support.
dnl
AC_DEFUN([PHP_ODBC_FIND_EMPRESS_BCS_LIBS],[
AC_MSG_CHECKING([Empress local access library file])
ODBCBCS_LIBS=$(echo $1/libempodbcbcs.a | cut -d' ' -f1)
if test ! -f $ODBCBCS_LIBS; then
ODBCBCS_LIBS=$(echo $1/libempodbcbcs.a | cut -d' ' -f1)
fi
AC_MSG_RESULT([$(echo $ODBCBCS_LIBS | $SED -e 's!.*/!!')])
])

dnl
dnl configure options
dnl

AS_VAR_IF([ODBC_TYPE],, [
PHP_ARG_WITH([adabas],
[for Adabas support],
[AS_HELP_STRING([[--with-adabas[=DIR]]],
[Include Adabas D support [/usr/local]])])

AS_VAR_IF([PHP_ADABAS], [no], [], [
AS_VAR_IF([PHP_ADABAS], [yes], [PHP_ADABAS=/usr/local])
PHP_ADD_INCLUDE([$PHP_ADABAS/incl])
PHP_ADD_LIBPATH([$PHP_ADABAS/$PHP_LIBDIR])
ODBC_OBJS="$PHP_ADABAS/$PHP_LIBDIR/odbclib.a"
ODBC_LIB="$abs_builddir/ext/odbc/libodbc_adabas.a"
$srcdir/build/shtool mkdir -f -p ext/odbc
rm -f "$ODBC_LIB"
cp "$ODBC_OBJS" "$ODBC_LIB"
PHP_ADD_LIBRARY([sqlptc])
PHP_ADD_LIBRARY([sqlrte])
PHP_ADD_LIBRARY_WITH_PATH([odbc_adabas], [$abs_builddir/ext/odbc])
ODBC_TYPE=adabas
ODBC_INCDIR=$PHP_ADABAS/incl
PHP_ODBC_CHECK_HEADER([sqlext.h])
AC_DEFINE([HAVE_ADABAS], [1],
[Define to 1 if the odbc extension uses the Adabas D.])
])
])

AS_VAR_IF([ODBC_TYPE],, [
PHP_ARG_WITH([sapdb],
[for SAP DB support],
[AS_HELP_STRING([[--with-sapdb[=DIR]]],
[Include SAP DB support [/usr/local]])])

AS_VAR_IF([PHP_SAPDB], [no], [], [
AS_VAR_IF([PHP_SAPDB], [yes], [PHP_SAPDB=/usr/local])
PHP_ADD_INCLUDE([$PHP_SAPDB/incl])
PHP_ADD_LIBPATH([$PHP_SAPDB/$PHP_LIBDIR])
PHP_ADD_LIBRARY([sqlod])
ODBC_TYPE=sapdb
AC_DEFINE([HAVE_SAPDB], [1],
[Define to 1 if the odbc extension uses the SAP DB.])
])
])

AS_VAR_IF([ODBC_TYPE],, [
PHP_ARG_WITH([solid],
[for Solid support],
[AS_HELP_STRING([[--with-solid[=DIR]]],
[Include Solid support [/usr/local/solid]])])

AS_VAR_IF([PHP_SOLID], [no], [], [
AS_VAR_IF([PHP_SOLID], [yes], [PHP_SOLID=/usr/local/solid])
ODBC_INCDIR=$PHP_SOLID/include
ODBC_LIBDIR=$PHP_SOLID/$PHP_LIBDIR
ODBC_CFLAGS=-I$ODBC_INCDIR
ODBC_TYPE=solid
if test -f $ODBC_LIBDIR/soc*35.a; then
AC_DEFINE([HAVE_SOLID_35], [1], [Define to 1 if Solid DB 3.5 is used.])
elif test -f $ODBC_LIBDIR/scl*30.a; then
AC_DEFINE([HAVE_SOLID_30], [1], [Define to 1 if Solid DB 3.0 is used.])
elif test -f $ODBC_LIBDIR/scl*23.a; then
AC_DEFINE([HAVE_SOLID], [1],
[Define to 1 if the odbc extension uses the Solid DB.])
fi
PHP_ODBC_FIND_SOLID_LIBS([$ODBC_LIBDIR])
])
])

AS_VAR_IF([ODBC_TYPE],, [
PHP_ARG_WITH([ibm-db2],
[for IBM DB2 support],
Expand Down Expand Up @@ -210,70 +48,6 @@ PHP configure:
])
])

AS_VAR_IF([ODBC_TYPE],, [
PHP_ARG_WITH([empress],
[for Empress support],
[AS_HELP_STRING([[--with-empress[=DIR]]],
[Include Empress support $EMPRESSPATH (Empress Version >= 8.60
required)])])

AS_VAR_IF([PHP_EMPRESS], [no], [], [
AS_VAR_IF([PHP_EMPRESS], [yes], [
ODBC_INCDIR=$EMPRESSPATH/include/odbc
ODBC_LIBDIR=$EMPRESSPATH/shlib
], [
ODBC_INCDIR=$PHP_EMPRESS/include/odbc
ODBC_LIBDIR=$PHP_EMPRESS/shlib
])
ODBC_CFLAGS=-I$ODBC_INCDIR
ODBC_LFLAGS=-L$ODBC_LIBDIR
ODBC_TYPE=empress
AC_DEFINE([HAVE_EMPRESS], [1],
[Define to 1 if the odbc extension uses the Empress.])
PHP_ODBC_FIND_EMPRESS_LIBS([$ODBC_LIBDIR])
])
])

AS_VAR_IF([ODBC_TYPE],, [
PHP_ARG_WITH([empress-bcs],
[for Empress local access support],
[AS_HELP_STRING([[--with-empress-bcs[=DIR]]],
[Include Empress Local Access support $EMPRESSPATH (Empress Version >=
8.60 required)])])

AS_VAR_IF([PHP_EMPRESS_BCS], [no], [], [
AS_VAR_IF([PHP_EMPRESS_BCS], [yes], [
ODBC_INCDIR=$EMPRESSPATH/include/odbc
ODBC_LIBDIR=$EMPRESSPATH/shlib
], [
ODBC_INCDIR=$PHP_EMPRESS_BCS/include/odbc
ODBC_LIBDIR=$PHP_EMPRESS_BCS/shlib
])
CC="empocc -bcs";export CC;
LD="empocc -bcs";export LD;
ODBC_CFLAGS=-I$ODBC_INCDIR
ODBC_LFLAGS=-L$ODBC_LIBDIR
LIST=$(empocc -listlines -bcs -o a a.c)

NEWLIST=
for I in $LIST
do
case $I in
$EMPRESSPATH/odbccl/lib/* | \
$EMPRESSPATH/rdbms/lib/* | \
$EMPRESSPATH/common/lib/*)
NEWLIST="$NEWLIST $I"
;;
esac
done
ODBC_LIBS="-lempphpbcs -lms -lmscfg -lbasic -lbasic_os -lnlscstab -lnlsmsgtab -lm -ldl -lcrypt"
ODBC_TYPE=empress-bcs
AC_DEFINE([HAVE_EMPRESS], [1],
[Define to 1 if the odbc extension uses the Empress.])
PHP_ODBC_FIND_EMPRESS_BCS_LIBS([$ODBC_LIBDIR])
])
])

AS_VAR_IF([ODBC_TYPE],, [
PHP_ARG_WITH([custom-odbc],
[for a custom ODBC support],
Expand Down Expand Up @@ -313,25 +87,6 @@ PHP_ARG_WITH([iodbc],
])
])

AS_VAR_IF([ODBC_TYPE],, [
PHP_ARG_WITH([esoob],
[for Easysoft ODBC-ODBC Bridge support],
[AS_HELP_STRING([[--with-esoob[=DIR]]],
[Include Easysoft OOB support [/usr/local/easysoft/oob/client]])])

AS_VAR_IF([PHP_ESOOB], [no], [], [
AS_VAR_IF([PHP_ESOOB], [yes], [PHP_ESOOB=/usr/local/easysoft/oob/client])
ODBC_INCDIR=$PHP_ESOOB/include
ODBC_LIBDIR=$PHP_ESOOB/$PHP_LIBDIR
ODBC_LFLAGS=-L$ODBC_LIBDIR
ODBC_CFLAGS=-I$ODBC_INCDIR
ODBC_LIBS=-lesoobclient
ODBC_TYPE=esoob
AC_DEFINE([HAVE_ESOOB], [1],
[Define to 1 if the odbc extension uses the Easysoft OOB.])
])
])

AS_VAR_IF([ODBC_TYPE],, [
PHP_ARG_WITH([unixODBC],
[whether to build with unixODBC support],
Expand Down Expand Up @@ -360,58 +115,10 @@ PHP_ARG_WITH([unixODBC],
])
])

AS_VAR_IF([ODBC_TYPE],, [
PHP_ARG_WITH([dbmaker],
[for DBMaker support],
[AS_HELP_STRING([[--with-dbmaker[=DIR]]],
[Include DBMaker support])])

AS_VAR_IF([PHP_DBMAKER], [no], [], [
AS_VAR_IF([PHP_DBMAKER], [yes], [
dnl Find dbmaker home directory
DBMAKER_HOME=$(grep "^dbmaker:" /etc/passwd | $AWK -F: '{print $6}')

dnl check DBMaker version (from 5.0 to 2.0)
DBMAKER_VERSION=5.0

while test ! -d $DBMAKER_HOME/$DBMAKER_VERSION && test "$DBMAKER_VERSION" != "2.9"; do
DM_VER=$(echo $DBMAKER_VERSION | $SED -e 's/\.//' | $AWK '{ print $1-1;}')
MAJOR_V=$(echo $DM_VER | $AWK '{ print $1/10; }' | $AWK -F. '{ print $1; }')
MINOR_V=$(echo $DM_VER | $AWK '{ print $1%10; }')
DBMAKER_VERSION=$MAJOR_V.$MINOR_V
done

AS_VAR_IF([DBMAKER_VERSION], [2.9],
[PHP_DBMAKER=$DBMAKER_HOME],
[PHP_DBMAKER=$DBMAKER_HOME/$DBMAKER_VERSION])
])

ODBC_INCDIR=$PHP_DBMAKER/include
ODBC_LIBDIR=$PHP_DBMAKER/$PHP_LIBDIR
ODBC_CFLAGS=-I$ODBC_INCDIR
ODBC_LFLAGS=-L$ODBC_LIBDIR
ODBC_LIBS="-ldmapic -lc"
ODBC_TYPE=dbmaker

AC_DEFINE([HAVE_DBMAKER], [1],
[Define to 1 if the odbc extension uses the DBMaker.])

AS_VAR_IF([ext_shared], [yes], [ODBC_LIBS="-ldmapic -lc -lm"], [
PHP_ADD_LIBRARY_WITH_PATH([dmapic], [$ODBC_LIBDIR])
PHP_ADD_INCLUDE([$ODBC_INCDIR])
])
])
])

dnl Extension setup
if test -n "$ODBC_TYPE"; then
AS_VAR_IF([ODBC_TYPE], [dbmaker],, [
PHP_EVAL_LIBLINE([$ODBC_LFLAGS $ODBC_LIBS], [ODBC_SHARED_LIBADD])
AS_VAR_IF([ODBC_TYPE], [solid],,
[AC_DEFINE([HAVE_SQLDATASOURCES], [1],
[Define to 1 if ODBC library has 'SQLDataSources', as a function or
macro.])])
])
PHP_EVAL_LIBLINE([$ODBC_LFLAGS $ODBC_LIBS], [ODBC_SHARED_LIBADD])

AC_DEFINE([HAVE_UODBC], [1],
[Define to 1 if the PHP extension 'odbc' is available.])
Expand Down
1 change: 0 additions & 1 deletion ext/odbc/config.w32
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ if (PHP_ODBC == "yes") {
&& CHECK_HEADER_ADD_INCLUDE("sqlext.h", "CFLAGS_ODBC")) {
EXTENSION("odbc", "php_odbc.c odbc_utils.c", PHP_ODBC_SHARED, "/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1");
AC_DEFINE("HAVE_UODBC", 1, "Define to 1 if the PHP extension 'odbc' is available.");
AC_DEFINE("HAVE_SQLDATASOURCES", 1, "Define to 1 if ODBC library has 'SQLDataSources', as a function or macro.");
} else {
WARNING("odbc support can't be enabled, libraries or header are missing (SDK)")
PHP_ODBC = "no"
Expand Down
Loading
Loading