+dnl determination of G_THREAD_LIBS
+dnl ******************************
+
+mutex_has_default=no
+case $have_threads in
+ posix|dce)
+ G_THREAD_LIBS=error
+ glib_save_LIBS="$LIBS"
+ case $host in
+ *-sysv5uw7*) # UnixWare 7
+ if test "$GCC" != "yes"; then
+ G_THREAD_LIBS="-Kthread"
+ else
+ G_THREAD_LIBS="-pthread"
+ fi
+ ;;
+ *)
+ for thread_lib in "" pthread pthreads c_r thread dce; do
+ if test x"$thread_lib" = x; then
+ add_thread_lib=""
+ IN=""
+ else
+ add_thread_lib="-l$thread_lib"
+ IN=" in -l$thread_lib"
+ fi
+ if test x"$have_threads" = xposix; then
+ defattr=NULL
+ else
+ defattr=pthread_attr_default
+ fi
+
+ LIBS="$glib_save_LIBS $add_thread_lib"
+
+ AC_MSG_CHECKING(for pthread_create/pthread_join$IN)
+ AC_TRY_RUN([#include <pthread.h>
+ int check_me = 0;
+ void* func(void* data) {check_me = 42;}
+ main()
+ { pthread_t t;
+ void *ret;
+ pthread_create (&t, $defattr, func, NULL);
+ pthread_join (t, &ret);
+ exit (check_me != 42);
+ }],
+ [AC_MSG_RESULT(yes)
+ G_THREAD_LIBS="$add_thread_lib"
+ break],
+ [AC_MSG_RESULT(no)])
+ done
+ if test "x$G_THREAD_LIBS" = xerror; then
+ AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
+ fi
+ for thread_lib in "" rt; do
+ if test x"$thread_lib" = x; then
+ add_thread_lib=""
+ IN=""
+ else
+ add_thread_lib="-l$thread_lib"
+ IN=" in -l$thread_lib"
+ fi
+ LIBS="$glib_save_LIBS $add_thread_lib"
+
+ AC_MSG_CHECKING(for sched_get_priority_min$IN)
+ AC_TRY_RUN([#include <sched.h>
+ #include <errno.h>
+ int main() {
+ errno = 0;
+ return sched_get_priority_min(SCHED_OTHER)==-1
+ && errno != 0;
+ }],
+ [AC_MSG_RESULT(yes)
+ G_THREAD_LIBS="$G_THREAD_LIBS $add_thread_lib"
+ posix_priority_min="sched_get_priority_min(SCHED_OTHER)"
+ posix_priority_max="sched_get_priority_max(SCHED_OTHER)"
+ break],
+ [AC_MSG_RESULT(no)])
+ done
+ LIBS="$glib_save_LIBS"
+ ;;
+ esac
+ mutex_has_default=yes
+ mutex_default_type='pthread_mutex_t'
+ mutex_default_init='PTHREAD_MUTEX_INITIALIZER'
+ mutex_header_file='pthread.h'
+ if test "x$have_threads" = "xposix"; then
+ g_threads_impl="POSIX"
+ else
+ g_threads_impl="DCE"
+ have_threads="posix"
+ fi
+ AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
+ ;;
+ solaris)
+ G_THREAD_LIBS=error
+ AC_CHECK_LIB(thread, cond_init, G_THREAD_LIBS="-lthread")
+ mutex_has_default=yes
+ mutex_default_type='mutex_t'
+ mutex_default_init="DEFAULTMUTEX"
+ mutex_header_file='thread.h'
+ g_threads_impl="SOLARIS"
+ ;;
+ none)
+ g_threads_impl="NONE"
+ ;;
+ *)
+ g_threads_impl="NONE"
+ G_THREAD_LIBS=error
+ ;;
+esac
+
+if test "x$G_THREAD_LIBS" = xerror; then
+ AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
+fi
+
+case $host in
+ *-*-beos*)
+ G_THREAD_LIBS="-lbe -lroot -lglib "
+ G_THREAD_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
+ ;;
+ *)
+ ;;
+esac
+
+AC_MSG_CHECKING(thread related libraries)
+AC_MSG_RESULT($G_THREAD_LIBS)
+
+dnl check for mt safe function variants and some posix functions
+dnl ************************************************************