AC_PREREQ([2.53]) AC_INIT(rlm_ldap.c) AC_REVISION($Revision$) AC_DEFUN(modname,[rlm_ldap]) fail= SMART_LIBS= SMART_CLFAGS= if test x$with_[]modname != xno; then dnl ############################################################ dnl # Check for compiler dnl ############################################################ AC_PROG_CC dnl ############################################################ dnl # Check for command line options dnl ############################################################ dnl extra argument: --with-rlm-ldap-lib-dir rlm_ldap_lib_dir= AC_ARG_WITH(rlm-ldap-lib-dir, [ --with-rlm-ldap-lib-dir=DIR directory for LDAP library files []], [ case "$withval" in no) AC_MSG_ERROR(Need rlm-ldap-lib-dir) ;; yes) ;; *) rlm_ldap_lib_dir="$withval" ;; esac ] ) dnl extra argument: --with-rlm-ldap-include-dir rlm_ldap_include_dir= AC_ARG_WITH(rlm-ldap-include-dir, [ --with-rlm-ldap-include-dir=DIR directory for LDAP include files []], [ case "$withval" in no) AC_MSG_ERROR(Need rlm-ldap-include-dir) ;; yes) ;; *) rlm_ldap_include_dir="$withval" ;; esac ] ) dnl extra argument: --enable-shared --disable-shared AC_ENABLE_SHARED dnl OpenLDAP doesn't provide an autoconf test for their libldap, dnl and we can't reasonably check for all the dependancies for dnl every version and every set of options. if test "x$enable_shared" = "xno"; then AC_MSG_WARN(Static linking with libldap will probably result in unresolved symbols.) fi dnl extra argument: --with-threads rlm_ldap_with_threads=yes AC_ARG_WITH(threads, [ --with-threads use threads, if available. (default=yes) ], [ case "$withval" in no) rlm_ldap_with_threads=no ;; *) ;; esac ]) dnl ############################################################ dnl # Check for libraries dnl ############################################################ dnl pthread stuff is usually in -lpthread dnl or in -lc_r, on *BSD if test "x$rlm_ldap_with_threads" = "xyes"; then AC_CHECK_LIB(pthread, pthread_create, [ LIBS="-lpthread $LIBS" ], AC_CHECK_LIB(c_r, pthread_create, [ LIBS="-lc_r $LIBS" ], [ rlm_ldap_with_threads="no" ] ) ) fi dnl Try only "-lldap_r" or "-lldap" dnl Static linking will probably not work, but nobody ever dnl complained about it. smart_try_dir=$rlm_ldap_lib_dir if test "x$rlm_ldap_with_threads" = "xyes"; then FR_SMART_CHECK_LIB(ldap_r, ldap_init) if test "x$ac_cv_lib_ldap_r_ldap_init" != "xyes"; then fail="$fail libldap_r" fi else FR_SMART_CHECK_LIB(ldap, ldap_init) if test "x$ac_cv_lib_ldap_ldap_init" != "xyes"; then fail="$fail libldap" fi fi dnl ############################################################ dnl # Check for header files dnl ############################################################ smart_try_dir=$rlm_ldap_include_dir FR_SMART_CHECK_INCLUDE(ldap.h) if test "$ac_cv_header_ldap_h" != "yes"; then fail="$fail ldap.h" fi dnl ############################################################ dnl # Check for library functions dnl ############################################################ if test "x$fail" = "x"; then AC_CHECK_FUNC(ldap_start_tls_s, [ SMART_CFLAGS="$SMART_CFLAGS -DHAVE_LDAP_START_TLS" ]) AC_CHECK_FUNC(ldap_initialize, [ SMART_CFLAGS="$SMART_CFLAGS -DHAVE_LDAP_INITIALIZE" ]) AC_CHECK_FUNC(ldap_int_tls_config, [ SMART_CFLAGS="$SMART_CFLAGS -DHAVE_LDAP_INT_TLS_CONFIG" ]) AC_CHECK_FUNCS(ldap_set_rebind_proc) AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, ac_cv_ldap_set_rebind_proc, [ AC_TRY_COMPILE([ #include #include ], [ldap_set_rebind_proc(0, 0, 0);], [ac_cv_ldap_set_rebind_proc=3], [ac_cv_ldap_set_rebind_proc=2]) ]) fi targetname=modname else targetname= echo \*\*\* module modname is disabled. fi if test x"$fail" != x""; then if test x"${enable_strict_dependencies}" = x"yes"; then AC_MSG_ERROR([set --without-]modname[ to disable it explicitly.]) else AC_MSG_WARN([silently not building ]modname[.]) AC_MSG_WARN([FAILURE: ]modname[ requires: $fail.]) if test x"$headersuggestion" != x; then AC_MSG_WARN([$headersuggestion]) fi if test x"$libsuggestion" != x; then AC_MSG_WARN([$libsuggestion]) fi targetname="" fi fi dnl extra argument: --with-edir dnl If using Novell eDirectory, enable UP and Novell specific code WITH_EDIRECTORY=no AC_ARG_WITH(edir, [ --with-edir enable Novell eDirectory integration. (default=no) ], [ case "$withval" in yes) SMART_CFLAGS="$SMART_CFLAGS -DNOVELL_UNIVERSAL_PASSWORD -DNOVELL" edir="edir_ldapext.c" ;; *) ;; esac ] ) ldap_ldflags=$SMART_LIBS ldap_cflags="$SMART_CFLAGS -DLDAP_DEPRECATED -DLDAP_SET_REBIND_PROC_ARGS=$ac_cv_ldap_set_rebind_proc" AC_SUBST(edir) AC_SUBST(ldap_ldflags) AC_SUBST(ldap_cflags) AC_SUBST(targetname) AC_OUTPUT(Makefile) AC_OUTPUT(all.mk)