X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=m4%2Fpthread.m4;h=6111185fb0baad8b916c00eabddc8165bb19380d;hb=c604bb86746f7f16471a598df94845e42d0e1b5f;hp=2a383076bef7897dc36db1ba54d30b03853e6f46;hpb=4cc93d2296593047de7a0c84455855832596bde9;p=gnulib.git diff --git a/m4/pthread.m4 b/m4/pthread.m4 index 2a383076b..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]) + 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]) +])