X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=configure.in;h=349b82b08a08d322ef2ace2fab9292f8d9d5d675;hb=8ebec49d9ddb5c5d69b5a5e383f20125e416180e;hp=a3527f96d09125e518b79658e29058d302be117a;hpb=c8298ec23be5586abf26742ca4e6dc4581ff8d35;p=openldap diff --git a/configure.in b/configure.in index a3527f96d0..349b82b08a 100644 --- a/configure.in +++ b/configure.in @@ -1,10 +1,11 @@ -dnl Copyright 1998 The OpenLDAP Foundation. All Rights Reserved. +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 dnl Configure.in for OpenLDAP AC_INIT(include/ldap.h)dnl @@ -39,9 +40,9 @@ AC_ARG_WITH(subdir, [ --with-subdir=DIR change default subdirectory used for in AC_SUBST(ldap_subdir)dnl OL_ARG_ENABLE(debug,[ --enable-debug enable debugging], yes)dnl +ol_enable_syslog=no 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 V2 DNS extension], no)dnl OL_ARG_ENABLE(referrals,[ --enable-referrals enable V2 Referrals extension], yes)dnl @@ -49,7 +50,10 @@ 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_ENABLE(dmalloc,[ --enable-dmalloc enable debug malloc support], no)dnl + OL_ARG_WITH(kerberos,[ --with-kerberos use Kerberos], auto, [auto k5 k4 afs yes no]) OL_ARG_WITH(threads,[ --with-threads use threads], @@ -67,9 +71,8 @@ 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(md5,[ --enable-md5 enable MD5 passwords], auto)dnl -OL_ARG_ENABLE(sha1,[ --enable-sha1 enable SHA1 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 @@ -116,15 +119,6 @@ if test $ol_enable_slapd = no ; then if test $ol_enable_aclgroups = yes ; then AC_MSG_WARN([slapd disabled, ignoring --enable_aclgroups argument]) fi - if test $ol_enable_crypt = yes ; then - AC_MSG_WARN([slapd disabled, ignoring --enable_crypt argument]) - fi - if test $ol_enable_md5 = yes ; then - AC_MSG_WARN([slapd disabled, ignoring --enable_md5 argument]) - fi - if test $ol_enable_sha1 = yes ; then - AC_MSG_WARN([slapd disabled, ignoring --enable_sha1 argument]) - fi if test $ol_enable_wrappers = yes ; then AC_MSG_WARN([slapd disabled, ignoring --enable_wrappers argument]) fi @@ -149,9 +143,6 @@ if test $ol_enable_slapd = no ; then ol_enable_shell=no ol_enable_passwd=no ol_enable_aclgroups=no - ol_enable_crypt=no - ol_enable_md5=no - ol_enable_sha1=no ol_enable_wrappers=no ol_enable_phonetic=no ol_enable_rlookups=no @@ -318,6 +309,11 @@ if test $ol_link_isode != no; then 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) @@ -330,11 +326,11 @@ if test $ol_with_kerberos = auto -o $ol_with_kerberos = k5 ; then 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) @@ -347,14 +343,21 @@ if test $ol_with_kerberos = auto -o $ol_with_kerberos = k4 ; then AC_DEFINE(HAVE_KERBEROS) KRB_LIBS="-lkrb -ldes" - - AC_CHECK_FUNCS(des_string_to_key) 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 = posix ; then +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 @@ -402,6 +405,26 @@ if test $ol_with_threads = auto -o $ol_with_threads = posix ; then 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], @@ -466,6 +489,46 @@ if test $ol_with_threads = auto -o $ol_with_threads = posix ; then 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 HP-UX 11 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) @@ -583,10 +646,10 @@ static void *task(p) if(i < 0) { perror("select"); - exit(0); + exit(10); } - exit(1); /* if we exit here, the select blocked the whole process */ + exit(0); /* if we exit here, the select blocked the whole process */ } int main(argc, argv) @@ -598,7 +661,7 @@ int main(argc, argv) /* create a pipe to select */ if(pipe(&fildes[0])) { perror("select"); - exit(0); + exit(1); } #ifdef HAVE_PTHREAD_SETCONCURRENCY @@ -619,10 +682,11 @@ int main(argc, argv) pthread_yield(); /* make sure task runs first */ #endif #endif - exit(0); + + exit(2); }], - [ol_cv_pthread_select_yields=yes], - [ol_cv_pthread_select_yields=no], [ + [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) @@ -631,17 +695,6 @@ int main(argc, argv) fi fi -dnl dnl check for reentrant/threadsafe functions -dnl AC_CHECK_FUNCS( \ -dnl feof_unlocked \ -dnl unlocked_feof \ -dnl ftrylockfile \ -dnl flockfile \ -dnl putc_unlocked \ -dnl gmtime_r \ -dnl strtok_r \ -dnl ) - dnl restore flags CPPFLAGS="$save_CPPFLAGS" LIBS="$save_LIBS" @@ -655,7 +708,9 @@ dnl ) fi fi -if test $ol_with_threads = auto -o $ol_with_threads = mach ; then +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 @@ -698,7 +753,9 @@ if test $ol_with_threads = auto -o $ol_with_threads = mach ; then fi fi -if test $ol_with_threads = auto -o $ol_with_threads = lwp ; then +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 @@ -751,7 +808,7 @@ if test $ol_with_threads = manual ; then AC_CHECK_HEADERS(thread.h synch.h) fi -if test $ol_with_threads != no ; then +if test $ol_link_threads != no ; then dnl needed to get reentrant/threadsafe versions dnl AC_DEFINE(REENTRANT,1) @@ -780,6 +837,58 @@ int x = errno; LIBS="$LTHREAD_LIBS $LIBS" LTHREAD_LIBS="" fi + +dnl When in thread environment, use +dnl #if defined( HAVE_REENTRANT_FUNCTIONS ) \ +dnl || defined( HAVE_FUNC_R ) +dnl func_r(...); +dnl #else +dnl # if defined( HAVE_THREADS ) +dnl /* lock */ +dnl # endif +dnl func(...); +dnl # if defined( HAVE_THREADS ) +dnl /* unlock */ +dnl # endif +dnl #endif +dnl +dnl HAVE_REENTRANT_FUNCTIONS is derived from: +dnl _POSIX_REENTRANT_FUNCTIONS +dnl _POSIX_THREAD_SAFE_FUNCTIONS +dnl _POSIX_THREADSAFE_FUNCTIONS +dnl +dnl and is currently defined in lthread.h +dnl +dnl HAVE_THREADS is defined by lthread.h iff -UNO_THREADS +dnl +dnl libldap/*.c should only include iff +dnl LDAP_R_COMPILE is defined. ie: +dnl #ifdef LDAP_R_COMPILE +dnl # include LDAP_R_COMPILE +dnl #endif +dnl +dnl LDAP_R_COMIPLE is defined by libldap_r/Makefile.in +dnl specifically for compiling the threadsafe version of +dnl the ldap library (-lldap_r). +dnl +dnl dnl check for reentrant/threadsafe functions +dnl dnl +dnl dnl note: these should only be used when linking +dnl dnl with $LTHREAD_LIBS +dnl dnl +dnl save_CPPFLAGS="$CPPFLAGS" +dnl save_LIBS="$LIBS" +dnl LIBS="$LTHREAD_LIBS $LIBS" +dnl AC_CHECK_FUNCS( \ +dnl strtok_r \ +dnl gmtime_r \ +dnl gethostbyaddr_r gethostbyname_r \ +dnl feof_unlocked unlocked_feof \ +dnl putc_unlocked unlocked_putc \ +dnl flockfile ftrylockfile \ +dnl ) +dnl CPPFLAGS="$save_CPPFLAGS" +dnl LIBS="$save_LIBS" fi dnl ---------------------------------------------------------------- @@ -868,14 +977,12 @@ if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = gdbm ; then fi fi -if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = ndbm ; then +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 - if test $ol_with_ldbm_api = auto ; then - AC_MSG_WARN([Attempting to use NDBM. Functionality will be limited.]) - fi - ol_link_ldbm=ndbm ol_with_ldbm_api=ndbm @@ -895,8 +1002,8 @@ if test $ol_link_ldbm = no -a $ol_enable_ldbm != no ; then ol_enable_ldbm=no fi -if test $ol_enable_wrappers = yes ; then - AC_CHECK_LIB(wrap, hosts_access, +if test $ol_enable_wrappers != no ; then + AC_CHECK_LIB(wrap, main, [have_wrappers=yes], [have_wrappers=no]) if test $have_wrappers = yes ; then @@ -914,6 +1021,19 @@ if test $ol_enable_wrappers = yes ; then fi +if test $ol_enable_syslog != no ; then + AC_CHECK_FUNC(openlog) + if test $ac_cv_func_openlog = no -a $ol_enable_syslog = yes; then + AC_MSG_ERROR(could not find syslog, select appropriate options or disable) + fi + ol_enable_syslog=$ac_cv_func_openlog +fi + +if test $ol_enable_dmalloc != no ; then + AC_CHECK_HEADERS(dmalloc.h) + AC_CHECK_LIB(dmalloc, dmalloc_shutdown) +fi + # ud needs termcap (should insert check here) ol_link_termcap=no AC_CHECK_HEADERS(termcap.h ncurses.h) @@ -1030,6 +1150,7 @@ AC_TYPE_OFF_T AC_TYPE_PID_T AM_TYPE_PTRDIFF_T AC_TYPE_SIGNAL +OL_TYPE_SIG_ATOMIC_T AC_TYPE_SIZE_T AC_STRUCT_ST_BLKSIZE AC_HEADER_TIME @@ -1037,6 +1158,7 @@ AC_STRUCT_TM OL_C_UPPER_LOWER AC_C_CONST +OL_C_VOLATILE if test $cross_compiling = yes ; then AC_DEFINE(CROSS_COMPILING, 1) @@ -1057,7 +1179,7 @@ AC_FUNC_VPRINTF if test $ac_cv_func_vprintf = yes ; then dnl check for vsnprintf - AC_CHECK_FUNCS(vsnprintf) + AC_CHECK_FUNCS(vsnprintf vsprintf) fi AC_FUNC_WAIT3 @@ -1093,6 +1215,27 @@ AC_CHECK_FUNCS( \ waitpid \ ) +# these functions are required to build a thread_safe -lldap +AC_CHECK_FUNCS( \ + strtok_r \ + ctime_r \ + gethostbyaddr_r \ + gethostbyname_r \ +) + +if test $ac_cv_func_strtok_r = yes \ + -a $ac_cv_func_ctime_r = yes \ + -a $ac_cv_func_gethostbyaddr_r = yes \ + -a $ac_cv_func_gethostbyname_r = yes \ + ; then + + AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_REENTRANT, 1) +fi + +if test $ol_link_threads != no ; then + AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE, 1) +fi + dnl We actually may need to replace more than this. AC_REPLACE_FUNCS(getopt strdup tempnam) @@ -1103,74 +1246,71 @@ OL_SYS_ERRLIST dnl ---------------------------------------------------------------- dnl Sort out defines -if test $ol_enable_debug != no ; then +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 +if test "$ol_enable_syslog" = yes ; then + AC_DEFINE(LDAP_SYSLOG,1) +fi +if test "$ol_enable_libui" = yes ; then AC_DEFINE(LDAP_LIBUI,1) fi -if test $ol_enable_cache = no ; then +if test "$ol_enable_cache" = no ; then AC_DEFINE(LDAP_NOCACHE,1) fi -if test $ol_enable_dns != no ; then +if test "$ol_enable_dns" != no ; then AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_DNS,LDAP_API_VENDOR_VERSION,1) fi -if test $ol_enable_proctitle != no ; then +if test "$ol_enable_proctitle" != no ; then AC_DEFINE(LDAP_PROCTITLE,1) fi -if test $ol_enable_referrals != no ; then +if test "$ol_enable_referrals" != no ; then AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS,LDAP_API_VENDOR_VERSION,1) fi -if test $ol_enable_cldap != no ; then +if test "$ol_enable_cldap" != no ; then AC_DEFINE(LDAP_CONNECTIONLESS,1) fi -if test $ol_enable_aclgroups != no ; then +if test "$ol_enable_aclgroups" != no ; then AC_DEFINE(SLAPD_ACLGROUPS,1) fi -if test $ol_enable_crypt != no ; then +if test "$ol_enable_crypt" != no ; then AC_DEFINE(SLAPD_CRYPT,1) fi -if test $ol_enable_md5 != no ; then - AC_DEFINE(SLAPD_MD5,1) -fi -if test $ol_enable_sha1 != no ; then - AC_DEFINE(SLAPD_SHA1,1) +if test "$ol_enable_cleartext" != no ; then + AC_DEFINE(SLAPD_CLEARTEXT,1) fi -if test $ol_enable_phonetic != no ; then +if test "$ol_enable_phonetic" != no ; then AC_DEFINE(SLAPD_PHONETIC,1) fi -if test $ol_enable_rlookups != no ; then +if test "$ol_enable_rlookups" != no ; then AC_DEFINE(SLAPD_RLOOKUPS,1) fi -if test $ol_link_ldbm != no ; then +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 +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 +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 \ +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 +if test "$ol_link_isode" != no ; then BUILD_LDAPD=yes fi @@ -1220,6 +1360,7 @@ 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/libldap_r/Makefile:build/top.mk:libraries/libldap_r/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 \