From: Wez Furlong Date: Mon, 17 May 2004 22:20:11 +0000 (+0000) Subject: Let is build under unix. X-Git-Tag: RELEASE_0_1~170 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d4c5556b8b32188079ceabccc451006d2ea7a42b;p=php Let is build under unix. Tested against IBM DB2 and unixODBC. Could work with others. --- diff --git a/ext/pdo_odbc/config.m4 b/ext/pdo_odbc/config.m4 index 8195e90640..862bacdabe 100755 --- a/ext/pdo_odbc/config.m4 +++ b/ext/pdo_odbc/config.m4 @@ -1,9 +1,99 @@ dnl $Id$ dnl config.m4 for extension pdo_odbc -PHP_ARG_WITH(pdo_odbc, for pdo_odbc support, -[ --with-pdo_odbc Include pdo_odbc support]) +PHP_ARG_WITH(pdo-odbc, PDBC driver for PDO, +[[ --with-pdo-odbc=flavour,dir Add support for "flavour" ODBC drivers, + looking for include and lib dirs under "dir" + + flavour can be one of: + ibm-db2, unixODBC -if test "$PHP_PDO_ODBC" != "no"; then - PHP_NEW_EXTENSION(pdo_odbc, pdo_odbc.c odbc_driver.c odbc_stmt.c, $ext_shared) + The extension will always be created as a shared extension + named pdo_odbc.so +]]) + +AC_DEFUN([PDO_ODBC_CHECK_HEADER],[ + if test -f $PDO_ODBC_INCDIR/$1 ; then + AC_DEFINE([HAVE_]translit($1,a-z_.-,A-Z___), 1, [ ]) + fi +]) + +if test "$PHP_PDO_ODBC" != "no" && test "$PHP_PDO_ODBC" != "yes" ; then + pdo_odbc_flavour=`echo $withval | cut -d, -f1` + pdo_odbc_dir=`echo $withval | cut -d, -f2` + + if test "$pdo_odbc_dir" = "$withval" ; then + pdo_odbc_dir="" + fi + + + AC_MSG_CHECKING(which ODBC flavour you want) + + case $pdo_odbc_flavour in + ibm-db2) + pdo_odbc_def_libdir=/home/db2inst/sqllib/lib + pdo_odbc_def_incdir=/home/db2inst1/sqllib/include + pdo_odbc_def_lib=-ldb2 + ;; + + unixODBC) + pdo_odbc_def_libdir=/usr/local/lib + pdo_odbc_def_incdir=/usr/local/include + pdo_odbc_def_lib=-lodbc + ;; + + *) + AC_MSG_ERROR(Unknown ODBC flavour $pdo_odbc_flavour) + ;; + esac + + if test "$pdo_odbc_dir" != "" ; then + PDO_ODBC_INCDIR="$pdo_odbc_dir/include" + PDO_ODBC_LIBDIR="$pdo_odbc_dir/lib" + else + PDO_ODBC_INCDIR="$pdo_odbc_def_incdir" + PDO_ODBC_LIBDIR="$pdo_odbc_def_libdir" + fi + + AC_MSG_RESULT([$pdo_odbc_flavour + libs $PDO_ODBC_LIBDIR, + headers $PDO_ODBC_INCDIR]) + + if ! test -d "$PDO_ODBC_LIBDIR" ; then + AC_MSG_WARN([library dir $PDO_ODBC_LIBDIR does not exist]) + fi + + dnl yick time + PDO_ODBC_CHECK_HEADER(odbc.h) + PDO_ODBC_CHECK_HEADER(iodbc.h) + PDO_ODBC_CHECK_HEADER(sqlunix.h) + PDO_ODBC_CHECK_HEADER(sqltypes.h) + PDO_ODBC_CHECK_HEADER(sqlucode.h) + PDO_ODBC_CHECK_HEADER(sql.h) + PDO_ODBC_CHECK_HEADER(isql.h) + PDO_ODBC_CHECK_HEADER(sqlext.h) + PDO_ODBC_CHECK_HEADER(isqlext.h) + PDO_ODBC_CHECK_HEADER(udbcext.h) + PDO_ODBC_CHECK_HEADER(sqlcli1.h) + PDO_ODBC_CHECK_HEADER(LibraryManager.h) + PDO_ODBC_CHECK_HEADER(cli0core.h) + PDO_ODBC_CHECK_HEADER(cli0ext.h) + PDO_ODBC_CHECK_HEADER(cli0cli.h) + PDO_ODBC_CHECK_HEADER(cli0defs.h) + PDO_ODBC_CHECK_HEADER(cli0env.h) + + PDO_ODBC_INCLUDE="-I$PDO_ODBC_INCDIR -DPDO_ODBC_TYPE=\\\"$pdo_odbc_flavour\\\"" + PDO_ODBC_LFLAGS="-L$PDO_ODBC_LIBDIR" + PDO_ODBC_LIBS="$pdo_odbc_def_lib" + + LDFLAGS="$PDO_ODBC_LFLAGS $PDO_ODBC_LIBS -lm -ldl" + AC_TRY_LINK_FUNC([SQLAllocHandle],[],[ + AC_MSG_ERROR([[Your ODBC libraries either do not exist, or do not appear to be ODBC3 compatible]]) + ]) + LDFLAGS=$save_old_LDFLAGS + PHP_EVAL_LIBLINE($PDO_ODBC_LIBS $PDO_ODBC_LFLAGS, [PDO_ODBC_SHARED_LIBADD]) + PHP_SUBST(PDO_ODBC_SHARED_LIBADD) + + PHP_NEW_EXTENSION(pdo_odbc, pdo_odbc.c odbc_driver.c odbc_stmt.c, yes,,-I\$prefix/include/php/ext $PDO_ODBC_INCLUDE) fi + diff --git a/ext/pdo_odbc/odbc_stmt.c b/ext/pdo_odbc/odbc_stmt.c index d46b7aa59b..9878be2ad4 100755 --- a/ext/pdo_odbc/odbc_stmt.c +++ b/ext/pdo_odbc/odbc_stmt.c @@ -130,7 +130,9 @@ static int odbc_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *p rc = SQLBindParameter(S->stmt, param->paramno+1, SQL_PARAM_INPUT, ctype, sqltype, precision, scale, - Z_STRVAL_P(param->parameter), 0, &Z_STRLEN_P(param->parameter) + Z_STRVAL_P(param->parameter), 0, + /* XXX: this has the wrong type for DB2 */ + &Z_STRLEN_P(param->parameter) ); return 1; diff --git a/ext/pdo_odbc/php_pdo_odbc_int.h b/ext/pdo_odbc/php_pdo_odbc_int.h index c078e43545..dbf7c6c1d2 100755 --- a/ext/pdo_odbc/php_pdo_odbc_int.h +++ b/ext/pdo_odbc/php_pdo_odbc_int.h @@ -19,6 +19,13 @@ /* $Id$ */ /* {{{ Roll a dice, pick a header at random... */ +#if HAVE_SQLCLI1_H +# include +# if defined(DB268K) && HAVE_LIBRARYMANAGER_H +# include +# endif +#endif + #if HAVE_ODBC_H # include #endif @@ -59,13 +66,6 @@ # include #endif -#if HAVE_SQLCLI1_H -# include -# if defined(DB268K) && HAVE_LIBRARYMANAGER_H -# include -# endif -#endif - #if HAVE_CLI0CORE_H # include #endif @@ -93,7 +93,7 @@ # define PDO_ODBC_HENV SQLHANDLE # define PDO_ODBC_HDBC SQLHANDLE # define PDO_ODBC_HSTMT SQLHANDLE -#elif !defined(HENV) && defined(SQLHENV) +#elif !defined(HENV) && (defined(SQLHENV) || defined(DB2CLI_VER)) # define PDO_ODBC_HENV SQLHENV # define PDO_ODBC_HDBC SQLHDBC # define PDO_ODBC_HSTMT SQLHSTMT