X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=configure.in;h=0b5967cc633bf1130c403116936054c092df1481;hb=4bce7aa748e22351b44b5752cce979812bea8ad1;hp=e04cff3119292886dbc380c2c82bcde256785500;hpb=b2d9693254b4da133cb73b4703ff816171a8754b;p=openldap diff --git a/configure.in b/configure.in index e04cff3119..0b5967cc63 100644 --- a/configure.in +++ b/configure.in @@ -23,18 +23,20 @@ AC_PREFIX_DEFAULT(/usr/local) dnl General "enable" options OL_ARG_ENABLE(debug,[ --enable-debug enable debugging], yes)dnl -#OL_ARG_ENABLE(syslog,[ --enable-syslog enable syslog support], auto)dnl +dnl OL_ARG_ENABLE(syslog,[ --enable-syslog enable syslog support], auto)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], auto)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-clapd enable connectionless ldap], no)dnl +OL_ARG_ENABLE(cldap,[ --enable-cldap enable connectionless ldap], 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 dce mach yes no manual] ) + auto, [auto posix mach lwp yes no manual] ) +OL_ARG_WITH(preemptive,[ --with-preemptive thread implementation is preemptive], + auto, [auto yes no manual] ) dnl Server options @@ -162,20 +164,13 @@ fi AC_MSG_RESULT(done) ## Initialize vars -LDAP_DEFS= LDAP_LIBS= -LDBM_DEFS= LDBM_LIBS= -LTHREAD_DEFS= LTHREAD_LIBS= -LUTIL_DEFS= LUTIL_LIBS= -LDAPD_DEFS= LDAPD_LIBS= -SLAPD_DEFS= SLAPD_LIBS= -SLURPD_DEFS= SLURPD_LIBS= BUILD_LDAPD=no @@ -186,12 +181,12 @@ BUILD_LDBM=no BUILD_PASSWD=no BUILD_SHELL=no +KRB_LIBS= +TERMCAP_LIBS= + dnl ---------------------------------------------------------------- dnl Checks for programs -AC_PROG_CC -AC_PROG_GCC_TRADITIONAL - AC_PROG_LN_S AC_PROG_INSTALL AC_PROG_RANLIB @@ -202,20 +197,83 @@ AC_PATH_PROG(SENDMAIL, sendmail, /usr/lib/sendmail, 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 +AC_PROG_CC +AC_PROG_GCC_TRADITIONAL + +AC_AIX +AC_ISC_POSIX +AC_MINIX + dnl ---------------------------------------------------------------- dnl Checks for libraries +dnl Find socket() +dnl Likely combinations: +dnl -lsocket [ -lnsl_s | -lnsl ] +dnl -linet + +AC_CHECK_FUNC(socket, :, [ +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 HP-UX requires -lV3 +AC_CHECK_LIB(V3, sigset) + +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 + + ol_link_threads=no if test $ol_with_threads = auto -o $ol_with_threads = posix ; then AC_CHECK_HEADERS(pthread.h sched.h) - if test "$ac_cv_header_pthread_h" = yes ; then + if test $ac_cv_header_pthread_h = yes ; then OL_POSIX_THREAD_VERSION if test $ol_cv_pthread_version = final ; then - LTHREAD_DEFS="$LTHREAD_DEFS -DPOSIX_THREADS" + dnl AC_DEFINE(HAVE_PTHREADS_FINAL) elif test $ol_cv_pthread_version = draft4 ; then - LTHREAD_DEFS="$LTHREAD_DEFS -DTHREAD_MIT_PTHREADS" + AC_DEFINE(HAVE_PTHREADS_D4) else AC_MSG_ERROR([unknown pthread version]) fi @@ -226,8 +284,7 @@ if test $ol_with_threads = auto -o $ol_with_threads = posix ; then OL_LINUX_THREADS if test $ol_cv_linux_threads = yes ; then -dnl AC_DEFINE(HAVE_LINUX_THREADS,1) - LTHREAD_DEFS="$LTHREAD_DEFS -DHAVE_LINUX_THREADS" + AC_DEFINE(HAVE_LINUX_THREADS,1) fi dnl Now the hard part, how to link @@ -278,16 +335,100 @@ dnl AC_DEFINE(HAVE_LINUX_THREADS,1) dnl try DEC Threads save_LIBS="$LIBS" AC_CHECK_LIB(pthread, pthread_create, [ + AC_DEFINE(HAVE_DCE) ol_link_threads=posix - LTHREAD_DEFS="$LTHREAD_DEFS -DDEC_THREADS" LTHREAD_LIBS="$LTHREAD_LIBS -lpthread -lmach -lexc -lc"],, + if test $with_preemptive = auto ; then + ol_with_preemptive=yes + fi [-lmach -lexc -lc]) LIBS="$save_LIBS" fi if test $ol_link_threads != no ; then - dnl All POSIX Thread (final) implementations should have sched_yield - AC_CHECK_FUNC(sched_yield) + AC_DEFINE(HAVE_PTHREADS) + + dnl save DEFS/LIBS + 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 + + 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) +dnl AC_CHECK_FUNCS( +dnl pthread_attr_create pthread_attr_init \ +dnl pthread_attr_destroy pthread_attr_delete \ +dnl pthread_attr_setdetachstate pthread_attr_setdetach_np \ +dnl ) + + dnl Check PREEMPTIVE Implementation + if test $ol_with_preemptive = auto ; then + AC_MSG_CHECKING([for preemptive Pthread implementation]) + AC_TRY_RUN([ +#include +#include +#include +#include +#ifndef NULL +#define NULL 0 +#endif + +int task(arg) + int *arg; +{ + struct timeval tv; + + tv.tv_sec=4; + tv.tv_usec=0; + select(0, NULL, NULL, NULL, &tv); + + tv.tv_sec=6; + tv.tv_usec=0; + select(0, NULL, NULL, NULL, &tv); + + exit(1); /* if we exit here, the select blocked the whole process */ +} + +main(argc, argv) +int argc; char **argv; +{ + pthread_t t; + pthread_create(&t, NULL, (void *) task, NULL); + +#if HAVE_SCHED_YIELD + sched_yield(); /* make sure task runs first */ +#else +#if defined(HAVE_PTHREAD_YIELD) + pthread_yield(); /* make sure task runs first */ +#endif +#endif + exit(0); +} + ], [ol_pthread_preemptive=yes], [ol_pthread_preemptive=no], [ + AC_MSG_ERROR([crossing compiling: use --with-preemptive=yes|no|manual])]) + AC_MSG_RESULT($ol_pthread_preemptive) + + if test $ol_pthread_preemptive = yes ; then + AC_DEFINE(HAVE_PREEMPTIVE_PTHREADS) + ol_with_preemptive=yes + fi + fi + + dnl restore DEFS/LIBS + CPPFLAGS="$save_CPPFLAGS" + LIBS="$save_LIBS" else AC_MSG_ERROR([could not link with POSIX Threads]) fi @@ -298,6 +439,52 @@ dnl AC_DEFINE(HAVE_LINUX_THREADS,1) fi fi +if test $ol_with_threads = auto -o $ol_with_threads = cthreads ; then + dnl check for Mach CThreads + AC_CHECK_HEADERS(mach/cthreads.h) + if test $ac_cv_header_lwp_lwp_h = yes ; then + AC_CHECK_LIB(lwp, cthread_fork, [have_cthreads=yes], [have_cthreads=no]) + + if test $have_cthreads = yes ; then + AC_DEFINE(HAVE_MACH_CTHREADS) + LTHREAD_LIBS="$LTHREAD_LIBS -llwp" + fi + fi +fi + +if test $ol_with_threads = auto -o $ol_with_threads = lwp ; then + dnl check for SunOS5 LWP + AC_CHECK_HEADERS(thread.h synch.h) + if test $ac_cv_header_lwp_lwp_h = yes ; then + AC_CHECK_LIB(thread, thr_create, [have_lwp=yes], [have_lwp=no]) + + if test $have_lwp = yes ; then + AC_DEFINE(HAVE_LWP) + AC_DEFINE(HAVE_LWP_THR) + LTHREAD_LIBS="$LTHREAD_LIBS -llwp" + fi + fi + + dnl check for SunOS4 LWP + AC_CHECK_HEADERS(lwp/lwp.h) + if test $ac_cv_header_thread_h = yes -a $ac_cv_header_synch_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" + + if test $with_preemptive = auto ; then + with_preemptive=yes + fi + fi + fi +fi + +if test $ol_with_preemptive = yes ; then + AC_DEFINE(THREAD_PREEMPTIVE,1) +fi + if test $ol_with_threads = manual ; then dnl User thinks he can manually configure threads. $ol_link_threads=yes @@ -305,8 +492,12 @@ if test $ol_with_threads = manual ; then AC_MSG_WARN([thread defines and link options must be set manually]) AC_CHECK_HEADERS(pthread.h sched.h) - AC_CHECK_FUNC(sched_yield) + 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 @@ -319,7 +510,7 @@ if test $ol_link_threads = no ; then $ol_with_threads = no fi - LTHREAD_DEFS="-DNO_THREADS" + AC_DEFINE(NO_THREADS,1) LTHREAD_LIBS="" fi @@ -331,12 +522,10 @@ if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = db2 ; then ol_link_ldbm=db2 ol_with_ldbm_api=db2 - LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DB2" - if test $ol_with_ldbm_type = hash ; then - LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBHASH" + AC_DEFINE(LDBM_USE_DBHASH,1) else - LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBBTREE" + AC_DEFINE(LDBM_USE_DBBTREE,1) fi dnl $ol_cv_lib_db2 should be yes or -ldb @@ -354,14 +543,10 @@ if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = db ; then ol_link_ldbm=db ol_with_ldbm_api=db - if test $ac_cv_header_db_185_h = yes ; then - LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DB2_COMPAT185" - fi - if test $ol_with_ldbm_type = hash ; then - LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBHASH" + AC_DEFINE(LDBM_USE_DBHASH,1) else - LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBBTREE" + AC_DEFINE(LDBM_USE_DBBTREE,1) fi dnl $ol_cv_lib_db should be yes or -ldb @@ -393,8 +578,6 @@ if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = gdbm ; then ol_link_ldbm=gdbm ol_with_ldbm_api=gdbm - LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_GDBM" - if test $ol_cv_lib_gdbm != yes ; then LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_gdbm" fi @@ -412,8 +595,6 @@ if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = ndbm ; then AC_WARN([Attempting to use NDBM. Functionality will be limited.]) fi - LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_NDBM" - if test $ol_cv_lib_ndbm != yes ; then LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_ndbm" fi @@ -435,9 +616,7 @@ if test $ol_enable_wrappers = yes ; then [have_wrappers=yes], [have_wrappers=no]) if test $have_wrappers = yes ; then -dnl LIBTCPD="-lwrap" -dnl AC_DEFINE(HAVE_TCPD) - SLAPD_DEFS="$SLAPD_DEFS -DTCP_WRAPPERS" + AC_DEFINE(HAVE_TCPD) SLAPD_LIBS="$SLAPD_LIBS -lwrap" else AC_MSG_WARN(could not find -lwrap) @@ -452,8 +631,31 @@ dnl AC_DEFINE(HAVE_TCPD) fi # ud needs termcap (should insert check here) -LIBTERMCAP="-ltermcap" -AC_SUBST(LIBTERMCAP) +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 @@ -462,8 +664,7 @@ if test $ol_enable_crypt != no ; then have_crypt=yes], [have_crypt=no])]) if test $have_crypt = yes ; then -dnl AC_DEFINE(SLAPD_CRYPT,1) - LUTIL_DEFS="$LUTIL_DEFS -DLDAP_CRYPT" + AC_DEFINE(HAVE_CRYPT) else AC_MSG_WARN(could not find crypt) if test $ol_enable_crypt = yes ; then @@ -482,15 +683,23 @@ AC_HEADER_DIRENT AC_HEADER_SYS_WAIT AC_CHECK_HEADERS( \ stddef.h \ + errno.h \ fcntl.h \ + filio.h \ + getopt.h \ limits.h \ malloc.h \ + regex.h \ sgtty.h \ sys/file.h \ + sys/errno.h \ sys/ioctl.h \ + sys/param.h \ + sys/socket.h\ sys/time.h \ + sys/types.h \ syslog.h \ - termio.h \ + termios.h \ unistd.h \ ) @@ -507,35 +716,48 @@ AC_STRUCT_ST_BLKSIZE AC_HEADER_TIME AC_STRUCT_TM -dnl AC_C_BIGENDIAN +AC_C_BIGENDIAN AC_C_CONST +dnl AC_CHECK_SIZEOF(short) +dnl AC_CHECK_SIZEOF(int) +dnl AC_CHECK_SIZEOF(long) + dnl ---------------------------------------------------------------- dnl Checks for library functions. AC_FUNC_MEMCMP -AC_TYPE_SIGNAL AC_FUNC_STRFTIME AC_FUNC_VPRINTF AC_FUNC_WAIT3 AC_CHECK_FUNCS( \ + bcopy \ + getopt \ + flock \ gethostname \ gettimeofday \ + getdtablesize \ + lockf \ + memcpy \ + memmove \ mktime \ select \ + setpwfile \ + setsid \ + signal \ + sigset \ socket \ - strdup \ strerror \ strstr \ strrchr \ + strsep \ strtod \ strtol \ strtoul \ - strsep \ - memcpy \ + sysconf \ ) -AC_REPLACE_FUNCS(strdup) +AC_REPLACE_FUNCS(getopt strdup) dnl ---------------------------------------------------------------- # Check Configuration @@ -545,71 +767,67 @@ dnl ---------------------------------------------------------------- dnl Sort out defines if test $ol_enable_debug != no ; then - LDAP_DEFS="$LDAP_DEFS -DLDAP_DEBUG" + AC_DEFINE(LDAP_DEBUG,1) fi -#if test $ol_enable_syslog != no ; then -# LDAP_DEFS="$LDAP_DEFS -DLDAP_SYSLOG" -#fi -if test $ol_enable_libui = no ; then - LDAP_DEFS="$LDAP_DEFS -DNO_USERINTERFACE" +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 - LDAP_DEFS="$LDAP_DEFS -DNO_CACHE" + AC_DEFINE(LDAP_NOCACHE,1) fi if test $ol_enable_dns != no ; then - LDAP_DEFS="$LDAP_DEFS -DLDAP_DNS" + AC_DEFINE(LDAP_DNS,1) fi if test $ol_enable_referrals != no ; then - LDAP_DEFS="$LDAP_DEFS -DLDAP_REFERRALS" + AC_DEFINE(LDAP_REFERRALS,1) fi if test $ol_enable_cldap != no ; then - LDAP_DEFS="$LDAP_DEFS -DCLDAP" + AC_DEFINE(LDAP_CONNECTIONLESS,1) fi if test $ol_enable_aclgroup != no ; then AC_DEFINE(SLAPD_ACLGROUP,1) - SLAPD_DEFS="$SLAPD_DEFS -DACLGROUP" +fi + +if test $ol_enable_crypt != no ; then + AC_DEFINE(SLAPD_CRYPT,1) fi if test $ol_enable_md5 != no ; then -dnl AC_DEFINE(SLAPD_MD5,1) - LUTIL_DEFS="$LUTIL_DEFS -DLDAP_MD5" + AC_DEFINE(SLAPD_MD5,1) fi if test $ol_enable_sha1 != no ; then -dnl AC_DEFINE(SLAPD_SHA1,1) - LUTIL_DEFS="$LUTIL_DEFS -DLDAP_SHA1" + AC_DEFINE(SLAPD_SHA1,1) fi if test $ol_enable_phonetic != no ; then AC_DEFINE(SLAPD_PHONETIC,1) - SLAPD_DEFS="$SLAPD_DEFS -DSOUNDEX" fi if test $ol_enable_rlookups != no ; then AC_DEFINE(SLAPD_RLOOKUPS,1) - SLAPD_DEFS="$SLAPD_DEFS -DREVERSE_LOOKUPS" fi if test $ol_link_ldbm != no ; then -dnl AC_DEFINE(SLAPD_LDBM,1) + AC_DEFINE(SLAPD_LDBM,1) BUILD_SLAPD=yes BUILD_LDBM=yes - LDBM_DEFS="-DLDAP_LDBM $LDBM_DEFS" fi if test $ol_enable_passwd != no ; then -dnl AC_DEFINE(SLAPD_PASSWD,1) + AC_DEFINE(SLAPD_PASSWD,1) BUILD_SLAPD=yes BUILD_PASSWD=yes - SLAPD_DEFS="-DLDAP_PASSWD $SLAPD_DEFS" fi if test $ol_enable_shell != no ; then -dnl AC_DEFINE(SLAPD_SHELL,1) + AC_DEFINE(SLAPD_SHELL,1) BUILD_SLAPD=yes BUILD_SHELL=yes - SLAPD_DEFS="-DLDAP_SHELL $SLAPD_DEFS" fi if test $ol_enable_slurpd != no -a $ol_link_threads != no -a \ @@ -627,21 +845,17 @@ AC_SUBST(BUILD_SLAPD) AC_SUBST(BUILD_SLURPD) -AC_SUBST(LDAP_DEFS) AC_SUBST(LDAP_LIBS) -AC_SUBST(LDAPD_DEFS) AC_SUBST(LDAPD_LIBS) -AC_SUBST(SLAPD_DEFS) AC_SUBST(SLAPD_LIBS) -AC_SUBST(SLURPD_DEFS) AC_SUBST(SLURPD_LIBS) -AC_SUBST(LDBM_DEFS) AC_SUBST(LDBM_LIBS) -AC_SUBST(LTHREAD_DEFS) AC_SUBST(LTHREAD_LIBS) -AC_SUBST(LUTIL_DEFS) AC_SUBST(LUTIL_LIBS) +AC_SUBST(KRB_LIBS) +AC_SUBST(TERMCAP_LIBS) + dnl ---------------------------------------------------------------- dnl final output dnl