1
0
mirror of https://github.com/php/php-src.git synced 2026-04-02 13:43:02 +02:00
Files
archived-php-src/ext/pgsql/config.m4
Peter Kokot f4ce50ddfb Add optional pkg-config support for PostgreSQL library (libpq) (#14540)
The pkg-config (libpq.pc file) was added in PostgreSQL 9.3. This adds a
common setup M4 macro PHP_SETUP_PGSQL to find client PostgreSQL library
libpq on the system with pkg-config. If not found, check falls back to
pg_config to find the libpq and its headers in common locations as
before.

The PGSQL_CFLAGS and PGSQL_LIBS environment variables can override the
libpq installation paths:

    ./configure --with-pgsql --with-pdo-pgsql \
        PGSQL_CFLAGS=-I/path/to/libpq \
        PGSQL_LIBS="-L/path/to/libpq -lpq"

Passing manual, non-standard PostgreSQL installation path can be done
with configure option arguments:

    ./configure \
        --with-pgsql=/any/path/to/postgresql \
        --with-pdo-postgresql=/any/path/to/postgresql

If this DIR argument (PostgreSQL installation directory or path to the
pg_config) is passed, it takes precedence over the pkg-config, when
installed on the system.

This also removes the unused HAVE_LIBPQ symbol and passing the
PGSQL_INCLUDE and PGSQL_LIBDIR environment variable to configure in
favor of PGSQL_CFLAGS and PGSQL_LIBS.

Instead of the obsolete backticks the recommended $(...) is used when
invoking the pg_config.

Follow-up of GH-4235 (Use PKG_CHECK_MODULES to detect the pq library)
2024-06-21 18:35:37 +02:00

53 lines
2.1 KiB
Plaintext

PHP_ARG_WITH([pgsql],
[for PostgreSQL support],
[AS_HELP_STRING([[--with-pgsql[=DIR]]],
[Include PostgreSQL support. Optional DIR is the PostgreSQL base install
directory or the path to pg_config. Also, the PGSQL_CFLAGS and PGSQL_LIBS
environment variables can be used instead of the DIR argument to customize
the libpq paths.])])
if test "$PHP_PGSQL" != "no"; then
PHP_SETUP_PGSQL([PGSQL_SHARED_LIBADD],,, [$PHP_PGSQL])
PHP_SUBST([PGSQL_SHARED_LIBADD])
AC_DEFINE(HAVE_PGSQL,1,[Whether to build PostgreSQL support or not])
PHP_CHECK_LIBRARY([pq], [lo_truncate64],
[AC_DEFINE([HAVE_PG_LO64], [1], [PostgreSQL 9.3 or later])],,
[$PGSQL_LIBS])
PHP_CHECK_LIBRARY([pq], [PQsetErrorContextVisibility],
[AC_DEFINE([HAVE_PG_CONTEXT_VISIBILITY], [1], [PostgreSQL 9.6 or later])],,
[$PGSQL_LIBS])
PHP_CHECK_LIBRARY([pq], [PQresultMemorySize],
[AC_DEFINE([HAVE_PG_RESULT_MEMORY_SIZE], [1], [PostgreSQL 12 or later])],,
[$PGSQL_LIBS])
PHP_CHECK_LIBRARY([pq], [PQchangePassword],
[AC_DEFINE([HAVE_PG_CHANGE_PASSWORD], [1], [PostgreSQL 17 or later])],,
[$PGSQL_LIBS])
PHP_CHECK_LIBRARY([pq], [PQsocketPoll],
[AC_DEFINE([HAVE_PG_SOCKET_POLL], [1], [PostgreSQL 17 or later])],,
[$PGSQL_LIBS])
PHP_CHECK_LIBRARY([pq], [PQsetChunkedRowsMode],
[AC_DEFINE([HAVE_PG_SET_CHUNKED_ROWS_SIZE], [1], [PostgreSQL 17 or later])],,
[$PGSQL_LIBS])
old_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS $PGSQL_CFLAGS"
dnl Available since PostgreSQL 12.
AC_CACHE_CHECK([if PGVerbosity enum has PQERRORS_SQLSTATE],
[php_cv_enum_pgverbosity_pqerrors_sqlstate],
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <libpq-fe.h>],
[PGVerbosity e = PQERRORS_SQLSTATE; (void)e;])],
[php_cv_enum_pgverbosity_pqerrors_sqlstate=yes],
[php_cv_enum_pgverbosity_pqerrors_sqlstate=no])])
AS_VAR_IF([php_cv_enum_pgverbosity_pqerrors_sqlstate], [yes],
[AC_DEFINE([HAVE_PQERRORS_SQLSTATE], [1],
[Define to 1 if PGVerbosity enum has PQERRORS_SQLSTATE.])])
CFLAGS=$old_CFLAGS
PHP_NEW_EXTENSION(pgsql, pgsql.c, $ext_shared,, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1)
PHP_ADD_EXTENSION_DEP(pgsql, pcre)
fi