]> granicus.if.org Git - php/commitdiff
- Fixed some places which might cause problems
authorfoobar <sniper@php.net>
Tue, 14 Jun 2005 01:42:31 +0000 (01:42 +0000)
committerfoobar <sniper@php.net>
Tue, 14 Jun 2005 01:42:31 +0000 (01:42 +0000)
- Changed the "general" flavour to have libname parameter (given without the
  lib prefix of course)
# bug #33316 should be fixed now too

ext/pdo_odbc/config.m4

index 94acaf46d05dbdd85aec0274db16f752a106c77c..2ab4eb732242840f32733ed92d657f654fa151d1 100755 (executable)
@@ -13,7 +13,7 @@ define([PDO_ODBC_HELP_TEXT],[[
                             will check for unixODBC under /usr/local. You may attempt 
                             to use an otherwise unsupported driver using the \"generic\" 
                             flavour.  The syntax for generic ODBC support is:
-                              --with-pdo-odbc=generic,dir,ldflags,cflags
+                              --with-pdo-odbc=generic,dir,libname,ldflags,cflags
                             This extension will always be created as a shared extension
                             named pdo_odbc.so]])
 
@@ -21,13 +21,41 @@ PHP_ARG_WITH(pdo-odbc, for ODBC v3 support for PDO,
 [  --with-pdo-odbc=flavour,dir
                             PDO: Support for 'flavour' ODBC driver.]PDO_ODBC_HELP_TEXT)
 
-AC_DEFUN([PDO_ODBC_CHECK_HEADER],[
-  if test -f $PDO_ODBC_INCDIR/$1 ; then
-    AC_DEFINE([HAVE_]translit($1,a-z_.-,A-Z___), 1, [ ])
+AC_DEFUN([PDO_ODBC_CHECK_HEADERS],[
+  php_pdo_have_header=no
+  for i in odbc.h \
+           odbcsdk.h \
+           iodbc.h \
+           sqlunix.h \
+           sqltypes.h \
+           sqlucode.h \
+           sql.h \
+           isql.h \
+           sqlext.h \
+           isqlext.h \
+           udbcext.h \
+           sqlcli1.h \
+           LibraryManager.h \
+           cli0core.h \
+           cli0ext.h \
+           cli0cli.h \
+           cli0defs.h \
+           cli0env.h
+  do
+    if test -f "$PDO_ODBC_INCDIR/$i"; then
+      php_pdo_have_header=yes
+      PHP_DEF_HAVE([$i])
+    fi
+  done
+  if test "$php_pdo_have_header" = "no"; then
+    AC_MSG_ERROR([Cannot find any header file(s)!])
   fi
 ])
                                   
 if test "$PHP_PDO_ODBC" != "no"; then
+
+  PHP_CHECK_PDO_INCLUDES
+
   AC_MSG_CHECKING([for selected PDO ODBC flavour])
 
   pdo_odbc_flavour="`echo $PHP_PDO_ODBC | cut -d, -f1`"
@@ -41,24 +69,25 @@ if test "$PHP_PDO_ODBC" != "no"; then
     ibm-db2)
         pdo_odbc_def_libdir=/home/db2inst1/sqllib/lib
         pdo_odbc_def_incdir=/home/db2inst1/sqllib/include
-        pdo_odbc_def_lib=-ldb2
+        pdo_odbc_def_lib=db2
         ;;
 
     unixODBC|unixodbc)
         pdo_odbc_def_libdir=/usr/local/lib
         pdo_odbc_def_incdir=/usr/local/include
-        pdo_odbc_def_lib=-lodbc
+        pdo_odbc_def_lib=odbc
         ;;
 
     ODBCRouter|odbcrouter)
         pdo_odbc_def_libdir=/usr/lib
         pdo_odbc_def_incdir=/usr/include
-        pdo_odbc_def_lib=-lodbcsdk
+        pdo_odbc_def_lib=odbcsdk
         ;;
 
     generic)
         pdo_odbc_def_lib="`echo $PHP_PDO_ODBC | cut -d, -f3`"
-        pdo_odbc_def_cflags="`echo $PHP_PDO_ODBC | cut -d, -f4`"
+        pdo_odbc_def_ldflags="`echo $PHP_PDO_ODBC | cut -d, -f4`"
+        pdo_odbc_def_cflags="`echo $PHP_PDO_ODBC | cut -d, -f5`"
         pdo_odbc_flavour="$pdo_odbc_flavour ($pdo_odbc_def_lib)"
         ;;
 
@@ -83,53 +112,32 @@ if test "$PHP_PDO_ODBC" != "no"; 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(odbcsdk.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="$pdo_odbc_def_cflags -I$PDO_ODBC_INCDIR -DPDO_ODBC_TYPE=\\\"$pdo_odbc_flavour\\\""
-  PDO_ODBC_LFLAGS="-L$PDO_ODBC_LIBDIR"
-  PDO_ODBC_LIBS="$pdo_odbc_def_lib"
-
-  save_old_LDFLAGS="$LDFLAGS"
-  LDFLAGS="$PDO_ODBC_LFLAGS $PDO_ODBC_LIBS -lm -ldl"
-  dnl Check for an ODBC 1.0 function to assert that the libraries work
-  AC_TRY_LINK_FUNC([SQLBindCol],[],[
-    AC_MSG_ERROR([[Your ODBC library does not exist]])
-  ])
-  dnl And now check for an ODBC 3.0 function to assert that they're
-  dnl *good* libraries.
-  AC_TRY_LINK_FUNC([SQLAllocHandle],[],[
-    AC_MSG_ERROR([[
+  PDO_ODBC_CHECK_HEADERS
+
+  PDO_ODBC_INCLUDE="$pdo_odbc_def_cflags -I$PDO_ODBC_INCDIR -DPDO_ODBC_TYPE=\\"$pdo_odbc_flavour\\""
+  PDO_ODBC_LDFLAGS="$pdo_odbc_def_ldflags -L$PDO_ODBC_LIBDIR -l$pdo_odbc_def_lib"
+
+  PHP_EVAL_LIBLINE([$PDO_ODBC_LDFLAGS], [PDO_ODBC_SHARED_LIBADD])
+
+  dnl Check first for an ODBC 1.0 function to assert that the libraries work
+  PHP_CHECK_LIBRARY($pdo_odbc_def_lib, SQLBindCol,
+  [
+    dnl And now check for an ODBC 3.0 function to assert that they're
+    dnl *good* libraries.
+    PHP_CHECK_LIBRARY($pdo_odbc_def_lib, SQLAllocHandle,
+    [], [
+      AC_MSG_ERROR([
 Your ODBC library does not appear to be ODBC 3 compatible.
 You should consider using unixODBC instead, and loading your
 libraries as a driver in that environment; it will emulate the
 functions required for PDO support.
-]])
+])])
+  ],[
+    AC_MSG_ERROR([Your ODBC library does not exist or there was an error. Check config.log for more information])
   ])
-  LDFLAGS=$save_old_LDFLAGS
-  PHP_EVAL_LIBLINE($PDO_ODBC_LIBS $PDO_ODBC_LFLAGS, [PDO_ODBC_SHARED_LIBADD])
-  PHP_SUBST(PDO_ODBC_SHARED_LIBADD)
-
-  PHP_CHECK_PDO_INCLUDES
 
   PHP_NEW_EXTENSION(pdo_odbc, pdo_odbc.c odbc_driver.c odbc_stmt.c, $ext_shared,,-I$pdo_inc_path $PDO_ODBC_INCLUDE)
+  PHP_SUBST(PDO_ODBC_SHARED_LIBADD)
   PHP_ADD_EXTENSION_DEP(pdo_odbc, pdo)
 fi