X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-pq;a=blobdiff_plain;f=config.m4;h=4e08f67afd82a21d9faaab4b012fef992331270c;hp=310382b80971c2b73c3b29a58a6833eb27cc704e;hb=07b495a28adae2152164369654b365a93273cea9;hpb=9255d2d54bca41644cf3588e4e4259a1855b58d7 diff --git a/config.m4 b/config.m4 index 310382b..4e08f67 100644 --- 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,17 +20,85 @@ 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) + ]) + + dnl + dnl PQ_CHECK_CONST(name) + dnl + AC_DEFUN([PQ_CHECK_CONST], [ + AC_MSG_CHECKING(for $1) + if $EGREP -q $1 $PQ_DIR/include/libpq-fe.h; then + AC_DEFINE(HAVE_$1, 1, [Have $1]) + AC_MSG_RESULT(yep) + else + AC_MSG_RESULT(nope) + fi + ]) + + PQ_CHECK_CONST(PGRES_SINGLE_TUPLE) + PQ_CHECK_CONST(PGRES_COPY_BOTH) - 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 + + dnl + dnl PQ_CHECK_FUNC(sym, fail-hard) + dnl + 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 + ]) + ]) + + 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) + + 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 ]) - PHP_CHECK_LIBRARY(pq, PQlibVersion, [AC_DEFINE(HAVE_PQLIBVERSION, 1, Have PQlibVersion)]) PQ_SRC="\ src/php_pq_module.c\ @@ -55,24 +121,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) - if test "$PHP_PQ_POSTGRESQL" != "no"; then - if test "$PHP_PQ_POSTGRESQL" != "yes"; then - SEARCH_PATH="$PHP_PQ_POSTGRESQL $SEARCH_PATH" + 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 - 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 + ], [ + 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 - AC_MSG_RESULT(nope) done - fi + 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