tony2001 Thu Dec 23 11:20:09 2004 EDT Modified files: /php-src/ext/oci8 config.m4 Log: add Oracle Instant Client support (initial patch by cjbj at hotmail dot com) http://cvs.php.net/diff.php/php-src/ext/oci8/config.m4?r1=1.51&r2=1.52&ty=u Index: php-src/ext/oci8/config.m4 diff -u php-src/ext/oci8/config.m4:1.51 php-src/ext/oci8/config.m4:1.52 --- php-src/ext/oci8/config.m4:1.51 Sun Sep 12 02:38:31 2004 +++ php-src/ext/oci8/config.m4 Thu Dec 23 11:20:09 2004 @@ -1,5 +1,5 @@ dnl -dnl $Id: config.m4,v 1.51 2004/09/12 06:38:31 tony2001 Exp $ +dnl $Id: config.m4,v 1.52 2004/12/23 16:20:09 tony2001 Exp $ dnl AC_DEFUN(PHP_OCI_IF_DEFINED,[ @@ -28,11 +28,29 @@ 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_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 @@ 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 @@ -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 @@ 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
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php