From: Howard Chu Date: Wed, 18 Sep 2002 00:11:53 +0000 (+0000) Subject: Fix pthread version check again X-Git-Tag: NO_SLAP_OP_BLOCKS~966 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=9c80832e08ba5233c6816a72ddf2c654630416f7;p=openldap Fix pthread version check again --- diff --git a/build/openldap.m4 b/build/openldap.m4 index 8369493b66..e49cebf15d 100644 --- a/build/openldap.m4 +++ b/build/openldap.m4 @@ -621,47 +621,48 @@ dnl dnl ==================================================================== dnl Check POSIX Thread version dnl -dnl defines ol_cv_pthread_version to 4, 5, 6, 7, 10, depending on the +dnl defines ol_cv_pthread_version to 4, 5, 6, 7, 8, 10, depending on the dnl version of the POSIX.4a Draft that is implemented. dnl 10 == POSIX.4a Final == POSIX.1c-1996 for our purposes. -dnl Existence of pthreads.h should be tested separately. +dnl Existence of pthread.h should be tested separately. dnl dnl tests: -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_create was renamed to pthread_attr_init in Draft 6. +dnl Draft 6-10 has _init, Draft 4-5 has _create. 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 in Draft 6. -dnl Draft 6-10 has _init, Draft 4-5 has _create. dnl 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(pthread_yield,pthread.h,[ - AC_EGREP_HEADER(pthread_detach,pthread.h,[ + AC_TRY_COMPILE([ +# include + ],[ + int i = PTHREAD_CREATE_JOINABLE; + ],[ + AC_EGREP_HEADER(pthread_detach,pthread.h, + ol_cv_pthread_version=10, ol_cv_pthread_version=8)],[ AC_EGREP_CPP(draft7,[ # include # ifdef PTHREAD_CREATE_UNDETACHED draft7 # endif ], ol_cv_pthread_version=7, [ - AC_EGREP_HEADER(pthread_attr_default,pthread.h,[ + AC_EGREP_HEADER(pthread_attr_init,pthread.h, + ol_cv_pthread_version=6, [ AC_EGREP_CPP(draft5,[ # include #ifdef PTHREAD_MUTEX_INITIALIZER draft5 #endif - ], ol_cv_pthread_version=5, ol_cv_pthread_version=4) ], - ol_cv_pthread_version=6) ]) ], - ol_cv_pthread_version=8) ], - ol_cv_pthread_version=10) + ], ol_cv_pthread_version=5, ol_cv_pthread_version=4) ]) ]) ]) ]) ])dnl dnl