summaryrefslogtreecommitdiff
path: root/ext/oci8/config.m4
diff options
context:
space:
mode:
Diffstat (limited to 'ext/oci8/config.m4')
-rw-r--r--ext/oci8/config.m4142
1 files changed, 111 insertions, 31 deletions
diff --git a/ext/oci8/config.m4 b/ext/oci8/config.m4
index 54342dc32f..798c761b6f 100644
--- a/ext/oci8/config.m4
+++ b/ext/oci8/config.m4
@@ -2,6 +2,12 @@ dnl
dnl $Id$
dnl
+if test -z "$SED"; then
+ PHP_OCI8_SED="sed";
+else
+ PHP_OCI8_SED="$SED";
+fi
+
AC_DEFUN([PHP_OCI_IF_DEFINED],[
old_CPPFLAGS=$CPPFLAGS
CPPFLAGS=$3
@@ -19,7 +25,16 @@ AC_DEFUN([PHP_OCI_IF_DEFINED],[
])
AC_DEFUN([AC_OCI8_CHECK_LIB_DIR],[
- PHP_CHECK_64BIT([ TMP_OCI8_LIB_DIR=lib32 ], [ TMP_OCI8_LIB_DIR=lib ])
+ AC_CHECK_SIZEOF(long int, 4)
+ AC_MSG_CHECKING([checking if we're at 64-bit platform])
+ if test "$ac_cv_sizeof_long_int" = "4" ; then
+ AC_MSG_RESULT([no])
+ TMP_OCI8_LIB_DIR=lib32
+ else
+ AC_MSG_RESULT([yes])
+ TMP_OCI8_LIB_DIR=lib
+ fi
+
AC_MSG_CHECKING([OCI8 libraries dir])
if test -d "$OCI8_DIR/lib" -a ! -d "$OCI8_DIR/lib32"; then
OCI8_LIB_DIR=lib
@@ -54,7 +69,7 @@ AC_DEFUN([AC_OCI8IC_VERSION],[
AC_DEFUN([AC_OCI8_VERSION],[
AC_MSG_CHECKING([Oracle version])
if test -s "$OCI8_DIR/orainst/unix.rgs"; then
- OCI8_VERSION=`grep '"ocommon"' $OCI8_DIR/orainst/unix.rgs | sed 's/[ ][ ]*/:/g' | cut -d: -f 6 | cut -c 2-4`
+ OCI8_VERSION=`grep '"ocommon"' $OCI8_DIR/orainst/unix.rgs | $PHP_OCI_SED 's/[ ][ ]*/:/g' | cut -d: -f 6 | cut -c 2-4`
test -z "$OCI8_VERSION" && OCI8_VERSION=7.3
elif test -f $OCI8_DIR/$OCI8_LIB_DIR/libclntsh.$SHLIB_SUFFIX_NAME.10.1; then
OCI8_VERSION=10.1
@@ -76,26 +91,33 @@ AC_DEFUN([AC_OCI8_VERSION],[
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])
-
-if test "$PHP_OCI8" = "no"; then
- 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])
-else
- PHP_OCI8_INSTANT_CLIENT="no";
+
+dnl --with-oci8=shared,instantclient,/path/to/client/dir/lib
+dnl or
+dnl --with-oci8=shared,/path/to/oracle/home
+PHP_ARG_WITH(oci8, for Oracle (OCI8) support,
+[ --with-oci8[=DIR] Include Oracle (OCI8) support.
+ The default DIR is ORACLE_HOME.
+ Use --with-oci8=instantclient,/path/to/oic/lib
+ to use Oracle Instant Client installation])
+
+PHP_OCI8_INSTANT_CLIENT="no"
+
+if test "`echo $PHP_OCI8 | cut -d, -f2`" = "instantclient"; then
+ PHP_OCI8_INSTANT_CLIENT="`echo $PHP_OCI8 | cut -d, -f3`"
+ PHP_OCI8="`echo $PHP_OCI8 | cut -d, -f1,4`"
+ if test "$PHP_OCI8_INSTANT_CLIENT" = ""; then
+ PHP_OCI8_INSTANT_CLIENT="yes"
+ fi
+elif test "`echo $PHP_OCI8 | cut -d, -f1`" = "instantclient"; then
+ PHP_OCI8_INSTANT_CLIENT="`echo $PHP_OCI8 | cut -d, -f2`"
+ PHP_OCI8="`echo $PHP_OCI8 | cut -d, -f3,4`"
+ if test "$PHP_OCI8_INSTANT_CLIENT" = ""; then
+ PHP_OCI8_INSTANT_CLIENT="yes"
+ fi
fi
-if test "$PHP_OCI8" != "no"; then
- if test "$PHP_OCI8_INSTANT_CLIENT" != "no"; then
- AC_MSG_ERROR([--with-oci8 and --with-oci8-instant-client are mutually exclusive])
- fi
+if test "$PHP_OCI8" != "no" && test "$PHP_OCI8_INSTANT_CLIENT" = "no"; then
AC_MSG_CHECKING([Oracle Install Directory])
if test "$PHP_OCI8" = "yes"; then
@@ -138,12 +160,40 @@ if test "$PHP_OCI8" != "no"; then
PHP_ADD_LIBRARY_WITH_PATH(core4, "", OCI8_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(psa, "", OCI8_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(clntsh, $OCI8_DIR/$OCI8_LIB_DIR, OCI8_SHARED_LIBADD)
+
+ PHP_CHECK_LIBRARY(clntsh, OCIEnvCreate,
+ [
+ AC_DEFINE(HAVE_OCI_ENV_CREATE,1,[ ])
+ ], [], [
+ -L$OCI8_DIR/$OCI8_LIB_DIR $OCI8_SHARED_LIBADD
+ ])
+
+ PHP_CHECK_LIBRARY(clntsh, OCIStmtPrepare2,
+ [
+ AC_DEFINE(HAVE_OCI_STMT_PREPARE2,1,[ ])
+ ], [], [
+ -L$OCI8_DIR/$OCI8_LIB_DIR $OCI8_SHARED_LIBADD
+ ])
;;
8.1)
PHP_ADD_LIBRARY(clntsh, 1, OCI8_SHARED_LIBADD)
PHP_ADD_LIBPATH($OCI8_DIR/$OCI8_LIB_DIR, OCI8_SHARED_LIBADD)
+ PHP_CHECK_LIBRARY(clntsh, OCIEnvCreate,
+ [
+ AC_DEFINE(HAVE_OCI_ENV_CREATE,1,[ ])
+ ], [], [
+ -L$OCI8_DIR/$OCI8_LIB_DIR $OCI8_SHARED_LIBADD
+ ])
+
+ PHP_CHECK_LIBRARY(clntsh, OCIStmtPrepare2,
+ [
+ AC_DEFINE(HAVE_OCI_STMT_PREPARE2,1,[ ])
+ ], [], [
+ -L$OCI8_DIR/$OCI8_LIB_DIR $OCI8_SHARED_LIBADD
+ ])
+
dnl
dnl OCI_ATTR_STATEMENT is not available in all 8.1.x versions
dnl
@@ -160,7 +210,7 @@ if test "$PHP_OCI8" != "no"; then
[
PHP_CHECK_LIBRARY(clntsh, OCINlsCharSetNameToId,
[
- AC_DEFINE(HAVE_OCI_9_2,1,[ ])
+ AC_DEFINE(HAVE_OCI_ENV_NLS_CREATE,1,[ ])
OCI8_VERSION=9.2
], [], [
-L$OCI8_DIR/$OCI8_LIB_DIR $OCI8_SHARED_LIBADD
@@ -168,13 +218,30 @@ if test "$PHP_OCI8" != "no"; then
], [], [
-L$OCI8_DIR/$OCI8_LIB_DIR $OCI8_SHARED_LIBADD
])
+
+ PHP_CHECK_LIBRARY(clntsh, OCIEnvCreate,
+ [
+ AC_DEFINE(HAVE_OCI_ENV_CREATE,1,[ ])
+ ], [], [
+ -L$OCI8_DIR/$OCI8_LIB_DIR $OCI8_SHARED_LIBADD
+ ])
+
+ PHP_CHECK_LIBRARY(clntsh, OCIStmtPrepare2,
+ [
+ AC_DEFINE(HAVE_OCI_STMT_PREPARE2,1,[ ])
+ ], [], [
+ -L$OCI8_DIR/$OCI8_LIB_DIR $OCI8_SHARED_LIBADD
+ ])
+
;;
10.1)
PHP_ADD_LIBRARY(clntsh, 1, OCI8_SHARED_LIBADD)
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_OCI_ENV_NLS_CREATE,1,[ ])
+ AC_DEFINE(HAVE_OCI_ENV_CREATE,1,[ ])
+ AC_DEFINE(HAVE_OCI_STMT_PREPARE2,1,[ ])
AC_DEFINE(HAVE_OCI8_TEMP_LOB,1,[ ])
AC_DEFINE(PHP_OCI8_HAVE_COLLECTIONS,1,[ ])
;;
@@ -207,18 +274,22 @@ if test "$PHP_OCI8" != "no"; then
PHP_CHECK_LIBRARY(clntsh, OCICollAssign,
[
AC_DEFINE(PHP_OCI8_HAVE_COLLECTIONS,1,[ ])
- ], [], [
+ PHP_NEW_EXTENSION(oci8, oci8.c oci8_lob.c oci8_statement.c oci8_collection.c oci8_interface.c, $ext_shared)
+ ],
+ [
+ PHP_NEW_EXTENSION(oci8, oci8.c oci8_lob.c oci8_statement.c oci8_interface.c, $ext_shared)
+ ],
+ [
-L$OCI8_DIR/$OCI8_LIB_DIR $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
+elif test "$PHP_OCI8" != "no" && test "$PHP_OCI8_INSTANT_CLIENT" != "no"; then
AC_MSG_CHECKING([Oracle Instant Client directory])
if test "$PHP_OCI8_INSTANT_CLIENT" = "yes"; then
@@ -227,7 +298,7 @@ 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])
+ AC_MSG_ERROR([Oracle Instant Client directory not found. Try --with-oci8=instantclient,DIR])
fi
fi
AC_MSG_RESULT($PHP_OCI8_INSTANT_CLIENT)
@@ -237,11 +308,14 @@ dnl version in /usr/lib
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!'`
+ OCISDKRPMINC=`echo "$PHP_OCI8_INSTANT_CLIENT" | $PHP_OCI8_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
+dnl Header directory for manual installation
+ OCISDKMANINC=`echo "$PHP_OCI8_INSTANT_CLIENT" | $PHP_OCI8_SED -e 's!\(.*\)/lib[[/]]*$!\1/include!'`
+
if test -f "$OCISDKRPMINC/oci.h"; then
AC_MSG_RESULT($OCISDKRPMINC)
PHP_ADD_INCLUDE($OCISDKRPMINC)
@@ -250,11 +324,15 @@ dnl Header directory for Instant Client SDK zip file install
AC_MSG_RESULT($OCISDKZIPINC)
PHP_ADD_INCLUDE($OCISDKZIPINC)
OCI8INCDIR=$OCISDKZIPINC
+ elif test -f "$OCISDKMANINC/oci.h"; then
+ AC_MSG_RESULT($OCISDKMANINC)
+ PHP_ADD_INCLUDE($OCISDKMANINC)
+ OCI8INCDIR=$OCISDKMANINC
else
AC_MSG_ERROR([Oracle Instant Client SDK header files not found])
fi
- OCISYSLIBLIST=`echo "$OCI8INCDIR" | sed -e 's!\(.*\)/include$!\1/demo/sysliblist!'`
+ OCISYSLIBLIST=`echo "$OCI8INCDIR" | $PHP_OCI_SED -e 's!\(.*\)/include$!\1/demo/sysliblist!'`
if test -f "$OCISYSLIBLIST"; then
PHP_EVAL_LIBLINE(`cat $OCISYSLIBLIST`, OCI8_SYSLIB)
fi
@@ -271,13 +349,15 @@ dnl Header directory for Instant Client SDK zip file install
;;
esac
+ AC_DEFINE(HAVE_OCI_INSTANT_CLIENT,1,[ ])
AC_DEFINE(HAVE_OCI8_ATTR_STATEMENT,1,[ ])
- AC_DEFINE(HAVE_OCI_9_2,1,[ ])
+ AC_DEFINE(HAVE_OCI_ENV_NLS_CREATE,1,[ ])
+ AC_DEFINE(HAVE_OCI_ENV_CREATE,1,[ ])
+ AC_DEFINE(HAVE_OCI_STMT_PREPARE2,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)
+ PHP_NEW_EXTENSION(oci8, oci8.c oci8_lob.c oci8_statement.c oci8_collection.c oci8_interface.c, $ext_shared)
AC_DEFINE(HAVE_OCI8,1,[ ])
PHP_SUBST_OLD(OCI8_SHARED_LIBADD)