libstdc++: Only define std::latch if atomic waiting is available
authorJonathan Wakely <jwakely@redhat.com>
Thu, 26 Nov 2020 21:54:46 +0000 (21:54 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Thu, 26 Nov 2020 22:36:44 +0000 (22:36 +0000)
libstdc++-v3/ChangeLog:

* include/std/latch: Depend on _GLIBCXX_HAS_GTHREADS and
_GLIBCXX_HAVE_LINUX_FUTEX.
* include/std/version (__cpp_lib_latch): Define conditionally.

libstdc++-v3/include/std/latch
libstdc++-v3/include/std/version

index 9d9c880a88bd49516fb4b15e05ccaa698ca30e53..3af295b4eb43845ef738ca31d608931e6c5eb5f7 100644 (file)
  */
 
 #ifndef _GLIBCXX_LATCH
-#define _GLIBCXX_LATCH
+#define _GLIBCXX_LATCH 1
 
 #pragma GCC system_header
 
 #if __cplusplus > 201703L
-#define __cpp_lib_latch 201907L
 
 #include <bits/atomic_base.h>
 #include <ext/numeric_traits.h>
 
+#if defined _GLIBCXX_HAS_GTHREADS || _GLIBCXX_HAVE_LINUX_FUTEX
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
+#define __cpp_lib_latch 201907L
+
   class latch
   {
   public:
@@ -87,5 +89,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   };
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace
+#endif // GTHREADS || LINUX_FUTEX
 #endif // __cplusplus > 201703L
 #endif // _GLIBCXX_LATCH
index cf0454dbaf84feba56068cc07162f897234518d8..0f2da8a5ddd92bfad5b5641cbcbd2cdfc053f5f7 100644 (file)
 #ifdef _GLIBCXX_HAS_GTHREADS
 # define __cpp_lib_jthread 201911L
 #endif
-#define __cpp_lib_latch 201907L
+#if defined _GLIBCXX_HAS_GTHREADS || defined _GLIBCXX_HAVE_LINUX_FUTEX
+# define __cpp_lib_latch 201907L
+#endif
 #define __cpp_lib_list_remove_return_type 201806L
 #if __cpp_lib_concepts
 # define __cpp_lib_make_obj_using_allocator 201811L
 #if __cpp_lib_concepts
 # define __cpp_lib_ranges 201911L
 #endif
-#if defined _GLIBCXX_HAS_GTHREADS || _GLIBCXX_HAVE_LINUX_FUTEX
+#if defined _GLIBCXX_HAS_GTHREADS || defined _GLIBCXX_HAVE_LINUX_FUTEX
 # define __cpp_lib_semaphore 201907L
 #endif
 #define __cpp_lib_shift 201806L