Index: libcxxabi/src/cxa_guard_impl.h =================================================================== --- libcxxabi/src/cxa_guard_impl.h +++ libcxxabi/src/cxa_guard_impl.h @@ -230,18 +230,24 @@ struct LibcppMutex; struct LibcppCondVar; -#ifndef _LIBCXXABI_HAS_NO_THREADS struct LibcppMutex { LibcppMutex() = default; LibcppMutex(LibcppMutex const&) = delete; LibcppMutex& operator=(LibcppMutex const&) = delete; +#ifndef _LIBCXXABI_HAS_NO_THREADS bool lock() { return std::__libcpp_mutex_lock(&mutex); } bool unlock() { return std::__libcpp_mutex_unlock(&mutex); } +#else + bool lock() { return 0; } + bool unlock() { return 0; } +#endif private: friend struct LibcppCondVar; +#ifndef _LIBCXXABI_HAS_NO_THREADS std::__libcpp_mutex_t mutex = _LIBCPP_MUTEX_INITIALIZER; +#endif }; struct LibcppCondVar { @@ -249,15 +255,23 @@ LibcppCondVar(LibcppCondVar const&) = delete; LibcppCondVar& operator=(LibcppCondVar const&) = delete; +#ifndef _LIBCXXABI_HAS_NO_THREADS bool wait(LibcppMutex& mut) { return std::__libcpp_condvar_wait(&cond, &mut.mutex); } bool broadcast() { return std::__libcpp_condvar_broadcast(&cond); } +#else + bool wait(LibcppMutex& mut) { + return 0; + } + bool broadcast() { return 0; } +#endif private: +#ifndef _LIBCXXABI_HAS_NO_THREADS std::__libcpp_condvar_t cond = _LIBCPP_CONDVAR_INITIALIZER; +#endif }; -#endif // !defined(_LIBCXXABI_HAS_NO_THREADS) template