dnl dnl Copyright 1998,1999 The OpenLDAP Foundation. All Rights Reserved. dnl dnl Redistribution and use in source and binary forms are permitted only dnl as authorized by the OpenLDAP Public License. A copy of this dnl license is available at http://www.OpenLDAP.org/license.html or dnl in file LICENSE in the top-level directory of the distribution. dnl dnl Configure.in for OpenLDAP AC_INIT(include/ldap.h)dnl AC_CONFIG_AUX_DIR(build)dnl AM_INIT_AUTOMAKE(openldap,[1.1], [no ac_define])dnl dnl Do not use AutoConf 2.12; it produces a configuration script dnl that causes an "internal 2K buffer" error on HPUX when run dnl with /bin/sh. Autoconf 2.10 seems to be okay. AC_PREREQ(2.10)dnl Required Autoconf version AC_CONFIG_HEADER(include/portable.h)dnl dnl dnl Start Args AC_MSG_CHECKING(configure arguments) AC_PREFIX_DEFAULT(/usr/local) top_builddir=`pwd` AC_SUBST(top_builddir)dnl ldap_subdir="openldap" AC_ARG_WITH(subdir, [ --with-subdir=DIR change default subdirectory used for installs], [ if test "$withval" = "no"; then ldap_subdir="" elif test "$withval" != "yes"; then ldap_subdir="$withval" fi ])dnl AC_SUBST(ldap_subdir)dnl OL_ARG_ENABLE(debug,[ --enable-debug enable debugging], yes)dnl dnl OL_ARG_ENABLE(syslog,[ --enable-syslog enable syslog support], auto)dnl OL_ARG_ENABLE(proctitle,[ --enable-proctitle enable proctitle support], yes)dnl OL_ARG_ENABLE(libui,[ --enable-libui enable library user interface], yes)dnl OL_ARG_ENABLE(cache,[ --enable-cache enable caching], yes)dnl OL_ARG_ENABLE(dns,[ --enable-dns enable dns support], no)dnl OL_ARG_ENABLE(referrals,[ --enable-referrals enable referrals], yes)dnl OL_ARG_ENABLE(cldap,[ --enable-cldap enable connectionless ldap], no)dnl OL_ARG_ENABLE(x_compile,[ --enable-x-compile enable cross compiling], no, [yes no])dnl dnl General "with" options OL_ARG_WITH(kerberos,[ --with-kerberos use Kerberos], auto, [auto k5 k4 afs yes no]) OL_ARG_WITH(threads,[ --with-threads use threads], auto, [auto posix mach lwp yes no manual] ) OL_ARG_WITH(yielding_select,[ --with-yielding-select with implicitly yielding select], auto, [auto yes no manual] ) dnl Server options dnl LDAPD OPTIONS AC_ARG_WITH(xxldapdoptions,[LDAPD Options:]) OL_ARG_ENABLE(ldapd,[ --enable-ldapd enable building ldapd], no)dnl dnl SLAPD OPTIONS AC_ARG_WITH(xxslapdoptions,[SLAPD Options:]) OL_ARG_ENABLE(slapd,[ --enable-slapd enable building slapd], yes)dnl OL_ARG_ENABLE(aclgroups,[ --enable-aclgroups enable ACL group support], auto)dnl OL_ARG_ENABLE(cleartext,[ --enable-cleartext enable cleartext passwords], yes)dnl OL_ARG_ENABLE(crypt,[ --enable-crypt enable crypt(3) passwords], auto)dnl OL_ARG_ENABLE(wrappers,[ --enable-wrappers enable tcp wrapper support], no)dnl OL_ARG_ENABLE(phonetic,[ --enable-phonetic enable phonetic/soundex], no)dnl OL_ARG_ENABLE(rlookups,[ --enable-rlookups enable reverse lookups], auto)dnl dnl SLAPD Backend options OL_ARG_ENABLE(ldbm,[ --enable-ldbm enable ldbm backend], yes)dnl OL_ARG_WITH(ldbm_api,[ --with-ldbm-api use LDBM API], auto, [auto db2 db gdbm ndbm manual]) OL_ARG_WITH(ldbm_type,[ --with-ldbm-type use LDBM type], auto, [auto btree hash]) OL_ARG_ENABLE(passwd,[ --enable-passwd enable passwd backend], no)dnl OL_ARG_ENABLE(shell,[ --enable-shell enable shell backend], no)dnl dnl SLURPD OPTIONS AC_ARG_WITH(xxslurpdoptions,[SLURPD Options:]) OL_ARG_ENABLE(slurpd,[ --enable-slurpd enable building slurpd], auto)dnl AC_ARG_WITH(xxliboptions,[Library Generation & Linking Options]) AM_ENABLE_STATIC AM_DISABLE_SHARED dnl AM_ENABLE_SHARED dnl General "enable" options # validate options if test $ol_enable_referrals = no ; then if test $ol_enable_dns = yes ; then AC_MSG_WARN([dns disabled, ignoring --enable-dns argument]) fi ol_enable_dns=no fi if test $ol_enable_slapd = no ; then dnl SLAPD was specificallly disabled if test $ol_enable_ldbm = yes ; then AC_MSG_WARN([slapd disabled, ignoring --enable_ldbm argument]) fi if test $ol_enable_passwd = yes ; then AC_MSG_WARN([slapd disabled, ignoring --enable_passwd argument]) fi if test $ol_enable_shell = yes ; then AC_MSG_WARN([slapd disabled, ignoring --enable_shell argument]) fi if test $ol_enable_aclgroups = yes ; then AC_MSG_WARN([slapd disabled, ignoring --enable_aclgroups argument]) fi if test $ol_enable_wrappers = yes ; then AC_MSG_WARN([slapd disabled, ignoring --enable_wrappers argument]) fi if test $ol_enable_phonetic = yes ; then AC_MSG_WARN([slapd disabled, ignoring --enable_phonetic argument]) fi if test $ol_enable_rlookups = yes ; then AC_MSG_WARN([slapd disabled, ignoring --enable_rlookups argument]) fi if test $ol_with_ldbm_api != auto ; then AC_MSG_WARN([slapd disabled, ignoring --with_ldbm_api argument]) fi if test $ol_with_ldbm_type != auto ; then AC_MSG_WARN([slapd disabled, ignoring --with_ldbm_type argument]) fi if test $ol_enable_slurpd = yes ; then AC_MSG_ERROR([slurpd requires slapd]) fi # force settings to no ol_enable_ldbm=no ol_enable_shell=no ol_enable_passwd=no ol_enable_aclgroups=no ol_enable_wrappers=no ol_enable_phonetic=no ol_enable_rlookups=no ol_with_ldbm_api=no ol_with_ldbm_type=no ol_enable_slurpd=no elif test $ol_enable_ldbm = no ; then dnl SLAPD without LDBM if test $ol_with_ldbm_api != auto ; then AC_MSG_WARN([LDBM disabled, ignoring --with_ldbm_api argument]) fi if test $ol_with_ldbm_type != auto ; then AC_MSG_WARN([LDBM disabled, ignoring --with_ldbm_type argument]) fi if test $ol_enable_passwd = no -a $ol_enable_shell = no ; then AC_MSG_ERROR([slapd requires a backend]) fi ol_with_ldbm_api=no ol_with_ldbm_type=no else dnl SLAPD with LDBM if test $ol_with_ldbm_api = gdbm -a \ $ol_with_ldbm_type = btree ; then AC_MSG_ERROR([GDBM only supports LDBM type hash]) fi if test $ol_with_ldbm_api = ndbm -a \ $ol_with_ldbm_type = btree ; then AC_MSG_ERROR([NDBM only supports LDBM type hash]) fi fi if test $ol_enable_slurpd = yes ; then dnl SLURPD was specifically enabled if test $ol_with_threads = no ; then AC_MSG_ERROR([slurpd requires threads]) fi fi AC_MSG_RESULT(done) AC_CANONICAL_HOST ## Initialize vars LDAP_LIBS= LDBM_LIBS= LTHREAD_LIBS= LUTIL_LIBS= LDAPD_LIBS= SLAPD_LIBS= SLURPD_LIBS= BUILD_LDAPD=no BUILD_SLAPD=no BUILD_SLURPD=no BUILD_LDBM=no BUILD_PASSWD=no BUILD_SHELL=no BUILD_THREAD=no KRB_LIBS= TERMCAP_LIBS= dnl ---------------------------------------------------------------- dnl Checks for programs AC_PROG_INSTALL AM_PROG_LIBTOOL dnl AC_PROG_MAKE_SET AC_PATH_PROG(SENDMAIL, sendmail, /usr/lib/sendmail, $PATH:/usr/libexec:/usr/lib:/usr/sbin:/usr/etc:/etc) AC_PATH_PROG(EDITOR, vi, /usr/ucb/vi, $PATH:/usr/ucb) AC_PATH_PROG(FINGER, finger, /usr/ucb/finger, $PATH:/usr/ucb) dnl Checks the compiler and UNIX Variants if test $cross_compiling = yes -a $ol_enable_x_compile = yes; then AC_MSG_WARN([cross compiling.... some functionality will be removed.]) elif test $cross_compiling = no -a $ol_enable_x_compile = yes; then AC_MSG_WARN([programs compiled here do run here...]) AC_MSG_ERROR([ if not cross compiling, use --disable-x-compile.]) elif test $cross_compiling = yes -a $ol_enable_x_compile = no; then AC_MSG_WARN([programs compiled here do not run here...]) AC_MSG_ERROR([ if cross compiling, add --enable-x-compile.]) fi AC_PROG_CPP AC_AIX AC_ISC_POSIX AC_MINIX dnl OpenLDAP requires STDC features AM_PROG_CC_STDC if test "X${am_cv_prog_cc_stdc}" = "Xno" ; then AC_MSG_ERROR([OpenLDAP requires compiler to support STDC prototypes.]) fi dnl AM_C_PROTOTYPES dnl Checks for libraries dnl Find socket() dnl Likely combinations: dnl -lsocket [ -lnsl_s | -lnsl ] dnl -linet AC_CHECK_FUNC(socket, [have_socket=yes], [ dnl dnl hopefully we won't include too many libraries dnl AC_CHECK_LIB(socket, main) AC_CHECK_LIB(net, main) AC_CHECK_LIB(nsl_s, main) AC_CHECK_LIB(nsl, main) AC_CHECK_LIB(inet, socket) AC_CHECK_LIB(gen, main) ]) dnl Check for resolver routines AC_CHECK_FUNCS(res_search) if test $ac_cv_func_res_search = "no" ; then AC_CHECK_LIB(bind, res_search) if test $ac_cv_libac_cv_lib_bind_res_search = "yes" ; then AC_DEFINE(HAVE_RES_SEARCH,1) else AC_CHECK_LIB(resolv, res_search) if test $ac_cv_libac_cv_lib_resolv_res_search = "yes" ; then AC_DEFINE(HAVE_RES_SEARCH,1) fi fi fi dnl HP-UX requires -lV3 AC_CHECK_LIB(V3, sigset) # ISODE tests ol_link_isode=no if test $ol_enable_ldapd != no ; then dnl look for ISODE libraries AC_CHECK_LIB(xtpp, main, [ ol_link_isode=yes AC_DEFINE(HAVE_XTPP,1) LDAPD_LIBS="$LDAPD_LIBS -lxtpp -lxtdsap -lxtisode -losi" ],:,[-lxtdsap -lxtisode -losi]) AC_CHECK_LIB(dsap, main, [ ol_link_isode=yes AC_DEFINE(HAVE_DSAP,1) LDAPD_LIBS="$LDAPD_LIBS -ldsap" ],:,[-lisode]) AC_CHECK_LIB(isode, main, [ ol_link_isode=yes AC_DEFINE(HAVE_ISODE,1) LDAPD_LIBS="$LDAPD_LIBS -lisode" ],:) fi if test $ol_link_isode != no; then AC_CHECK_LIB(pp, main, [ AC_DEFINE(HAVE_PP,1) LDAPD_LIBS="-lpp $LDAPD_LIBS" ],:) AC_PATH_PROG(PEPSY, pepsy) fi dnl dnl check for kerberos dnl ol_link_kerberos=no if test $ol_with_kerberos = auto -o $ol_with_kerberos = k5 ; then AC_CHECK_HEADERS(kerberosIV/krb.h kerberosIV/des.h) if test $ac_cv_header_kerberosIV_krb_h = yes ; then AC_CHECK_LIB(krb4, main, [have_k5=yes], [have_k5=no], [-lkrb5 -ldes425]) if test $have_k5 = yes ; then ol_with_kerberos=found ol_link_kerberos=yes AC_DEFINE(HAVE_KERBEROS) KRB_LIBS="-lkrb4 -lkrb5 -ldes425" fi fi fi if test $ol_with_kerberos = auto -o $ol_with_kerberos = k4 ; then AC_CHECK_HEADERS(krb.h des.h) if test $ac_cv_header_krb_h = yes ; then AC_CHECK_LIB(krb, main, [have_k4=yes], [have_k4=no], [-ldes]) if test $have_k4 = yes ; then ol_with_kerberos=found ol_link_kerberos=yes AC_DEFINE(HAVE_KERBEROS) KRB_LIBS="-lkrb -ldes" fi fi fi dnl if test $ol_link_kerberos = yes ; then dnl save_LIBS=$LIBS dnl LIBS="$KRB_LIBS $LIBS" dnl AC_CHECK_FUNCS(des_string_to_key) dnl LIBS=$save_LIBS dnl fi ol_link_threads=no if test $ol_with_threads = auto -o $ol_with_threads = yes \ -o $ol_with_threads = posix ; then AC_CHECK_HEADERS(pthread.h sched.h) if test $ac_cv_header_pthread_h = yes ; then OL_POSIX_THREAD_VERSION if test $ol_cv_pthread_version = final ; then AC_DEFINE(HAVE_PTHREADS_FINAL) elif test $ol_cv_pthread_version = draft4 ; then AC_DEFINE(HAVE_PTHREADS_D4) else AC_MSG_ERROR([unknown pthread version]) fi # consider threads found ol_with_threads=found OL_LINUX_THREADS if test $ol_cv_linux_threads = yes ; then AC_DEFINE(HAVE_LINUX_THREADS,1) fi dnl Now the hard part, how to link dnl Check for pthread support in current $LIBS AC_CHECK_FUNC(pthread_create,[ol_link_threads=yes]) if test $ol_link_threads = no ; then dnl try -pthread AC_CACHE_CHECK([for pthread_create with -pthread], [ol_cv_pthread_flag], [ dnl save the flags save_LIBS="$LIBS" LIBS="-pthread $LIBS" AC_TRY_LINK([char pthread();],[ pthread_create(); ], ol_cv_pthread_flag=yes, ol_cv_pthread_flag=no) dnl restore the LIBS LIBS="$save_LIBS" ]) if test $ol_cv_pthread_flag = yes ; then LTHREAD_LIBS="$LTHREAD_LIBS -pthread" ol_link_threads=posix fi fi if test $ol_link_threads = no ; then dnl try -pthreads AC_CACHE_CHECK([for pthread_create with -pthreads], [ol_cv_pthreads_flag], [ dnl save the flags save_LIBS="$LIBS" LIBS="-pthreads $LIBS" AC_TRY_LINK([char pthread();],[ pthread_create(); ], ol_cv_pthreads_flag=yes, ol_cv_pthreads_flag=no) dnl restore the LIBS LIBS="$save_LIBS" ]) if test $ol_cv_pthreads_flag = yes ; then LTHREAD_LIBS="$LTHREAD_LIBS -pthreads" ol_link_threads=posix fi fi if test $ol_link_threads = no ; then dnl try -thread AC_CACHE_CHECK([for pthread_create with -thread], [ol_cv_thread_flag], [ dnl save the flags save_LIBS="$LIBS" LIBS="-thread $LIBS" AC_TRY_LINK([char pthread();],[ pthread_create(); ], ol_cv_thread_flag=yes, ol_cv_thread_flag=no) dnl restore the LIBS LIBS="$save_LIBS" ]) if test $ol_cv_thread_flag = yes ; then LTHREAD_LIBS="$LTHREAD_LIBS -thread" ol_link_threads=posix fi fi if test $ol_link_threads = no ; then dnl try DEC Threads -lpthread -lexc save_LIBS="$LIBS" AC_CHECK_LIB(pthread, pthread_mutex_lock, [ ol_link_threads=posix LTHREAD_LIBS="$LTHREAD_LIBS -lpthread -lexc" if test $ol_with_yielding_select = auto ; then ol_with_yielding_select=yes fi ],,[-lexc]) LIBS="$save_LIBS" fi if test $ol_link_threads = no ; then dnl try DEC Threads -lpthreads -lmach -lexc -lc_r save_LIBS="$LIBS" AC_CHECK_LIB(pthreads, pthread_mutex_unlock, [ ol_link_threads=posix LTHREAD_LIBS="$LTHREAD_LIBS -lpthreads -lmach -lexc -lc_r" if test $ol_with_yielding_select = auto ; then ol_with_yielding_select=yes fi ],,[-lmach -lexc -lc_r]) LIBS="$save_LIBS" fi if test $ol_link_threads = no ; then dnl try -lpthread save_LIBS="$LIBS" AC_CHECK_LIB(pthread, pthread_create, [ ol_link_threads=posix LTHREAD_LIBS="$LTHREAD_LIBS -lpthread"]) LIBS="$save_LIBS" fi if test $ol_link_threads = no ; then dnl try -lc_r save_LIBS="$LIBS" AC_CHECK_LIB(c_r, pthread_create, [ ol_link_threads=posix LTHREAD_LIBS="$LTHREAD_LIBS -lc_r"]) LIBS="$save_LIBS" fi if test $ol_link_threads = no ; then dnl try -lpthreads save_LIBS="$LIBS" AC_CHECK_LIB(pthreads, pthread_create, [ ol_link_threads=posix LTHREAD_LIBS="$LTHREAD_LIBS -lpthreads"]) LIBS="$save_LIBS" fi dnl IRIX Pthread check if test $ol_link_threads = no ; then dnl try IRIX Pthreads -Wl,-woff,85 -lpthreads save_LIBS="$LIBS" AC_CHECK_LIB(pthreads, pthread_join, [ ol_link_threads=posix LTHREAD_LIBS="$LTHREAD_LIBS -lpthreads" ],[-Wl,-woff,85]) LIBS="$save_LIBS" fi dnl HP-UX 11 Pthread check if test $ol_link_threads = no; then save_LIBS="$LIBS" LIBS="$LIBS -lpthread" AC_MSG_CHECKING([for pthread_create() in HP-UX -lpthread]) ol_try_pthread_hpux_11=no AC_CACHE_VAL(ol_cv_pthread_hpux_11,[ AC_TRY_LINK([ #include #include #ifndef ELFABI_HPUX_REL11 die horribly #endif ], [pthread_create(NULL, NULL, NULL, NULL);], ol_try_pthread_hpux_11=yes ol_cv_pthread_hpux_11=yes, ol_cv_pthread_hpux_11=no)]) AC_MSG_RESULT(yes) LIBS="$save_LIBS" if test $ol_cv_pthread_hpux_11=yes ; then ol_link_threads=posix LTHREAD_LIBS="$LTHREAD_LIBS -lpthread" if test $ol_try_pthread_hpux_11=yes ; then dnl Some tests below may fail, cause we aint including dnl pthread.h. Force appropriate ones to yes ac_cv_func_pthread_attr_init=yes fi fi fi if test $ol_link_threads != no ; then AC_DEFINE(HAVE_PTHREADS) dnl save flags save_CPPFLAGS="$CPPFLAGS" save_LIBS="$LIBS" LIBS="$LTHREAD_LIBS $LIBS" dnl All POSIX Thread (final) implementations should have dnl sched_yield instead of pthread yield. dnl check for both AC_CHECK_FUNCS(sched_yield pthread_yield) if test $ac_cv_func_sched_yield = no -a \ $ac_cv_func_pthread_yield = no ; then dnl Digital UNIX has sched_yield() in -lrt AC_CHECK_LIB(rt, sched_yield, [LTHREAD_LIBS="$LTHREAD_LIBS -lrt" AC_DEFINE(HAVE_SCHED_YIELD,1) ac_cv_func_sched_yield=yes], [ac_cv_func_sched_yield=no]) fi if test $ac_cv_func_sched_yield = no -a \ $ac_cv_func_pthread_yield = no ; then dnl Solaris has sched_yield() in -lposix4 AC_CHECK_LIB(posix4, sched_yield, [LTHREAD_LIBS="$LTHREAD_LIBS -lposix4" AC_DEFINE(HAVE_SCHED_YIELD,1) ac_cv_func_sched_yield=yes], [ac_cv_func_sched_yield=no]) fi if test $ac_cv_func_sched_yield = no -a \ $ac_cv_func_pthread_yield = no ; then AC_MSG_WARN([could not locate sched_yield() or pthread_yield()]) AC_MSG_ERROR([POSIX Threads are not usable]) fi dnl Check functions for compatibility AC_CHECK_FUNCS(pthread_kill) AC_CHECK_FUNCS( \ pthread_attr_create pthread_attr_init \ pthread_attr_destroy pthread_attr_delete \ pthread_attr_setdetachstate pthread_attr_setdetach_np \ ) dnl Check for setconcurreny functions AC_CHECK_FUNCS( \ pthread_setconcurrency \ thr_setconcurrency \ ) AC_MSG_CHECKING([if pthread_create() works]) AC_CACHE_VAL(ol_cv_pthread_create_works,[ AC_TRY_RUN([ #include #ifndef NULL #define NULL (void*)0 #endif static void *task(p) void *p; { return (void *) (p == NULL); } int main(argc, argv) int argc; char **argv; { pthread_t t; exit(pthread_create(&t, NULL, task, NULL)); } ], [ol_cv_pthread_create_works=yes], [ol_cv_pthread_create_works=no], [dnl assume yes ol_cv_pthread_create_works=yes])]) AC_MSG_RESULT($ol_cv_pthread_create_works) if test $ol_cv_pthread_create_works = no ; then AC_MSG_ERROR([pthread.h and pthread_create are not compatible]) fi dnl Check if select causes an yield if test $ol_with_yielding_select = auto ; then AC_MSG_CHECKING([if select yields when using pthreads]) AC_CACHE_VAL(ol_cv_pthread_select_yields,[ AC_TRY_RUN([ #include #include #include #include #ifndef NULL #define NULL (void*) 0 #endif static int fildes[2]; static void *task(p) void *p; { int i; struct timeval tv; fd_set rfds; tv.tv_sec=10; tv.tv_usec=0; FD_ZERO(&rfds); FD_SET(fildes[0], &rfds); /* we're not interested in any fds */ i = select(FD_SETSIZE, &rfds, NULL, NULL, &tv); if(i < 0) { perror("select"); exit(10); } exit(0); /* if we exit here, the select blocked the whole process */ } int main(argc, argv) int argc; char **argv; { pthread_t t; /* create a pipe to select */ if(pipe(&fildes[0])) { perror("select"); exit(1); } #ifdef HAVE_PTHREAD_SETCONCURRENCY (void) pthread_setconcurrency(2); #else #ifdef HAVE_THR_SETCONCURRENCY /* Set Solaris LWP concurrency to 2 */ thr_setconcurrency(2); #endif #endif pthread_create(&t, NULL, task, NULL); #if HAVE_SCHED_YIELD sched_yield(); /* make sure task runs first */ #else #ifdef HAVE_PTHREAD_YIELD pthread_yield(); /* make sure task runs first */ #endif #endif exit(2); }], [ol_cv_pthread_select_yields=no], [ol_cv_pthread_select_yields=yes], [ AC_MSG_ERROR([crossing compiling: use --with-yielding_select=yes|no|manual])])]) AC_MSG_RESULT($ol_cv_pthread_select_yields) if test $ol_cv_pthread_select_yields = yes ; then ol_with_yielding_select=yes fi fi dnl restore flags CPPFLAGS="$save_CPPFLAGS" LIBS="$save_LIBS" else AC_MSG_ERROR([could not link with POSIX Threads]) fi fi if test $ol_with_threads = posix ; then AC_MSG_ERROR([could not locate POSIX Threads]) fi fi if test $ol_with_threads = auto -o $ol_with_threads = yes \ -o $ol_with_threads = mach ; then dnl check for Mach CThreads AC_CHECK_HEADERS(mach/cthreads.h) if test $ac_cv_header_mach_cthreads_h = yes ; then ol_with_threads=found dnl check for cthread support in current $LIBS AC_CHECK_FUNC(cthread_fork,[ol_link_threads=yes]) if test $ol_link_threads = no ; then dnl try -all_load dnl this test needs work AC_CACHE_CHECK([for cthread_fork with -all_load], [ol_cv_cthread_all_load], [ dnl save the flags save_LIBS="$LIBS" LIBS="-all_load $LIBS" AC_TRY_LINK([#include ],[ cthread_fork((void *)0, (void *)0); ], ol_cv_cthread_all_load=yes, ol_cv_cthread_all_load=no) dnl restore the LIBS LIBS="$save_LIBS" ]) if test $ol_cv_cthread_all_load = yes ; then LTHREAD_LIBS="$LTHREAD_LIBS -all_load" ol_link_threads=mach fi fi if test $ol_link_threads != no ; then : check for cthread specific functionality here AC_DEFINE(HAVE_MACH_CTHREADS,1) else AC_MSG_ERROR([could not link with Mach CThreads]) fi fi if test $ol_with_threads = mach ; then AC_MSG_ERROR([could not locate Mach CThreads]) fi fi if test $ol_with_threads = auto -o $ol_with_threads = yes \ -o $ol_with_threads = lwp ; then dnl check for SunOS5 LWP AC_CHECK_HEADERS(thread.h synch.h) if test $ac_cv_header_thread_h = yes -a $ac_cv_header_synch_h = yes ; then AC_CHECK_LIB(thread, thr_create, [have_thr=yes], [have_thr=no]) if test $have_thr = yes ; then AC_DEFINE(HAVE_THR) LTHREAD_LIBS="$LTHREAD_LIBS -lthread" ol_link_threads=thr if test $ol_with_yielding_select = auto ; then ol_with_yielding_select=yes fi fi fi dnl check for SunOS4 LWP AC_CHECK_HEADERS(lwp/lwp.h) if test $ac_cv_header_lwp_lwp_h = yes ; then AC_CHECK_LIB(lwp, lwp_create, [have_lwp=yes], [have_lwp=no]) if test $have_lwp = yes ; then AC_DEFINE(HAVE_LWP) LTHREAD_LIBS="$LTHREAD_LIBS -llwp" ol_link_threads=lwp if test $ol_with_yielding_select = auto ; then ol_with_yielding_select=no fi fi fi fi if test $ol_with_yielding_select = yes ; then AC_DEFINE(HAVE_YIELDING_SELECT,1) fi if test $ol_with_threads = manual ; then dnl User thinks he can manually configure threads. ol_link_threads=yes AC_MSG_WARN([thread defines and link options must be set manually]) AC_CHECK_HEADERS(pthread.h sched.h) AC_CHECK_FUNCS(sched_yield pthread_yield) OL_LINUX_THREADS AC_CHECK_HEADERS(mach/cthreads.h) AC_CHECK_HEADERS(lwp/lwp.h) AC_CHECK_HEADERS(thread.h synch.h) fi if test $ol_link_threads != no ; then dnl needed to get reentrant/threadsafe versions dnl AC_DEFINE(REENTRANT,1) AC_DEFINE(_REENTRANT,1) AC_DEFINE(THREAD_SAFE,1) AC_DEFINE(_THREAD_SAFE,1) AC_DEFINE(THREADSAFE,1) AC_DEFINE(_THREADSAFE,1) dnl this might cause the errno symbol to be dnl replaced with a function to get a thread specific errno. dnl check to see if everything needs to be compiled dnl with the thread libraries AC_CACHE_CHECK([for thread specific errno], [ol_cv_errno_thread_specific], [ AC_TRY_LINK([ #include ], [ int x = errno; ], [ol_cv_errno_thread_specific=yes], [ol_cv_errno_thread_specific=no]) ]) if test $ol_cv_errno_thread_specific != yes ; then LIBS="$LTHREAD_LIBS $LIBS" LTHREAD_LIBS="" fi dnl check for reentrant/threadsafe functions dnl dnl note: these should only be used when linking dnl with $LTHREAD_LIBS dnl save_CPPFLAGS="$CPPFLAGS" save_LIBS="$LIBS" LIBS="$LTHREAD_LIBS $LIBS" AC_CHECK_FUNCS( \ strtok_r \ gmtime_r \ gethostbyaddr_r gethostbyname_r \ feof_unlocked unlocked_feof \ putc_unlocked unlocked_putc \ flockfile ftrylockfile \ ) CPPFLAGS="$save_CPPFLAGS" LIBS="$save_LIBS" fi dnl ---------------------------------------------------------------- if test $ol_link_threads = no ; then if test $ol_with_threads = yes ; then AC_MSG_ERROR([no suitable thread support]) fi if test $ol_with_threads = auto ; then AC_MSG_WARN([no suitable thread support, disabling threads]) ol_with_threads=no fi AC_DEFINE(NO_THREADS,1) LTHREAD_LIBS="" fi ol_link_ldbm=no if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = db2 ; then OL_BERKELEY_DB2 if test $ol_cv_berkeley_db2 = yes ; then ol_link_ldbm=db2 ol_with_ldbm_api=db2 if test $ol_with_ldbm_type = hash ; then AC_DEFINE(LDBM_USE_DBHASH,1) else AC_DEFINE(LDBM_USE_DBBTREE,1) fi dnl $ol_cv_lib_db2 should be yes or -ldb dnl (it could be no, but that would be an error if test $ol_cv_lib_db2 != yes ; then LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db2" fi fi fi if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = db ; then OL_BERKELEY_DB if test $ol_cv_berkeley_db = yes ; then ol_link_ldbm=db ol_with_ldbm_api=db if test $ol_with_ldbm_type = hash ; then AC_DEFINE(LDBM_USE_DBHASH,1) else AC_DEFINE(LDBM_USE_DBBTREE,1) fi dnl $ol_cv_lib_db should be yes or -ldb dnl (it could be no, but that would be an error if test $ol_cv_lib_db != yes ; then LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db" fi fi fi if test $ol_with_ldbm_api = manual ; then dnl User thinks he can manually configure LDBM api. ol_link_ldbm=yes AC_MSG_WARN([LDBM defines and link options must be set manually]) AC_CHECK_HEADERS(db.h db_185.h gdbm.h ndbm.h) fi if test $ol_link_ldbm = no -a $ol_with_ldbm_type = btree ; then AC_MSG_WARN(Could not find LDBM with BTREE support) ol_with_ldbm_api=none fi if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = gdbm ; then OL_GDBM if test $ol_cv_gdbm = yes ; then ol_link_ldbm=gdbm ol_with_ldbm_api=gdbm if test $ol_cv_lib_gdbm != yes ; then LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_gdbm" fi fi fi if test $ol_with_ldbm_api = auto ; then AC_MSG_WARN([skipping automatic checking for NDBM, must be manually enabled.]) elif test $ol_with_ldbm_api = ndbm ; then OL_NDBM if test $ol_cv_ndbm = yes ; then ol_link_ldbm=ndbm ol_with_ldbm_api=ndbm if test $ol_cv_lib_ndbm != yes ; then LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_ndbm" fi fi fi if test $ol_link_ldbm = no -a $ol_enable_ldbm != no ; then AC_MSG_WARN(could not find suitable LDBM backend) if test $ol_enable_ldbm = yes ; then AC_MSG_ERROR(select appropriate LDBM options or disable) fi AC_MSG_WARN(disabling LDBM) ol_enable_ldbm=no fi if test $ol_enable_wrappers = yes ; then AC_CHECK_LIB(wrap, main, [have_wrappers=yes], [have_wrappers=no]) if test $have_wrappers = yes ; then AC_DEFINE(HAVE_TCPD) SLAPD_LIBS="$SLAPD_LIBS -lwrap" else AC_MSG_WARN(could not find -lwrap) if test $ol_enable_wrappers = yes ; then AC_MSG_ERROR(could not find wrappers, select appropriate options or disable) fi AC_MSG_WARN(disabling wrappers support) ol_enable_wrappers=no fi fi # ud needs termcap (should insert check here) ol_link_termcap=no AC_CHECK_HEADERS(termcap.h ncurses.h) if test $ol_link_termcap = no ; then AC_CHECK_LIB(termcap, tputs, [have_termcap=yes], [have_termcap=no]) if test $have_termcap = yes ; then AC_DEFINE(HAVE_TERMCAP) ol_link_termcap=yes TERMCAP_LIBS=-ltermcap fi fi if test $ol_link_termcap = no ; then AC_CHECK_LIB(ncurses, initscr, [have_ncurses=yes], [have_ncurses=no]) if test $have_ncurses = yes ; then AC_DEFINE(HAVE_NCURSES) ol_link_termcap=yes TERMCAP_LIBS=-lncurses fi fi if test $ol_link_termcap = no ; then AC_DEFINE(NO_TERMCAP,1) TERMCAP_LIBS= fi # FreeBSD (and others) have crypt(3) in -lcrypt if test $ol_enable_crypt != no ; then AC_CHECK_FUNC(crypt, [have_crypt=yes], [ AC_CHECK_LIB(crypt, crypt, [LUTIL_LIBS="$LUTIL_LIBS -lcrypt" have_crypt=yes], [have_crypt=no])]) if test $have_crypt = yes ; then AC_DEFINE(HAVE_CRYPT,1) else AC_MSG_WARN(could not find crypt) if test $ol_enable_crypt = yes ; then AC_MSG_ERROR(could not find crypt, select appropriate options or disable) fi AC_MSG_WARN(disabling crypt support) ol_enable_crypt=no fi fi # FreeBSD (and others) have setproctitle(3) in -lutil if test $ol_enable_proctitle != no ; then AC_CHECK_FUNC(setproctitle, [have_setproctitle=yes], [ AC_CHECK_LIB(util, setproctitle, [have_setproctitle=yes LUTIL_LIBS="$LUTIL_LIBS -lutil"], [have_setproctitle=no LIBOBJS="$LIBOBJS setproctitle.o"])]) if test $have_setproctitle = yes ; then AC_DEFINE(HAVE_SETPROCTITLE,1) fi fi dnl ---------------------------------------------------------------- dnl Checks for header files. AC_HEADER_STDC if test $ac_cv_header_stdc != yes; then AC_MSG_WARN([could not Standard C compliant headers]) fi AC_HEADER_DIRENT AC_HEADER_SYS_WAIT AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL if test $am_cv_sys_posix_termios = yes ; then AC_DEFINE(HAVE_POSIX_TERMIOS,1) fi AC_CHECK_HEADERS( \ crypt.h \ errno.h \ fcntl.h \ filio.h \ getopt.h \ libutil.h \ limits.h \ malloc.h \ memory.h \ regex.h \ psap.h \ pwd.h \ sgtty.h \ stdarg.h \ stddef.h \ string.h \ strings.h \ sys/file.h \ sys/filio.h \ sys/errno.h \ sys/ioctl.h \ sys/param.h \ sys/resource.h \ sys/socket.h \ sys/syslog.h \ sys/time.h \ sys/types.h \ syslog.h \ termios.h \ unistd.h \ ) dnl ---------------------------------------------------------------- dnl Checks for typedefs, structures, and compiler characteristics. AC_TYPE_GETGROUPS dnl requires AC_TYPE_UID_T AC_TYPE_MODE_T AC_TYPE_OFF_T AC_TYPE_PID_T AM_TYPE_PTRDIFF_T AC_TYPE_SIGNAL AC_TYPE_SIZE_T AC_STRUCT_ST_BLKSIZE AC_HEADER_TIME AC_STRUCT_TM OL_C_UPPER_LOWER AC_C_CONST if test $cross_compiling = yes ; then AC_DEFINE(CROSS_COMPILING, 1) else AC_C_BIGENDIAN AC_CHECK_SIZEOF(short) AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(long) fi dnl ---------------------------------------------------------------- dnl Checks for library functions. AC_FUNC_MEMCMP dnl AM_FUNC_MKTIME dnl checks for sys/time.h and unistd.h AC_FUNC_STRFTIME dnl AM_FUNC_STRTOD AC_FUNC_VPRINTF if test $ac_cv_func_vprintf = yes ; then dnl check for vsnprintf AC_CHECK_FUNCS(vsnprintf vsprintf) fi AC_FUNC_WAIT3 AC_CHECK_FUNCS( \ bcopy \ flock \ getdtablesize \ gethostname \ getpwuid \ gettimeofday \ lockf \ memcpy \ memmove \ mkstemp \ select \ setpwfile \ setsid \ signal \ sigset \ snprintf \ socket \ strerror \ strpbrk \ strrchr \ strsep \ strstr \ strtok \ strtol \ strtoul \ sysconf \ waitpid \ ) dnl We actually may need to replace more than this. AC_REPLACE_FUNCS(getopt strdup tempnam) dnl ---------------------------------------------------------------- # Check Configuration OL_SYS_ERRLIST dnl ---------------------------------------------------------------- dnl Sort out defines if test "$ol_enable_debug" != no ; then AC_DEFINE(LDAP_DEBUG,1) fi dnl if test "$ol_enable_syslog" != no ; then dnl AC_DEFINE(LDAP_SYSLOG,1) dnl fi if test "$ol_enable_libui" = yes ; then AC_DEFINE(LDAP_LIBUI,1) fi if test "$ol_enable_cache" = no ; then AC_DEFINE(LDAP_NOCACHE,1) fi if test "$ol_enable_dns" != no ; then AC_DEFINE(LDAP_DNS,1) fi if test "$ol_enable_proctitle" != no ; then AC_DEFINE(LDAP_PROCTITLE,1) fi if test "$ol_enable_referrals" != no ; then AC_DEFINE(LDAP_REFERRALS,1) fi if test "$ol_enable_cldap" != no ; then AC_DEFINE(LDAP_CONNECTIONLESS,1) fi if test "$ol_enable_aclgroups" != no ; then AC_DEFINE(SLAPD_ACLGROUPS,1) fi if test "$ol_enable_crypt" != no ; then AC_DEFINE(SLAPD_CRYPT,1) fi if test "$ol_enable_cleartext" != no ; then AC_DEFINE(SLAPD_CLEARTEXT,1) fi if test "$ol_enable_phonetic" != no ; then AC_DEFINE(SLAPD_PHONETIC,1) fi if test "$ol_enable_rlookups" != no ; then AC_DEFINE(SLAPD_RLOOKUPS,1) fi if test "$ol_link_ldbm" != no ; then AC_DEFINE(SLAPD_LDBM,1) BUILD_SLAPD=yes BUILD_LDBM=yes fi if test "$ol_enable_passwd" != no ; then AC_DEFINE(SLAPD_PASSWD,1) BUILD_SLAPD=yes BUILD_PASSWD=yes fi if test "$ol_enable_shell" != no ; then AC_DEFINE(SLAPD_SHELL,1) BUILD_SLAPD=yes BUILD_SHELL=yes fi if test "$ol_enable_slurpd" != no -a "$ol_link_threads" != no -a \ $BUILD_SLAPD = yes ; then BUILD_SLURPD=yes fi if test "$ol_link_isode" != no ; then BUILD_LDAPD=yes fi dnl ---------------------------------------------------------------- AC_SUBST(BUILD_LDAPD) AC_SUBST(BUILD_SLAPD) AC_SUBST(BUILD_LDBM) AC_SUBST(BUILD_PASSWD) AC_SUBST(BUILD_SHELL) AC_SUBST(BUILD_SLURPD) AC_SUBST(LDAP_LIBS) AC_SUBST(LDAPD_LIBS) AC_SUBST(SLAPD_LIBS) AC_SUBST(SLURPD_LIBS) AC_SUBST(LDBM_LIBS) AC_SUBST(LTHREAD_LIBS) AC_SUBST(LUTIL_LIBS) AC_SUBST(KRB_LIBS) AC_SUBST(TERMCAP_LIBS) dnl ---------------------------------------------------------------- dnl final output dnl AC_OUTPUT( \ Makefile:build/top.mk:Makefile.in:build/dir.mk \ doc/Makefile:build/top.mk:doc/Makefile.in:build/dir.mk \ doc/man/Makefile:build/top.mk:doc/man/Makefile.in:build/dir.mk \ doc/man/man1/Makefile:build/top.mk:doc/man/man1/Makefile.in:build/man.mk \ doc/man/man3/Makefile:build/top.mk:doc/man/man3/Makefile.in:build/man.mk \ doc/man/man5/Makefile:build/top.mk:doc/man/man5/Makefile.in:build/man.mk \ doc/man/man8/Makefile:build/top.mk:doc/man/man8/Makefile.in:build/man.mk \ clients/Makefile:build/top.mk:clients/Makefile.in:build/dir.mk \ clients/finger/Makefile:build/top.mk:clients/finger/Makefile.in:build/rules.mk \ clients/fax500/Makefile:build/top.mk:clients/fax500/Makefile.in:build/rules.mk \ clients/gopher/Makefile:build/top.mk:clients/gopher/Makefile.in:build/rules.mk \ clients/mail500/Makefile:build/top.mk:clients/mail500/Makefile.in:build/rules.mk \ clients/rcpt500/Makefile:build/top.mk:clients/rcpt500/Makefile.in:build/rules.mk \ clients/ud/Makefile:build/top.mk:clients/ud/Makefile.in:build/rules.mk \ clients/tools/Makefile:build/top.mk:clients/tools/Makefile.in:build/rules.mk \ include/Makefile:build/top.mk:include/Makefile.in \ libraries/Makefile:build/top.mk:libraries/Makefile.in:build/dir.mk \ libraries/libavl/Makefile:build/top.mk:libraries/libavl/Makefile.in:build/lib.mk:build/lib-static.mk \ libraries/liblber/Makefile:build/top.mk:libraries/liblber/Makefile.in:build/lib.mk:build/lib-shared.mk \ libraries/libldap/Makefile:build/top.mk:libraries/libldap/Makefile.in:build/lib.mk:build/lib-shared.mk \ libraries/libldbm/Makefile:build/top.mk:libraries/libldbm/Makefile.in:build/lib.mk:build/lib-static.mk \ libraries/libldif/Makefile:build/top.mk:libraries/libldif/Makefile.in:build/lib.mk:build/lib-static.mk \ libraries/liblthread/Makefile:build/top.mk:libraries/liblthread/Makefile.in:build/lib.mk:build/lib-static.mk \ libraries/liblutil/Makefile:build/top.mk:libraries/liblutil/Makefile.in:build/lib.mk:build/lib-static.mk \ servers/Makefile:build/top.mk:servers/Makefile.in:build/dir.mk \ servers/ldapd/Makefile:build/top.mk:servers/ldapd/Makefile.in:build/srv.mk \ servers/slapd/Makefile:build/top.mk:servers/slapd/Makefile.in:build/srv.mk \ servers/slapd/back-ldbm/Makefile:build/top.mk:servers/slapd/back-ldbm/Makefile.in:build/srv.mk \ servers/slapd/back-passwd/Makefile:build/top.mk:servers/slapd/back-passwd/Makefile.in:build/srv.mk \ servers/slapd/back-shell/Makefile:build/top.mk:servers/slapd/back-shell/Makefile.in:build/srv.mk \ servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk \ servers/slapd/tools/Makefile:build/top.mk:servers/slapd/tools/Makefile.in \ servers/slurpd/Makefile:build/top.mk:servers/slurpd/Makefile.in:build/srv.mk \ tests/Makefile:build/top.mk:tests/Makefile.in \ ,[ date > stamp-h echo Please \"make depend\" to build dependencies ])