From c6eccf6137fae2c2f158af6bdc393d70d832b9e9 Mon Sep 17 00:00:00 2001 From: Albrecht Schlosser Date: Wed, 21 Jul 2021 12:12:26 +0200 Subject: Call pthread's recursive mutex on Linux (Issue #245) Add CMake test for PTHREAD_MUTEX_RECURSIVE Add autoconf/configure compile test for PTHREAD_MUTEX_RECURSIVE Replace "#ifdef PTHREAD_MUTEX_RECURSIVE" with "#ifdef HAVE_PTHREAD_MUTEX_RECURSIVE" and define HAVE_PTHREAD_MUTEX_RECURSIVE in config.h --- CMake/pthread_mutex_recursive.c | 7 +++++++ CMake/resources.cmake | 14 +++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 CMake/pthread_mutex_recursive.c (limited to 'CMake') diff --git a/CMake/pthread_mutex_recursive.c b/CMake/pthread_mutex_recursive.c new file mode 100644 index 000000000..2a058822f --- /dev/null +++ b/CMake/pthread_mutex_recursive.c @@ -0,0 +1,7 @@ +/* + FLTK feature test: do we have PTHREAD_MUTEX_RECURSIVE ? +*/ +#include +int main() { + return PTHREAD_MUTEX_RECURSIVE; +} diff --git a/CMake/resources.cmake b/CMake/resources.cmake index 57173f206..7ea839d1f 100644 --- a/CMake/resources.cmake +++ b/CMake/resources.cmake @@ -71,6 +71,17 @@ else () fl_find_header (HAVE_PTHREAD_H pthread.h) endif (WIN32 AND NOT CYGWIN) +# Do we have PTHREAD_MUTEX_RECURSIVE ? + +if (HAVE_PTHREAD_H) + try_compile(HAVE_PTHREAD_MUTEX_RECURSIVE + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/CMake/pthread_mutex_recursive.c + ) +else () + set (HAVE_PTHREAD_MUTEX_RECURSIVE 0) +endif () + # Special case for Microsoft Visual Studio generator (MSVC): # # The header files and are located in the SDK's @@ -139,7 +150,8 @@ endif (NOT HAVE_DIRENT_H) mark_as_advanced (HAVE_ALSA_ASOUNDLIB_H HAVE_DIRENT_H HAVE_DLFCN_H) mark_as_advanced (HAVE_GL_GLU_H) mark_as_advanced (HAVE_LIBPNG_PNG_H HAVE_LOCALE_H HAVE_NDIR_H) -mark_as_advanced (HAVE_OPENGL_GLU_H HAVE_PNG_H HAVE_PTHREAD_H) +mark_as_advanced (HAVE_OPENGL_GLU_H HAVE_PNG_H) +mark_as_advanced (HAVE_PTHREAD_H HAVE_PTHREAD_MUTEX_RECURSIVE) mark_as_advanced (HAVE_STDIO_H HAVE_STRINGS_H HAVE_SYS_DIR_H) mark_as_advanced (HAVE_SYS_NDIR_H HAVE_SYS_SELECT_H) mark_as_advanced (HAVE_SYS_STDTYPES_H HAVE_XDBE_H) -- cgit v1.2.3