php-src/ext/pdo_mysql/config.m4
Peter Kokot 5ed1659039
Autotools: Fix pdo_mysql build with mysql client library (#15450)
When using --with-pdo-mysql=DIR and for some reason DIR wouldn't have
the executable DIR/bin/mysql_config available the 3rd option was so far
to guess the mysql client library locations and pass the include
directory further. The library directory and library name to link was
missing. This fixes this case for consistency reasons. And in the future
also the pkg-config could be a reliable alternative to mysql_config in
that case. The PDO_MYSQL_INC_DIR is already processed PHP_EVAL_INCLINE
so redundant PHP_ADD_INCLUDE is removed.
2024-08-31 02:35:34 +02:00

94 lines
3.3 KiB
Text

PHP_ARG_WITH([pdo-mysql],
[for MySQL support for PDO],
[AS_HELP_STRING([[--with-pdo-mysql[=DIR]]],
[PDO: MySQL support. DIR is the MySQL base directory. If no value or mysqlnd
is passed as DIR, the MySQL native driver will be used])])
if test "$PHP_PDO_MYSQL" != "no"; then
dnl This depends on ext/mysqli/config.m4 providing the PHP_MYSQL_SOCKET_SEARCH
dnl macro and --with-mysql-sock configure option.
AC_MSG_CHECKING([for MySQL Unix socket location])
AS_CASE([$PHP_MYSQL_SOCK],
[yes], [PHP_MYSQL_SOCKET_SEARCH],
[no], [AC_MSG_RESULT([no])],
[
AC_DEFINE_UNQUOTED([PHP_MYSQL_UNIX_SOCK_ADDR], ["$PHP_MYSQL_SOCK"],
[The MySQL Unix socket location.])
AC_MSG_RESULT([$PHP_MYSQL_SOCK])
])
dnl Whether to build with the mysqlnd extension or with the MySQL library.
AS_CASE([$PHP_PDO_MYSQL], [yes|mysqlnd], [
PHP_MYSQLND_ENABLED=yes
AC_DEFINE([PDO_USE_MYSQLND], [1],
[Define to 1 if the pdo_mysql extension uses mysqlnd.])
], [
AC_MSG_CHECKING([for mysql_config])
if test -f $PHP_PDO_MYSQL && test -x $PHP_PDO_MYSQL ; then
PDO_MYSQL_CONFIG=$PHP_PDO_MYSQL
else
if test -d "$PHP_PDO_MYSQL" ; then
if test -x "$PHP_PDO_MYSQL/bin/mysql_config" ; then
PDO_MYSQL_CONFIG="$PHP_PDO_MYSQL/bin/mysql_config"
else
PDO_MYSQL_DIR="$PHP_PDO_MYSQL"
fi
fi
fi
if test -n "$PDO_MYSQL_CONFIG"; then
AC_MSG_RESULT([$PDO_MYSQL_CONFIG])
PDO_MYSQL_LIBS=$($PDO_MYSQL_CONFIG --libs | $SED -e "s/'//g")
PDO_MYSQL_INCLUDE=$($PDO_MYSQL_CONFIG --cflags | $SED -e "s/'//g")
PDO_MYSQL_SOCKET=$($PDO_MYSQL_CONFIG --socket)
AC_DEFINE_UNQUOTED([PDO_MYSQL_UNIX_ADDR], ["$PDO_MYSQL_SOCKET"],
[The MySQL Unix socket location as defined by 'mysql_config' for use
with the pdo_mysql extension.])
elif test -n "$PDO_MYSQL_DIR"; then
AC_MSG_RESULT([not found])
AC_MSG_CHECKING([for mysql install under $PDO_MYSQL_DIR])
if test -r $PDO_MYSQL_DIR/include/mysql; then
PDO_MYSQL_INC_DIR=$PDO_MYSQL_DIR/include/mysql
else
PDO_MYSQL_INC_DIR=$PDO_MYSQL_DIR/include
fi
if test -r $PDO_MYSQL_DIR/$PHP_LIBDIR/mysql; then
PDO_MYSQL_LIB_DIR=$PDO_MYSQL_DIR/$PHP_LIBDIR/mysql
else
PDO_MYSQL_LIB_DIR=$PDO_MYSQL_DIR/$PHP_LIBDIR
fi
if test -r "$PDO_MYSQL_LIB_DIR"; then
AC_MSG_RESULT([libs under $PDO_MYSQL_LIB_DIR; seems promising])
else
AC_MSG_RESULT([can not find it])
AC_MSG_ERROR([Unable to find your mysql installation])
fi
PDO_MYSQL_INCLUDE=-I$PDO_MYSQL_INC_DIR
PDO_MYSQL_LIBS="-L$PDO_MYSQL_LIB_DIR -lmysqlclient"
else
AC_MSG_RESULT([not found])
AC_MSG_ERROR([Unable to find your mysql installation])
fi
PHP_EVAL_INCLINE([$PDO_MYSQL_INCLUDE])
PHP_EVAL_LIBLINE([$PDO_MYSQL_LIBS], [PDO_MYSQL_SHARED_LIBADD])
])
PHP_CHECK_PDO_INCLUDES
PHP_NEW_EXTENSION([pdo_mysql],
[pdo_mysql.c mysql_driver.c mysql_statement.c mysql_sql_parser.c],
[$ext_shared],,
[-DZEND_ENABLE_STATIC_TSRMLS_CACHE=1])
PHP_ADD_EXTENSION_DEP(pdo_mysql, pdo)
PHP_ADD_MAKEFILE_FRAGMENT
AS_CASE([$PHP_PDO_MYSQL], [yes|mysqlnd], [
PHP_ADD_EXTENSION_DEP(pdo_mysql, mysqlnd)
])
PHP_SUBST([PDO_MYSQL_SHARED_LIBADD])
fi