config.m4 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. dnl config.m4 for extension pdo_oci
  2. dnl vim:et:sw=2:ts=2:
  3. if test -z "$SED"; then
  4. PHP_PDO_OCI_SED="sed";
  5. else
  6. PHP_PDO_OCI_SED="$SED";
  7. fi
  8. PHP_PDO_OCI_TAIL1=`echo a | tail -n1 2>/dev/null`
  9. if test "$PHP_PDO_OCI_TAIL1" = "a"; then
  10. PHP_PDO_OCI_TAIL1="tail -n1"
  11. else
  12. PHP_PDO_OCI_TAIL1="tail -1"
  13. fi
  14. AC_DEFUN([AC_PDO_OCI_VERSION],[
  15. AC_MSG_CHECKING([Oracle version])
  16. PDO_OCI_LCS_BASE=$PDO_OCI_LIB_DIR/libclntsh.$SHLIB_SUFFIX_NAME
  17. PDO_OCI_LCS=`ls $PDO_OCI_LCS_BASE.*.1 2> /dev/null | $PHP_PDO_OCI_TAIL1` # Oracle 10g, 11g, 12c etc
  18. if test -f "$PDO_OCI_LCS"; then
  19. dnl Oracle 10g, 11g 12c etc. The x.2 version libraries are named x.1 for drop in compatibility
  20. PDO_OCI_VERSION=`echo $PDO_OCI_LCS | $PHP_PDO_OCI_SED -e 's/.*\.\(.*\)\.1$/\1.1/'`
  21. elif test -f $PDO_OCI_LCS_BASE.9.0; then
  22. dnl There is no case for Oracle 9.2. Oracle 9.2 libraries have a 9.0 suffix for drop-in compatibility with Oracle 9.0
  23. PDO_OCI_VERSION=9.0
  24. else
  25. AC_MSG_ERROR(Oracle libclntsh.$SHLIB_SUFFIX_NAME client library not found or its version is lower than 9)
  26. fi
  27. AC_MSG_RESULT($PDO_OCI_VERSION)
  28. ])
  29. AC_DEFUN([AC_PDO_OCI_CHECK_LIB_DIR],[
  30. AC_CHECK_SIZEOF(long int, 4)
  31. AC_MSG_CHECKING([if we're on a 64-bit platform])
  32. if test "$ac_cv_sizeof_long_int" = "4" ; then
  33. AC_MSG_RESULT([no])
  34. TMP_PDO_OCI_LIB_DIR="$PDO_OCI_DIR/lib32"
  35. else
  36. AC_MSG_RESULT([yes])
  37. TMP_PDO_OCI_LIB_DIR="$PDO_OCI_DIR/lib"
  38. fi
  39. AC_MSG_CHECKING([OCI8 libraries dir])
  40. if test -d "$PDO_OCI_DIR/lib" && test ! -d "$PDO_OCI_DIR/lib32"; then
  41. PDO_OCI_LIB_DIR="$PDO_OCI_DIR/lib"
  42. elif test ! -d "$PDO_OCI_DIR/lib" && test -d "$PDO_OCI_DIR/lib32"; then
  43. PDO_OCI_LIB_DIR="$PDO_OCI_DIR/lib32"
  44. elif test -d "$PDO_OCI_DIR/lib" && test -d "$PDO_OCI_DIR/lib32"; then
  45. PDO_OCI_LIB_DIR=$TMP_PDO_OCI_LIB_DIR
  46. else
  47. AC_MSG_ERROR([Oracle required OCI8 libraries not found])
  48. fi
  49. AC_MSG_RESULT($PDO_OCI_LIB_DIR)
  50. ])
  51. PHP_ARG_WITH(pdo-oci, Oracle OCI support for PDO,
  52. [ --with-pdo-oci[=DIR] PDO: Oracle OCI support. DIR defaults to [$]ORACLE_HOME.
  53. Use --with-pdo-oci=instantclient,/path/to/instant/client/lib
  54. for an Oracle Instant Client installation.])
  55. if test "$PHP_PDO_OCI" != "no"; then
  56. if test "$PHP_PDO" = "no" && test "$ext_shared" = "no"; then
  57. AC_MSG_ERROR([PDO is not enabled! Add --enable-pdo to your configure line.])
  58. fi
  59. AC_MSG_CHECKING([Oracle Install-Dir])
  60. if test "$PHP_PDO_OCI" = "yes" || test -z "$PHP_PDO_OCI"; then
  61. PDO_OCI_DIR=$ORACLE_HOME
  62. else
  63. PDO_OCI_DIR=$PHP_PDO_OCI
  64. fi
  65. AC_MSG_RESULT($PHP_PDO_OCI)
  66. AC_MSG_CHECKING([if that is sane])
  67. if test -z "$PDO_OCI_DIR"; then
  68. AC_MSG_ERROR([You need to tell me where to find your Oracle Instant Client SDK, or set ORACLE_HOME.])
  69. else
  70. AC_MSG_RESULT([yes])
  71. fi
  72. if test "instantclient" = "`echo $PDO_OCI_DIR | cut -d, -f1`" ; then
  73. AC_CHECK_SIZEOF(long int, 4)
  74. if test "$ac_cv_sizeof_long_int" = "4" ; then
  75. PDO_OCI_CLIENT_DIR="client"
  76. else
  77. PDO_OCI_CLIENT_DIR="client64"
  78. fi
  79. PDO_OCI_LIB_DIR="`echo $PDO_OCI_DIR | cut -d, -f2`"
  80. AC_PDO_OCI_VERSION($PDO_OCI_LIB_DIR)
  81. AC_MSG_CHECKING([for oci.h])
  82. dnl Header directory for Instant Client SDK RPM install
  83. OCISDKRPMINC=`echo "$PDO_OCI_LIB_DIR" | $PHP_PDO_OCI_SED -e 's!^\(.*\)/lib/oracle/\(.*\)/\('${PDO_OCI_CLIENT_DIR}'\)/lib[/]*$!\1/include/oracle/\2/\3!'`
  84. dnl Header directory for manual installation
  85. OCISDKMANINC=`echo "$PDO_OCI_LIB_DIR" | $PHP_PDO_OCI_SED -e 's!^\(.*\)/lib[/]*$!\1/include!'`
  86. dnl Header directory for Instant Client SDK zip file install
  87. OCISDKZIPINC=$PDO_OCI_LIB_DIR/sdk/include
  88. if test -f "$OCISDKRPMINC/oci.h" ; then
  89. PHP_ADD_INCLUDE($OCISDKRPMINC)
  90. AC_MSG_RESULT($OCISDKRPMINC)
  91. elif test -f "$OCISDKMANINC/oci.h" ; then
  92. PHP_ADD_INCLUDE($OCISDKMANINC)
  93. AC_MSG_RESULT($OCISDKMANINC)
  94. elif test -f "$OCISDKZIPINC/oci.h" ; then
  95. PHP_ADD_INCLUDE($OCISDKZIPINC)
  96. AC_MSG_RESULT($OCISDKZIPINC)
  97. else
  98. AC_MSG_ERROR([I'm too dumb to figure out where the include dir is in your Instant Client install])
  99. fi
  100. else
  101. AC_PDO_OCI_CHECK_LIB_DIR($PDO_OCI_DIR)
  102. if test -d "$PDO_OCI_DIR/rdbms/public"; then
  103. PHP_ADD_INCLUDE($PDO_OCI_DIR/rdbms/public)
  104. PDO_OCI_INCLUDES="$PDO_OCI_INCLUDES -I$PDO_OCI_DIR/rdbms/public"
  105. fi
  106. if test -d "$PDO_OCI_DIR/rdbms/demo"; then
  107. PHP_ADD_INCLUDE($PDO_OCI_DIR/rdbms/demo)
  108. PDO_OCI_INCLUDES="$PDO_OCI_INCLUDES -I$PDO_OCI_DIR/rdbms/demo"
  109. fi
  110. if test -d "$PDO_OCI_DIR/network/public"; then
  111. PHP_ADD_INCLUDE($PDO_OCI_DIR/network/public)
  112. PDO_OCI_INCLUDES="$PDO_OCI_INCLUDES -I$PDO_OCI_DIR/network/public"
  113. fi
  114. if test -d "$PDO_OCI_DIR/plsql/public"; then
  115. PHP_ADD_INCLUDE($PDO_OCI_DIR/plsql/public)
  116. PDO_OCI_INCLUDES="$PDO_OCI_INCLUDES -I$PDO_OCI_DIR/plsql/public"
  117. fi
  118. if test -d "$PDO_OCI_DIR/include"; then
  119. PHP_ADD_INCLUDE($PDO_OCI_DIR/include)
  120. PDO_OCI_INCLUDES="$PDO_OCI_INCLUDES -I$PDO_OCI_DIR/include"
  121. fi
  122. if test -f "$PDO_OCI_LIB_DIR/sysliblist"; then
  123. PHP_EVAL_LIBLINE(`cat $PDO_OCI_LIB_DIR/sysliblist`, PDO_OCI_SYSLIB)
  124. elif test -f "$PDO_OCI_DIR/rdbms/lib/sysliblist"; then
  125. PHP_EVAL_LIBLINE(`cat $PDO_OCI_DIR/rdbms/lib/sysliblist`, PDO_OCI_SYSLIB)
  126. fi
  127. AC_PDO_OCI_VERSION($PDO_OCI_LIB_DIR)
  128. fi
  129. case $PDO_OCI_VERSION in
  130. 7.3|8.0|8.1)
  131. AC_MSG_ERROR([Oracle client libraries < 9 are not supported])
  132. ;;
  133. esac
  134. PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
  135. PHP_ADD_LIBPATH($PDO_OCI_LIB_DIR, PDO_OCI_SHARED_LIBADD)
  136. PHP_CHECK_LIBRARY(clntsh, OCIEnvCreate,
  137. [
  138. AC_DEFINE(HAVE_OCIENVCREATE,1,[ ])
  139. ], [], [
  140. -L$PDO_OCI_LIB_DIR $PDO_OCI_SHARED_LIBADD
  141. ])
  142. PHP_CHECK_LIBRARY(clntsh, OCIEnvNlsCreate,
  143. [
  144. AC_DEFINE(HAVE_OCIENVNLSCREATE,1,[ ])
  145. ], [], [
  146. -L$PDO_OCI_LIB_DIR $PDO_OCI_SHARED_LIBADD
  147. ])
  148. dnl
  149. dnl Check if we need to add -locijdbc8
  150. dnl
  151. PHP_CHECK_LIBRARY(clntsh, OCILobIsTemporary,
  152. [
  153. AC_DEFINE(HAVE_OCILOBISTEMPORARY,1,[ ])
  154. ], [
  155. PHP_CHECK_LIBRARY(ocijdbc8, OCILobIsTemporary,
  156. [
  157. PHP_ADD_LIBRARY(ocijdbc8, 1, PDO_OCI_SHARED_LIBADD)
  158. AC_DEFINE(HAVE_OCILOBISTEMPORARY,1,[ ])
  159. ], [], [
  160. -L$PDO_OCI_LIB_DIR $PDO_OCI_SHARED_LIBADD
  161. ])
  162. ], [
  163. -L$PDO_OCI_LIB_DIR $PDO_OCI_SHARED_LIBADD
  164. ])
  165. dnl
  166. dnl Check if we have collections
  167. dnl
  168. PHP_CHECK_LIBRARY(clntsh, OCICollAssign,
  169. [
  170. AC_DEFINE(HAVE_OCICOLLASSIGN,1,[ ])
  171. ], [], [
  172. -L$PDO_OCI_LIB_DIR $PDO_OCI_SHARED_LIBADD
  173. ])
  174. dnl Scrollable cursors?
  175. PHP_CHECK_LIBRARY(clntsh, OCIStmtFetch2,
  176. [
  177. AC_DEFINE(HAVE_OCISTMTFETCH2,1,[ ])
  178. ], [], [
  179. -L$PDO_OCI_LIB_DIR $PDO_OCI_SHARED_LIBADD
  180. ])
  181. ifdef([PHP_CHECK_PDO_INCLUDES],
  182. [
  183. PHP_CHECK_PDO_INCLUDES
  184. ],[
  185. AC_MSG_CHECKING([for PDO includes])
  186. if test -f $abs_srcdir/include/php/ext/pdo/php_pdo_driver.h; then
  187. pdo_cv_inc_path=$abs_srcdir/ext
  188. elif test -f $abs_srcdir/ext/pdo/php_pdo_driver.h; then
  189. pdo_cv_inc_path=$abs_srcdir/ext
  190. elif test -f $phpincludedir/ext/pdo/php_pdo_driver.h; then
  191. pdo_cv_inc_path=$phpincludedir/ext
  192. else
  193. AC_MSG_ERROR([Cannot find php_pdo_driver.h.])
  194. fi
  195. AC_MSG_RESULT($pdo_cv_inc_path)
  196. ])
  197. PHP_NEW_EXTENSION(pdo_oci, pdo_oci.c oci_driver.c oci_statement.c, $ext_shared,,-I$pdo_cv_inc_path)
  198. PHP_SUBST_OLD(PDO_OCI_SHARED_LIBADD)
  199. PHP_SUBST_OLD(PDO_OCI_DIR)
  200. PHP_SUBST_OLD(PDO_OCI_VERSION)
  201. ifdef([PHP_ADD_EXTENSION_DEP],
  202. [
  203. PHP_ADD_EXTENSION_DEP(pdo_oci, pdo)
  204. ])
  205. AC_DEFINE_UNQUOTED(PHP_PDO_OCI_CLIENT_VERSION, "$PDO_OCI_VERSION", [ ])
  206. fi