support PostgreSQL down to 9.0; JSON is optional
[m6w6/ext-pq] / config.m4
index a6a82b511d8771bb8f23f20406d232b072e95a29..ae8ae2ffc8e7733334e07febddf6647494944c7e 100644 (file)
--- a/config.m4
+++ b/config.m4
@@ -1,7 +1,5 @@
 PHP_ARG_WITH(pq, [whether to enable libpq (PostgreSQL) support],
 [  --with-pq[=DIR]           Include libpq support])
-PHP_ARG_WITH(pq-postgresql, [where to find PostgreSQL server headers],
-[  --with-pq-postgresql[=DIR]  PQ: Define some standard type OIDs from catalog/pg_type.h], $PHP_PQ)
 
 if test "$PHP_PQ" != "no"; then
        SEARCH_PATH="/usr/local /usr /opt"
@@ -22,23 +20,54 @@ if test "$PHP_PQ" != "no"; then
                AC_MSG_ERROR(could not find include/libpq-events.h)
        fi
        PHP_ADD_INCLUDE($PQ_DIR/include)
+       
+       ifdef([AC_PROG_EGREP], [
+               AC_PROG_EGREP
+       ], [
+               AC_CHECK_PROG(EGREP, egrep, egrep)
+       ])
+       
+       for PQ_DEF in PGRES_SINGLE_TUPLE PGRES_COPY_BOTH; do
+               AC_MSG_CHECKING(for $PQ_DEF)
+               if $EGREP -q $PQ_DEF $PQ_DIR/include/libpq-fe.h; then
+                       AC_DEFINE([$PQ_DEF], [1], [Have $PQ_DEF])
+                       AC_MSG_RESULT(yep)
+               else
+                       AC_MSG_RESULT(nope)
+               fi
+       done 
 
-       PQ_SYM=PQregisterEventProc
-       PHP_CHECK_LIBRARY(pq, $PQ_SYM, [
-               PHP_ADD_LIBRARY_WITH_PATH(pq, $PQ_DIR/$PHP_LIBDIR, PQ_SHARED_LIBADD)
-               PHP_SUBST(PQ_SHARED_LIBADD)
-       ],[
-               AC_MSG_ERROR(could not find $PQ_SYM in -lpq)
-       ],[
-               -L$PQ_DIR/$PHP_LIBDIR
+       
+       AC_DEFUN([PQ_CHECK_FUNC], [
+               FAIL_HARD=$2
+               
+               PHP_CHECK_LIBRARY(pq, $1, [
+                       AC_DEFINE([HAVE_]translit($1,a-z,A-Z), 1, Have $1)
+               ], [
+                       if test -n "$FAIL_HARD"; then
+                               if "$FAIL_HARD"; then
+                                       AC_MSG_ERROR(could not find $PQ_SYM in -lpq)
+                               fi
+                       fi
+               ], [
+                       -L$PQ_DIR/$PHP_LIBDIR
+               ])
        ])
-       PHP_CHECK_LIBRARY(pq, PQlibVersion, [AC_DEFINE(HAVE_PQLIBVERSION, 1, Have PQlibVersion)])
+       
+       PQ_CHECK_FUNC(PQregisterEventProc, true)
+       PHP_ADD_LIBRARY_WITH_PATH(pq, $PQ_DIR/$PHP_LIBDIR, PQ_SHARED_LIBADD)
+       PHP_SUBST(PQ_SHARED_LIBADD)
+       
+       PQ_CHECK_FUNC(PQlibVersion)
+       PQ_CHECK_FUNC(PQconninfo)
+       PQ_CHECK_FUNC(PQsetSingleRowMode)
        
        PQ_SRC="\
                src/php_pq_module.c\
                src/php_pq_misc.c\
                src/php_pq_callback.c\
                src/php_pq_object.c\
+               src/php_pq_params.c\
                src/php_pqcancel.c\
                src/php_pqconn.c\
                src/php_pqconn_event.c\
@@ -49,28 +78,12 @@ if test "$PHP_PQ" != "no"; then
                src/php_pqstm.c\
                src/php_pqtxn.c\
                src/php_pqtypes.c\
+               src/php_pqcur.c\
        "
        PHP_NEW_EXTENSION(pq, $PQ_SRC, $ext_shared)
        PHP_ADD_BUILD_DIR($ext_builddir/src)
        PHP_ADD_INCLUDE($ext_srcdir/src)
        PHP_ADD_EXTENSION_DEP(pq, raphf)
        
-       if test "$PHP_PQ_POSTGRESQL" != "no"; then
-               if test "$PHP_PQ_POSTGRESQL" != "yes"; then
-                       SEARCH_PATH="$PHP_PQ_POSTGRESQL $SEARCH_PATH"
-               fi
-               for i in $SEARCH_PATH; do
-                       CATALOG="$i/include/postgresql/server/catalog/pg_type.h"
-                       AC_MSG_CHECKING(for $CATALOG)
-                       if test -f "$CATALOG"; then
-                               AC_MSG_RESULT(yep)
-                               AC_PROG_AWK()
-                               $AWK -f $ext_srcdir/php_pq_type.awk < "$CATALOG" > $ext_srcdir/php_pq_type.h
-                               AC_DEFINE(HAVE_PHP_PQ_TYPE_H, 1, Have PostgreSQL type OID defs)
-                               break
-                       fi
-                       AC_MSG_RESULT(nope)
-               done
-       fi
 fi