summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2008-10-03 00:57:39 +0200
committerDavid Sommerseth <dazo@users.sourceforge.net>2008-10-03 00:57:39 +0200
commit0b39abab7a034b58e2f653037013fbed0933d513 (patch)
tree29317214f925fe9c08642ff170b14dd968ba3faa /CMakeLists.txt
parent073ba5d92e1c627d95234c8a3b8dad62f415eecd (diff)
downloadeurephia-0b39abab7a034b58e2f653037013fbed0933d513.tar.gz
eurephia-0b39abab7a034b58e2f653037013fbed0933d513.tar.xz
eurephia-0b39abab7a034b58e2f653037013fbed0933d513.zip
Improved cmake rules
- Added checks for external libraries that we use - Linking now links in needed shared libraries - Added better check if OPENVPN_SRC_DIR is set
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt68
1 files changed, 66 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ab013c0..1c90b7a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -14,8 +14,72 @@ SET(eurephia_auth_SRC
passwd.c
sha512.c
)
-INCLUDE_DIRECTORIES(BEFORE ../../openvpn/openvpn-2.1_rc7 .)
+OPTION(DEBUG "Add more verbose debug information" OFF)
+OPTION(SHOW_SECRETS "Show passwords as clear text in logs." OFF)
+OPTION(SQLITE3 "Build database driver for SQLite3" ON)
+
+IF(NOT SQLITE3)
+ message(FATAL_ERROR "Cannot build eurephia without any database drivers (-DSQLITE3=ON)")
+ENDIF(NOT SQLITE3)
+
+IF(DEBUG)
+ ADD_DEFINITIONS(-DENABLE_DEBUG)
+ IF(SHOW_SECRETS)
+ ADD_DEFINITIONS(-DSHOW_SECRETS)
+ ENDIF(SHOW_SECRETS)
+ENDIF(DEBUG)
+
+SET(OPENVPN_SRC "$ENV{OPENVPN_SRC_DIR}")
+IF(NOT OPENVPN_SRC)
+ message(FATAL_ERROR "Cannot build eurephia without OPENVPN_SRC_DIR environment variable set to point at OpenVPN source")
+ENDIF(NOT OPENVPN_SRC)
+INCLUDE_DIRECTORIES(BEFORE ${OPENVPN_SRC} .)
+
+SET(CHECK_INCL_FILE "${OPENVPN_SRC}/openvpn-plugin.h")
+IF(NOT EXISTS ${CHECK_INCL_FILE})
+ message(FATAL_ERROR "Missing openvpn-plugin.h ... Is $OPENVPN_SRC_DIR pointing to the real OpenVPN source code?")
+ENDIF(NOT EXISTS ${CHECK_INCL_FILE})
+
+INCLUDE(CheckIncludeFile)
+CHECK_INCLUDE_FILE(dlfcn.h HAVE_DLFCN_H)
+INCLUDE(CheckLibraryExists)
+CHECK_LIBRARY_EXISTS(dl dlopen "" HAVE_DLOPEN)
+CHECK_LIBRARY_EXISTS(dl dlclose "" HAVE_DLCLOSE)
+IF(NOT HAVE_DLOPEN OR NOT HAVE_DLCLOSE)
+ message(FATAL_ERROR "Missing proper dl library")
+ENDIF(NOT HAVE_DLOPEN OR NOT HAVE_DLCLOSE)
+
+CHECK_INCLUDE_FILE(pthread.h HAVE_PTHREAD_H)
+CHECK_LIBRARY_EXISTS(pthread pthread_mutex_lock "" HAVE_PTHREAD_MUTEX_LOCK)
+CHECK_LIBRARY_EXISTS(pthread pthread_mutex_unlock "" HAVE_PTHREAD_MUTEX_UNLOCK)
+IF(NOT HAVE_PTHREAD_MUTEX_LOCK OR NOT HAVE_PTHREAD_MUTEX_UNLOCK)
+ message(FATAL_ERROR "Missing proper pthread_mutex support")
+ENDIF(NOT HAVE_PTHREAD_MUTEX_LOCK OR NOT HAVE_PTHREAD_MUTEX_UNLOCK)
+
+CHECK_LIBRARY_EXISTS(rt sem_wait "" HAVE_RT_SEM_WAIT)
+CHECK_LIBRARY_EXISTS(rt sem_post "" HAVE_RT_SEM_POST)
+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)
+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)
+IF(NOT HAVE_RT_SEM_WAIT 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_POST)
+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")
+ENDIF(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)
+
+CHECK_INCLUDE_FILE(openssl/rand.h HAVE_OPENSSL_RAND_H)
+CHECK_LIBRARY_EXISTS(crypto RAND_load_file "" HAVE_OPENSSL_RAND_LOAD_FILE)
+CHECK_LIBRARY_EXISTS(crypto RAND_pseudo_bytes "" HAVE_OPENSSL_RAND_PSEUDO_BYTES)
+IF(NOT HAVE_OPENSSL_RAND_H OR NOT HAVE_OPENSSL_RAND_LOAD_FILE OR NOT HAVE_OPENSSL_RAND_PSEUDO_BYTES)
+ message(FATAL_ERROR "Missing OpenSSL crypto support")
+ENDIF(NOT HAVE_OPENSSL_RAND_H OR NOT HAVE_OPENSSL_RAND_LOAD_FILE OR NOT HAVE_OPENSSL_RAND_PSEUDO_BYTES)
+
+ADD_DEFINITIONS(-g -Wall)
ADD_LIBRARY(eurephia-auth MODULE ${eurephia_auth_SRC})
+TARGET_LINK_LIBRARIES(eurephia-auth dl pthread rt crypto)
SET_TARGET_PROPERTIES(eurephia-auth PROPERTIES OUTPUT_NAME eurephia-auth PREFIX "")
SUBDIRS(database/sqlite firewall/iptables)
-