]> git.sur5r.net Git - openldap/commitdiff
Fix pthreads version detection
authorHoward Chu <hyc@openldap.org>
Wed, 11 Sep 2002 07:43:20 +0000 (07:43 +0000)
committerHoward Chu <hyc@openldap.org>
Wed, 11 Sep 2002 07:43:20 +0000 (07:43 +0000)
build/openldap.m4

index 9a565db8b335d0fc6fb209bd2dede00bdaa8e1aa..e1f935c97031e9667b71530c49c04d12314dd859 100644 (file)
@@ -629,48 +629,43 @@ dnl               or that pthreads.h does exist.  Existence of pthreads.h
 dnl            should be tested separately.
 dnl
 dnl tests:
-dnl    pthread_yield() was renamed to sched_yield() in Draft 10, so
-dnl            only a Draft 10 library will define this
-dnl    PTHREAD_INTR_ENABLE was introduced in Draft 6, and renamed to
-dnl            PTHREAD_CANCEL_ENABLE in Draft 7. Draft 7-10 has _CANCEL_,
-dnl            only Draft 6 has _INTR_
+dnl    pthread_yield() was dropped in Draft 9, so
+dnl            only a Draft <= 8 library will define this
+dnl    pthread_detach() was dropped in Draft 8, it is present
+dnl            in every other version
+dnl    PTHREAD_CREATE_UNDETACHED is only in Draft 7, it was called
+dnl            PTHREAD_CREATE_JOINABLE after that
+dnl    pthread_attr_default was dropped in Draft 6, only 4 and 5 have it
 dnl    PTHREAD_MUTEX_INITIALIZER was introduced in Draft 5. It's not
 dnl            interesting to us because we don't try to statically
 dnl            initialize mutexes. 5-10 has it.
 dnl    pthread_attr_create was renamed to pthread_attr_init after Draft 4.
 dnl            Draft 6-10 has _init, Draft 4 has _create. (dunno about 5)
 dnl
-dnl Besides the use of sched_yield vs pthread_yield, differences from
-dnl Draft 7 thru Draft 10 don't appear significant for our purposes.
+dnl Draft 9 and 10 are equivalent for our purposes.
 dnl
 AC_DEFUN([OL_POSIX_THREAD_VERSION],
 [AC_CACHE_CHECK([POSIX thread version],[ol_cv_pthread_version],[
-       AC_EGREP_HEADER(sched_yield,pthread.h,
-       ol_cv_pthread_version=10, [
-       
+       AC_EGREP_HEADER(pthread_yield,pthread.h,[
+       AC_EGREP_HEADER(pthread_detach,pthread.h,[
        AC_EGREP_CPP(draft7,[
 #              include <pthread.h>
-#              ifdef PTHREAD_CANCEL_ENABLE
+#              ifdef PTHREAD_CREATE_JOINABLE
                draft7
 #              endif
        ], ol_cv_pthread_version=7, [
-
-       AC_EGREP_CPP(draft6,[
-#              include <pthread.h>
-#ifdef         PTHREAD_INTR_ENABLE
-               draft6
-#endif
-       ], ol_cv_pthread_version=6, [
-
+       AC_EGREP_HEADER(pthread_attr_default,pthread.h,[
        AC_EGREP_CPP(draft5,[
 #              include <pthread.h>
 #ifdef         PTHREAD_MUTEX_INITIALIZER
                draft5
 #endif
        ], ol_cv_pthread_version=5, [
-
        AC_EGREP_HEADER(pthread_attr_create,pthread.h,
-       ol_cv_pthread_version=4, ol_cv_pthread_version=0) ]) ]) ]) ])
+       ol_cv_pthread_version=4, ol_cv_pthread_version=0) ]) ],
+       ol_cv_pthread_version=6) ]) ],
+       ol_cv_pthread_version=8) ],
+       ol_cv_pthread_version=10)
 ])
 ])dnl
 dnl