From 0dfb289a3b362b082ac3608d887e42f09dadc0d2 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Mon, 31 Dec 2018 16:22:07 +0100 Subject: [PATCH] Properly detect the availability of pthread_setname_np() This commit adds a CMake check for the availability of pthread_setname_np(), and only uses it on Linux when available. Indeed, some C libraries, such as uClibc, do not provide this non-POSIX function in all cases. Upstream: https://github.com/grpc/grpc/pull/17610 Signed-off-by: Thomas Petazzoni --- CMakeLists.txt | 6 ++++++ include/grpc/impl/codegen/port_platform.h | 2 ++ 2 files changed, 8 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 45c2fcb..0b2be4f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -177,6 +177,12 @@ if (NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE) endif() list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") +include(CheckSymbolExists) +check_symbol_exists(pthread_setname_np pthread.h HAVE_PTHREAD_SETNAME_NP) +if (HAVE_PTHREAD_SETNAME_NP) + add_definitions(-DHAVE_PTHREAD_SETNAME_NP) +endif () + if(MSVC) include(cmake/msvc_static_runtime.cmake) add_definitions(-D_WIN32_WINNT=0x600 -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINSOCK_DEPRECATED_NO_WARNINGS) diff --git a/include/grpc/impl/codegen/port_platform.h b/include/grpc/impl/codegen/port_platform.h index 4f213ff..55ecd9d 100644 --- a/include/grpc/impl/codegen/port_platform.h +++ b/include/grpc/impl/codegen/port_platform.h @@ -195,7 +195,9 @@ #endif /* _LP64 */ #ifdef __GLIBC__ #define GPR_POSIX_CRASH_HANDLER 1 +#if defined(HAVE_PTHREAD_SETNAME_NP) #define GPR_LINUX_PTHREAD_NAME 1 +#endif /* HAVE_PTHREAD_SETNAME_NP */ #include #else /* musl libc */ #define GPR_MUSL_LIBC_COMPAT 1 -- 2.26.2