1dnl ldap.m4 -- find compiler and linker flags for LDAP
2dnl Based on patch from Markus Moeller (markus_moeller at compuserve.com)
3
4dnl default prefix for ldap headers/libs
5ldapdir=/usr
6AC_ARG_WITH(ldap,
7 [  --without-ldap          disable ldap support @<:@default=detect@:>@],
8 [LDAP=$withval])
9
10AC_ARG_WITH(ldap-path,
11 [  --with-ldap-path=PATH   specify ldap path],
12 [ldapdir=$withval])
13
14if test x"$LDAP" != xno; then
15   unset ldapfail
16
17   if test x"$ldapdir" != xno; then
18      ac_ldap_cflags=-I$ldapdir/include
19      ac_ldap_libs=-L$ldapdir/lib
20   else
21      ac_ldap_cflags=
22      ac_ldap_libs=
23   fi
24
25   dnl any cflags values obtained from krb5-config?
26   if test x"${ac_ldap_cflags}" != x; then
27      CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$ac_ldap_cflags"
28   fi
29
30   dnl extract -L flags
31   if test x"${ac_ldap_libs}" != x; then
32      NPATH=`echo $ac_ldap_libs | xargs -n1 | egrep '^-L' | xargs echo`
33      LDFLAGS="${LDFLAGS}${LDFLAGS:+ }$NPATH"
34   fi
35
36   dnl need res_search, found in libresolv on e.g., Linux Fedora 13
37   AC_CHECK_LIB(resolv, main)
38
39   dnl look for ldap headers
40   AC_CHECK_HEADERS(ldap.h)
41   AC_CHECK_HEADERS(mozldap/ldap.h)
42
43   AC_CHECK_LIB(ldap, main)
44   if test x"${ac_cv_lib_ldap_main}" != xyes; then
45     AC_CHECK_LIB(pthread, main)
46     AC_CHECK_LIB(ldap60, main)
47     AC_CHECK_LIB(prldap60, main)
48     AC_CHECK_LIB(ssldap60, main)
49   fi
50
51   dnl do compile check
52   AC_MSG_CHECKING([for working ldap])
53   AC_TRY_RUN([
54#if HAVE_LDAP_H
55#include <ldap.h>
56#elif HAVE_MOZLDAP_LDAP_H
57#include <mozldap/ldap.h>
58#endif
59
60int
61main(void)
62{
63       char *host="";
64       int port;
65
66       ldap_init(host, port);
67
68       return 0;
69}], [unset no_ldap
70   AC_MSG_RESULT(yes)],
71   AC_MSG_RESULT(no))
72
73   unset ldap_openldap
74   AC_MSG_CHECKING([for OpenLDAP])
75   AC_TRY_RUN([
76#if HAVE_LDAP_H
77#include <ldap.h>
78#endif
79#include <string.h>
80
81int
82main(void)
83{
84   return strcmp(LDAP_VENDOR_NAME, "OpenLDAP");
85}
86], [AC_DEFINE(HAVE_OPENLDAP, 1, [OpenLDAP support])
87   AC_MSG_RESULT(yes)
88   ldap_openldap=t],
89   AC_MSG_RESULT(no))
90
91   AC_MSG_CHECKING([for Sun LDAP SDK])
92   AC_TRY_RUN([
93#if HAVE_LDAP_H
94#include <ldap.h>
95#endif
96#include <string.h>
97
98int
99main(void)
100{
101   return strcmp(LDAP_VENDOR_NAME, "Sun Microsystems Inc.");
102}], [AC_DEFINE(HAVE_SUN_LDAP_SDK, 1, [Sun LDAP SDK support])
103   AC_MSG_RESULT(yes)],
104   AC_MSG_RESULT(no))
105
106   AC_MSG_CHECKING([for Mozilla LDAP SDK])
107   AC_TRY_RUN([
108#if HAVE_LDAP_H
109#include <ldap.h>
110#elif HAVE_MOZLDAP_LDAP_H
111#include <mozldap/ldap.h>
112#endif
113#include <string.h>
114
115int
116main(void)
117{
118   return strcmp(LDAP_VENDOR_NAME, "mozilla.org");
119}], [AC_DEFINE(HAVE_MOZILLA_LDAP_SDK, 1, [Mozilla LDAP SDK support])
120   AC_MSG_RESULT(yes)],
121   AC_MSG_RESULT(no))
122
123dnl
124dnl Implementation dependent checks
125dnl
126   if test x"${ldap_openldap}" != x; then
127      AC_CHECK_HEADERS(lber.h)
128      AC_CHECK_LIB(lber, main)
129   fi
130
131dnl
132dnl Check for LDAP_REBINDPROC_CALLBACK
133dnl
134   if test x"${ac_cv_header_ldap_h}" = xyes; then
135      AC_EGREP_HEADER(LDAP_REBINDPROC_CALLBACK, ldap.h,
136         AC_DEFINE(HAVE_LDAP_REBINDPROC_CALLBACK, 1, [Define to 1 if you have LDAP_REBINDPROC_CALLBACK]))
137   elif test x"${ac_cv_header_mozldap_ldap_h}" = xyes; then
138      AC_EGREP_HEADER(LDAP_REBINDPROC_CALLBACK, mozldap/ldap.h,
139         AC_DEFINE(HAVE_LDAP_REBINDPROC_CALLBACK, 1, [Define to 1 if you have LDAP_REBINDPROC_CALLBACK]))
140   else
141      AC_MSG_CHECKING([for LDAP_REBINDPROC_CALLBACK])
142      AC_DEFINE(HAVE_LDAP_REBINDPROC_CALLBACK, 0, [Define to 1 if you have LDAP_REBINDPROC_CALLBACK])
143      AC_MSG_RESULT(no)
144   fi
145dnl
146dnl Check for LDAP_REBIND_PROC
147dnl
148   if test x"${ac_cv_header_ldap_h}" = xyes; then
149      AC_EGREP_HEADER(LDAP_REBIND_PROC, ldap.h,
150         AC_DEFINE(HAVE_LDAP_REBIND_PROC, 1, [Define to 1 if you have LDAP_REBIND_PROC]))
151   elif test x"${ac_cv_header_mozldap_ldap_h}" = xyes; then
152      AC_EGREP_HEADER(LDAP_REBIND_PROC, mozldap/ldap.h,
153         AC_DEFINE(HAVE_LDAP_REBIND_PROC, 1, [Define to 1 if you have LDAP_REBIND_PROC]))
154   else
155      AC_MSG_CHECKING([for LDAP_REBIND_PROC])
156      AC_DEFINE(HAVE_LDAP_REBIND_PROC, 0, [Define to 1 if you have LDAP_REBIND_PROC])
157      AC_MSG_RESULT(no)
158   fi
159dnl
160dnl Check for LDAP_REBIND_FUNCTION
161dnl
162   AC_EGREP_CPP(LDAP_REBIND_FUNCTION, [#define LDAP_REFERRALS
163#if HAVE_LDAP_H
164#include <ldap.h>
165#elif HAVE_MOZLDAP_LDAP_H
166#include <mozldap/ldap.h>
167#endif
168],
169      AC_DEFINE(HAVE_LDAP_REBIND_FUNCTION, 1, [Define to 1 if you have LDAP_REBIND_FUNCTION]))
170
171dnl
172dnl Check for LDAP_SCOPE_DEFAULT
173dnl
174   AC_MSG_CHECKING([for LDAP_SCOPE_DEFAULT])
175   AC_TRY_RUN([
176#if HAVE_LDAP_H
177#include <ldap.h>
178#elif HAVE_MOZLDAP_LDAP_H
179#include <mozldap/ldap.h>
180#endif
181
182int
183main(void)
184{
185#ifdef LDAP_SCOPE_DEFAULT
186        return 0;
187#else
188        return 1;
189#endif
190}], [AC_DEFINE(HAVE_LDAP_SCOPE_DEFAULT, 1, [Define to 1 if you have LDAP_SCOPE_DEFAULT])
191   AC_MSG_RESULT(yes)],
192   AC_MSG_RESULT(no))
193
194dnl
195dnl Check for ldap_url_desc.lud_scheme
196dnl
197   AC_CHECK_MEMBER(struct ldap_url_desc.lud_scheme,
198      AC_DEFINE(HAVE_LDAP_URL_LUD_SCHEME, 1, [Define to 1 if you have LDAPURLDesc.lud_scheme]),,
199[#if HAVE_LDAP_H
200#include <ldap.h>
201#elif HAVE_MOZLDAP_LDAP_H
202#include <mozldap/ldap.h>
203#endif
204])
205
206dnl
207dnl Check for ldapssl_client_init
208dnl
209   if test x"${ac_cv_lib_ldap_main}" = xyes; then
210      AC_CHECK_LIB(ldap, ldapssl_client_init,
211         AC_DEFINE(HAVE_LDAPSSL_CLIENT_INIT, 1, [Define to 1 if you have ldapssl_client_init]),)
212   elif test x"${ac_cv_lib_ssldap60_main}" = xyes; then
213      AC_CHECK_LIB(ssldap60, ldapssl_client_init,
214         AC_DEFINE(HAVE_LDAPSSL_CLIENT_INIT, 1, [Define to 1 if you have ldapssl_client_init]),)
215   else
216      AC_MSG_CHECKING([for ldapssl_client_init])
217      AC_DEFINE(HAVE_LDAPSSL_CLIENT_INIT, 0, [Define to 1 if you have ldapssl_client_init])
218      AC_MSG_RESULT(no)
219   fi
220dnl
221dnl Check for ldap_url_desc2str
222dnl
223   if test x"${ac_cv_lib_ldap_main}" = xyes; then
224      AC_CHECK_LIB(ldap, ldap_url_desc2str,
225         AC_DEFINE(HAVE_LDAP_URL_DESC2STR, 1, [Define to 1 if you have ldap_url_desc2str]),)
226   elif test x"${ac_cv_lib_ldap60_main}" = xyes; then
227      AC_CHECK_LIB(ldap60, ldap_url_desc2str,
228         AC_DEFINE(HAVE_LDAP_URL_DESC2STR, 1, [Define to 1 if you have ldap_url_desc2str]),)
229   else
230      AC_MSG_CHECKING([for ldap_url_desc2str])
231      AC_DEFINE(HAVE_LDAP_URL_DESC2STR, 0, [Define to 1 if you have ldap_url_desc2str])
232      AC_MSG_RESULT(no)
233   fi
234
235dnl
236dnl Check for ldap_url_parse
237dnl
238   if test x"${ac_cv_lib_ldap_main}" = xyes; then
239      AC_CHECK_LIB(ldap, ldap_url_parse,
240         AC_DEFINE(HAVE_LDAP_URL_PARSE, 1, [Define to 1 if you have ldap_url_parse]),)
241   elif test x"${ac_cv_lib_ldap60_main}" = xyes; then
242      AC_CHECK_LIB(ldap60, ldap_url_parse,
243         AC_DEFINE(HAVE_LDAP_URL_PARSE, 1, [Define to 1 if you have ldap_url_parse]),)
244   else
245      AC_MSG_CHECKING([for ldap_url_parse])
246      AC_DEFINE(HAVE_LDAP_URL_PARSE, 0, [Define to 1 if you have ldap_url_parse])
247      AC_MSG_RESULT(no)
248   fi
249fi
250