1dnl $Id$ 2dnl config.m4 for extension pdo_oci 3dnl vim:et:sw=2:ts=2: 4 5SUPPORTED_LIB_VERS="9.0 10.1 11.1 12.1" # The lib vers are not bumped when the DB version is bumped 6AC_DEFUN([AC_PDO_OCI_VERSION],[ 7 AC_MSG_CHECKING([Oracle version]) 8 for OCI_VER in $SUPPORTED_LIB_VERS; do 9 if test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.$OCI_VER; then 10 PDO_OCI_VERSION="$OCI_VER" 11 fi 12 done 13 if test -z "$PDO_OCI_VERSION"; then 14 AC_MSG_ERROR([Oracle required OCI8 libraries not found under $PDO_OCI_DIR]) 15 fi 16 AC_MSG_RESULT($PDO_OCI_VERSION) 17]) 18 19AC_DEFUN([AC_PDO_OCI_CHECK_LIB_DIR],[ 20 AC_CHECK_SIZEOF(long int, 4) 21 AC_MSG_CHECKING([if we're on a 64-bit platform]) 22 if test "$ac_cv_sizeof_long_int" = "4" ; then 23 AC_MSG_RESULT([no]) 24 TMP_PDO_OCI_LIB_DIR="$PDO_OCI_DIR/lib32" 25 else 26 AC_MSG_RESULT([yes]) 27 TMP_PDO_OCI_LIB_DIR="$PDO_OCI_DIR/lib" 28 fi 29 30 AC_MSG_CHECKING([OCI8 libraries dir]) 31 if test -d "$PDO_OCI_DIR/lib" && test ! -d "$PDO_OCI_DIR/lib32"; then 32 PDO_OCI_LIB_DIR="$PDO_OCI_DIR/lib" 33 elif test ! -d "$PDO_OCI_DIR/lib" && test -d "$PDO_OCI_DIR/lib32"; then 34 PDO_OCI_LIB_DIR="$PDO_OCI_DIR/lib32" 35 elif test -d "$PDO_OCI_DIR/lib" && test -d "$PDO_OCI_DIR/lib32"; then 36 PDO_OCI_LIB_DIR=$TMP_PDO_OCI_LIB_DIR 37 else 38 AC_MSG_ERROR([Oracle required OCI8 libraries not found]) 39 fi 40 AC_MSG_RESULT($PDO_OCI_LIB_DIR) 41]) 42 43PHP_ARG_WITH(pdo-oci, Oracle OCI support for PDO, 44[ --with-pdo-oci[=DIR] PDO: Oracle OCI support. DIR defaults to \$ORACLE_HOME. 45 Use --with-pdo-oci=instantclient,prefix,version 46 for an Oracle Instant Client SDK. 47 For example on Linux with 11.2 RPMs use: 48 --with-pdo-oci=instantclient,/usr,11.2 49 With 10.2 RPMs use: 50 --with-pdo-oci=instantclient,/usr,10.2.0.4]) 51 52if test "$PHP_PDO_OCI" != "no"; then 53 54 if test "$PHP_PDO" = "no" && test "$ext_shared" = "no"; then 55 AC_MSG_ERROR([PDO is not enabled! Add --enable-pdo to your configure line.]) 56 fi 57 58 AC_MSG_CHECKING([Oracle Install-Dir]) 59 if test "$PHP_PDO_OCI" = "yes" || test -z "$PHP_PDO_OCI"; then 60 PDO_OCI_DIR=$ORACLE_HOME 61 else 62 PDO_OCI_DIR=$PHP_PDO_OCI 63 fi 64 AC_MSG_RESULT($PHP_PDO_OCI) 65 66 AC_MSG_CHECKING([if that is sane]) 67 if test -z "$PDO_OCI_DIR"; then 68 AC_MSG_ERROR([ 69You need to tell me where to find your Oracle Instant Client SDK, or set ORACLE_HOME. 70]) 71 else 72 AC_MSG_RESULT([yes]) 73 fi 74 75 if test "instantclient" = "`echo $PDO_OCI_DIR | cut -d, -f1`" ; then 76 AC_CHECK_SIZEOF(long int, 4) 77 if test "$ac_cv_sizeof_long_int" = "4" ; then 78 PDO_OCI_CLIENT_DIR="client" 79 else 80 PDO_OCI_CLIENT_DIR="client64" 81 fi 82 PDO_OCI_IC_PREFIX="`echo $PDO_OCI_DIR | cut -d, -f2`" 83 PDO_OCI_IC_VERS="`echo $PDO_OCI_DIR | cut -d, -f3`" 84 if test -n "$PDO_OCI_IC_VERS"; then 85 PDO_OCI_IC_MAJ_VER="`echo $PDO_OCI_IC_VERS | cut -d. -f1`" 86 if test "$PDO_OCI_IC_MAJ_VER" -ge 11; then 87 # From 11.1.0.7 the RPM path only has an X.Y component 88 PDO_OCI_IC_VERS="`echo $PDO_OCI_IC_VERS | cut -d. -f1-2`" 89 fi 90 fi 91 AC_MSG_CHECKING([for oci.h]) 92 if test -f $PDO_OCI_IC_PREFIX/include/oracle/$PDO_OCI_IC_VERS/$PDO_OCI_CLIENT_DIR/oci.h ; then 93 PHP_ADD_INCLUDE($PDO_OCI_IC_PREFIX/include/oracle/$PDO_OCI_IC_VERS/$PDO_OCI_CLIENT_DIR) 94 AC_MSG_RESULT($PDO_OCI_IC_PREFIX/include/oracle/$PDO_OCI_IC_VERS/$PDO_OCI_CLIENT_DIR) 95 elif test -f $PDO_OCI_IC_PREFIX/lib/oracle/$PDO_OCI_IC_VERS/$PDO_OCI_CLIENT_DIR/include/oci.h ; then 96 PHP_ADD_INCLUDE($PDO_OCI_IC_PREFIX/lib/oracle/$PDO_OCI_IC_VERS/$PDO_OCI_CLIENT_DIR/include) 97 AC_MSG_RESULT($PDO_OCI_IC_PREFIX/lib/oracle/$PDO_OCI_IC_VERS/$PDO_OCI_CLIENT_DIR/include) 98 elif test -f $PDO_OCI_IC_PREFIX/sdk/include/oci.h ; then 99 PHP_ADD_INCLUDE($PDO_OCI_IC_PREFIX/sdk/include) 100 AC_MSG_RESULT($PDO_OCI_IC_PREFIX/sdk/include) 101 elif test -f $PDO_OCI_IC_PREFIX/$PDO_OCI_CLIENT_DIR/include/oci.h ; then 102 PHP_ADD_INCLUDE($PDO_OCI_IC_PREFIX/$PDO_OCI_CLIENT_DIR/include) 103 AC_MSG_RESULT($PDO_OCI_IC_PREFIX/$PDO_OCI_CLIENT_DIR/include) 104 else 105 AC_MSG_ERROR([I'm too dumb to figure out where the include dir is in your Instant Client install]) 106 fi 107 if test -f "$PDO_OCI_IC_PREFIX/lib/oracle/$PDO_OCI_IC_VERS/$PDO_OCI_CLIENT_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME" ; then 108 PDO_OCI_LIB_DIR="$PDO_OCI_IC_PREFIX/lib/oracle/$PDO_OCI_IC_VERS/$PDO_OCI_CLIENT_DIR/lib" 109 elif test -f "$PDO_OCI_IC_PREFIX/$PDO_OCI_CLIENT_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME" ; then 110 PDO_OCI_LIB_DIR="$PDO_OCI_IC_PREFIX/$PDO_OCI_CLIENT_DIR/lib" 111 elif test -f "$PDO_OCI_IC_PREFIX/libclntsh.$SHLIB_SUFFIX_NAME" ; then 112 PDO_OCI_LIB_DIR="$PDO_OCI_IC_PREFIX" 113 else 114 AC_MSG_ERROR([I'm too dumb to figure out where the libraries are in your Instant Client install]) 115 fi 116 PDO_OCI_VERSION="`echo $PDO_OCI_IC_VERS | cut -d. -f1-2`" 117 else 118 AC_PDO_OCI_CHECK_LIB_DIR($PDO_OCI_DIR) 119 120 if test -d "$PDO_OCI_DIR/rdbms/public"; then 121 PHP_ADD_INCLUDE($PDO_OCI_DIR/rdbms/public) 122 PDO_OCI_INCLUDES="$PDO_OCI_INCLUDES -I$PDO_OCI_DIR/rdbms/public" 123 fi 124 if test -d "$PDO_OCI_DIR/rdbms/demo"; then 125 PHP_ADD_INCLUDE($PDO_OCI_DIR/rdbms/demo) 126 PDO_OCI_INCLUDES="$PDO_OCI_INCLUDES -I$PDO_OCI_DIR/rdbms/demo" 127 fi 128 if test -d "$PDO_OCI_DIR/network/public"; then 129 PHP_ADD_INCLUDE($PDO_OCI_DIR/network/public) 130 PDO_OCI_INCLUDES="$PDO_OCI_INCLUDES -I$PDO_OCI_DIR/network/public" 131 fi 132 if test -d "$PDO_OCI_DIR/plsql/public"; then 133 PHP_ADD_INCLUDE($PDO_OCI_DIR/plsql/public) 134 PDO_OCI_INCLUDES="$PDO_OCI_INCLUDES -I$PDO_OCI_DIR/plsql/public" 135 fi 136 if test -d "$PDO_OCI_DIR/include"; then 137 PHP_ADD_INCLUDE($PDO_OCI_DIR/include) 138 PDO_OCI_INCLUDES="$PDO_OCI_INCLUDES -I$PDO_OCI_DIR/include" 139 fi 140 141 if test -f "$PDO_OCI_LIB_DIR/sysliblist"; then 142 PHP_EVAL_LIBLINE(`cat $PDO_OCI_LIB_DIR/sysliblist`, PDO_OCI_SYSLIB) 143 elif test -f "$PDO_OCI_DIR/rdbms/lib/sysliblist"; then 144 PHP_EVAL_LIBLINE(`cat $PDO_OCI_DIR/rdbms/lib/sysliblist`, PDO_OCI_SYSLIB) 145 fi 146 AC_PDO_OCI_VERSION($PDO_OCI_DIR) 147 fi 148 149 case $PDO_OCI_VERSION in 150 9.0|10.1|10.2|11.1|11.2|12.1) 151 PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD) 152 ;; 153 154 *) 155 AC_MSG_ERROR(Unsupported Oracle version $PDO_OCI_VERSION) 156 ;; 157 esac 158 159 PHP_ADD_LIBPATH($PDO_OCI_LIB_DIR, PDO_OCI_SHARED_LIBADD) 160 161 PHP_CHECK_LIBRARY(clntsh, OCIEnvCreate, 162 [ 163 AC_DEFINE(HAVE_OCIENVCREATE,1,[ ]) 164 ], [], [ 165 -L$PDO_OCI_LIB_DIR $PDO_OCI_SHARED_LIBADD 166 ]) 167 168 PHP_CHECK_LIBRARY(clntsh, OCIEnvNlsCreate, 169 [ 170 AC_DEFINE(HAVE_OCIENVNLSCREATE,1,[ ]) 171 ], [], [ 172 -L$PDO_OCI_LIB_DIR $PDO_OCI_SHARED_LIBADD 173 ]) 174 175 dnl 176 dnl Check if we need to add -locijdbc8 177 dnl 178 PHP_CHECK_LIBRARY(clntsh, OCILobIsTemporary, 179 [ 180 AC_DEFINE(HAVE_OCILOBISTEMPORARY,1,[ ]) 181 ], [ 182 PHP_CHECK_LIBRARY(ocijdbc8, OCILobIsTemporary, 183 [ 184 PHP_ADD_LIBRARY(ocijdbc8, 1, PDO_OCI_SHARED_LIBADD) 185 AC_DEFINE(HAVE_OCILOBISTEMPORARY,1,[ ]) 186 ], [], [ 187 -L$PDO_OCI_LIB_DIR $PDO_OCI_SHARED_LIBADD 188 ]) 189 ], [ 190 -L$PDO_OCI_LIB_DIR $PDO_OCI_SHARED_LIBADD 191 ]) 192 193 dnl 194 dnl Check if we have collections 195 dnl 196 PHP_CHECK_LIBRARY(clntsh, OCICollAssign, 197 [ 198 AC_DEFINE(HAVE_OCICOLLASSIGN,1,[ ]) 199 ], [], [ 200 -L$PDO_OCI_LIB_DIR $PDO_OCI_SHARED_LIBADD 201 ]) 202 203 dnl Scrollable cursors? 204 PHP_CHECK_LIBRARY(clntsh, OCIStmtFetch2, 205 [ 206 AC_DEFINE(HAVE_OCISTMTFETCH2,1,[ ]) 207 ], [], [ 208 -L$PDO_OCI_LIB_DIR $PDO_OCI_SHARED_LIBADD 209 ]) 210 211 ifdef([PHP_CHECK_PDO_INCLUDES], 212 [ 213 PHP_CHECK_PDO_INCLUDES 214 ],[ 215 AC_MSG_CHECKING([for PDO includes]) 216 if test -f $abs_srcdir/include/php/ext/pdo/php_pdo_driver.h; then 217 pdo_cv_inc_path=$abs_srcdir/ext 218 elif test -f $abs_srcdir/ext/pdo/php_pdo_driver.h; then 219 pdo_cv_inc_path=$abs_srcdir/ext 220 elif test -f $prefix/include/php/ext/pdo/php_pdo_driver.h; then 221 pdo_cv_inc_path=$prefix/include/php/ext 222 else 223 AC_MSG_ERROR([Cannot find php_pdo_driver.h.]) 224 fi 225 AC_MSG_RESULT($pdo_cv_inc_path) 226 ]) 227 228 PHP_NEW_EXTENSION(pdo_oci, pdo_oci.c oci_driver.c oci_statement.c, $ext_shared,,-I$pdo_cv_inc_path) 229 230 PHP_SUBST_OLD(PDO_OCI_SHARED_LIBADD) 231 PHP_SUBST_OLD(PDO_OCI_DIR) 232 PHP_SUBST_OLD(PDO_OCI_VERSION) 233 234 ifdef([PHP_ADD_EXTENSION_DEP], 235 [ 236 PHP_ADD_EXTENSION_DEP(pdo_oci, pdo) 237 ]) 238 239 AC_DEFINE_UNQUOTED(PHP_PDO_OCI_CLIENT_VERSION, "$PDO_OCI_VERSION", [ ]) 240fi 241 242