diff options
author | Antony Dovgal <tony2001@php.net> | 2004-12-23 16:20:09 +0000 |
---|---|---|
committer | Antony Dovgal <tony2001@php.net> | 2004-12-23 16:20:09 +0000 |
commit | 78edc7e65a2ccc1ac9bdf450aac99b20db5a8570 (patch) | |
tree | f8bc9bb7c5cabb36cc30ef592cff29d37910ebf6 /ext/oci8 | |
parent | d3d757d95ad49f990ffaf774aa4c0d693e2809c8 (diff) | |
download | php-git-78edc7e65a2ccc1ac9bdf450aac99b20db5a8570.tar.gz |
add Oracle Instant Client support (initial patch by cjbj at hotmail dot com)
Diffstat (limited to 'ext/oci8')
-rw-r--r-- | ext/oci8/config.m4 | 110 |
1 files changed, 104 insertions, 6 deletions
diff --git a/ext/oci8/config.m4 b/ext/oci8/config.m4 index d2873a7969..cb465a837e 100644 --- a/ext/oci8/config.m4 +++ b/ext/oci8/config.m4 @@ -28,11 +28,29 @@ AC_DEFUN(AC_OCI8_CHECK_LIB_DIR,[ elif test -d "$OCI8_DIR/lib" -a -d "$OCI8_DIR/lib32"; then OCI8_LIB_DIR=$TMP_OCI8_LIB_DIR else - AC_MSG_ERROR(Oracle-OCI8 libraries directory not found) + AC_MSG_ERROR([Oracle (OCI8) required libraries not found]) fi AC_MSG_RESULT($OCI8_LIB_DIR) ]) +AC_DEFUN(AC_OCI8IC_VERSION,[ + AC_MSG_CHECKING([Oracle Instant Client version]) + if test -f $PHP_OCI8_INSTANT_CLIENT/libociei.$SHLIB_SUFFIX_NAME; then + if test -f $PHP_OCI8_INSTANT_CLIENT/libclntsh.$SHLIB_SUFFIX_NAME.10.1; then + if test ! -f $PHP_OCI8_INSTANT_CLIENT/libclntsh.$SHLIB_SUFFIX_NAME; then + AC_MSG_ERROR([Link from $PHP_OCI8_INSTANT_CLIENT/libclntsh.$SHLIB_SUFFIX_NAME to libclntsh.$SHLIB_SUFFIX_NAME.10.1 not found]) + fi + OCI8_VERSION=10.1 + else + AC_MSG_ERROR([Oracle Instant Client library version not supported]) + fi + else + AC_MSG_ERROR([Oracle Instant Client libraries not found]) + fi + AC_MSG_RESULT([$OCI8_VERSION]) +]) + + AC_DEFUN(AC_OCI8_VERSION,[ AC_MSG_CHECKING([Oracle version]) if test -s "$OCI8_DIR/orainst/unix.rgs"; then @@ -58,11 +76,24 @@ AC_DEFUN(AC_OCI8_VERSION,[ AC_MSG_RESULT($OCI8_VERSION) ]) -PHP_ARG_WITH(oci8, for Oracle-OCI8 support, -[ --with-oci8[=DIR] Include Oracle-oci8 support. Default DIR is ORACLE_HOME.]) +PHP_ARG_WITH(oci8, for Oracle (OCI8) support using ORACLE_HOME installation, +[ --with-oci8[=DIR] Include Oracle (OCI8) support using an ORACLE_HOME + install. The default DIR is ORACLE_HOME]) + +PHP_ARG_WITH(oci8-instant-client, for Oracle (OCI8) support using Oracle Instant Client, +[ --with-oci8-instant-client[=DIR] + Include Oracle (OCI8) support using + Oracle Instant Client. DIR is the directory with the + Instant Client libraries. On Linux it will default to + /usr/lib/oracle/<most_recent_version>/client/lib + Other platforms will need to have it explicitly specified.]) if test "$PHP_OCI8" != "no"; then - AC_MSG_CHECKING([Oracle Install-Dir]) + if test "$PHP_OCI8_INSTANT_CLIENT" != "no"; then + AC_MSG_ERROR([--with-oci8 and --with-oci8-instant-client are mutually exclusive]) + fi + + AC_MSG_CHECKING([Oracle Install Directory]) if test "$PHP_OCI8" = "yes"; then OCI8_DIR=$ORACLE_HOME else @@ -140,9 +171,11 @@ if test "$PHP_OCI8" != "no"; then PHP_ADD_LIBPATH($OCI8_DIR/$OCI8_LIB_DIR, OCI8_SHARED_LIBADD) AC_DEFINE(HAVE_OCI8_ATTR_STATEMENT,1,[ ]) AC_DEFINE(HAVE_OCI_9_2,1,[ ]) + AC_DEFINE(HAVE_OCI8_TEMP_LOB,1,[ ]) + AC_DEFINE(PHP_OCI8_HAVE_COLLECTIONS,1,[ ]) ;; *) - AC_MSG_ERROR(Unsupported Oracle version!) + AC_MSG_ERROR([Unsupported Oracle version!]) ;; esac @@ -174,7 +207,6 @@ if test "$PHP_OCI8" != "no"; then -L$OCI8_DIR/$OCI8_LIB_DIR $OCI8_SHARED_LIBADD ]) - PHP_NEW_EXTENSION(oci8, oci8.c, $ext_shared) AC_DEFINE(HAVE_OCI8,1,[ ]) @@ -182,4 +214,70 @@ if test "$PHP_OCI8" != "no"; then PHP_SUBST_OLD(OCI8_DIR) PHP_SUBST_OLD(OCI8_VERSION) +elif test "$PHP_OCI8_INSTANT_CLIENT" != "no"; then + + AC_MSG_CHECKING([Oracle Instant Client directory]) + if test "$PHP_OCI8_INSTANT_CLIENT" = "yes"; then +dnl Generally the Instant Client can be anywhere so the user must pass in the +dnl directory to the libraries. But on Linux we default to the most recent +dnl version in /usr/lib + PHP_OCI8_INSTANT_CLIENT=`ls -d /usr/lib/oracle/*/client/lib 2> /dev/null | tail -1` + if test -z "$PHP_OCI8_INSTANT_CLIENT"; then + AC_MSG_ERROR([Oracle Instant Client directory not found. Try --with-oci8-instant-client=DIR]) + fi + fi + AC_MSG_RESULT($PHP_OCI8_INSTANT_CLIENT) + + OCI8_DIR=$PHP_OCI8_INSTANT_CLIENT + + AC_MSG_CHECKING([Oracle Instant Client SDK header directory]) + +dnl Header directory for Instant Client SDK RPM install + OCISDKRPMINC=`echo "$PHP_OCI8_INSTANT_CLIENT" | sed -e 's!^/usr/lib/oracle/\(.*\)/client/lib[[/]]*$!/usr/include/oracle/\1/client!'` + +dnl Header directory for Instant Client SDK zip file install + OCISDKZIPINC=$PHP_OCI8_INSTANT_CLIENT/sdk/include + + if test -f "$OCISDKRPMINC/oci.h"; then + AC_MSG_RESULT($OCISDKRPMINC) + PHP_ADD_INCLUDE($OCISDKRPMINC) + OCI8INCDIR=$OCISDKRPMINC + elif test -f "$OCISDKZIPINC/oci.h"; then + AC_MSG_RESULT($OCISDKZIPINC) + PHP_ADD_INCLUDE($OCISDKZIPINC) + OCI8INCDIR=$OCISDKZIPINC + else + AC_MSG_ERROR([Oracle Instant Client SDK header files not found]) + fi + + OCISYSLIBLIST=`echo "$OCI8INCDIR" | sed -e 's!\(.*\)/include$!\1/demo/sysliblist!'` + if test -f "$OCISYSLIBLIST"; then + PHP_EVAL_LIBLINE(`cat $OCISYSLIBLIST`, OCI8_SYSLIB) + fi + + AC_OCI8IC_VERSION($PHP_OCI8_INSTANT_CLIENT) + case $OCI8_VERSION in + 10.1) + PHP_ADD_LIBRARY(clntsh, 1, OCI8_SHARED_LIBADD) + PHP_ADD_LIBPATH($PHP_OCI8_INSTANT_CLIENT, OCI8_SHARED_LIBADD) + ;; + + *) + AC_MSG_ERROR([Unsupported Oracle Instant Client version]) + ;; + esac + + AC_DEFINE(HAVE_OCI8_ATTR_STATEMENT,1,[ ]) + AC_DEFINE(HAVE_OCI_9_2,1,[ ]) + AC_DEFINE(HAVE_OCI8_TEMP_LOB,1,[ ]) + AC_DEFINE(PHP_OCI8_HAVE_COLLECTIONS,1,[ ]) + AC_DEFINE(HAVE_OCI_INSTANT_CLIENT,1,[ ]) + + PHP_NEW_EXTENSION(oci8, oci8.c, $ext_shared) + AC_DEFINE(HAVE_OCI8,1,[ ]) + + PHP_SUBST_OLD(OCI8_SHARED_LIBADD) + PHP_SUBST_OLD(OCI8_DIR) + PHP_SUBST_OLD(OCI8_VERSION) + fi |