Merge branch 'master' of git.php.net:/pecl/database/pq
authorRemi Collet <remi@php.net>
Fri, 17 Oct 2014 07:16:49 +0000 (09:16 +0200)
committerRemi Collet <remi@php.net>
Fri, 17 Oct 2014 07:16:49 +0000 (09:16 +0200)
* 'master' of git.php.net:/pecl/database/pq:
  better checks for json support
  prepare 0.5.2

config.m4
package.xml
php_pq.h
src/php_pq_params.c
src/php_pqres.c

index ae8ae2ffc8e7733334e07febddf6647494944c7e..63dfd228da65794fc09c0d937f9af57140a51162 100644 (file)
--- a/config.m4
+++ b/config.m4
@@ -38,6 +38,9 @@ if test "$PHP_PQ" != "no"; then
        done 
 
        
+       dnl
+       dnl PQ_CHECK_FUNC(sym, fail-hard)
+       dnl
        AC_DEFUN([PQ_CHECK_FUNC], [
                FAIL_HARD=$2
                
@@ -62,6 +65,35 @@ if test "$PHP_PQ" != "no"; then
        PQ_CHECK_FUNC(PQconninfo)
        PQ_CHECK_FUNC(PQsetSingleRowMode)
        
+       dnl
+       dnl PQ_HAVE_PHP_EXT(name[, code-if-yes[, code-if-not]])
+       dnl
+       AC_DEFUN([PQ_HAVE_PHP_EXT], [
+               extname=$1
+               haveext=$[PHP_]translit($1,a-z_-,A-Z__)
+               AC_MSG_CHECKING([for ext/$extname support])
+               if test -x "$PHP_EXECUTABLE"; then
+                       grepext=`$PHP_EXECUTABLE -m | $EGREP ^$extname\$`
+                       if test "$grepext" = "$extname"; then
+                               [PHP_PQ_HAVE_EXT_]translit($1,a-z_-,A-Z__)=1
+                               AC_MSG_RESULT([yes])
+                               $2
+                       else
+                               [PHP_PQ_HAVE_EXT_]translit($1,a-z_-,A-Z__)=
+                               AC_MSG_RESULT([no])
+                               $3
+                       fi
+               elif test "$haveext" != "no" && test "x$haveext" != "x"; then
+                       [PHP_PQ_HAVE_EXT_]translit($1,a-z_-,A-Z__)=1
+                       AC_MSG_RESULT([yes])
+                       $2
+               else
+                       [PHP_PQ_HAVE_EXT_]translit($1,a-z_-,A-Z__)=
+                       AC_MSG_RESULT([no])
+                       $3
+               fi
+       ])
+       
        PQ_SRC="\
                src/php_pq_module.c\
                src/php_pq_misc.c\
@@ -83,7 +115,53 @@ if test "$PHP_PQ" != "no"; then
        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)
        
+       PQ_HAVE_PHP_EXT([raphf], [
+               AC_MSG_CHECKING([for php_raphf.h])
+               PQ_EXT_RAPHF_INCDIR=
+               for i in `echo $INCLUDES | $SED -e's/-I//g'` $abs_srcdir ../raphf; do
+                       if test -d $i; then
+                               if test -f $i/php_raphf.h; then
+                                       PQ_EXT_RAPHF_INCDIR=$i
+                                       break
+                               elif test -f $i/ext/raphf/php_raphf.h; then
+                                       PQ_EXT_RAPHF_INCDIR=$i/ext/raphf
+                                       break
+                               fi
+                       fi
+               done
+               if test "x$PQ_EXT_RAPHF_INCDIR" = "x"; then
+                       AC_MSG_ERROR([not found])
+               else
+                       AC_MSG_RESULT([$PQ_EXT_RAPHF_INCDIR])
+                       AC_DEFINE([PHP_PQ_HAVE_PHP_RAPHF_H], [1], [Have ext/raphf support])
+                       PHP_ADD_INCLUDE([$PQ_EXT_RAPHF_INCDIR])
+               fi
+       ], [
+               AC_MSG_ERROR([Please install pecl/raphf and activate extension=raphf.$SHLIB_DL_SUFFIX_NAME in your php.ini])
+       ])
+       PHP_ADD_EXTENSION_DEP(pq, raphf, true)
+       PQ_HAVE_PHP_EXT([json], [
+               AC_MSG_CHECKING([for php_json.h])
+               PQ_EXT_JSON_INCDIR=
+               for i in `echo $INCLUDES | $SED -e's/-I//g'` $abs_srcdir ../json ../jsonc ../jsond; do
+                       if test -d $i; then
+                               if test -f $i/php_json.h; then
+                                       PQ_EXT_JSON_INCDIR=$i
+                                       break
+                               elif test -f $i/ext/json/php_json.h; then
+                                       PQ_EXT_JSON_INCDIR=$i/ext/json
+                                       break
+                               fi
+                       fi
+               done
+               if test "x$PQ_EXT_JSON_INCDIR" = "x"; then
+                       AC_MSG_ERROR([not found])
+               else
+                       AC_MSG_RESULT([$PQ_EXT_JSON_INCDIR])
+                       AC_DEFINE([PHP_PQ_HAVE_PHP_JSON_H], [1], [Have ext/json support])
+                       PHP_ADD_INCLUDE([$PQ_EXT_JSON_INCDIR])
+               fi
+       ])
 fi
 
index 13b1437b55ac3f5c6b435a86fa0fc3c079a73d53..ae18e475980cc07403d43cdc01dc5daf10457699 100644 (file)
@@ -42,7 +42,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
  </stability>
  <license>BSD, revised</license>
  <notes><![CDATA[
-* Fix build with PostgreSQL 9.1 and 9.0
+* Support PostgreSQL 9.0 and up
+* Make JSON support optional
 ]]></notes>
  <contents>
   <dir name="/">
index caab0278d2fa4a235ee56312a013af87c0612e44..c647280c8d04fc586a86dcb9dab7fd05c3f302df 100644 (file)
--- a/php_pq.h
+++ b/php_pq.h
@@ -14,7 +14,7 @@
 #ifndef PHP_PQ_H
 #define PHP_PQ_H
 
-#define PHP_PQ_VERSION "0.5.2dev"
+#define PHP_PQ_VERSION "0.5.2"
 
 int pq_module_number;
 zend_module_entry pq_module_entry;
index 6ac55af7c14c56f6c03ef48f96a545d0fe375d63..0cc370d36a6654db5261d6edc8602a0deec6eec8 100644 (file)
@@ -17,8 +17,8 @@
 #include <php.h>
 #include <ext/standard/php_string.h>
 #include <ext/standard/php_smart_str.h>
-#ifdef HAVE_JSON
-#include <ext/json/php_json.h>
+#if PHP_PQ_HAVE_PHP_JSON_H
+#include <php_json.h> /* we've added the include directory to INCLUDES */
 #endif
 
 #include <Zend/zend_interfaces.h>
index a9ab9c7c562c67d733ff7f7f1b0a4cfcb0d9af24..2853275dfc85fbc72984fa613ea2cbc43dbfe337 100644 (file)
 #include <php.h>
 
 #include <ext/spl/spl_iterators.h>
-#if HAVE_JSON
-#include <ext/json/php_json.h>
+#if PHP_PQ_HAVE_PHP_JSON_H
+#include <php_json.h> /* we've added the include directory to INCLUDES */
 #endif
+
 #include <libpq-events.h>
 
 #include "php_pq.h"