From a8d15a926689c126c4d316788786e0160cfc1d5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Fri, 1 Oct 2021 23:44:17 +0300 Subject: [PATCH] [libcxx] Don't autodetect pthreads on MinGW e9ee517930f76a972fcda00d9dd0466db80d60f7 added support for using winpthreads on Windows, enabled if `__WINPTHREADS_VERSION` was defined (i.e. if winpthreads headers have been included before including libcxx `__config`). This was fragile (libcxx changed behaviour depending on what headers had been included externally before), and was changed in a1bc823a59d5b6f310bdf6c7c7b62ec71b87d1aa to use pthreads on Windows whenever the pthread.h header was available. This is also fragile; pthread.h might be unavailable while building libcxx but installed later, and available when users include the libcxx headers. In practice, in every modern setup for building libcxx for Windows I've seen, users end up manually configuring it with `LIBCXX_HAS_WIN32_THREAD_API=ON`, as the users may have winpthreads installed (for other libraries/projects to use) while wanting to build libcxx with the default win32 threading. Don't automatically pick up pthreads on Windows even if the header is available. Instead require the user to configure the libcxx build with `LIBCXX_HAS_PTHREAD_API=ON` if that's desired. Differential Revision: https://reviews.llvm.org/D110975 --- libcxx/include/__config | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libcxx/include/__config b/libcxx/include/__config index e8d29a1d7203..856b7b384593 100644 --- a/libcxx/include/__config +++ b/libcxx/include/__config @@ -1072,8 +1072,7 @@ extern "C" _LIBCPP_FUNC_VIS void __sanitizer_annotate_contiguous_container( defined(__APPLE__) || \ defined(__sun__) || \ defined(__MVS__) || \ - defined(_AIX) || \ - (defined(__MINGW32__) && __has_include()) + defined(_AIX) # define _LIBCPP_HAS_THREAD_API_PTHREAD # elif defined(__Fuchsia__) // TODO(44575): Switch to C11 thread API when possible.