-if test x"$have_threads" = xposix; then
- glib_save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
- dnl we might grow sizeof(pthread_t) later on, so use a dummy name here
- GLIB_SIZEOF([#include <pthread.h>], pthread_t, system_thread)
- # This is not AC_CHECK_FUNC to also work with function
- # name mangling in header files.
- AC_MSG_CHECKING(for pthread_attr_setstacksize)
- AC_TRY_LINK([#include <pthread.h>],
- [pthread_attr_t t; pthread_attr_setstacksize(&t,0)],
- [AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE,1,
- [Have function pthread_attr_setstacksize])],
- [AC_MSG_RESULT(no)])
- AC_MSG_CHECKING(for minimal/maximal thread priority)
- if test x"$posix_priority_min" = x; then
- AC_EGREP_CPP(PX_PRIO_MIN,[#include <pthread.h>
- PX_PRIO_MIN],,[
- posix_priority_min=PX_PRIO_MIN
- posix_priority_max=PX_PRIO_MAX])
- fi
- if test x"$posix_priority_min" = x; then
- # AIX
- AC_EGREP_CPP(PTHREAD_PRIO_MIN,[#include <pthread.h>
- PTHREAD_PRIO_MIN],,[
- posix_priority_min=PTHREAD_PRIO_MIN
- posix_priority_max=PTHREAD_PRIO_MAX])
- fi
- if test x"$posix_priority_min" = x; then
- AC_EGREP_CPP(PRI_OTHER_MIN,[#include <pthread.h>
- PRI_OTHER_MIN],,[
- posix_priority_min=PRI_OTHER_MIN
- posix_priority_max=PRI_OTHER_MAX])
- fi
- if test x"$posix_priority_min" = x; then
- AC_MSG_RESULT(none found)
- AC_MSG_WARN($POSIX_NO_PRIORITIES)
- posix_priority_min=-1
- posix_priority_max=-1
- else
- AC_MSG_RESULT($posix_priority_min/$posix_priority_max)
- AC_MSG_CHECKING(for pthread_setschedparam)
- AC_TRY_LINK([#include <pthread.h>],
- [pthread_t t; pthread_setschedparam(t, 0, NULL)],
- [AC_MSG_RESULT(yes)
- AC_DEFINE_UNQUOTED(POSIX_MIN_PRIORITY,$posix_priority_min,[Minimum POSIX RT priority])
- AC_DEFINE_UNQUOTED(POSIX_MAX_PRIORITY,$posix_priority_max,[Maximum POSIX RT priority])],
- [AC_MSG_RESULT(no)
- AC_MSG_WARN($POSIX_NO_PRIORITIES)])
- fi
- posix_yield_func=none
- AC_MSG_CHECKING(for posix yield function)
- for yield_func in sched_yield pthread_yield_np pthread_yield \
- thr_yield; do
- AC_TRY_LINK([#include <pthread.h>],
- [$yield_func()],
- [posix_yield_func="$yield_func"
- break])
- done
- if test x"$posix_yield_func" = xnone; then
- AC_MSG_RESULT(none found)
- AC_MSG_WARN($POSIX_NO_YIELD)
- posix_yield_func="g_usleep(1000)"
- else
- AC_MSG_RESULT($posix_yield_func)
- posix_yield_func="$posix_yield_func()"
- fi
- AC_DEFINE_UNQUOTED(POSIX_YIELD_FUNC,$posix_yield_func,[The POSIX RT yield function])
- CPPFLAGS="$glib_save_CPPFLAGS"
-
-elif test x"$have_threads" = xwin32; then
- # It's a pointer to a private struct
- GLIB_SIZEOF(,struct _GThreadData *, system_thread)
-fi
+AS_IF([ test x"$have_threads" = xposix], [
+ glib_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
+ # This is not AC_CHECK_FUNC to also work with function
+ # name mangling in header files.
+ AC_MSG_CHECKING(for pthread_attr_setstacksize)
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [#include <pthread.h>],
+ [pthread_attr_t t; pthread_attr_setstacksize(&t,0)])],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE,1,
+ [Have function pthread_attr_setstacksize])],
+ [AC_MSG_RESULT(no)])
+ AC_MSG_CHECKING(for pthread_condattr_setclock)
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [#include <pthread.h>],
+ [pthread_condattr_t a; pthread_condattr_setclock(&a,0)])],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_PTHREAD_CONDATTR_SETCLOCK,1,
+ [Have function pthread_condattr_setclock])],
+ [AC_MSG_RESULT(no)])
+ CPPFLAGS="$glib_save_CPPFLAGS"
+])