From: Howard Chu Date: Wed, 11 Sep 2002 07:43:20 +0000 (+0000) Subject: Fix pthreads version detection X-Git-Tag: NO_SLAP_OP_BLOCKS~988 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=97b98783c3a6b84d40403f25f6318540752d2204;p=openldap Fix pthreads version detection --- diff --git a/build/openldap.m4 b/build/openldap.m4 index 9a565db8b3..e1f935c970 100644 --- a/build/openldap.m4 +++ b/build/openldap.m4 @@ -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 -# ifdef PTHREAD_CANCEL_ENABLE +# ifdef PTHREAD_CREATE_JOINABLE draft7 # endif ], ol_cv_pthread_version=7, [ - - AC_EGREP_CPP(draft6,[ -# include -#ifdef PTHREAD_INTR_ENABLE - draft6 -#endif - ], ol_cv_pthread_version=6, [ - + AC_EGREP_HEADER(pthread_attr_default,pthread.h,[ AC_EGREP_CPP(draft5,[ # include #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