diff options
author | David Sommerseth <dazo@users.sourceforge.net> | 2008-10-03 00:57:39 +0200 |
---|---|---|
committer | David Sommerseth <dazo@users.sourceforge.net> | 2008-10-03 00:57:39 +0200 |
commit | 0b39abab7a034b58e2f653037013fbed0933d513 (patch) | |
tree | 29317214f925fe9c08642ff170b14dd968ba3faa /CMakeLists.txt | |
parent | 073ba5d92e1c627d95234c8a3b8dad62f415eecd (diff) | |
download | eurephia-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.txt | 68 |
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) - |