php-src/ext/ldap/config.m4
Peter Kokot 1b757c8d3c
Autotools: Replace backticks command substitutions with $(...) (#15639)
This is a follow-up of previous backticks replacement commits. This
replaces backticks command substitutions in remaining ext config M4
files, phpize, and configure.ac with the recommended $(...).

Note that $(...) still does not work on some obsolete shells that ship
with Solaris 10, for example. Elsewhere they should work. However, for
these obsolete shells Autoconf also re-executes the shell script under
the supported shell so it can make them work regardless.

Additionally, few comments CS are also adjusted to not cause confusion
when searching for backticks usages and one indentation sync done.

As of Autoconf 2.72 the backticks in macro help texts are also replaced
with single quotes.
2024-08-30 00:40:49 +02:00

152 lines
5.4 KiB
Text

AC_DEFUN([PHP_LDAP_CHECKS], [
if test -f $1/include/ldap.h; then
LDAP_DIR=$1
LDAP_INCDIR=$1/include
LDAP_LIBDIR=$1/$PHP_LIBDIR
elif test -f $1/ldap/public/ldap.h; then
LDAP_DIR=$1
LDAP_INCDIR=$1/ldap/public
LDAP_LIBDIR=$1/$PHP_LIBDIR
else
dnl Note that Oracle Instant Client lacks LDAP features implemented in PHP
dnl ldap extension and cannot be built. Use OpenLDAP on Solaris.
dnl See: https://github.com/php/php-src/issues/15051
dnl Find Oracle Instant Client RPM header location corresponding to the
dnl given lib path e.g. for --with-ldap=/usr/lib/oracle/12.1/client64/lib
AC_CHECK_SIZEOF([long])
AC_MSG_CHECKING([if we're at 64-bit platform])
AS_IF([test "$ac_cv_sizeof_long" -eq 4],[
AC_MSG_RESULT([no])
PHP_OCI8_IC_LIBDIR_SUFFIX=""
],[
AC_MSG_RESULT([yes])
PHP_OCI8_IC_LIBDIR_SUFFIX=64
])
OCISDKRPMINC=$(echo "$1" | $SED -e 's!^/usr/lib/oracle/\(.*\)/client\('${PHP_OCI8_IC_LIBDIR_SUFFIX}'\)*/lib[/]*$!/usr/include/oracle/\1/client\2!')
dnl Check for Oracle Instant Client RPM install
if test -f $OCISDKRPMINC/ldap.h; then
LDAP_DIR=$1
LDAP_INCDIR=$OCISDKRPMINC
LDAP_LIBDIR=$1
dnl Check for Oracle Instant Client ZIP install
elif test -f $1/sdk/include/ldap.h; then
LDAP_DIR=$1
LDAP_INCDIR=$1/sdk/include
LDAP_LIBDIR=$1
fi
fi
])
PHP_ARG_WITH([ldap],
[for LDAP support],
[AS_HELP_STRING([[--with-ldap[=DIR]]],
[Include LDAP support])])
PHP_ARG_WITH([ldap-sasl],
[whether to build with LDAP Cyrus SASL support],
[AS_HELP_STRING([--with-ldap-sasl],
[LDAP: Build with Cyrus SASL support])],
[no],
[no])
if test "$PHP_LDAP" != "no"; then
PHP_NEW_EXTENSION([ldap],
[ldap.c],
[$ext_shared],,
[-DZEND_ENABLE_STATIC_TSRMLS_CACHE=1])
AS_VAR_IF([PHP_LDAP], [yes], [
for i in /usr/local /usr; do
PHP_LDAP_CHECKS([$i])
done
], [PHP_LDAP_CHECKS([$PHP_LDAP])])
AS_VAR_IF([LDAP_DIR],, [AC_MSG_ERROR([Cannot find ldap.h])])
dnl -pc removal is a hack for clang
MACHINE_INCLUDES=$($CC -dumpmachine | $SED 's/-pc//')
AH_TEMPLATE([HAVE_ORALDAP],
[Define to 1 if the ldap extension uses the Oracle Instant Client.])
if test -f $LDAP_LIBDIR/liblber.a || test -f $LDAP_LIBDIR/liblber.$SHLIB_SUFFIX_NAME || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/liblber.a || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/liblber.$SHLIB_SUFFIX_NAME; then
PHP_ADD_LIBRARY_WITH_PATH([lber], [$LDAP_LIBDIR], [LDAP_SHARED_LIBADD])
PHP_ADD_LIBRARY_WITH_PATH([ldap], [$LDAP_LIBDIR], [LDAP_SHARED_LIBADD])
elif test -f $LDAP_LIBDIR/libldap.$SHLIB_SUFFIX_NAME || test -f $LDAP_LIBDIR/libldap.$SHLIB_SUFFIX_NAME.3 || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/libldap.$SHLIB_SUFFIX_NAME || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/libldap.$SHLIB_SUFFIX_NAME.3 || test -f $LDAP_LIBDIR/libldap.3.dylib; then
PHP_ADD_LIBRARY_WITH_PATH([ldap], [$LDAP_LIBDIR], [LDAP_SHARED_LIBADD])
elif test -f $LDAP_LIBDIR/libclntsh.$SHLIB_SUFFIX_NAME.12.1 || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/libclntsh.$SHLIB_SUFFIX_NAME.12.1; then
PHP_ADD_LIBRARY_WITH_PATH([clntsh], [$LDAP_LIBDIR], [LDAP_SHARED_LIBADD])
AC_DEFINE([HAVE_ORALDAP], [1])
elif test -f $LDAP_LIBDIR/libclntsh.$SHLIB_SUFFIX_NAME.11.1 || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/libclntsh.$SHLIB_SUFFIX_NAME.11.1; then
PHP_ADD_LIBRARY_WITH_PATH([clntsh], [$LDAP_LIBDIR], [LDAP_SHARED_LIBADD])
AC_DEFINE([HAVE_ORALDAP], [1])
elif test -f $LDAP_LIBDIR/libclntsh.$SHLIB_SUFFIX_NAME || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/libclntsh.$SHLIB_SUFFIX_NAME; then
PHP_ADD_LIBRARY_WITH_PATH([clntsh], [$LDAP_LIBDIR], [LDAP_SHARED_LIBADD])
AC_DEFINE([HAVE_ORALDAP], [1])
else
AC_MSG_ERROR([Cannot find ldap libraries in $LDAP_LIBDIR.])
fi
PHP_ADD_INCLUDE([$LDAP_INCDIR])
PHP_SUBST([LDAP_SHARED_LIBADD])
AC_DEFINE([HAVE_LDAP], [1],
[Define to 1 if the PHP extension 'ldap' is available.])
dnl Save original values
_SAVE_CPPFLAGS=$CPPFLAGS
_SAVE_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS -I$LDAP_INCDIR"
LIBS="$LIBS $LDAP_SHARED_LIBADD"
dnl Check for 3 arg ldap_set_rebind_proc
AC_CACHE_CHECK([for 3 arg ldap_set_rebind_proc],
[php_cv_have_3arg_setrebindproc],
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <ldap.h>],
[ldap_set_rebind_proc(0,0,0)])],
[php_cv_have_3arg_setrebindproc=yes],
[php_cv_have_3arg_setrebindproc=no])])
AS_VAR_IF([php_cv_have_3arg_setrebindproc], [yes],
[AC_DEFINE([HAVE_3ARG_SETREBINDPROC], [1],
[Define to 1 if 'ldap_set_rebind_proc' has 3 arguments.])])
dnl Solaris 2.8 claims to be 2004 API, but doesn't have ldap_parse_reference()
dnl nor ldap_start_tls_s()
AC_CHECK_FUNCS(m4_normalize([
ldap_control_find
ldap_extended_operation
ldap_extended_operation_s
ldap_parse_extended_result
ldap_parse_reference
ldap_parse_result
ldap_passwd
ldap_refresh_s
ldap_start_tls_s
ldap_whoami_s
]))
dnl SASL check
AS_VAR_IF([PHP_LDAP_SASL], [no],, [
PKG_CHECK_MODULES([SASL], [libsasl2])
PHP_EVAL_INCLINE([$SASL_CFLAGS])
PHP_EVAL_LIBLINE([$SASL_LIBS], [LDAP_SHARED_LIBADD])
AC_DEFINE([HAVE_LDAP_SASL], [1],
[Define to 1 if the ldap extension has SASL support enabled.])
])
dnl Sanity check
AC_CHECK_FUNC([ldap_sasl_bind_s],,
[AC_CHECK_FUNC([ldap_simple_bind_s],,
[AC_MSG_ERROR([LDAP library build check failed.])])])
dnl Restore original values
CPPFLAGS=$_SAVE_CPPFLAGS
LIBS=$_SAVE_LIBS
fi