summaryrefslogtreecommitdiff
path: root/cmake/dependencies/robustmutex.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/dependencies/robustmutex.cmake')
-rw-r--r--cmake/dependencies/robustmutex.cmake18
1 files changed, 18 insertions, 0 deletions
diff --git a/cmake/dependencies/robustmutex.cmake b/cmake/dependencies/robustmutex.cmake
new file mode 100644
index 00000000..94aec8f0
--- /dev/null
+++ b/cmake/dependencies/robustmutex.cmake
@@ -0,0 +1,18 @@
+list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_POSIX_C_SOURCE=200809L)
+list(APPEND CMAKE_REQUIRED_DEFINITIONS -D__XSI_VISIBLE=500)
+list(APPEND CMAKE_REQUIRED_LIBRARIES pthread)
+check_symbol_exists(pthread_mutexattr_setrobust pthread.h HAVE_ROBUST_MUTEX)
+
+if (HAVE_ROBUST_MUTEX)
+ set(DISABLE_ROBUST_MUTEXES FALSE CACHE BOOL "Disable robust mutex support")
+ if (NOT DISABLE_ROBUST_MUTEXES)
+ message(STATUS "Robust mutex support enabled")
+ set(HAVE_ROBUST_MUTEX TRUE)
+ else ()
+ message(STATUS "Robust mutex support disabled by user")
+ unset(HAVE_ROBUST_MUTEX)
+ endif ()
+else()
+ message(STATUS "Robust mutex support not available")
+ unset(HAVE_ROBUST_MUTEX)
+endif ()