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