summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2010-09-29 13:16:45 +0200
committerAlexander Larsson <alexl@redhat.com>2010-09-29 13:16:45 +0200
commit44631aa023c58990f13ca50050567033cfa9da3f (patch)
tree0ce5daa6076b8e9ad2a24d4a69ae6493fa0033be
parent1670b220b5a60bb957967a5d5424d129cbd909ee (diff)
downloadspice-44631aa023c58990f13ca50050567033cfa9da3f.tar.gz
spice-44631aa023c58990f13ca50050567033cfa9da3f.tar.xz
spice-44631aa023c58990f13ca50050567033cfa9da3f.zip
client: Check for pthread yield function using autoconf
-rw-r--r--client/x11/platform.cpp2
-rw-r--r--configure.ac20
2 files changed, 21 insertions, 1 deletions
diff --git a/client/x11/platform.cpp b/client/x11/platform.cpp
index cc1502bd..a9b4449d 100644
--- a/client/x11/platform.cpp
+++ b/client/x11/platform.cpp
@@ -463,7 +463,7 @@ void Platform::msleep(unsigned int millisec)
void Platform::yield()
{
- pthread_yield();
+ POSIX_YIELD_FUNC;
}
void Platform::term_printf(const char* format, ...)
diff --git a/configure.ac b/configure.ac
index 3369ddee..76f90711 100644
--- a/configure.ac
+++ b/configure.ac
@@ -128,6 +128,26 @@ AC_SUBST(LIBRT)
SPICE_NONPKGCONFIG_LIBS+=" -pthread $LIBM $LIBRT"
+dnl The client needs a yield function
+AC_MSG_CHECKING(for posix yield function)
+for yield_func in pthread_yield pthread_yield_np sched_yield \
+ thr_yield; do
+ spice_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $SPICE_NONPKGCONFIG_LIBS"
+ AC_TRY_LINK([#include <pthread.h>],
+ [$yield_func()],
+ [posix_yield_func="$yield_func"
+ break])
+ CPPFLAGS="spice_save_CPPFLAGS"
+done
+if test x"$posix_yield_func" = xnone; then
+ AC_MSG_ERROR([No posix yield function found])
+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])
+
SPICE_REQUIRES=""
if test "x$use_gui" = "xyes"; then