1dnl $Id$ 2dnl config.m4 for extension pdo_odbc 3dnl vim:et:sw=2:ts=2: 4 5define([PDO_ODBC_HELP_TEXT],[[ 6 include and lib dirs are looked for under 'dir'. 7 8 'flavour' can be one of: ibm-db2, iODBC, unixODBC, generic 9 If ',dir' part is omitted, default for the flavour 10 you have selected will be used. e.g.: 11 12 --with-pdo-odbc=unixODBC 13 14 will check for unixODBC under /usr/local. You may attempt 15 to use an otherwise unsupported driver using the \"generic\" 16 flavour. The syntax for generic ODBC support is: 17 18 --with-pdo-odbc=generic,dir,libname,ldflags,cflags 19 20 When built as 'shared' the extension filename is always pdo_odbc.so]]) 21 22PHP_ARG_WITH(pdo-odbc, for ODBC v3 support for PDO, 23[ --with-pdo-odbc=flavour,dir 24 PDO: Support for 'flavour' ODBC driver.]PDO_ODBC_HELP_TEXT) 25 26 27AC_DEFUN([PDO_ODBC_CHECK_HEADER],[ 28 AC_MSG_CHECKING([for $1 in $PDO_ODBC_INCDIR]) 29 if test -f "$PDO_ODBC_INCDIR/$1"; then 30 php_pdo_have_header=yes 31 PHP_DEF_HAVE(translit($1,.,_)) 32 AC_MSG_RESULT(yes) 33 else 34 AC_MSG_RESULT(no) 35 fi 36]) 37 38if test "$PHP_PDO_ODBC" != "no"; then 39 40 if test "$PHP_PDO" = "no" && test "$ext_shared" = "no"; then 41 AC_MSG_ERROR([PDO is not enabled! Add --enable-pdo to your configure line.]) 42 fi 43 44 ifdef([PHP_CHECK_PDO_INCLUDES], 45 [ 46 PHP_CHECK_PDO_INCLUDES 47 ],[ 48 AC_MSG_CHECKING([for PDO includes]) 49 if test -f $abs_srcdir/include/php/ext/pdo/php_pdo_driver.h; then 50 pdo_cv_inc_path=$abs_srcdir/ext 51 elif test -f $abs_srcdir/ext/pdo/php_pdo_driver.h; then 52 pdo_cv_inc_path=$abs_srcdir/ext 53 elif test -f $prefix/include/php/ext/pdo/php_pdo_driver.h; then 54 pdo_cv_inc_path=$prefix/include/php/ext 55 else 56 AC_MSG_ERROR([Cannot find php_pdo_driver.h.]) 57 fi 58 AC_MSG_RESULT($pdo_cv_inc_path) 59 ]) 60 61 AC_MSG_CHECKING([for selected PDO ODBC flavour]) 62 63 pdo_odbc_flavour="`echo $PHP_PDO_ODBC | cut -d, -f1`" 64 pdo_odbc_dir="`echo $PHP_PDO_ODBC | cut -d, -f2`" 65 66 if test "$pdo_odbc_dir" = "$PHP_PDO_ODBC" ; then 67 pdo_odbc_dir= 68 fi 69 70 case $pdo_odbc_flavour in 71 ibm-db2) 72 pdo_odbc_def_libdir=/home/db2inst1/sqllib/lib 73 pdo_odbc_def_incdir=/home/db2inst1/sqllib/include 74 pdo_odbc_def_lib=db2 75 ;; 76 77 iODBC|iodbc) 78 pdo_odbc_def_libdir=/usr/local/$PHP_LIBDIR 79 pdo_odbc_def_incdir=/usr/local/include 80 pdo_odbc_def_lib=iodbc 81 ;; 82 83 unixODBC|unixodbc) 84 pdo_odbc_def_libdir=/usr/local/$PHP_LIBDIR 85 pdo_odbc_def_incdir=/usr/local/include 86 pdo_odbc_def_lib=odbc 87 ;; 88 89 ODBCRouter|odbcrouter) 90 pdo_odbc_def_libdir=/usr/$PHP_LIBDIR 91 pdo_odbc_def_incdir=/usr/include 92 pdo_odbc_def_lib=odbcsdk 93 ;; 94 95 generic) 96 pdo_odbc_def_lib="`echo $PHP_PDO_ODBC | cut -d, -f3`" 97 pdo_odbc_def_ldflags="`echo $PHP_PDO_ODBC | cut -d, -f4`" 98 pdo_odbc_def_cflags="`echo $PHP_PDO_ODBC | cut -d, -f5`" 99 pdo_odbc_flavour="generic-$pdo_odbc_def_lib" 100 ;; 101 102 *) 103 AC_MSG_ERROR([Unknown ODBC flavour $pdo_odbc_flavour]PDO_ODBC_HELP_TEXT) 104 ;; 105 esac 106 107 if test -n "$pdo_odbc_dir"; then 108 PDO_ODBC_INCDIR="$pdo_odbc_dir/include" 109 PDO_ODBC_LIBDIR="$pdo_odbc_dir/$PHP_LIBDIR" 110 else 111 PDO_ODBC_INCDIR="$pdo_odbc_def_incdir" 112 PDO_ODBC_LIBDIR="$pdo_odbc_def_libdir" 113 fi 114 115 AC_MSG_RESULT([$pdo_odbc_flavour 116 libs $PDO_ODBC_LIBDIR, 117 headers $PDO_ODBC_INCDIR]) 118 119 if test ! -d "$PDO_ODBC_LIBDIR" ; then 120 AC_MSG_WARN([library dir $PDO_ODBC_LIBDIR does not exist]) 121 fi 122 123 PDO_ODBC_CHECK_HEADER(odbc.h) 124 PDO_ODBC_CHECK_HEADER(odbcsdk.h) 125 PDO_ODBC_CHECK_HEADER(iodbc.h) 126 PDO_ODBC_CHECK_HEADER(sqlunix.h) 127 PDO_ODBC_CHECK_HEADER(sqltypes.h) 128 PDO_ODBC_CHECK_HEADER(sqlucode.h) 129 PDO_ODBC_CHECK_HEADER(sql.h) 130 PDO_ODBC_CHECK_HEADER(isql.h) 131 PDO_ODBC_CHECK_HEADER(sqlext.h) 132 PDO_ODBC_CHECK_HEADER(isqlext.h) 133 PDO_ODBC_CHECK_HEADER(udbcext.h) 134 PDO_ODBC_CHECK_HEADER(sqlcli1.h) 135 PDO_ODBC_CHECK_HEADER(LibraryManager.h) 136 PDO_ODBC_CHECK_HEADER(cli0core.h) 137 PDO_ODBC_CHECK_HEADER(cli0ext.h) 138 PDO_ODBC_CHECK_HEADER(cli0cli.h) 139 PDO_ODBC_CHECK_HEADER(cli0defs.h) 140 PDO_ODBC_CHECK_HEADER(cli0env.h) 141 142 if test "$php_pdo_have_header" != "yes"; then 143 AC_MSG_ERROR([Cannot find header file(s) for pdo_odbc]) 144 fi 145 146 PDO_ODBC_INCLUDE="$pdo_odbc_def_cflags -I$PDO_ODBC_INCDIR -DPDO_ODBC_TYPE=\\\"$pdo_odbc_flavour\\\"" 147 PDO_ODBC_LDFLAGS="$pdo_odbc_def_ldflags -L$PDO_ODBC_LIBDIR -l$pdo_odbc_def_lib" 148 149 PHP_EVAL_LIBLINE([$PDO_ODBC_LDFLAGS], [PDO_ODBC_SHARED_LIBADD]) 150 151 dnl Check first for an ODBC 1.0 function to assert that the libraries work 152 PHP_CHECK_LIBRARY($pdo_odbc_def_lib, SQLBindCol, 153 [ 154 dnl And now check for an ODBC 3.0 function to assert that they're 155 dnl *good* libraries. 156 PHP_CHECK_LIBRARY($pdo_odbc_def_lib, SQLAllocHandle, 157 [], [ 158 AC_MSG_ERROR([ 159Your ODBC library does not appear to be ODBC 3 compatible. 160You should consider using iODBC or unixODBC instead, and loading your 161libraries as a driver in that environment; it will emulate the 162functions required for PDO support. 163])], $PDO_ODBC_LDFLAGS) 164 ],[ 165 AC_MSG_ERROR([Your ODBC library does not exist or there was an error. Check config.log for more information]) 166 ], $PDO_ODBC_LDFLAGS) 167 168 PHP_NEW_EXTENSION(pdo_odbc, pdo_odbc.c odbc_driver.c odbc_stmt.c, $ext_shared,,-I$pdo_cv_inc_path $PDO_ODBC_INCLUDE) 169 PHP_SUBST(PDO_ODBC_SHARED_LIBADD) 170 ifdef([PHP_ADD_EXTENSION_DEP], 171 [ 172 PHP_ADD_EXTENSION_DEP(pdo_odbc, pdo) 173 ]) 174fi 175