2013-04-12 Jack Howarth Backport from mainline 2012-10-10 Jack Howarth Jonathan Wakely PR libstdc++/54847 * config/os/bsd/darwin/os_defines.h: Define _GLIBCXX_USE_NANOSLEEP and _GLIBCXX_USE_SCHED_YIELD. * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Add comment. Index: libstdc++-v3/config/os/bsd/darwin/os_defines.h =================================================================== --- libstdc++-v3/config/os/bsd/darwin/os_defines.h (revision 197937) +++ libstdc++-v3/config/os/bsd/darwin/os_defines.h (working copy) @@ -42,4 +42,9 @@ // Static initializer macro is buggy in darwin, see libstdc++/51906 #define _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +// Configure checks for nanosleep fail on Darwin, but nanosleep and +// sched_yield are always available, so use them. +#define _GLIBCXX_USE_NANOSLEEP 1 +#define _GLIBCXX_USE_SCHED_YIELD 1 + #endif Index: libstdc++-v3/acinclude.m4 =================================================================== --- libstdc++-v3/acinclude.m4 (revision 197937) +++ libstdc++-v3/acinclude.m4 (working copy) @@ -1132,6 +1132,11 @@ dnl --enable-libstdcxx-time=no dnl --disable-libstdcxx-time dnl disables the checks completely dnl +dnl N.B. Darwin provides nanosleep but doesn't support the whole POSIX +dnl Timers option, so doesn't define _POSIX_TIMERS. Because the test +dnl below fails Darwin unconditionally defines _GLIBCXX_USE_NANOSLEEP in +dnl os_defines.h and also defines _GLIBCXX_USE_SCHED_YIELD. +dnl AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [ AC_MSG_CHECKING([for clock_gettime, nanosleep and sched_yield])