X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=configure.in;h=349b82b08a08d322ef2ace2fab9292f8d9d5d675;hb=8ebec49d9ddb5c5d69b5a5e383f20125e416180e;hp=ed3f511d699be2cddffc95d978416fa62a84ab22;hpb=76fe6f86bdaed431d1b3c2d6c2497db0b8b20f28;p=openldap diff --git a/configure.in b/configure.in index ed3f511d69..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], @@ -305,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) @@ -317,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) @@ -334,12 +343,17 @@ 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 = yes \ -o $ol_with_threads = posix ; then @@ -475,6 +489,46 @@ if test $ol_with_threads = auto -o $ol_with_threads = yes \ 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) @@ -592,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) @@ -607,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 @@ -628,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) @@ -640,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" @@ -793,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 ---------------------------------------------------------------- @@ -906,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 @@ -925,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) @@ -1041,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 @@ -1048,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) @@ -1068,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 @@ -1104,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) @@ -1114,71 +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_cleartext != no ; then +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 @@ -1228,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 \