X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fpthread.m4;h=6111185fb0baad8b916c00eabddc8165bb19380d;hb=8585ce2ff5698c650ba5d5e3bb99763654ad62e8;hp=c984e2dfb080074f8a2fb8cedfb9276ea5a8b604;hpb=441aa3044f43e5572f58c354f01e6bc070acd5c7;p=gnulib.git diff --git a/m4/pthread.m4 b/m4/pthread.m4 index c984e2dfb..6111185fb 100644 --- a/m4/pthread.m4 +++ b/m4/pthread.m4 @@ -1,27 +1,60 @@ # pthread.m4 -dnl Copyright (C) 2009 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_PTHREAD_CHECK], - [AC_CHECK_HEADERS_ONCE([pthread.h]) +[ + AC_REQUIRE([gl_PTHREAD_DEFAULTS]) + gl_CHECK_NEXT_HEADERS([pthread.h]) + if test $ac_cv_header_pthread_h = yes; then + HAVE_PTHREAD_H=1 + else + HAVE_PTHREAD_H=0 + fi + + AC_CHECK_TYPES([pthread_t, pthread_spinlock_t], [], [], + [AC_INCLUDES_DEFAULT[ + #if HAVE_PTHREAD_H + #include + #endif]]) + if test $ac_cv_type_pthread_t != yes; then + HAVE_PTHREAD_T=0 + fi + if test $ac_cv_type_pthread_spinlock_t != yes; then + HAVE_PTHREAD_SPINLOCK_T=0 + fi + + if test $ac_cv_header_pthread_h != yes || + test $ac_cv_type_pthread_t != yes || + test $ac_cv_type_pthread_spinlock_t != yes; then + PTHREAD_H='pthread.h' + else + PTHREAD_H= + fi + AC_SUBST([PTHREAD_H]) + AM_CONDITIONAL([GL_GENERATE_PTHREAD_H], [test -n "$PTHREAD_H"]) LIB_PTHREAD= - PTHREAD_H= - if test "$ac_cv_header_pthread_h" = yes; then + if test $ac_cv_header_pthread_h = yes; then gl_saved_libs=$LIBS AC_SEARCH_LIBS([pthread_create], [pthread], [if test "$ac_cv_search_pthread_create" != "none required"; then LIB_PTHREAD="$ac_cv_search_pthread_create" fi]) LIBS="$gl_saved_libs" - else - PTHREAD_H='pthread.h' fi - AC_SUBST([LIB_PTHREAD]) - AC_SUBST([PTHREAD_H]) + AC_REQUIRE([AC_C_INLINE]) AC_REQUIRE([AC_C_RESTRICT]) ]) + +AC_DEFUN([gl_PTHREAD_DEFAULTS], +[ + dnl Assume proper GNU behavior unless another module says otherwise. + HAVE_PTHREAD_H=1; AC_SUBST([HAVE_PTHREAD_H]) + HAVE_PTHREAD_T=1; AC_SUBST([HAVE_PTHREAD_T]) + HAVE_PTHREAD_SPINLOCK_T=1; AC_SUBST([HAVE_PTHREAD_SPINLOCK_T]) +])