summaryrefslogtreecommitdiffstats
path: root/plugin/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/CMakeLists.txt')
-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")