aboutsummaryrefslogtreecommitdiffstats
path: root/m4/evo_sunldap_check.m4
blob: bd85534ed8a9b4520ff00e628419501628be0dea (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
dnl EVO_SUNLDAP_CHECK
dnl Add --with-sunldap and --with-static-sunldap options. --with-sunldap
dnl defaults to the given value if not specified. If LDAP support is
dnl configured, HAVE_LDAP will be defined and the automake conditional
dnl ENABLE_LDAP will be set. LDAP_CFLAGS and LDAP_LIBS will be set
dnl appropriately, and --with-sunldap and --with-openldap is mutually exclusive.
#serial 0.1
AC_DEFUN([EVO_SUNLDAP_CHECK], [
    default="$1"

    AC_ARG_WITH([sunldap],
        [AS_HELP_STRING([--with-sunldap],
        [Enable SunLDAP support in evolution])])
    AC_ARG_WITH([static-sunldap],
        [AS_HELP_STRING([--with-static-sunldap],
        [Link SunLDAP support statically into evolution])])
    AC_CACHE_CHECK([for SunLDAP],[ac_cv_with_sunldap],[ac_cv_with_sunldap="${with_sunldap:=$default}"])
    case $ac_cv_with_sunldap in
    no|"")
        with_sunldap=no
        ;;
    yes)
        with_sunldap=/usr
        ;;
    *)
        with_sunldap=$ac_cv_with_sunldap
        LDAP_CFLAGS="-I$ac_cv_with_sunldap/include"
        LDAP_LDFLAGS="-L$ac_cv_with_sunldap/lib"
        ;;
    esac

    if test "$with_sunldap" != no; then
        AC_DEFINE(HAVE_LDAP,1,[Define if you have LDAP support])
        AC_DEFINE(SUNLDAP, 1, [Define if you use SunLDAP])

        case $with_static_sunldap in
        no|"")
            with_static_sunldap=no
            ;;
        *)
            with_static_sunldap=yes
            ;;
        esac

        AC_CACHE_CHECK([if SunLDAP is version 2.x], [ac_cv_sunldap_version2], [
            CPPFLAGS_save="$CPPFLAGS"
            CPPFLAGS="$CPPFLAGS $LDAP_CFLAGS"
            AC_EGREP_CPP(yes, [
                #include "ldap.h"
                #if LDAP_VENDOR_VERSION >= 500
                yes
                #endif
            ],[ac_cv_sunldap_version2=yes],[ac_cv_sunldap_version2=no])
            CPPFLAGS="$CPPFLAGS_save"
        ])
        if test "$ac_cv_sunldap_version2" = no; then
               AC_MSG_ERROR([evolution requires SunLDAP version >= 2])
        fi

        AC_CHECK_LIB(resolv, res_query, [LDAP_LIBS="-lresolv"])
        AC_CHECK_LIB(socket, bind, [LDAP_LIBS="$LDAP_LIBS -lsocket"])
        AC_CHECK_LIB(nsl, gethostbyaddr, [LDAP_LIBS="$LDAP_LIBS -lnsl"])
        AC_CHECK_LIB(ldap, ldap_open, [
            if test $with_static_sunldap = "yes"; then
                LDAP_LIBS="$with_sunldap/lib/libldap.a $LDAP_LIBS"
            else
                LDAP_LIBS="-lldap $LDAP_LIBS"
            fi
            if test `uname -s` != "SunOS" ; then
                AC_CHECK_LIB(lber, ber_get_tag, [
                    if test "$with_static_sunldap" = "yes"; then
                        LDAP_LIBS="$with_sunldap/lib/liblber.a $LDAP_LIBS"
                        # libldap might depend on OpenSSL... We need to pull
                        # in the dependency libs explicitly here since we're
                        # not using libtool for the configure test.
                        if test -f $with_sunldap/lib/libldap.la; then
                            LDAP_LIBS="`. $with_sunldap/lib/libldap.la; echo $dependency_libs` $LDAP_LIBS"
                        fi
                    else
                        LDAP_LIBS="-llber $LDAP_LIBS"
                    fi], [LDAP_LIBS=""], [$LDAP_LDFLAGS $LDAP_LIBS])
            fi
            LDAP_LIBS="$LDAP_LDFLAGS $LDAP_LIBS"
        ], [LDAP_LIBS=""], [$LDAP_LDFLAGS $LDAP_LIBS])

        if test -z "$LDAP_LIBS"; then
            AC_MSG_ERROR([could not find SunLDAP libraries])
        fi

        AC_SUBST(LDAP_CFLAGS)
        AC_SUBST(LDAP_LIBS)
    fi
    AM_CONDITIONAL(ENABLE_LDAP, test "$with_sunldap" != "no")
])