summaryrefslogtreecommitdiffstats
path: root/plugin
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2010-07-08 11:30:33 +0200
committerDavid Sommerseth <dazo@users.sourceforge.net>2010-07-30 11:02:56 +0200
commitde8bb383b2fec74a9806fa3df96012be0843a7c6 (patch)
tree8e811ce41ad3269749c25598bb96b0bafcdd4391 /plugin
parenta8ce22066bd0f8f645e7f65da30ff84fe48919fb (diff)
downloadeurephia-de8bb383b2fec74a9806fa3df96012be0843a7c6.tar.gz
eurephia-de8bb383b2fec74a9806fa3df96012be0843a7c6.tar.xz
eurephia-de8bb383b2fec74a9806fa3df96012be0843a7c6.zip
Added extra checks for POSIX semaphore functions
On Fedora 13 and Rawhide, the sem_wait(), sem_timedwait() and sem_post() functions is no longer available in librt, only in libpthread. Added extra CMake checks to check if the functions are in libpthread if not found in librt.
Diffstat (limited to 'plugin')
-rw-r--r--plugin/CMakeLists.txt40
1 files changed, 31 insertions, 9 deletions
diff --git a/plugin/CMakeLists.txt b/plugin/CMakeLists.txt
index d644961..0b9381d 100644
--- a/plugin/CMakeLists.txt
+++ b/plugin/CMakeLists.txt
@@ -20,10 +20,37 @@
PROJECT(eurephia-auth C)
cmake_minimum_required(VERSION 2.6)
-# Check for librt functions which we use
-CHECK_LIBRARY_EXISTS(rt sem_wait "" HAVE_RT_SEM_WAIT)
-CHECK_LIBRARY_EXISTS(rt sem_timedwait "" HAVE_RT_SEM_TIMEDWAIT)
-CHECK_LIBRARY_EXISTS(rt sem_post "" HAVE_RT_SEM_POST)
+# Check for POSIX semaphore functions which we use
+CHECK_LIBRARY_EXISTS(rt sem_wait "" HAVE_SEM_WAIT)
+CHECK_LIBRARY_EXISTS(rt sem_timedwait "" HAVE_SEM_TIMEDWAIT)
+CHECK_LIBRARY_EXISTS(rt sem_post "" HAVE_SEM_POST)
+
+# Extra checks if sem_* functions is not found in librt, do not accept failures
+IF(NOT HAVE_SEM_WAIT)
+ message(STATUS "* sem_wait was not found in librt, trying libpthread")
+ CHECK_LIBRARY_EXISTS(pthread sem_wait "" HAVE_SEM_WAIT2)
+ IF(NOT HAVE_SEM_WAIT2)
+ message(FATAL_ERROR "Missing proper pthread semaphore support")
+ ENDIF(NOT HAVE_SEM_WAIT2)
+ENDIF(NOT HAVE_SEM_WAIT)
+
+IF(NOT HAVE_SEM_TIMEDWAIT)
+ message(STATUS "* sem_timedwait was not found in librt, trying libpthread")
+ CHECK_LIBRARY_EXISTS(pthread sem_timedwait "" HAVE_SEM_TIMEDWAIT2)
+ IF(NOT HAVE_SEM_TIMEDWAIT2)
+ message(FATAL_ERROR "Missing proper pthread semaphore support")
+ ENDIF(NOT HAVE_SEM_TIMEDWAIT2)
+ENDIF(NOT HAVE_SEM_TIMEDWAIT)
+
+IF(NOT HAVE_SEM_POST)
+ message(STATUS "* sem_post was not found in librt, trying libpthread")
+ CHECK_LIBRARY_EXISTS(pthread sem_post "" HAVE_SEM_POST2)
+ IF(NOT HAVE_SEM_POST2)
+ message(FATAL_ERROR "Missing proper pthread semaphore support")
+ ENDIF(NOT HAVE_SEM_POST2)
+ENDIF(NOT HAVE_SEM_POST)
+
+# Check for POSIX MQ functions which we use
CHECK_LIBRARY_EXISTS(rt mq_open "" HAVE_RT_MQ_OPEN)
CHECK_LIBRARY_EXISTS(rt mq_close "" HAVE_RT_MQ_CLOSE)
CHECK_LIBRARY_EXISTS(rt mq_unlink "" HAVE_RT_MQ_UNLINK)
@@ -31,11 +58,6 @@ CHECK_LIBRARY_EXISTS(rt mq_send "" HAVE_RT_MQ_SEND)
CHECK_LIBRARY_EXISTS(rt mq_receive "" HAVE_RT_MQ_RECEIVE)
CHECK_LIBRARY_EXISTS(rt mq_getattr "" HAVE_RT_MQ_GETATTR)
-# Fail if we're missing some features - semaphore functions
-IF(NOT HAVE_RT_SEM_WAIT OR NOT HAVE_RT_SEM_TIMEDWAIT OR NOT HAVE_RT_SEM_POST)
- message(FATAL_ERROR "Missing proper pthread semaphore support")
-ENDIF(NOT HAVE_RT_SEM_WAIT OR NOT HAVE_RT_SEM_TIMEDWAIT OR NOT HAVE_RT_SEM_POST)
-
# Fail if we're missing some features - Posix Message Queue functions
IF(NOT HAVE_RT_MQ_OPEN OR NOT HAVE_RT_MQ_CLOSE OR NOT HAVE_RT_MQ_UNLINK OR NOT HAVE_RT_MQ_SEND OR NOT HAVE_RT_MQ_RECEIVE OR NOT HAVE_RT_MQ_GETATTR)
message(FATAL_ERROR "Missing proper pthread message queue support")