summaryrefslogtreecommitdiff
path: root/CMake
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2021-07-21 12:12:26 +0200
committerAlbrecht Schlosser <albrechts.fltk@online.de>2021-07-21 12:16:20 +0200
commitc6eccf6137fae2c2f158af6bdc393d70d832b9e9 (patch)
tree2e63401119d1f9804d407bf6205e4de9305a45f6 /CMake
parent15f1b6b5c4783695769d3342b85b26b3e7bd29bd (diff)
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
Diffstat (limited to 'CMake')
-rw-r--r--CMake/pthread_mutex_recursive.c7
-rw-r--r--CMake/resources.cmake14
2 files changed, 20 insertions, 1 deletions
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 <pthread.h>
+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 <GL/glu.h> and <locale.h> 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)