You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
293 lines
14 KiB
293 lines
14 KiB
# LIBLDAP_CHECK_CONFIG ([DEFAULT-ACTION])
|
|
# ----------------------------------------------------------
|
|
#
|
|
# Checks for ldap. DEFAULT-ACTION is the string yes or no to
|
|
# specify whether to default to --with-ldap or --without-ldap.
|
|
# If not supplied, DEFAULT-ACTION is no.
|
|
#
|
|
# This macro #defines HAVE_LDAP if a required header files is
|
|
# found, and sets @LDAP_CPPFLAGS@, @LDAP_LDFLAGS@ and @LDAP_LIBS@
|
|
# to the necessary values.
|
|
#
|
|
# Users may override the detected values by doing something like:
|
|
# LDAP_LIBS="-lldap" LDAP_CPPFLAGS="-I/usr/myinclude" ./configure
|
|
#
|
|
# This macro is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
AC_DEFUN([LIBLDAP_TRY_LINK],
|
|
[
|
|
_save_ldap_cppflags="$CPPFLAGS"
|
|
_save_ldap_cflags="$CFLAGS"
|
|
_save_ldap_ldflags="$LDFLAGS"
|
|
_save_ldap_libs="$LIBS"
|
|
|
|
LIBS="$LIBS $1"
|
|
LDFLAGS="$LDFLAGS $2"
|
|
CPPFLAGS="$CPPFLAGS $3"
|
|
CFLAGS="$CFLAGS $4"
|
|
ldap_link="no"
|
|
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|
#include <stdio.h>
|
|
#include <ldap.h>
|
|
#include <lber.h>
|
|
#include <ldap_schema.h>
|
|
]], [[
|
|
printf("%p,%p", ldap_initialize, ldap_str2attributetype);
|
|
printf("%p", ber_free);
|
|
return 0;
|
|
]])],[
|
|
ldap_link="yes"
|
|
],[])
|
|
|
|
CPPFLAGS="$_save_ldap_cppflags"
|
|
CFLAGS="$_save_ldap_cflags"
|
|
LDFLAGS="$_save_ldap_ldflags"
|
|
LIBS="$_save_ldap_libs"
|
|
unset _save_ldap_cppflags
|
|
unset _save_ldap_cflags
|
|
unset _save_ldap_ldflags
|
|
unset _save_ldap_libs
|
|
]dnl
|
|
[AS_IF([test "x$ldap_link" = "xyes"], [$5], [$6])]dnl
|
|
)dnl
|
|
|
|
|
|
AC_DEFUN([LIBLDAP_CHECK_CONFIG],
|
|
[
|
|
AC_ARG_WITH(ldap,[
|
|
If you want to check LDAP servers:
|
|
AS_HELP_STRING([--with-ldap@<:@=DIR@:>@],[Include LDAP support @<:@default=no@:>@. DIR is the LDAP base install directory, default is to search through a number of common places for the LDAP files.])],
|
|
[ if test "$withval" = "no"; then
|
|
want_ldap="no"
|
|
_libldap_with="no"
|
|
elif test "$withval" = "yes"; then
|
|
want_ldap="yes"
|
|
_libldap_with="yes"
|
|
else
|
|
want_ldap="yes"
|
|
_libldap_with=$withval
|
|
fi
|
|
],[_libldap_with=ifelse([$1],,[no],[$1])])
|
|
|
|
if test "x$_libldap_with" != x"no"; then
|
|
AC_MSG_CHECKING([for LDAP support of ldap.h])
|
|
|
|
if test "$_libldap_with" = "yes"; then
|
|
if test -f /usr/local/openldap/include/ldap.h; then
|
|
LDAP_INCDIR=/usr/local/openldap/include/
|
|
LDAP_LIBDIR=/usr/local/openldap/lib/
|
|
found_ldap="yes"
|
|
elif test -f /usr/include/ldap.h; then
|
|
LDAP_INCDIR=/usr/include
|
|
LDAP_LIBDIR=/usr/lib
|
|
found_ldap="yes"
|
|
elif test -f /usr/local/include/ldap.h; then
|
|
LDAP_INCDIR=/usr/local/include
|
|
LDAP_LIBDIR=/usr/local/lib
|
|
found_ldap="yes"
|
|
else
|
|
found_ldap="no"
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
else
|
|
if test -f $_libldap_with/include/ldap.h; then
|
|
LDAP_INCDIR=$_libldap_with/include
|
|
LDAP_LIBDIR=$_libldap_with/lib
|
|
_ldap_dir_lib="$LDAP_LIBDIR"
|
|
|
|
found_ldap="yes"
|
|
else
|
|
found_ldap="no"
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
fi
|
|
|
|
if test "x$found_ldap" != "xno"; then
|
|
|
|
AC_MSG_RESULT(yes)
|
|
LDAP_CPPFLAGS="-I$LDAP_INCDIR"
|
|
LDAP_LDFLAGS="-L$LDAP_LIBDIR"
|
|
|
|
ldap_ver=$(strings `find $LDAP_LIBDIR -name libldap.so` | grep OpenLDAP | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+' | tr -d '.')
|
|
if test -n "$ldap_ver" && test "$ldap_ver" -ge 261; then
|
|
AC_DEFINE(HAVE_LDAP_SOURCEIP, 1, [Define to 1 if SourceIP is supported.])
|
|
fi
|
|
|
|
LDAP_LIBS="-lldap -llber $LDAP_LIBS"
|
|
|
|
if test "x$enable_static" = "xyes"; then
|
|
LDAP_LIBS="$LDAP_LIBS -lgnutls -lpthread -lsasl2"
|
|
elif test "x$enable_static_libs" = "xyes"; then
|
|
AC_MSG_CHECKING([compatibility of static LDAP libs])
|
|
test "x$static_linking_support" = "xno" -a -z "$_ldap_dir_lib" && AC_MSG_ERROR(["Compiler not support statically linked libs from default folders"])
|
|
|
|
if test "x$static_linking_support" = "xno"; then
|
|
LDAP_LIBS=`echo "$LDAP_LIBS"|sed "s|-lldap|$_ldap_dir_lib/libldap.a|g"|sed "s|-llber|$_ldap_dir_lib/liblber.a|g"`
|
|
fi
|
|
|
|
# without SSL and SASL
|
|
if test "x$static_linking_support" = "xno"; then
|
|
TRY_LDAP_LIBS="$LDAP_LIBS -lpthread"
|
|
else
|
|
TRY_LDAP_LIBS="${static_linking_support}static $LDAP_LIBS ${static_linking_support}dynamic -lpthread"
|
|
fi
|
|
LIBLDAP_TRY_LINK([$TRY_LDAP_LIBS], [$LDAP_LDFLAGS], [$LDAP_CPPFLAGS], ,[
|
|
LDAP_LIBS=$TRY_LDAP_LIBS
|
|
AC_MSG_RESULT([without SSL])
|
|
])
|
|
|
|
# without SSL
|
|
if test "x$ldap_link" = "xno"; then
|
|
if test "x$static_linking_support" = "xno"; then
|
|
TRY_LDAP_LIBS="$LDAP_LIBS -lpthread -lsasl2"
|
|
else
|
|
TRY_LDAP_LIBS="${static_linking_support}static $LDAP_LIBS ${static_linking_support}dynamic -lpthread -lsasl2"
|
|
fi
|
|
LIBLDAP_TRY_LINK([$TRY_LDAP_LIBS], [$LDAP_LDFLAGS], [$LDAP_CPPFLAGS], ,[
|
|
LDAP_LIBS=$TRY_LDAP_LIBS
|
|
AC_MSG_RESULT([without SSL])
|
|
])
|
|
fi
|
|
|
|
# without SSL for Solaris
|
|
if test "x$ldap_link" = "xno"; then
|
|
if test "x$static_linking_support" = "xno"; then
|
|
TRY_LDAP_LIBS="$LDAP_LIBS -lpthread -lsasl"
|
|
else
|
|
TRY_LDAP_LIBS="${static_linking_support}static $LDAP_LIBS ${static_linking_support}dynamic -lpthread -lsasl"
|
|
fi
|
|
LIBLDAP_TRY_LINK([$TRY_LDAP_LIBS], [$LDAP_LDFLAGS], [$LDAP_CPPFLAGS], ,[
|
|
LDAP_LIBS=$TRY_LDAP_LIBS
|
|
AC_MSG_RESULT([without SSL and with sasl])
|
|
])
|
|
fi
|
|
|
|
# with system GnuTLS
|
|
if test "x$ldap_link" = "xno"; then
|
|
if test "x$static_linking_support" = "xno"; then
|
|
TRY_LDAP_LIBS="$LDAP_LIBS -lgnutls -lsasl2 -lgssapi_krb5 -lpthread"
|
|
else
|
|
TRY_LDAP_LIBS="${static_linking_support}static $LDAP_LIBS ${static_linking_support}dynamic -lgnutls -lsasl2 -lgssapi_krb5 -lpthread"
|
|
fi
|
|
LIBLDAP_TRY_LINK([$TRY_LDAP_LIBS], [$LDAP_LDFLAGS], [$LDAP_CPPFLAGS], ,[
|
|
LDAP_LIBS=$TRY_LDAP_LIBS
|
|
AC_MSG_RESULT([with system GnuTLS linking])
|
|
])
|
|
fi
|
|
|
|
# with static OpenSSL and SASL2
|
|
if test "x$ldap_link" = "xno" -a "x$want_openssl" = "xyes"; then
|
|
if test "x$static_linking_support" = "xno"; then
|
|
OSSL_LDAP_LIBS="$LDAP_LIBS $OPENSSL_LIBS -lsasl2"
|
|
else
|
|
OSSL_LDAP_LIBS="${static_linking_support}static $LDAP_LIBS -lsasl2 ${static_linking_support}dynamic $OPENSSL_LIBS"
|
|
fi
|
|
OSSL_LDAP_CPPFLAGS="$LDAP_CPPFLAGS $OPENSSL_CPPFLAGS"
|
|
OSSL_LDAP_CFLAGS="$LDAP_CPPFLAGS $OPENSSL_CFLAGS"
|
|
OSSL_LDAP_LDFLAGS="$LDAP_LDFLAGS $OPENSSL_LDFLAGS"
|
|
LIBLDAP_TRY_LINK([$OSSL_LDAP_LIBS], [$OSSL_LDAP_LDFLAGS], [$OSSL_LDAP_CPPFLAGS], [$OSSL_LDAP_CFLAGS],[
|
|
LDAP_LIBS="$OSSL_LDAP_LIBS"
|
|
AC_MSG_RESULT([with static OpenSSL and static sasl2])
|
|
])
|
|
fi
|
|
|
|
# with static OpenSSL
|
|
if test "x$ldap_link" = "xno" -a "x$want_openssl" = "xyes"; then
|
|
if test "x$static_linking_support" = "xno"; then
|
|
OSSL_LDAP_LIBS="$LDAP_LIBS $OPENSSL_LIBS -lsasl2"
|
|
else
|
|
OSSL_LDAP_LIBS="${static_linking_support}static $LDAP_LIBS ${static_linking_support}dynamic $OPENSSL_LIBS -lsasl2"
|
|
fi
|
|
OSSL_LDAP_CPPFLAGS="$LDAP_CPPFLAGS $OPENSSL_CPPFLAGS"
|
|
OSSL_LDAP_CFLAGS="$LDAP_CPPFLAGS $OPENSSL_CFLAGS"
|
|
OSSL_LDAP_LDFLAGS="$LDAP_LDFLAGS $OPENSSL_LDFLAGS"
|
|
LIBLDAP_TRY_LINK([$OSSL_LDAP_LIBS], [$OSSL_LDAP_LDFLAGS], [$OSSL_LDAP_CPPFLAGS], [$OSSL_LDAP_CFLAGS],[
|
|
LDAP_LIBS="$OSSL_LDAP_LIBS"
|
|
AC_MSG_RESULT([with static OpenSSL])
|
|
])
|
|
fi
|
|
|
|
# with static OpenSSL for Solaris
|
|
if test "x$ldap_link" = "xno" -a "x$want_openssl" = "xyes"; then
|
|
if test "x$static_linking_support" = "xno"; then
|
|
OSSL_LDAP_LIBS="$LDAP_LIBS $OPENSSL_LIBS -lsasl"
|
|
else
|
|
OSSL_LDAP_LIBS="${static_linking_support}static $LDAP_LIBS ${static_linking_support}dynamic $OPENSSL_LIBS -lsasl"
|
|
fi
|
|
OSSL_LDAP_CPPFLAGS="$LDAP_CPPFLAGS $OPENSSL_CPPFLAGS"
|
|
OSSL_LDAP_CFLAGS="$LDAP_CPPFLAGS $OPENSSL_CFLAGS"
|
|
OSSL_LDAP_LDFLAGS="$LDAP_LDFLAGS $OPENSSL_LDFLAGS"
|
|
LIBLDAP_TRY_LINK([$OSSL_LDAP_LIBS], [$OSSL_LDAP_LDFLAGS], [$OSSL_LDAP_CPPFLAGS], [$OSSL_LDAP_CFLAGS],[
|
|
LDAP_LIBS="$OSSL_LDAP_LIBS"
|
|
AC_MSG_RESULT([with static OpenSSL and sasl])
|
|
],[
|
|
AC_MSG_ERROR([Not compatible with static OpenLDAP libs version of static OpenSSL: "$OPENSSL_LDFLAGS"])
|
|
])
|
|
fi
|
|
|
|
# with system OpenSSL and SASL2
|
|
if test "x$ldap_link" = "xno"; then
|
|
if test "x$static_linking_support" = "xno"; then
|
|
TRY_LDAP_LIBS="$LDAP_LIBS -lssl -lsasl2 -lcrypto"
|
|
else
|
|
TRY_LDAP_LIBS="${static_linking_support}static $LDAP_LIBS -lsasl2 ${static_linking_support}dynamic -lssl -lcrypto"
|
|
fi
|
|
LIBLDAP_TRY_LINK([$TRY_LDAP_LIBS], [$LDAP_LDFLAGS], [$LDAP_CPPFLAGS], ,[
|
|
LDAP_LIBS=$TRY_LDAP_LIBS
|
|
AC_MSG_RESULT([with system OpenSSL and static sasl2 linking])
|
|
])
|
|
fi
|
|
|
|
# with system OpenSSL
|
|
if test "x$ldap_link" = "xno"; then
|
|
if test "x$static_linking_support" = "xno"; then
|
|
TRY_LDAP_LIBS="$LDAP_LIBS -lssl -lsasl2 -lcrypto"
|
|
else
|
|
TRY_LDAP_LIBS="${static_linking_support}static $LDAP_LIBS ${static_linking_support}dynamic -lssl -lsasl2 -lcrypto"
|
|
fi
|
|
LIBLDAP_TRY_LINK([$TRY_LDAP_LIBS], [$LDAP_LDFLAGS], [$LDAP_CPPFLAGS], ,[
|
|
LDAP_LIBS=$TRY_LDAP_LIBS
|
|
AC_MSG_RESULT([with system OpenSSL linking])
|
|
])
|
|
fi
|
|
|
|
# with system OpenSSL for Solaris
|
|
if test "x$ldap_link" = "xno"; then
|
|
if test "x$static_linking_support" = "xno"; then
|
|
TRY_LDAP_LIBS="$LDAP_LIBS -lssl -lsasl -lcrypto"
|
|
else
|
|
TRY_LDAP_LIBS="${static_linking_support}static $LDAP_LIBS ${static_linking_support}dynamic -lssl -lsasl -lcrypto"
|
|
fi
|
|
LIBLDAP_TRY_LINK([$TRY_LDAP_LIBS], [$LDAP_LDFLAGS], [$LDAP_CPPFLAGS], ,[
|
|
LDAP_LIBS=$TRY_LDAP_LIBS
|
|
AC_MSG_RESULT([with system OpenSSL and sasl linking])
|
|
])
|
|
fi
|
|
|
|
if test "x$ldap_link" = "xno"; then
|
|
AC_MSG_ERROR([Not found compatible version of OpenLDAP static libs])
|
|
fi
|
|
fi
|
|
|
|
found_ldap="yes"
|
|
AC_DEFINE(HAVE_LDAP,1,[Define to 1 if LDAP should be enabled.])
|
|
AC_DEFINE(LDAP_DEPRECATED, 1, [Define to 1 if LDAP deprecated functions is used.])
|
|
|
|
if test "x$enable_static" = "xyes"; then
|
|
AC_CHECK_LIB(gnutls, main, , AC_MSG_ERROR([Not found GnuTLS library]))
|
|
AC_CHECK_LIB(pthread, main, , AC_MSG_ERROR([Not found Pthread library]))
|
|
AC_CHECK_LIB(sasl2, main, , AC_MSG_ERROR([Not found SASL2 library]))
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
AC_SUBST(LDAP_CPPFLAGS)
|
|
AC_SUBST(LDAP_LDFLAGS)
|
|
AC_SUBST(LDAP_LIBS)
|
|
|
|
unset _libldap_with
|
|
])dnl
|