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 dnl 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], no)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 manual] )
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 manual])
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
208 AC_CHECK_FUNC(socket, :,
209 [ AC_CHECK_LIB(nsl, gethostname)
210 AC_CHECK_LIB(socket, socket)
211 AC_CHECK_LIB(inet, socket)
215 if test $ol_with_threads = auto -o $ol_with_threads = posix ; then
216 AC_CHECK_HEADERS(pthread.h sched.h)
218 if test "$ac_cv_header_pthread_h" = yes ; then
219 OL_POSIX_THREAD_VERSION
221 if test $ol_cv_pthread_version = final ; then
222 LTHREAD_DEFS="$LTHREAD_DEFS -DPOSIX_THREADS"
223 elif test $ol_cv_pthread_version = draft4 ; then
224 LTHREAD_DEFS="$LTHREAD_DEFS -DTHREAD_MIT_PTHREADS"
226 AC_MSG_ERROR([unknown pthread version])
229 # consider threads found
230 ol_with_threads=found
234 if test $ol_cv_linux_threads = yes ; then
235 dnl AC_DEFINE(HAVE_LINUX_THREADS,1)
236 LTHREAD_DEFS="$LTHREAD_DEFS -DHAVE_LINUX_THREADS"
239 dnl Now the hard part, how to link
241 dnl A few platforms have pthread support in standard libraries
242 AC_CHECK_FUNC(pthread_create,[ol_link_threads=yes])
244 if test $ol_link_threads = no ; then
246 AC_CACHE_CHECK([for pthread_create with -pthread],
247 [ol_cv_pthread_flag], [
248 dnl save the CPPFLAGS
250 LIBS="-pthread $LIBS"
251 AC_TRY_LINK([#include <pthread.h>],[
252 pthread_create((pthread_t*) 0,
253 (pthread_attr_t*) 0, 0, 0);
254 ], ol_cv_pthread_flag=yes, ol_cv_pthread_flag=no)
259 if test $ol_cv_pthread_flag = yes ; then
260 LTHREAD_LIBS="$LTHREAD_LIBS -pthread"
261 ol_link_threads=posix
265 if test $ol_link_threads = no ; then
268 AC_CHECK_LIB(pthread, pthread_create, [
269 ol_link_threads=posix
270 LTHREAD_LIBS="$LTHREAD_LIBS -lpthread"])
274 if test $ol_link_threads = no ; then
277 AC_CHECK_LIB(c_r, pthread_create, [
278 ol_link_threads=posix
279 LTHREAD_LIBS="$LTHREAD_LIBS -lc_r"])
283 if test $ol_link_threads = no ; then
286 AC_CHECK_LIB(pthread, pthread_create, [
287 ol_link_threads=posix
288 LTHREAD_DEFS="$LTHREAD_DEFS -DDEC_THREADS"
289 LTHREAD_LIBS="$LTHREAD_LIBS -lpthread -lmach -lexc -lc"],,
294 if test $ol_link_threads != no ; then
295 dnl All POSIX Thread (final) implementations should have sched_yield
296 AC_CHECK_FUNC(sched_yield)
298 AC_MSG_ERROR([could not link with POSIX Threads])
302 if test $ol_with_threads = posix ; then
303 AC_MSG_ERROR([could not locate POSIX Threads])
307 if test $ol_with_threads = manual ; then
308 dnl User thinks he can manually configure threads.
311 AC_MSG_WARN([thread defines and link options must be set manually])
313 AC_CHECK_HEADERS(pthread.h sched.h)
314 AC_CHECK_FUNC(sched_yield)
318 if test $ol_link_threads = no ; then
319 if test $ol_with_threads = yes ; then
320 AC_MSG_ERROR([no suitable thread support])
323 if test $ol_with_threads = auto ; then
324 AC_MSG_WARN([no suitable thread support, disabling threads])
325 $ol_with_threads = no
328 LTHREAD_DEFS="-DNO_THREADS"
333 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = db2 ; then
336 if test $ol_cv_berkeley_db2 = yes ; then
340 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DB2"
342 if test $ol_with_ldbm_type = hash ; then
343 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBHASH"
345 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBBTREE"
348 dnl $ol_cv_lib_db2 should be yes or -ldb
349 dnl (it could be no, but that would be an error
350 if test $ol_cv_lib_db2 != yes ; then
351 LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db2"
356 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = db ; then
359 if test $ol_cv_berkeley_db = yes ; then
363 if test $ac_cv_header_db_185_h = yes ; then
364 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DB2_COMPAT185"
367 if test $ol_with_ldbm_type = hash ; then
368 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBHASH"
370 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBBTREE"
373 dnl $ol_cv_lib_db should be yes or -ldb
374 dnl (it could be no, but that would be an error
375 if test $ol_cv_lib_db != yes ; then
376 LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db"
381 if test $ol_with_ldbm_api = manual ; then
382 dnl User thinks he can manually configure LDBM api.
385 AC_MSG_WARN([LDBM defines and link options must be set manually])
387 AC_CHECK_HEADERS(db.h db_185.h gdbm.h ndbm.h)
390 if test $ol_link_ldbm = no -a $ol_with_ldbm_type = btree ; then
391 AC_MSG_WARN(Could not find LDBM with BTREE support);
392 $ol_with_ldbm_api=none
395 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = gdbm ; then
398 if test $ol_cv_gdbm = yes ; then
400 ol_with_ldbm_api=gdbm
402 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_GDBM"
404 if test $ol_cv_lib_gdbm != yes ; then
405 LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_gdbm"
410 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = ndbm ; then
413 if test $ol_cv_ndbm = yes ; then
415 ol_with_ldbm_api=ndbm
417 if test $ol_with_ldbm_api = ndbm ; then
418 AC_WARN([Attempting to use NDBM. Functionality will be limited.])
421 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_NDBM"
423 if test $ol_cv_lib_ndbm != yes ; then
424 LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_ndbm"
429 if test $ol_link_ldbm = no -a $ol_enable_ldbm != no ; then
430 AC_MSG_WARN(could not find suitable LDBM backend)
431 if test $ol_enable_ldbm = yes ; then
432 AC_MSG_ERROR(select appropriate LDBM options or disable)
435 AC_MSG_WARN(disabling LDBM)
439 if test $ol_enable_wrappers = yes ; then
440 AC_CHECK_LIB(wrap, hosts_access,
441 [have_wrappers=yes], [have_wrappers=no])
443 if test $have_wrappers = yes ; then
445 dnl AC_DEFINE(HAVE_TCPD)
446 SLAPD_DEFS="$SLAPD_DEFS -DTCP_WRAPPERS"
447 SLAPD_LIBS="$SLAPD_LIBS -lwrap"
449 AC_MSG_WARN(could not find -lwrap)
450 if test $ol_enable_wrappers = yes ; then
451 AC_MSG_ERROR(could not find wrappers, select appropriate options or disable)
454 AC_MSG_WARN(disabling wrappers support)
455 ol_enable_wrappers=no
460 # ud needs termcap (should insert check here)
466 AC_CHECK_HEADERS(termcap.h ncurses.h)
468 if test $ol_link_termcap = no ; then
469 AC_CHECK_LIB(termcap, tputs, [have_termcap=yes], [have_termcap=no])
470 if test $have_termcap = yes ; then
472 TERMCAP_LIBS=-ltermcap
476 if test $ol_link_termcap = no ; then
477 AC_CHECK_LIB(ncurses, initscr, [have_ncurses=yes], [have_ncurses=no])
478 if test $have_ncurses = yes ; then
480 TERMCAP_LIBS=-lncurses
484 if test $ol_link_termcap = no ; then
485 TERMCAP_DEFS="-DNOTERMCAP"
489 AC_SUBST(TERMCAP_DEFS)
490 AC_SUBST(TERMCAP_LIBS)
492 # FreeBSD (and others) have crypt(3) in -lcrypt
493 if test $ol_enable_crypt != no ; then
494 AC_CHECK_FUNC(crypt, [have_crypt=yes], [
495 AC_CHECK_LIB(crypt, crypt, [LUTIL_LIBS="$LUTIL_LIBS -lcrypt"
496 have_crypt=yes], [have_crypt=no])])
498 if test $have_crypt = yes ; then
499 dnl AC_DEFINE(SLAPD_CRYPT,1)
500 LUTIL_DEFS="$LUTIL_DEFS -DLDAP_CRYPT"
502 AC_MSG_WARN(could not find crypt)
503 if test $ol_enable_crypt = yes ; then
504 AC_MSG_ERROR(could not find crypt, select appropriate options or disable)
507 AC_MSG_WARN(disabling crypt support)
512 dnl ----------------------------------------------------------------
513 dnl Checks for header files.
531 dnl ----------------------------------------------------------------
532 dnl Checks for typedefs, structures, and compiler characteristics.
547 dnl ----------------------------------------------------------------
548 dnl Checks for library functions.
571 AC_REPLACE_FUNCS(strdup)
573 dnl ----------------------------------------------------------------
574 # Check Configuration
577 dnl ----------------------------------------------------------------
580 if test $ol_enable_debug != no ; then
581 LDAP_DEFS="$LDAP_DEFS -DLDAP_DEBUG"
583 dnl if test $ol_enable_syslog != no ; then
584 dnl LDAP_DEFS="$LDAP_DEFS -DLDAP_SYSLOG"
586 if test $ol_enable_libui = no ; then
587 LDAP_DEFS="$LDAP_DEFS -DNO_USERINTERFACE"
589 if test $ol_enable_cache = no ; then
590 LDAP_DEFS="$LDAP_DEFS -DNO_CACHE"
592 if test $ol_enable_dns != no ; then
593 LDAP_DEFS="$LDAP_DEFS -DLDAP_DNS"
595 if test $ol_enable_referrals != no ; then
596 LDAP_DEFS="$LDAP_DEFS -DLDAP_REFERRALS"
598 if test $ol_enable_cldap != no ; then
599 LDAP_DEFS="$LDAP_DEFS -DCLDAP"
602 if test $ol_enable_aclgroup != no ; then
603 AC_DEFINE(SLAPD_ACLGROUP,1)
604 SLAPD_DEFS="$SLAPD_DEFS -DACLGROUP"
607 if test $ol_enable_md5 != no ; then
608 dnl AC_DEFINE(SLAPD_MD5,1)
609 LUTIL_DEFS="$LUTIL_DEFS -DLDAP_MD5"
612 if test $ol_enable_sha1 != no ; then
613 dnl AC_DEFINE(SLAPD_SHA1,1)
614 LUTIL_DEFS="$LUTIL_DEFS -DLDAP_SHA1"
617 if test $ol_enable_phonetic != no ; then
618 AC_DEFINE(SLAPD_PHONETIC,1)
619 SLAPD_DEFS="$SLAPD_DEFS -DSOUNDEX"
622 if test $ol_enable_rlookups != no ; then
623 AC_DEFINE(SLAPD_RLOOKUPS,1)
624 SLAPD_DEFS="$SLAPD_DEFS -DREVERSE_LOOKUPS"
627 if test $ol_link_ldbm != no ; then
628 dnl AC_DEFINE(SLAPD_LDBM,1)
631 LDBM_DEFS="-DLDAP_LDBM $LDBM_DEFS"
634 if test $ol_enable_passwd != no ; then
635 dnl AC_DEFINE(SLAPD_PASSWD,1)
638 SLAPD_DEFS="-DLDAP_PASSWD $SLAPD_DEFS"
641 if test $ol_enable_shell != no ; then
642 dnl AC_DEFINE(SLAPD_SHELL,1)
645 SLAPD_DEFS="-DLDAP_SHELL $SLAPD_DEFS"
648 if test $ol_enable_slurpd != no -a $ol_link_threads != no -a \
649 $BUILD_SLAPD = yes ; then
653 dnl ----------------------------------------------------------------
655 AC_SUBST(BUILD_LDAPD)
656 AC_SUBST(BUILD_SLAPD)
658 AC_SUBST(BUILD_PASSWD)
659 AC_SUBST(BUILD_SHELL)
660 AC_SUBST(BUILD_SLURPD)
669 AC_SUBST(SLURPD_DEFS)
670 AC_SUBST(SLURPD_LIBS)
673 AC_SUBST(LTHREAD_DEFS)
674 AC_SUBST(LTHREAD_LIBS)
678 dnl ----------------------------------------------------------------
683 dnl contrib/Makefile:build/top.mk:contrib/Makefile.in:build/dir.mk \
684 dnl contrib/saucer/Makefile:build/top.mk:contrib/saucer/Makefile.in:build/rules.mk \
685 dnl contrib/whois++/Makefile:build/top.mk:contrib/whois++/Makefile.in:build/rules.mk \
686 dnl [date > stamp-h])
689 Makefile:build/top.mk:Makefile.in:build/dir.mk \
690 doc/Makefile:build/top.mk:doc/Makefile.in:build/dir.mk \
691 doc/man/Makefile:build/top.mk:doc/man/Makefile.in:build/dir.mk \
692 doc/man/man1/Makefile:build/top.mk:doc/man/man1/Makefile.in:build/man.mk \
693 doc/man/man3/Makefile:build/top.mk:doc/man/man3/Makefile.in:build/man.mk \
694 doc/man/man5/Makefile:build/top.mk:doc/man/man5/Makefile.in:build/man.mk \
695 doc/man/man8/Makefile:build/top.mk:doc/man/man8/Makefile.in:build/man.mk \
696 clients/Makefile:build/top.mk:clients/Makefile.in:build/dir.mk \
697 clients/finger/Makefile:build/top.mk:clients/finger/Makefile.in:build/rules.mk \
698 clients/fax500/Makefile:build/top.mk:clients/fax500/Makefile.in:build/rules.mk \
699 clients/gopher/Makefile:build/top.mk:clients/gopher/Makefile.in:build/rules.mk \
700 clients/mail500/Makefile:build/top.mk:clients/mail500/Makefile.in:build/rules.mk \
701 clients/rcpt500/Makefile:build/top.mk:clients/rcpt500/Makefile.in:build/rules.mk \
702 clients/ud/Makefile:build/top.mk:clients/ud/Makefile.in:build/rules.mk \
703 clients/tools/Makefile:build/top.mk:clients/tools/Makefile.in:build/rules.mk \
704 include/Makefile:build/top.mk:include/Makefile.in \
705 libraries/Makefile:build/top.mk:libraries/Makefile.in:build/dir.mk \
706 libraries/libavl/Makefile:build/top.mk:libraries/libavl/Makefile.in:build/lib.mk \
707 libraries/liblber/Makefile:build/top.mk:libraries/liblber/Makefile.in:build/lib.mk \
708 libraries/libldap/Makefile:build/top.mk:libraries/libldap/Makefile.in:build/lib.mk \
709 libraries/libldbm/Makefile:build/top.mk:libraries/libldbm/Makefile.in:build/lib.mk \
710 libraries/libldif/Makefile:build/top.mk:libraries/libldif/Makefile.in:build/lib.mk \
711 libraries/liblthread/Makefile:build/top.mk:libraries/liblthread/Makefile.in:build/lib.mk \
712 libraries/liblutil/Makefile:build/top.mk:libraries/liblutil/Makefile.in:build/lib.mk \
713 servers/Makefile:build/top.mk:servers/Makefile.in:build/dir.mk \
714 servers/ldapd/Makefile:build/top.mk:servers/ldapd/Makefile.in:build/srv.mk \
715 servers/slapd/Makefile:build/top.mk:servers/slapd/Makefile.in:build/srv.mk \
716 servers/slapd/back-ldbm/Makefile:build/top.mk:servers/slapd/back-ldbm/Makefile.in:build/srv.mk \
717 servers/slapd/back-passwd/Makefile:build/top.mk:servers/slapd/back-passwd/Makefile.in:build/srv.mk \
718 servers/slapd/back-shell/Makefile:build/top.mk:servers/slapd/back-shell/Makefile.in:build/srv.mk \
719 servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk \
720 servers/slapd/tools/Makefile:build/top.mk:servers/slapd/tools/Makefile.in \
721 servers/slurpd/Makefile:build/top.mk:servers/slurpd/Makefile.in:build/srv.mk \
722 tests/Makefile:build/top.mk:tests/Makefile.in \