Fix pthread version check again

This commit is contained in:
Howard Chu 2002-09-18 00:11:53 +00:00
parent 043e5c5a13
commit 9c80832e08

View File

@ -621,47 +621,48 @@ dnl
dnl ==================================================================== dnl ====================================================================
dnl Check POSIX Thread version dnl Check POSIX Thread version
dnl 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 version of the POSIX.4a Draft that is implemented.
dnl 10 == POSIX.4a Final == POSIX.1c-1996 for our purposes. 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
dnl tests: 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 pthread_detach() was dropped in Draft 8, it is present
dnl in every other version dnl in every other version
dnl PTHREAD_CREATE_UNDETACHED is only in Draft 7, it was called dnl PTHREAD_CREATE_UNDETACHED is only in Draft 7, it was called
dnl PTHREAD_CREATE_JOINABLE after that 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_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 PTHREAD_MUTEX_INITIALIZER was introduced in Draft 5. It's not
dnl interesting to us because we don't try to statically dnl interesting to us because we don't try to statically
dnl initialize mutexes. 5-10 has it. 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
dnl Draft 9 and 10 are equivalent for our purposes. dnl Draft 9 and 10 are equivalent for our purposes.
dnl dnl
AC_DEFUN([OL_POSIX_THREAD_VERSION], AC_DEFUN([OL_POSIX_THREAD_VERSION],
[AC_CACHE_CHECK([POSIX thread version],[ol_cv_pthread_version],[ [AC_CACHE_CHECK([POSIX thread version],[ol_cv_pthread_version],[
AC_EGREP_HEADER(pthread_yield,pthread.h,[ AC_TRY_COMPILE([
AC_EGREP_HEADER(pthread_detach,pthread.h,[ # include <pthread.h>
],[
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,[ AC_EGREP_CPP(draft7,[
# include <pthread.h> # include <pthread.h>
# ifdef PTHREAD_CREATE_UNDETACHED # ifdef PTHREAD_CREATE_UNDETACHED
draft7 draft7
# endif # endif
], ol_cv_pthread_version=7, [ ], 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,[ AC_EGREP_CPP(draft5,[
# include <pthread.h> # include <pthread.h>
#ifdef PTHREAD_MUTEX_INITIALIZER #ifdef PTHREAD_MUTEX_INITIALIZER
draft5 draft5
#endif #endif
], ol_cv_pthread_version=5, ol_cv_pthread_version=4) ], ], 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)
]) ])
])dnl ])dnl
dnl dnl