]> git.sur5r.net Git - openldap/blob - configure.in
78c9710b8404b99509079e82285bd8f6cc20a710
[openldap] / configure.in
1 dnl Copyright 1998 The OpenLDAP Foundation.  All Rights Reserved.
2 dnl 
3 dnl Redistribution and use in source and binary forms are permitted only
4 dnl as authorized by the OpenLDAP Public License.  A copy of this
5 dnl license is available at http://www.OpenLDAP.org/license.html or
6 dnl in file LICENSE in the top-level directory of the distribution.
7 dnl ----
8 dnl Configure.in for OpenLDAP
9 dnl
10 AC_INIT(include/ldap.h)
11 dnl
12 dnl
13 AC_PREREQ(2.10)dnl Required Autoconf version
14 dnl Do not use AutoConf 2.12; it produces a configuration script
15 dnl that causes an "internal 2K buffer" error on HPUX when run
16 dnl with /bin/sh.  Autoconf 2.10 seems to be okay.
17 AC_CONFIG_AUX_DIR(build)
18 AC_CONFIG_HEADER(include/portable.h)dnl
19 dnl
20 dnl Start Args
21 AC_MSG_CHECKING(arguments)
22 AC_PREFIX_DEFAULT(/usr/local)
23
24 dnl General "enable" options
25 CF_ARG_OPTION(debug,[  --enable-debug   enable debugging (yes)],[
26         LDAP_DEBUG=no],[LDAP_DEBUG=yes],yes)dnl
27 CF_ARG_OPTION(libui,[  --enable-libui   enable library user interface (yes)],[
28         LDAP_LIBUI=no],[LDAP_LIBUI=yes],yes)dnl
29 CF_ARG_OPTION(cache,[  --enable-cache   enable caching (yes)],[
30         LDAP_CACHE=no],[LDAP_CACHE=yes],yes)dnl
31 CF_ARG_OPTION(referrals,[  --enable-referrals   enable referrals (yes)],[
32         LDAP_REFERRALS=no],[LDAP_REFERRALS=yes],yes)dnl
33
34 CF_ARG_OPTION(cldap,[  --enable-clapd   enable connectionless ldap (no)],[
35         LDAP_CLDAP=yes],[LDAP_CLDAP=no],no)dnl
36
37 dnl General "with" options
38 AC_ARG_WITH(kerberos,[  --with-kerberos use Kerberos (no)],[
39         opt_kerberos=yes],[opt_kerberos=no])
40 AC_ARG_WITH(kerberos-afs,[  --with-kerberos-afs use AFS Kerberos (no)],[
41         opt_kerberos_afs=yes],[opt_kerberos_afs=no])
42 AC_ARG_WITH(threads,[  --with-threads   use threads (yes)],[
43         opt_threads=yes],[opt_threads=no])
44
45 dnl Server options
46
47 dnl LDAPD OPTIONS
48 CF_ARG_OPTION(ldapd,[  --enable-ldapd   enable building ldapd (no)],[
49         BUILD_LDAPD=yes],[BUILD_LDAPD=no],no)dnl
50
51 dnl SLAPD OPTIONS
52 CF_ARG_OPTION(slapd,[  --enable-slapd   enable building slapd (yes)],[
53         BUILD_SLAPD=no],[BUILD_SLAPD=yes],yes)dnl
54 CF_ARG_OPTION(aclgroup,[    --enable-aclgroup   enable ACL group support (yes)],[
55         SLAPD_ACLGROUP=no],[SLAPD_ALCGROUP=yes],yes)dnl
56 CF_ARG_OPTION(crypt,[    --enable-crypt enable crypt(3) passwords (yes)],[
57         SLAPD_CRYPT=no],[SLAPD_CRYPT=yes],yes)dnl
58 CF_ARG_OPTION(md5,[    --enable-md5     enable MD5 passwords (yes)],[
59         SLAPD_MD5=no],[SLAPD_MD5=yes],yes)dnl
60 CF_ARG_OPTION(sha1,[    --enable-sha1   enable SHA1 passwords (yes)],[
61         SLAPD_SHA1=no],[SLAPD_SHA1=yes],yes)dnl
62 CF_ARG_OPTION(wrappers,[    --enable-wrappers   enable tcp wrapper support (no)],[
63         SLAPD_TCP_WRAPPERS=yes],[SLAPD_TCP_WRAPPERS=no],no)dnl
64 CF_ARG_OPTION(phonetic,[    --enable-phonetic   enable phonetic/soundex  (no)],[
65         SLAPD_PHONETIC=yes],[SLAPD_PHONETIC=no],no)dnl
66 CF_ARG_OPTION(rlookups,[    --enable-rlookups   enable reverse lookups (yes)],[
67         SLAPD_RLOOKUP=no],[SLAPD_RLOOKUP=yes],yes)dnl
68
69 dnl SLAPD Backend options
70 CF_ARG_OPTION(ldbm,[    --enable-ldbm   enable ldbm backend (yes)],[
71         SLAPD_LDBM=no],[SLAPD_LDBM=yes],yes)dnl
72 CF_ARG_OPTION(passwd,[    --enable-passwd       enable passwd backend (yes)],[
73         SLAPD_PASSWD=no],[SLAPD_PASSWD=yes],yes)dnl
74 CF_ARG_OPTION(shell,[    --enable-shell enable shell backend (yes)],[
75         SLAPD_SHELL=no],[SLAPD_SHELL=yes],yes)dnl
76
77 AC_ARG_WITH(ndbm,[    --with-ndbm               use NDB for LDBM backend (any)],[
78         opt_ndbm=yes],[opt_ndbm=no])
79 AC_ARG_WITH(gdbm,[    --with-gdbm               use GDBM for LDBM backend (any)],[
80         opt_gdbm=yes],[opt_gdbm=no])
81 AC_ARG_WITH(dbhash,[    --with-dbhash   use Berkeley DB Hash for LDBM backend (any)],[
82         opt_dbhash=yes],[opt_dbhash=no])
83 AC_ARG_WITH(dbbtree,[    --with-dbbtree use Berkeley DB Btrees for LDBM backend (any)],[
84         opt_dbbtree=yes],[opt_dbbtree=no])
85 AC_ARG_WITH(db2,[    --with-db2         use Berkeley DB2 API (any)],[
86         opt_db2=yes],[opt_db2=no])
87
88 dnl SLURPD OPTIONS
89 CF_ARG_OPTION(slurpd,[  --enable-slurpd enable building slurpd (yes)],[
90         BUILD_SLURPD=no],[BUILD_SLURPD=yes],yes)dnl
91
92 AC_MSG_RESULT(done)
93
94 AC_MSG_CHECKING(LDBM preferences)
95 ldbm_prefer=any
96
97 if test "$opt_ndbm" = yes ; then
98         ldbm_prefer=ndbm
99 fi
100 if test "$opt_gdbm" = yes ; then
101         ldbm_prefer=gdbm
102 fi
103 if test "$opt_dbhash" = yes ; then
104         ldbm_prefer=dbhash
105 fi
106 if test "$opt_dbbtree" = yes ; then
107         ldbm_prefer=dbbtree
108 fi
109 AC_MSG_RESULT($ldbm_prefer)
110
111 if test "$BUILD_SLAPD" != "yes" ; then
112         BUILD_SLURPD="no"
113         SLAPD_LDBM="no"
114         SLAPD_PASSWD="no"
115         SLAPD_SHELL="no"
116         ldbm_prefer="none"
117 fi
118
119 ## general LDAP arguments
120 LDAP_DEFS=
121 LDAP_LIBS=
122
123 if test "$LDAP_DEBUG" = "yes" ; then
124         LDAP_DEFS="$LDAP_DEFS -DLDAP_DEBUG"
125 fi
126 if test "$LDAP_REFERRALS" = "yes" ; then
127         AC_DEFINE(LDAP_REFERRALS,1)
128         LDAP_DEFS="$LDAP_DEFS -DLDAP_REFERRALS"
129 fi
130 if test "$LDAP_CACHE" = "no" ; then
131         AC_DEFINE(LDAP_NOCACHE,1)
132         LDAP_DEFS="$LDAP_DEFS -DNO_CACHE"
133 fi
134 if test "$LDAP_CLDAP" = "yes" ; then
135         AC_DEFINE(LDAP_CONNECTIONLESS,1)
136         LDAP_DEFS="$LDAP_DEFS -DCLDAP"
137 fi
138
139 LTHREAD_LIBS=
140 if test "$opt_thread" = "no" ; then
141         LTHREAD_DEFS="-DNO_THREADS"
142         BUILD_SLURPD=no
143 else
144         LTHREAD_DEFS="-DNO_THREADS"
145 fi
146
147 ## ldapd arguments
148 LDAPD_DEFS=
149 LDAPD_LIBS=
150
151 ## slapd arguments
152 SLAPD_DEFS=
153 SLAPD_LIBS=
154 LUTIL_DEFS=
155 if test "$SLAPD_PHONETIC" = "yes" ; then
156         AC_DEFINE(SLAPD_PHONETIC,1)
157         SLAPD_DEFS="$SLAPD_DEFS -DSOUNDEX"
158 fi
159
160 if test "$SLAPD_MD5" = "yes" ; then
161         AC_DEFINE(SLAPD_MD5,1)
162         LUTIL_DEFS="$LUTIL_DEFS -DLDAP_MD5"
163 fi
164
165 if test "$SLAPD_SHA1" = "yes" ; then
166         AC_DEFINE(SLAPD_SHA1,1)
167         LUTIL_DEFS="$LUTIL_DEFS -DLDAP_SHA1"
168 fi
169
170 if test "$SLAPD_LDBM" = "yes" ; then
171 dnl     AC_DEFINE(SLAPD_LDBM,1)
172         SLAPD_DEFS="$SLAPD_DEFS -DLDAP_LDBM"
173 fi
174 if test "$SLAPD_PASSWD" = "yes" ; then
175 dnl     AC_DEFINE(SLAPD_PASSWD,1)
176         SLAPD_DEFS="$SLAPD_DEFS -DLDAP_PASSWD"
177 fi
178 if test "$SLAPD_SHELL" = "yes" ; then
179 dnl     AC_DEFINE(SLAPD_SHELL,1)
180         SLAPD_DEFS="$SLAPD_DEFS -DLDAP_SHELL"
181 fi
182
183 dnl slurpd arguments
184 SLURPD_DEFS=
185 SLURPD_LIBS=
186
187 dnl End Args
188
189 dnl ----------------------------------------------------------------
190 dnl Checks for programs
191 AC_PROG_CC
192 AC_PROG_GCC_TRADITIONAL
193
194 AC_PROG_LN_S
195 AC_PROG_INSTALL
196 AC_PROG_RANLIB
197 AC_PROG_MAKE_SET
198
199 AC_PATH_PROG(SENDMAIL, sendmail, /usr/lib/sendmail,
200         $PATH:/usr/libexec:/usr/lib:/usr/sbin:/usr/etc:/etc)
201 AC_PATH_PROG(EDITOR, vi, /usr/ucb/vi, $PATH:/usr/ucb)
202 AC_PATH_PROG(FINGER, finger, /usr/ucb/finger, $PATH:/usr/ucb)
203
204 dnl ----------------------------------------------------------------
205 dnl Checks for libraries
206
207 ldbm_use="none"
208 LDBM_DEFS=
209 LDBM_LIBS=
210
211 if test "$SLAPD_LDBM" = "yes" ; then
212         if test $ldbm_prefer = any -o $ldbm_prefer = dbbtree \
213                         -o $ldbm_prefer = dbhash ; then
214                 AC_CHECK_FUNC(dbopen,[
215                         ldbm_use=$ldbm_prefer
216                         ldbm_prefer=found],[
217                         AC_CHECK_LIB(db,dbopen,[
218                                 ldbm_use=$ldbm_prefer
219                                 ldbm_prefer=found
220                                 LDBM_LIBS="$LDBM_LIBS -ldb"
221                         ]) 
222                 ])
223
224                 if test $ldbm_prefer = found ; then
225                         if test $ldbm_use = dbhash ; then
226 dnl                             AC_DEFINE(LDBM_USE_DBHASH,1)
227                                 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBHASH"
228                         else
229 dnl                             AC_DEFINE(LDBM_USE_DBBTREE,1)
230                                 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBBTREE"
231                         fi
232                 fi
233
234                 AC_MSG_CHECKING(for db2)
235                 AC_CACHE_VAL(cf_cv_db2,[
236                         AC_EGREP_CPP(__db_version_2,[
237 #include <db.h>
238 /* this check could be improved */
239 #ifdef DB_VERSION_MAJOR
240 #if DB_VERSION_MAJOR == 2
241         __db_version_2
242 #endif
243 #endif
244                         ], cf_cv_db2=yes, cf_cv_db2=no)])
245                 AC_MSG_RESULT($cf_cv_db2)
246
247                 if test $cf_cv_db2 = yes ; then
248                         if test $opt_db2 = yes ; then
249                                 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DB2"
250                         else
251                                 AC_CHECK_HEADERS(db185.h)
252                                 if test $cf_cv_header_db185 = no ; then
253                                         AC_MSG_ERROR([select --with-db2 or install db2 with 1.85 compatibility])
254                                 fi
255
256                                 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DB2_COMPAT185"
257                         fi
258                 else
259                         if test $opt_db2 = yes ; then
260                                 AC_MSG_ERROR(could not local DB2)
261                         fi
262                 fi
263         fi
264
265         if test $ldbm_prefer = any -o $ldbm_prefer = gdbm ; then
266                 AC_CHECK_LIB(gdbm, gdbm_open,[
267                         ldbm_use=$ldbm_prefer
268                         ldbm_prefer=found
269                         LDBM_LIBS="$LDBM_LIBS -lgdbm"
270 dnl                     AC_DEFINE(LDBM_USE_GDBM,1)
271                         LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_GDBM"
272                 ]) 
273         fi
274         if test $ldbm_prefer = any -o $ldbm_prefer = ndbm ; then
275                 AC_CHECK_LIB(dbm,dbm_open,[
276                         ldbm_use=ndbm
277                         ldbm_prefer=found
278                         LDBM_LIBS="$LDBM_LIBS -ldbm"
279 dnl                     AC_DEFINE(LDBM_USE_NDBM,1)
280                         LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_NDBM"
281                 ]) 
282         fi
283
284         if test $ldbm_prefer != found ; then
285                 AC_MSG_ERROR(could not find suitable db for $ldbm_prefer backend)
286         fi
287
288         if test $ldbm_use = ndbm ; then
289                 AC_MSG_WARN(LDBM using NDBM, functionality will be limited)
290         fi
291 fi
292
293 if test "$SLAPD_TCP_WRAPPERS" = "yes" ; then
294         AC_CHECK_LIB(wrap, hosts_access, [LIBTCPD="-lwrap"
295                 AC_DEFINE(HAVE_TCPD)
296                 SLAPD_DEFS="$SLAPD_DEFS -DTCP_WRAPPERS"
297         ])
298 fi
299
300 # ud needs termcap (should insert check here)
301 LIBTERMCAP="-ltermcap"
302 AC_SUBST(LIBTERMCAP)
303
304 # FreeBSD (and others) have crypt(3) in -lcrypt
305 if test "$SLAPD_CRYPT" = "yes" ; then
306         AC_CHECK_FUNC(crypt, have_crypt=yes, [
307                 AC_CHECK_LIB(crypt, crypt, [LUTIL_LIBS="$LUTIL_LIBS -lcrypt"
308                         have_crypt=yes], [have_crypt=no])])
309
310         if test $have_crypt = yes ; then
311                 AC_DEFINE(SLAPD_CRYPT,1)
312                 LUTIL_DEFS="$LUTIL_DEFS -DLDAP_CRYPT"
313         else
314                 AC_MSG_WARN(could not find crypt, disabling crypt support)
315         fi
316 fi
317
318 dnl ----------------------------------------------------------------
319 dnl Checks for header files.
320 AC_HEADER_DIRENT
321 AC_HEADER_STDC
322 AC_HEADER_SYS_WAIT
323 AC_CHECK_HEADERS( \
324         stddef.h        \
325         fcntl.h         \
326         limits.h        \
327         malloc.h        \
328         sgtty.h         \
329         sys/file.h      \
330         sys/ioctl.h     \
331         sys/time.h      \
332         syslog.h        \
333         termio.h        \
334         unistd.h        \
335 )
336
337 dnl ----------------------------------------------------------------
338 dnl Checks for typedefs, structures, and compiler characteristics.
339 AC_TYPE_GETGROUPS
340 AC_TYPE_MODE_T
341 AC_TYPE_OFF_T
342 AC_TYPE_PID_T
343 AC_TYPE_SIGNAL
344 AC_TYPE_SIZE_T
345 AC_TYPE_UID_T
346 AC_STRUCT_ST_BLKSIZE
347 AC_HEADER_TIME
348 AC_STRUCT_TM
349
350 dnl AC_C_BIGENDIAN
351 AC_C_CONST
352
353 dnl ----------------------------------------------------------------
354 dnl Checks for library functions.
355 AC_FUNC_MEMCMP
356 AC_TYPE_SIGNAL
357 AC_FUNC_STRFTIME
358 AC_FUNC_VPRINTF
359 AC_FUNC_WAIT3
360
361 AC_CHECK_FUNCS(         \
362         gethostname             \
363         gettimeofday    \
364         mktime                  \
365         select                  \
366         socket                  \
367         strdup                  \
368         strerror                \
369         strstr                  \
370         strrchr                 \
371         strtod                  \
372         strtol                  \
373         strtoul                 \
374         memcpy                  \
375 )
376
377 AC_REPLACE_FUNCS(strdup)
378
379 dnl ----------------------------------------------------------------
380 # Check Configuration
381 CF_SYS_ERRLIST
382
383 AC_SUBST(BUILD_LDAPD)
384
385 AC_SUBST(BUILD_SLAPD)
386   AC_SUBST(SLAPD_LDBM)
387   AC_SUBST(SLAPD_PASSWD)
388   AC_SUBST(SLAPD_SHELL)
389
390 AC_SUBST(BUILD_SLURPD)
391
392 AC_SUBST(LDAP_DEFS)
393 AC_SUBST(LDAP_LIBS)
394 AC_SUBST(LDAPD_DEFS)
395 AC_SUBST(LDAPD_LIBS)
396 AC_SUBST(SLAPD_DEFS)
397 AC_SUBST(SLAPD_LIBS)
398 AC_SUBST(SLURPD_DEFS)
399 AC_SUBST(SLURPD_LIBS)
400 AC_SUBST(LDBM_DEFS)
401 AC_SUBST(LDBM_LIBS)
402 AC_SUBST(LTHREAD_DEFS)
403 AC_SUBST(LTHREAD_LIBS)
404 AC_SUBST(LUTIL_DEFS)
405 AC_SUBST(LUTIL_LIBS)
406
407 dnl AC_OUTPUT( \
408 dnl contrib/Makefile:build/top.mk:contrib/Makefile.in:build/dir.mk \
409 dnl contrib/saucer/Makefile:build/top.mk:contrib/saucer/Makefile.in:build/rules.mk \
410 dnl contrib/whois++/Makefile:build/top.mk:contrib/whois++/Makefile.in:build/rules.mk \
411 dnl [date > stamp-h])
412
413 AC_OUTPUT( \
414 Makefile:build/top.mk:Makefile.in:build/dir.mk \
415 doc/Makefile:build/top.mk:doc/Makefile.in:build/dir.mk \
416 doc/man/Makefile:build/top.mk:doc/man/Makefile.in:build/dir.mk \
417 doc/man/man1/Makefile:build/top.mk:doc/man/man1/Makefile.in:build/man.mk \
418 doc/man/man3/Makefile:build/top.mk:doc/man/man3/Makefile.in:build/man.mk \
419 doc/man/man5/Makefile:build/top.mk:doc/man/man5/Makefile.in:build/man.mk \
420 doc/man/man8/Makefile:build/top.mk:doc/man/man8/Makefile.in:build/man.mk \
421 clients/Makefile:build/top.mk:clients/Makefile.in:build/dir.mk \
422 clients/finger/Makefile:build/top.mk:clients/finger/Makefile.in:build/rules.mk \
423 clients/fax500/Makefile:build/top.mk:clients/fax500/Makefile.in:build/rules.mk \
424 clients/gopher/Makefile:build/top.mk:clients/gopher/Makefile.in:build/rules.mk \
425 clients/mail500/Makefile:build/top.mk:clients/mail500/Makefile.in:build/rules.mk \
426 clients/rcpt500/Makefile:build/top.mk:clients/rcpt500/Makefile.in:build/rules.mk \
427 clients/ud/Makefile:build/top.mk:clients/ud/Makefile.in:build/rules.mk \
428 clients/tools/Makefile:build/top.mk:clients/tools/Makefile.in:build/rules.mk \
429 include/Makefile:build/top.mk:include/Makefile.in \
430 libraries/Makefile:build/top.mk:libraries/Makefile.in:build/dir.mk      \
431 libraries/libavl/Makefile:build/top.mk:libraries/libavl/Makefile.in:build/lib.mk \
432 libraries/liblber/Makefile:build/top.mk:libraries/liblber/Makefile.in:build/lib.mk \
433 libraries/libldap/Makefile:build/top.mk:libraries/libldap/Makefile.in:build/lib.mk \
434 libraries/libldbm/Makefile:build/top.mk:libraries/libldbm/Makefile.in:build/lib.mk \
435 libraries/libldif/Makefile:build/top.mk:libraries/libldif/Makefile.in:build/lib.mk \
436 libraries/liblthread/Makefile:build/top.mk:libraries/liblthread/Makefile.in:build/lib.mk \
437 libraries/liblutil/Makefile:build/top.mk:libraries/liblutil/Makefile.in:build/lib.mk \
438 servers/Makefile:build/top.mk:servers/Makefile.in:build/dir.mk \
439 servers/ldapd/Makefile:build/top.mk:servers/ldapd/Makefile.in:build/srv.mk \
440 servers/slapd/Makefile:build/top.mk:servers/slapd/Makefile.in:build/srv.mk \
441 servers/slapd/back-ldbm/Makefile:build/top.mk:servers/slapd/back-ldbm/Makefile.in:build/srv.mk \
442 servers/slapd/back-passwd/Makefile:build/top.mk:servers/slapd/back-passwd/Makefile.in:build/srv.mk \
443 servers/slapd/back-shell/Makefile:build/top.mk:servers/slapd/back-shell/Makefile.in:build/srv.mk \
444 servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk \
445 servers/slapd/tools/Makefile:build/top.mk:servers/slapd/tools/Makefile.in \
446 servers/slurpd/Makefile:build/top.mk:servers/slurpd/Makefile.in:build/srv.mk \
447 tests/Makefile:build/top.mk:tests/Makefile.in \
448 ,[date > stamp-h])