]> git.sur5r.net Git - openldap/blobdiff - configure.in
Make sure that four characters, rather than only the first three,
[openldap] / configure.in
index 1cdaf1abea96865a359ea21b5325344871cea167..fe61280237a6406ce33ee3c9839272d2ea50b5e2 100644 (file)
@@ -305,6 +305,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 +322,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,14 +339,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
@@ -389,6 +401,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],
@@ -453,6 +485,15 @@ 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
+
                if test $ol_link_threads != no ; then
                        AC_DEFINE(HAVE_PTHREADS)
 
@@ -570,10 +611,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)
@@ -585,7 +626,7 @@ int main(argc, argv)
        /* create a pipe to select */
        if(pipe(&fildes[0])) {
                perror("select");
-               exit(0);
+               exit(1);
        }
 
 #ifdef HAVE_PTHREAD_SETCONCURRENCY
@@ -606,10 +647,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)
 
@@ -618,17 +660,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"
@@ -642,7 +673,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
@@ -685,7 +718,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
@@ -738,7 +773,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)
@@ -767,6 +802,25 @@ int x = errno;
                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 ----------------------------------------------------------------
@@ -855,14 +909,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