Is it intentional that this change affects non-LIBCXX_HAS_EXTERNAL_THREAD_API builds at all?
On Wed, Jan 25, 2017 at 12:31 PM, Nico Weber <tha...@chromium.org> wrote: > This breaks all our mac builds with: > > /b/c/b/ClangToTMac__dbg_/src/third_party/llvm-build/ > Release+Asserts/bin/../include/c++/v1/__threading_support:154:1: error: > unknown type name 'mach_port_t' > mach_port_t __libcpp_thread_get_port(); > > On Tue, Jan 3, 2017 at 7:59 AM, Asiri Rathnayake via cfe-commits < > cfe-commits@lists.llvm.org> wrote: > >> Author: asiri >> Date: Tue Jan 3 06:59:50 2017 >> New Revision: 290889 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=290889&view=rev >> Log: >> [libcxx] Add build/test support for the externally threaded libc++abi >> variant >> >> Differential revision: https://reviews.llvm.org/D27576 >> >> Reviewers: EricWF >> >> Modified: >> libcxx/trunk/CMakeLists.txt >> libcxx/trunk/include/__threading_support >> libcxx/trunk/test/CMakeLists.txt >> libcxx/trunk/test/libcxx/test/config.py >> libcxx/trunk/test/lit.site.cfg.in >> >> Modified: libcxx/trunk/CMakeLists.txt >> URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/CMakeLists. >> txt?rev=290889&r1=290888&r2=290889&view=diff >> ============================================================ >> ================== >> --- libcxx/trunk/CMakeLists.txt (original) >> +++ libcxx/trunk/CMakeLists.txt Tue Jan 3 06:59:50 2017 >> @@ -221,14 +221,21 @@ if(LIBCXX_ENABLE_THREADS AND NOT LIBCXX_ >> " when LIBCXX_ENABLE_THREADS is also set to OFF.") >> endif() >> >> -if(LIBCXX_HAS_PTHREAD_API AND NOT LIBCXX_ENABLE_THREADS) >> - message(FATAL_ERROR "LIBCXX_HAS_PTHREAD_API can only be set to ON" >> - " when LIBCXX_ENABLE_THREADS is also set to ON.") >> +if(NOT LIBCXX_ENABLE_THREADS) >> + if(LIBCXX_HAS_PTHREAD_API) >> + message(FATAL_ERROR "LIBCXX_HAS_PTHREAD_API can only be set to ON" >> + " when LIBCXX_ENABLE_THREADS is also set to ON.") >> + endif() >> + if(LIBCXX_HAS_EXTERNAL_THREAD_API) >> + message(FATAL_ERROR "LIBCXX_HAS_EXTERNAL_THREAD_API can only be set >> to ON" >> + " when LIBCXX_ENABLE_THREADS is also set to ON.") >> + endif() >> endif() >> >> -if(LIBCXX_HAS_EXTERNAL_THREAD_API AND NOT LIBCXX_ENABLE_THREADS) >> - message(FATAL_ERROR "LIBCXX_HAS_EXTERNAL_THREAD_API can only be set >> to ON" >> - " when LIBCXX_ENABLE_THREADS is also set to ON.") >> +if(LIBCXX_HAS_PTHREAD_API AND LIBCXX_HAS_EXTERNAL_THREAD_API) >> + message(FATAL_ERROR "The options LIBCXX_HAS_EXTERNAL_THREAD_API" >> + "and LIBCXX_HAS_PTHREAD_API cannot be both" >> + "set to ON at the same time.") >> endif() >> >> # Ensure LLVM_USE_SANITIZER is not specified when >> LIBCXX_GENERATE_COVERAGE >> >> Modified: libcxx/trunk/include/__threading_support >> URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/__ >> threading_support?rev=290889&r1=290888&r2=290889&view=diff >> ============================================================ >> ================== >> --- libcxx/trunk/include/__threading_support (original) >> +++ libcxx/trunk/include/__threading_support Tue Jan 3 06:59:50 2017 >> @@ -67,7 +67,11 @@ typedef pthread_mutex_t __libcpp_mutex_t >> typedef pthread_cond_t __libcpp_condvar_t; >> #define _LIBCPP_CONDVAR_INITIALIZER PTHREAD_COND_INITIALIZER >> >> -// THread ID >> +// Execute once >> +typedef pthread_once_t __libcpp_exec_once_flag; >> +#define _LIBCPP_EXEC_ONCE_INITIALIZER PTHREAD_ONCE_INIT >> + >> +// Thread id >> typedef pthread_t __libcpp_thread_id; >> >> // Thread >> @@ -110,7 +114,17 @@ int __libcpp_condvar_timedwait(__libcpp_ >> _LIBCPP_THREAD_ABI_VISIBILITY >> int __libcpp_condvar_destroy(__libcpp_condvar_t* __cv); >> >> -// Thread ID >> +// Execute once >> +_LIBCPP_THREAD_ABI_VISIBILITY >> +int __libcpp_execute_once(__libcpp_exec_once_flag *flag, >> + void (*init_routine)(void)); >> + >> +// Thread id >> +#if defined(__APPLE__) && !defined(__arm__) >> +_LIBCPP_THREAD_ABI_VISIBILITY >> +mach_port_t __libcpp_thread_get_port(); >> +#endif >> + >> _LIBCPP_THREAD_ABI_VISIBILITY >> bool __libcpp_thread_id_equal(__libcpp_thread_id t1, __libcpp_thread_id >> t2); >> >> @@ -145,7 +159,7 @@ _LIBCPP_THREAD_ABI_VISIBILITY >> void *__libcpp_tls_get(__libcpp_tls_key __key); >> >> _LIBCPP_THREAD_ABI_VISIBILITY >> -void __libcpp_tls_set(__libcpp_tls_key __key, void *__p); >> +int __libcpp_tls_set(__libcpp_tls_key __key, void *__p); >> >> #if defined(_LIBCPP_HAS_THREAD_API_PTHREAD) || \ >> defined(_LIBCPP_BUILDING_THREAD_API_EXTERNAL_PTHREAD) >> @@ -221,6 +235,19 @@ int __libcpp_condvar_destroy(__libcpp_co >> return pthread_cond_destroy(__cv); >> } >> >> +// Execute once >> +int __libcpp_execute_once(__libcpp_exec_once_flag *flag, >> + void (*init_routine)(void)) { >> + return pthread_once(flag, init_routine); >> +} >> + >> +// Thread id >> +#if defined(__APPLE__) && !defined(__arm__) >> +mach_port_t __libcpp_thread_get_port() { >> + return pthread_mach_thread_np(pthread_self()); >> +} >> +#endif >> + >> // Returns non-zero if the thread ids are equal, otherwise 0 >> bool __libcpp_thread_id_equal(__libcpp_thread_id t1, __libcpp_thread_id >> t2) >> { >> @@ -276,9 +303,9 @@ void *__libcpp_tls_get(__libcpp_tls_key >> return pthread_getspecific(__key); >> } >> >> -void __libcpp_tls_set(__libcpp_tls_key __key, void *__p) >> +int __libcpp_tls_set(__libcpp_tls_key __key, void *__p) >> { >> - pthread_setspecific(__key, __p); >> + return pthread_setspecific(__key, __p); >> } >> >> #endif // _LIBCPP_HAS_THREAD_API_PTHREAD >> >> Modified: libcxx/trunk/test/CMakeLists.txt >> URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/CMakeL >> ists.txt?rev=290889&r1=290888&r2=290889&view=diff >> ============================================================ >> ================== >> --- libcxx/trunk/test/CMakeLists.txt (original) >> +++ libcxx/trunk/test/CMakeLists.txt Tue Jan 3 06:59:50 2017 >> @@ -55,18 +55,20 @@ configure_file( >> ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg >> @ONLY) >> >> +set(LIBCXX_TEST_DEPS "") >> + >> if (LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY) >> - set(experimental_dep cxx_experimental) >> + set(LIBCXX_TEST_DEPS cxx_experimental) >> endif() >> >> if (LIBCXX_HAS_EXTERNAL_THREAD_API) >> - set(external_threads_dep cxx_external_threads) >> + list(APPEND LIBCXX_TEST_DEPS cxx_external_threads) >> endif() >> >> add_lit_testsuite(check-cxx >> "Running libcxx tests" >> ${CMAKE_CURRENT_BINARY_DIR} >> - DEPENDS cxx ${experimental_dep} ${external_threads_dep}) >> + DEPENDS cxx ${LIBCXX_TEST_DEPS}) >> >> add_custom_target(check-libcxx DEPENDS check-cxx) >> >> >> Modified: libcxx/trunk/test/libcxx/test/config.py >> URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx >> /test/config.py?rev=290889&r1=290888&r2=290889&view=diff >> ============================================================ >> ================== >> --- libcxx/trunk/test/libcxx/test/config.py (original) >> +++ libcxx/trunk/test/libcxx/test/config.py Tue Jan 3 06:59:50 2017 >> @@ -579,10 +579,6 @@ class Configuration(object): >> self.cxx.link_flags += [abs_path] >> else: >> self.cxx.link_flags += ['-lc++'] >> - # This needs to come after -lc++ as we want its unresolved >> thread-api symbols >> - # to be picked up from this one. >> - if self.get_lit_bool('libcxx_external_thread_api', >> default=False): >> - self.cxx.link_flags += ['-lc++external_threads'] >> >> def configure_link_flags_abi_library(self): >> cxx_abi = self.get_lit_conf('cxx_abi', 'libcxxabi') >> @@ -611,6 +607,8 @@ class Configuration(object): >> 'C++ ABI setting %s unsupported for tests' % cxx_abi) >> >> def configure_extra_library_flags(self): >> + if self.get_lit_bool('cxx_ext_threads', default=False): >> + self.cxx.link_flags += ['-lc++external_threads'] >> self.target_info.add_cxx_link_flags(self.cxx.link_flags) >> >> def configure_color_diagnostics(self): >> >> Modified: libcxx/trunk/test/lit.site.cfg.in >> URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/lit.si >> te.cfg.in?rev=290889&r1=290888&r2=290889&view=diff >> ============================================================ >> ================== >> --- libcxx/trunk/test/lit.site.cfg.in (original) >> +++ libcxx/trunk/test/lit.site.cfg.in Tue Jan 3 06:59:50 2017 >> @@ -28,7 +28,7 @@ config.has_libatomic = "@LIBC >> config.use_libatomic = "@LIBCXX_HAVE_CXX_ATOMICS_WITH_LIB@" >> >> config.libcxxabi_shared = "@LIBCXXABI_ENABLE_SHARED@" >> -config.libcxx_external_thread_api = "@LIBCXX_HAS_EXTERNAL_THREAD_API@" >> +config.cxx_ext_threads = "@LIBCXX_HAS_EXTERNAL_THREAD_API@" >> >> # Let the main config do the real work. >> config.loaded_site_config = True >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> > >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits