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 if test $ol_cv_lib_db2 != yes ; then
332 LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db2"
337 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = db ; then
340 if test $ol_cv_berkeley_db = yes ; then
344 if test $ac_cv_header_db_185_h = yes ; then
345 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DB2_COMPAT185"
348 if test $ol_with_ldbm_type = hash ; then
349 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBHASH"
351 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBBTREE"
354 if test $ol_cv_lib_db != yes ; then
355 LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db"
360 if test $ol_link_ldbm = no -a $ol_with_ldbm_type = btree ; then
361 AC_MSG_WARN(Could not find LDBM with BTREE support);
362 $ol_with_ldbm_api=none
365 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = gdbm ; then
368 if test $ol_cv_gdbm = yes ; then
370 ol_with_ldbm_api=gdbm
372 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_GDBM"
374 if test $ol_cv_lib_gdbm != yes ; then
375 LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_gdbm"
380 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = ndbm ; then
383 if test $ol_cv_ndbm = yes ; then
385 ol_with_ldbm_api=ndbm
387 if test $ol_with_ldbm_api = ndbm ; then
388 AC_WARN([Attempting to use NDBM. Functionality will be limited.])
391 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_NDBM"
393 if test $ol_cv_lib_ndbm != yes ; then
394 LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_ndbm"
399 if test $ol_link_ldbm = no -a $ol_enable_ldbm != no ; then
400 AC_MSG_WARN(could not find suitable LDBM backend)
401 if test $ol_enable_ldbm = yes ; then
402 AC_MSG_ERROR(select appropriate LDBM options or disable)
405 AC_MSG_WARN(disabling LDBM)
409 if test $ol_enable_wrappers = yes ; then
410 AC_CHECK_LIB(wrap, hosts_access,
411 [have_wrappers=yes], [have_wrappers=no])
413 if test $have_wrappers = yes ; then
415 dnl AC_DEFINE(HAVE_TCPD)
416 SLAPD_DEFS="$SLAPD_DEFS -DTCP_WRAPPERS"
417 SLAPD_LIBS="$SLAPD_LIBS -lwrap"
419 AC_MSG_WARN(could not find -lwrap)
420 if test $ol_enable_wrappers = yes ; then
421 AC_MSG_ERROR(could not find wrappers, select appropriate options or disable)
424 AC_MSG_WARN(disabling wrappers support)
425 ol_enable_wrappers=no
430 # ud needs termcap (should insert check here)
431 LIBTERMCAP="-ltermcap"
434 # FreeBSD (and others) have crypt(3) in -lcrypt
435 if test $ol_enable_crypt != no ; then
436 AC_CHECK_FUNC(crypt, [have_crypt=yes], [
437 AC_CHECK_LIB(crypt, crypt, [LUTIL_LIBS="$LUTIL_LIBS -lcrypt"
438 have_crypt=yes], [have_crypt=no])])
440 if test $have_crypt = yes ; then
441 dnl AC_DEFINE(SLAPD_CRYPT,1)
442 LUTIL_DEFS="$LUTIL_DEFS -DLDAP_CRYPT"
444 AC_MSG_WARN(could not find crypt)
445 if test $ol_enable_crypt = yes ; then
446 AC_MSG_ERROR(could not find crypt, select appropriate options or disable)
449 AC_MSG_WARN(disabling crypt support)
454 dnl ----------------------------------------------------------------
455 dnl Checks for header files.
473 dnl ----------------------------------------------------------------
474 dnl Checks for typedefs, structures, and compiler characteristics.
489 dnl ----------------------------------------------------------------
490 dnl Checks for library functions.
514 AC_REPLACE_FUNCS(strdup)
516 dnl ----------------------------------------------------------------
517 # Check Configuration
520 dnl ----------------------------------------------------------------
523 if test $ol_enable_debug != no ; then
524 LDAP_DEFS="$LDAP_DEFS -DLDAP_DEBUG"
526 #if test $ol_enable_syslog != no ; then
527 # LDAP_DEFS="$LDAP_DEFS -DLDAP_SYSLOG"
529 if test $ol_enable_libui = no ; then
530 LDAP_DEFS="$LDAP_DEFS -DNO_USERINTERFACE"
532 if test $ol_enable_cache = no ; then
533 LDAP_DEFS="$LDAP_DEFS -DNO_CACHE"
535 if test $ol_enable_dns != no ; then
536 LDAP_DEFS="$LDAP_DEFS -DLDAP_DNS"
538 if test $ol_enable_referrals != no ; then
539 LDAP_DEFS="$LDAP_DEFS -DLDAP_REFERRALS"
541 if test $ol_enable_cldap != no ; then
542 LDAP_DEFS="$LDAP_DEFS -DCLDAP"
545 if test $ol_enable_aclgroup != no ; then
546 AC_DEFINE(SLAPD_ACLGROUP,1)
547 SLAPD_DEFS="$SLAPD_DEFS -DACLGROUP"
550 if test $ol_enable_md5 != no ; then
551 dnl AC_DEFINE(SLAPD_MD5,1)
552 LUTIL_DEFS="$LUTIL_DEFS -DLDAP_MD5"
555 if test $ol_enable_sha1 != no ; then
556 dnl AC_DEFINE(SLAPD_SHA1,1)
557 LUTIL_DEFS="$LUTIL_DEFS -DLDAP_SHA1"
560 if test $ol_enable_phonetic != no ; then
561 AC_DEFINE(SLAPD_PHONETIC,1)
562 SLAPD_DEFS="$SLAPD_DEFS -DSOUNDEX"
565 if test $ol_enable_rlookups != no ; then
566 AC_DEFINE(SLAPD_RLOOKUPS,1)
567 SLAPD_DEFS="$SLAPD_DEFS -DREVERSE_LOOKUPS"
570 if test $ol_link_ldbm != no ; then
571 dnl AC_DEFINE(SLAPD_LDBM,1)
574 LDBM_DEFS="-DLDAP_LDBM $LDBM_DEFS"
577 if test $ol_enable_passwd != no ; then
578 dnl AC_DEFINE(SLAPD_PASSWD,1)
581 SLAPD_DEFS="-DLDAP_PASSWD $SLAPD_DEFS"
584 if test $ol_enable_shell != no ; then
585 dnl AC_DEFINE(SLAPD_SHELL,1)
588 SLAPD_DEFS="-DLDAP_SHELL $SLAPD_DEFS"
591 if test $ol_enable_slurpd != no -a $ol_link_threads != no -a \
592 $BUILD_SLAPD = yes ; then
596 dnl ----------------------------------------------------------------
598 AC_SUBST(BUILD_LDAPD)
599 AC_SUBST(BUILD_SLAPD)
601 AC_SUBST(BUILD_PASSWD)
602 AC_SUBST(BUILD_SHELL)
603 AC_SUBST(BUILD_SLURPD)
612 AC_SUBST(SLURPD_DEFS)
613 AC_SUBST(SLURPD_LIBS)
616 AC_SUBST(LTHREAD_DEFS)
617 AC_SUBST(LTHREAD_LIBS)
621 dnl ----------------------------------------------------------------
626 dnl contrib/Makefile:build/top.mk:contrib/Makefile.in:build/dir.mk \
627 dnl contrib/saucer/Makefile:build/top.mk:contrib/saucer/Makefile.in:build/rules.mk \
628 dnl contrib/whois++/Makefile:build/top.mk:contrib/whois++/Makefile.in:build/rules.mk \
629 dnl [date > stamp-h])
632 Makefile:build/top.mk:Makefile.in:build/dir.mk \
633 doc/Makefile:build/top.mk:doc/Makefile.in:build/dir.mk \
634 doc/man/Makefile:build/top.mk:doc/man/Makefile.in:build/dir.mk \
635 doc/man/man1/Makefile:build/top.mk:doc/man/man1/Makefile.in:build/man.mk \
636 doc/man/man3/Makefile:build/top.mk:doc/man/man3/Makefile.in:build/man.mk \
637 doc/man/man5/Makefile:build/top.mk:doc/man/man5/Makefile.in:build/man.mk \
638 doc/man/man8/Makefile:build/top.mk:doc/man/man8/Makefile.in:build/man.mk \
639 clients/Makefile:build/top.mk:clients/Makefile.in:build/dir.mk \
640 clients/finger/Makefile:build/top.mk:clients/finger/Makefile.in:build/rules.mk \
641 clients/fax500/Makefile:build/top.mk:clients/fax500/Makefile.in:build/rules.mk \
642 clients/gopher/Makefile:build/top.mk:clients/gopher/Makefile.in:build/rules.mk \
643 clients/mail500/Makefile:build/top.mk:clients/mail500/Makefile.in:build/rules.mk \
644 clients/rcpt500/Makefile:build/top.mk:clients/rcpt500/Makefile.in:build/rules.mk \
645 clients/ud/Makefile:build/top.mk:clients/ud/Makefile.in:build/rules.mk \
646 clients/tools/Makefile:build/top.mk:clients/tools/Makefile.in:build/rules.mk \
647 include/Makefile:build/top.mk:include/Makefile.in \
648 libraries/Makefile:build/top.mk:libraries/Makefile.in:build/dir.mk \
649 libraries/libavl/Makefile:build/top.mk:libraries/libavl/Makefile.in:build/lib.mk \
650 libraries/liblber/Makefile:build/top.mk:libraries/liblber/Makefile.in:build/lib.mk \
651 libraries/libldap/Makefile:build/top.mk:libraries/libldap/Makefile.in:build/lib.mk \
652 libraries/libldbm/Makefile:build/top.mk:libraries/libldbm/Makefile.in:build/lib.mk \
653 libraries/libldif/Makefile:build/top.mk:libraries/libldif/Makefile.in:build/lib.mk \
654 libraries/liblthread/Makefile:build/top.mk:libraries/liblthread/Makefile.in:build/lib.mk \
655 libraries/liblutil/Makefile:build/top.mk:libraries/liblutil/Makefile.in:build/lib.mk \
656 servers/Makefile:build/top.mk:servers/Makefile.in:build/dir.mk \
657 servers/ldapd/Makefile:build/top.mk:servers/ldapd/Makefile.in:build/srv.mk \
658 servers/slapd/Makefile:build/top.mk:servers/slapd/Makefile.in:build/srv.mk \
659 servers/slapd/back-ldbm/Makefile:build/top.mk:servers/slapd/back-ldbm/Makefile.in:build/srv.mk \
660 servers/slapd/back-passwd/Makefile:build/top.mk:servers/slapd/back-passwd/Makefile.in:build/srv.mk \
661 servers/slapd/back-shell/Makefile:build/top.mk:servers/slapd/back-shell/Makefile.in:build/srv.mk \
662 servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk \
663 servers/slapd/tools/Makefile:build/top.mk:servers/slapd/tools/Makefile.in \
664 servers/slurpd/Makefile:build/top.mk:servers/slurpd/Makefile.in:build/srv.mk \
665 tests/Makefile:build/top.mk:tests/Makefile.in \