cvs: php-src(PHP_4_3) /ext/oci8 config.m4

From: Date: Thu, 23 Dec 2004 16:23:22 +0000
Subject: cvs: php-src(PHP_4_3) /ext/oci8 config.m4
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-29642@lists.php.net to get a copy of this message
tony2001 Thu Dec 23 11:23:22 2004 EDT Modified files: (Branch: PHP_4_3) /php-src/ext/oci8 config.m4 Log: MFH: add Oracle Instant Client support (patch by cjbj at hotmail dot com) http://cvs.php.net/diff.php/php-src/ext/oci8/config.m4?r1=1.37.2.9&r2=1.37.2.10&ty=u Index: php-src/ext/oci8/config.m4 diff -u php-src/ext/oci8/config.m4:1.37.2.9 php-src/ext/oci8/config.m4:1.37.2.10 --- php-src/ext/oci8/config.m4:1.37.2.9 Tue Feb 3 09:22:34 2004 +++ php-src/ext/oci8/config.m4 Thu Dec 23 11:23:22 2004 @@ -1,5 +1,5 @@ dnl -dnl $Id: config.m4,v 1.37.2.9 2004/02/03 14:22:34 tony2001 Exp $ +dnl $Id: config.m4,v 1.37.2.10 2004/12/23 16:23:22 tony2001 Exp $ dnl AC_DEFUN(PHP_OCI_IF_DEFINED,[ @@ -38,16 +38,47 @@ OCI8_VERSION=8.1 fi else - AC_MSG_ERROR(Oracle-OCI8 needed libraries not found) + AC_MSG_ERROR([Oracle (OCI8) required libraries not found]) fi 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.]) +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]) +]) + +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 @@ -116,14 +147,18 @@ -L$OCI8_DIR/lib $OCI8_SHARED_LIBADD ]) ;; + 10.1) PHP_ADD_LIBRARY(clntsh, 1, OCI8_SHARED_LIBADD) PHP_ADD_LIBPATH($OCI8_DIR/lib, 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 @@ -145,10 +180,88 @@ -L$OCI8_DIR/lib $OCI8_SHARED_LIBADD ]) + dnl + dnl Check if we have collections + dnl + PHP_CHECK_LIBRARY(clntsh, OCICollAssign, + [ + AC_DEFINE(PHP_OCI8_HAVE_COLLECTIONS,1,[ ]) + ], [], [ + -L$OCI8_DIR/lib $OCI8_SHARED_LIBADD + ]) + + 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) + +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

« previous php.cvs (#29642) next »