1 dnl Copyright 1998 The OpenLDAP Foundation. All Rights Reserved.
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.
8 dnl Configure.in for OpenLDAP
10 AC_INIT(include/ldap.h)
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
21 AC_MSG_CHECKING(configure arguments)
22 AC_PREFIX_DEFAULT(/usr/local)
24 dnl General "enable" options
25 OL_ARG_ENABLE(debug,[ --enable-debug enable debugging], yes)dnl
26 #OL_ARG_ENABLE(syslog,[ --enable-syslog enable syslog support], auto)dnl
27 OL_ARG_ENABLE(libui,[ --enable-libui enable library user interface], yes)dnl
28 OL_ARG_ENABLE(cache,[ --enable-cache enable caching], yes)dnl
29 OL_ARG_ENABLE(dns,[ --enable-dns enable dns support], auto)dnl
30 OL_ARG_ENABLE(referrals,[ --enable-referrals enable referrals], yes)dnl
31 OL_ARG_ENABLE(cldap,[ --enable-clapd enable connectionless ldap], no)dnl
33 dnl General "with" options
34 OL_ARG_WITH(kerberos,[ --with-kerberos use Kerberos],
35 auto, [auto k5 k4 afs yes no])
36 OL_ARG_WITH(threads,[ --with-threads use threads],
37 auto, [auto posix dce mach yes no] )
42 OL_ARG_ENABLE(ldapd,[ --enable-ldapd enable building ldapd], no)dnl
45 OL_ARG_ENABLE(slapd,[ --enable-slapd enable building slapd], yes)dnl
46 OL_ARG_ENABLE(aclgroup,[ --enable-aclgroup enable ACL group support], auto)dnl
47 OL_ARG_ENABLE(crypt,[ --enable-crypt enable crypt(3) passwords], auto)dnl
48 OL_ARG_ENABLE(md5,[ --enable-md5 enable MD5 passwords], auto)dnl
49 OL_ARG_ENABLE(sha1,[ --enable-sha1 enable SHA1 passwords], auto)dnl
50 OL_ARG_ENABLE(wrappers,[ --enable-wrappers enable tcp wrapper support], no)dnl
51 OL_ARG_ENABLE(phonetic,[ --enable-phonetic enable phonetic/soundex], no)dnl
52 OL_ARG_ENABLE(rlookups,[ --enable-rlookups enable reverse lookups], auto)dnl
54 dnl SLAPD Backend options
55 OL_ARG_ENABLE(ldbm,[ --enable-ldbm enable ldbm backend], yes)dnl
56 OL_ARG_WITH(ldbm_api,[ --with-ldbm-api use LDBM API], auto,
57 [auto db2 db gdbm ndbm])
58 OL_ARG_WITH(ldbm_type,[ --with-ldbm-type use LDBM type], auto,
61 OL_ARG_ENABLE(passwd,[ --enable-passwd enable passwd backend], no)dnl
62 OL_ARG_ENABLE(shell,[ --enable-shell enable shell backend], no)dnl
65 OL_ARG_ENABLE(slurpd,[ --enable-slurpd enable building slurpd], auto)dnl
67 if test $ol_enable_slapd = no ; then
68 dnl SLAPD was specificallly disabled
69 if test $ol_enable_ldbm = yes ; then
70 AC_MSG_WARN([slapd disabled, ignoring --enable_ldbm argument]);
72 if test $ol_enable_passwd = yes ; then
73 AC_MSG_WARN([slapd disabled, ignoring --enable_passwd argument]);
75 if test $ol_enable_shell = yes ; then
76 AC_MSG_WARN([slapd disabled, ignoring --enable_shell argument]);
78 if test $ol_enable_aclgroup = yes ; then
79 AC_MSG_WARN([slapd disabled, ignoring --enable_aclgroup argument]);
81 if test $ol_enable_crypt = yes ; then
82 AC_MSG_WARN([slapd disabled, ignoring --enable_crypt argument]);
84 if test $ol_enable_md5 = yes ; then
85 AC_MSG_WARN([slapd disabled, ignoring --enable_md5 argument]);
87 if test $ol_enable_sha1 = yes ; then
88 AC_MSG_WARN([slapd disabled, ignoring --enable_sha1 argument]);
90 if test $ol_enable_wrappers = yes ; then
91 AC_MSG_WARN([slapd disabled, ignoring --enable_wrappers argument]);
93 if test $ol_enable_phonetic = yes ; then
94 AC_MSG_WARN([slapd disabled, ignoring --enable_phonetic argument]);
96 if test $ol_enable_rlookups = yes ; then
97 AC_MSG_WARN([slapd disabled, ignoring --enable_rlookups argument]);
99 if test $ol_with_ldbm_api != auto ; then
100 AC_MSG_WARN([slapd disabled, ignoring --with_ldbm_api argument]);
102 if test $ol_with_ldbm_type != auto ; then
103 AC_MSG_WARN([slapd disabled, ignoring --with_ldbm_type argument]);
105 if test $ol_enable_slurpd = yes ; then
106 AC_MSG_ERROR([slurpd requires slapd]);
109 # force settings to no
113 ol_enable_aclgroup=no
117 ol_enable_wrappers=no
118 ol_enable_phonetic=no
119 ol_enable_rlookups=no
124 elif test $ol_enable_ldbm = no ; then
125 dnl SLAPD without LDBM
127 if test $ol_with_ldbm_api != auto ; then
128 AC_MSG_WARN([LDBM disabled, ignoring --with_ldbm_api argument]);
131 if test $ol_with_ldbm_type != auto ; then
132 AC_MSG_WARN([LDBM disabled, ignoring --with_ldbm_type argument]);
135 if test $ol_enable_passwd = no -a $ol_enable_shell = no ; then
136 AC_MSG_ERROR([slapd requires a backend]);
145 if test $ol_with_ldbm_api = gdbm -a \
146 $ol_with_ldbm_type = btree ; then
147 AC_MSG_ERROR([GDBM only supports LDBM type hash]);
149 if test $ol_with_ldbm_api = ndbm -a \
150 $ol_with_ldbm_type = btree ; then
151 AC_MSG_ERROR([NDBM only supports LDBM type hash]);
155 if test $ol_enable_slurpd = yes ; then
156 dnl SLURPD was specifically enabled
157 if test $ol_with_threads = no ; then
158 AC_MSG_ERROR([slurpd requires threads]);
189 dnl ----------------------------------------------------------------
190 dnl Checks for programs
193 AC_PROG_GCC_TRADITIONAL
200 AC_PATH_PROG(SENDMAIL, sendmail, /usr/lib/sendmail,
201 $PATH:/usr/libexec:/usr/lib:/usr/sbin:/usr/etc:/etc)
202 AC_PATH_PROG(EDITOR, vi, /usr/ucb/vi, $PATH:/usr/ucb)
203 AC_PATH_PROG(FINGER, finger, /usr/ucb/finger, $PATH:/usr/ucb)
205 dnl ----------------------------------------------------------------
206 dnl Checks for libraries
209 if test $ol_with_threads = auto -o $ol_with_threads = posix ; then
210 AC_CHECK_HEADERS(pthread.h sched.h)
212 if test "$ac_cv_header_pthread_h" = yes ; then
213 OL_POSIX_THREAD_VERSION
215 if test $ol_cv_pthread_version = final ; then
216 LTHREAD_DEFS="$LTHREAD_DEFS -DPOSIX_THREADS"
217 elif test $ol_cv_pthread_version = draft4 ; then
218 LTHREAD_DEFS="$LTHREAD_DEFS -DTHREAD_MIT_PTHREADS"
220 AC_MSG_ERROR([unknown pthread version])
223 # consider threads found
224 ol_with_threads=found
228 if test $ol_cv_linux_threads = yes ; then
229 dnl AC_DEFINE(HAVE_LINUX_THREADS,1)
230 LTHREAD_DEFS="$LTHREAD_DEFS -DHAVE_LINUX_THREADS"
233 dnl Now the hard part, how to link
235 dnl A few platforms have pthread support in standard libraries
236 AC_CHECK_FUNC(pthread_create,[ol_link_threads=yes])
238 if test $ol_link_threads = no ; then
240 AC_CACHE_CHECK([for pthread_create with -pthread],
241 [ol_cv_pthread_flag], [
242 dnl save the CPPFLAGS
244 LIBS="-pthread $LIBS"
245 AC_TRY_LINK([#include <pthread.h>],[
246 pthread_create((pthread_t*) 0,
247 (pthread_attr_t*) 0, 0, 0);
248 ], ol_cv_pthread_flag=yes, ol_cv_pthread_flag=no)
253 if test $ol_cv_pthread_flag = yes ; then
254 LTHREAD_LIBS="$LTHREAD_LIBS -pthread"
255 ol_link_threads=posix
259 if test $ol_link_threads = no ; then
262 AC_CHECK_LIB(pthread, pthread_create, [
263 ol_link_threads=posix
264 LTHREAD_LIBS="$LTHREAD_LIBS -lpthread"])
268 if test $ol_link_threads = no ; then
271 AC_CHECK_LIB(c_r, pthread_create, [
272 ol_link_threads=posix
273 LTHREAD_LIBS="$LTHREAD_LIBS -lc_r"])
277 if test $ol_link_threads = no ; then
280 AC_CHECK_LIB(pthread, pthread_create, [
281 ol_link_threads=posix
282 LTHREAD_DEFS="$LTHREAD_DEFS -DDEC_THREADS"
283 LTHREAD_LIBS="$LTHREAD_LIBS -lpthread -lmach -lexc -lc"],,
288 if test $ol_link_threads != no ; then
289 dnl All POSIX Thread (final) implementations should have sched_yield
290 AC_CHECK_FUNC(sched_yield)
292 AC_MSG_ERROR([could not link with POSIX Threads])
296 if test $ol_with_threads = posix ; then
297 AC_MSG_ERROR([could not locate POSIX Threads])
301 if test $ol_link_threads = no ; then
302 if test $ol_with_threads = yes ; then
303 AC_MSG_ERROR([no suitable thread support])
306 if test $ol_with_threads = auto ; then
307 AC_MSG_WARN([no suitable thread support, disabling threads])
308 $ol_with_threads = no
311 LTHREAD_DEFS="-DNO_THREADS"
316 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = db2 ; then
319 if test $ol_cv_berkeley_db2 = yes ; then
323 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DB2"
325 if test $ol_with_ldbm_type = hash ; then
326 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBHASH"
328 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBBTREE"
331 dnl $ol_cv_lib_db2 should be yes or -ldb
332 dnl (it could be no, but that would be an error
333 if test $ol_cv_lib_db2 != yes ; then
334 LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db2"
339 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = db ; then
342 if test $ol_cv_berkeley_db = yes ; then
346 if test $ac_cv_header_db_185_h = yes ; then
347 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DB2_COMPAT185"
350 if test $ol_with_ldbm_type = hash ; then
351 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBHASH"
353 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBBTREE"
356 dnl $ol_cv_lib_db should be yes or -ldb
357 dnl (it could be no, but that would be an error
358 if test $ol_cv_lib_db != yes ; then
359 LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db"
364 if test $ol_link_ldbm = no -a $ol_with_ldbm_type = btree ; then
365 AC_MSG_WARN(Could not find LDBM with BTREE support);
366 $ol_with_ldbm_api=none
369 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = gdbm ; then
372 if test $ol_cv_gdbm = yes ; then
374 ol_with_ldbm_api=gdbm
376 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_GDBM"
378 if test $ol_cv_lib_gdbm != yes ; then
379 LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_gdbm"
384 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = ndbm ; then
387 if test $ol_cv_ndbm = yes ; then
389 ol_with_ldbm_api=ndbm
391 if test $ol_with_ldbm_api = ndbm ; then
392 AC_WARN([Attempting to use NDBM. Functionality will be limited.])
395 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_NDBM"
397 if test $ol_cv_lib_ndbm != yes ; then
398 LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_ndbm"
403 if test $ol_link_ldbm = no -a $ol_enable_ldbm != no ; then
404 AC_MSG_WARN(could not find suitable LDBM backend)
405 if test $ol_enable_ldbm = yes ; then
406 AC_MSG_ERROR(select appropriate LDBM options or disable)
409 AC_MSG_WARN(disabling LDBM)
413 if test $ol_enable_wrappers = yes ; then
414 AC_CHECK_LIB(wrap, hosts_access,
415 [have_wrappers=yes], [have_wrappers=no])
417 if test $have_wrappers = yes ; then
419 dnl AC_DEFINE(HAVE_TCPD)
420 SLAPD_DEFS="$SLAPD_DEFS -DTCP_WRAPPERS"
421 SLAPD_LIBS="$SLAPD_LIBS -lwrap"
423 AC_MSG_WARN(could not find -lwrap)
424 if test $ol_enable_wrappers = yes ; then
425 AC_MSG_ERROR(could not find wrappers, select appropriate options or disable)
428 AC_MSG_WARN(disabling wrappers support)
429 ol_enable_wrappers=no
434 # ud needs termcap (should insert check here)
435 LIBTERMCAP="-ltermcap"
438 # FreeBSD (and others) have crypt(3) in -lcrypt
439 if test $ol_enable_crypt != no ; then
440 AC_CHECK_FUNC(crypt, [have_crypt=yes], [
441 AC_CHECK_LIB(crypt, crypt, [LUTIL_LIBS="$LUTIL_LIBS -lcrypt"
442 have_crypt=yes], [have_crypt=no])])
444 if test $have_crypt = yes ; then
445 dnl AC_DEFINE(SLAPD_CRYPT,1)
446 LUTIL_DEFS="$LUTIL_DEFS -DLDAP_CRYPT"
448 AC_MSG_WARN(could not find crypt)
449 if test $ol_enable_crypt = yes ; then
450 AC_MSG_ERROR(could not find crypt, select appropriate options or disable)
453 AC_MSG_WARN(disabling crypt support)
458 dnl ----------------------------------------------------------------
459 dnl Checks for header files.
477 dnl ----------------------------------------------------------------
478 dnl Checks for typedefs, structures, and compiler characteristics.
493 dnl ----------------------------------------------------------------
494 dnl Checks for library functions.
518 AC_REPLACE_FUNCS(strdup)
520 dnl ----------------------------------------------------------------
521 # Check Configuration
524 dnl ----------------------------------------------------------------
527 if test $ol_enable_debug != no ; then
528 LDAP_DEFS="$LDAP_DEFS -DLDAP_DEBUG"
530 #if test $ol_enable_syslog != no ; then
531 # LDAP_DEFS="$LDAP_DEFS -DLDAP_SYSLOG"
533 if test $ol_enable_libui = no ; then
534 LDAP_DEFS="$LDAP_DEFS -DNO_USERINTERFACE"
536 if test $ol_enable_cache = no ; then
537 LDAP_DEFS="$LDAP_DEFS -DNO_CACHE"
539 if test $ol_enable_dns != no ; then
540 LDAP_DEFS="$LDAP_DEFS -DLDAP_DNS"
542 if test $ol_enable_referrals != no ; then
543 LDAP_DEFS="$LDAP_DEFS -DLDAP_REFERRALS"
545 if test $ol_enable_cldap != no ; then
546 LDAP_DEFS="$LDAP_DEFS -DCLDAP"
549 if test $ol_enable_aclgroup != no ; then
550 AC_DEFINE(SLAPD_ACLGROUP,1)
551 SLAPD_DEFS="$SLAPD_DEFS -DACLGROUP"
554 if test $ol_enable_md5 != no ; then
555 dnl AC_DEFINE(SLAPD_MD5,1)
556 LUTIL_DEFS="$LUTIL_DEFS -DLDAP_MD5"
559 if test $ol_enable_sha1 != no ; then
560 dnl AC_DEFINE(SLAPD_SHA1,1)
561 LUTIL_DEFS="$LUTIL_DEFS -DLDAP_SHA1"
564 if test $ol_enable_phonetic != no ; then
565 AC_DEFINE(SLAPD_PHONETIC,1)
566 SLAPD_DEFS="$SLAPD_DEFS -DSOUNDEX"
569 if test $ol_enable_rlookups != no ; then
570 AC_DEFINE(SLAPD_RLOOKUPS,1)
571 SLAPD_DEFS="$SLAPD_DEFS -DREVERSE_LOOKUPS"
574 if test $ol_link_ldbm != no ; then
575 dnl AC_DEFINE(SLAPD_LDBM,1)
578 LDBM_DEFS="-DLDAP_LDBM $LDBM_DEFS"
581 if test $ol_enable_passwd != no ; then
582 dnl AC_DEFINE(SLAPD_PASSWD,1)
585 SLAPD_DEFS="-DLDAP_PASSWD $SLAPD_DEFS"
588 if test $ol_enable_shell != no ; then
589 dnl AC_DEFINE(SLAPD_SHELL,1)
592 SLAPD_DEFS="-DLDAP_SHELL $SLAPD_DEFS"
595 if test $ol_enable_slurpd != no -a $ol_link_threads != no -a \
596 $BUILD_SLAPD = yes ; then
600 dnl ----------------------------------------------------------------
602 AC_SUBST(BUILD_LDAPD)
603 AC_SUBST(BUILD_SLAPD)
605 AC_SUBST(BUILD_PASSWD)
606 AC_SUBST(BUILD_SHELL)
607 AC_SUBST(BUILD_SLURPD)
616 AC_SUBST(SLURPD_DEFS)
617 AC_SUBST(SLURPD_LIBS)
620 AC_SUBST(LTHREAD_DEFS)
621 AC_SUBST(LTHREAD_LIBS)
625 dnl ----------------------------------------------------------------
630 dnl contrib/Makefile:build/top.mk:contrib/Makefile.in:build/dir.mk \
631 dnl contrib/saucer/Makefile:build/top.mk:contrib/saucer/Makefile.in:build/rules.mk \
632 dnl contrib/whois++/Makefile:build/top.mk:contrib/whois++/Makefile.in:build/rules.mk \
633 dnl [date > stamp-h])
636 Makefile:build/top.mk:Makefile.in:build/dir.mk \
637 doc/Makefile:build/top.mk:doc/Makefile.in:build/dir.mk \
638 doc/man/Makefile:build/top.mk:doc/man/Makefile.in:build/dir.mk \
639 doc/man/man1/Makefile:build/top.mk:doc/man/man1/Makefile.in:build/man.mk \
640 doc/man/man3/Makefile:build/top.mk:doc/man/man3/Makefile.in:build/man.mk \
641 doc/man/man5/Makefile:build/top.mk:doc/man/man5/Makefile.in:build/man.mk \
642 doc/man/man8/Makefile:build/top.mk:doc/man/man8/Makefile.in:build/man.mk \
643 clients/Makefile:build/top.mk:clients/Makefile.in:build/dir.mk \
644 clients/finger/Makefile:build/top.mk:clients/finger/Makefile.in:build/rules.mk \
645 clients/fax500/Makefile:build/top.mk:clients/fax500/Makefile.in:build/rules.mk \
646 clients/gopher/Makefile:build/top.mk:clients/gopher/Makefile.in:build/rules.mk \
647 clients/mail500/Makefile:build/top.mk:clients/mail500/Makefile.in:build/rules.mk \
648 clients/rcpt500/Makefile:build/top.mk:clients/rcpt500/Makefile.in:build/rules.mk \
649 clients/ud/Makefile:build/top.mk:clients/ud/Makefile.in:build/rules.mk \
650 clients/tools/Makefile:build/top.mk:clients/tools/Makefile.in:build/rules.mk \
651 include/Makefile:build/top.mk:include/Makefile.in \
652 libraries/Makefile:build/top.mk:libraries/Makefile.in:build/dir.mk \
653 libraries/libavl/Makefile:build/top.mk:libraries/libavl/Makefile.in:build/lib.mk \
654 libraries/liblber/Makefile:build/top.mk:libraries/liblber/Makefile.in:build/lib.mk \
655 libraries/libldap/Makefile:build/top.mk:libraries/libldap/Makefile.in:build/lib.mk \
656 libraries/libldbm/Makefile:build/top.mk:libraries/libldbm/Makefile.in:build/lib.mk \
657 libraries/libldif/Makefile:build/top.mk:libraries/libldif/Makefile.in:build/lib.mk \
658 libraries/liblthread/Makefile:build/top.mk:libraries/liblthread/Makefile.in:build/lib.mk \
659 libraries/liblutil/Makefile:build/top.mk:libraries/liblutil/Makefile.in:build/lib.mk \
660 servers/Makefile:build/top.mk:servers/Makefile.in:build/dir.mk \
661 servers/ldapd/Makefile:build/top.mk:servers/ldapd/Makefile.in:build/srv.mk \
662 servers/slapd/Makefile:build/top.mk:servers/slapd/Makefile.in:build/srv.mk \
663 servers/slapd/back-ldbm/Makefile:build/top.mk:servers/slapd/back-ldbm/Makefile.in:build/srv.mk \
664 servers/slapd/back-passwd/Makefile:build/top.mk:servers/slapd/back-passwd/Makefile.in:build/srv.mk \
665 servers/slapd/back-shell/Makefile:build/top.mk:servers/slapd/back-shell/Makefile.in:build/srv.mk \
666 servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk \
667 servers/slapd/tools/Makefile:build/top.mk:servers/slapd/tools/Makefile.in \
668 servers/slurpd/Makefile:build/top.mk:servers/slurpd/Makefile.in:build/srv.mk \
669 tests/Makefile:build/top.mk:tests/Makefile.in \