summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt68
-rw-r--r--database/sqlite/CMakeLists.txt27
-rw-r--r--firewall/iptables/CMakeLists.txt1
3 files changed, 88 insertions, 8 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)
-
diff --git a/database/sqlite/CMakeLists.txt b/database/sqlite/CMakeLists.txt
index 83fb8fd..88a0b1a 100644
--- a/database/sqlite/CMakeLists.txt
+++ b/database/sqlite/CMakeLists.txt
@@ -1,14 +1,29 @@
PROJECT(eurephiadb-sqlite C)
cmake_minimum_required(VERSION 2.6)
SET(eurephiadb_sqlite_SRC
- ../../eurephia_log.c
- ../../eurephiadb_session.c
- ../..//eurephia_values.c
- ../../passwd.c
- ../../sha512.c
sqlite.c
eurephiadb-sqlite.c
)
+SET(COMMON
+ ../../eurephia_log.c
+ ../../eurephiadb_session.c
+ ../..//eurephia_values.c
+ ../../passwd.c
+ ../../sha512.c
+)
+
+INCLUDE(CheckIncludeFile)
+CHECK_INCLUDE_FILE(sqlite3.h HAVE_SQLITE3_H)
+INCLUDE(CheckLibraryExists)
+CHECK_LIBRARY_EXISTS(sqlite3 sqlite3_open "" HAVE_SQLITE3_OPEN)
+CHECK_LIBRARY_EXISTS(sqlite3 sqlite3_close "" HAVE_SQLITE3_CLOSE)
+CHECK_LIBRARY_EXISTS(sqlite3 sqlite3_exec "" HAVE_SQLITE3_EXEC)
+CHECK_LIBRARY_EXISTS(sqlite3 sqlite3_free "" HAVE_SQLITE3_FREE)
+CHECK_LIBRARY_EXISTS(sqlite3 sqlite3_vmprintf "" HAVE_SQLITE3_VMPRINTF)
+
INCLUDE_DIRECTORIES(BEFORE ../..)
-ADD_LIBRARY(eurephiadb-sqlite MODULE ${eurephiadb_sqlite_SRC})
+ADD_LIBRARY(eurephiadb-sqlite SHARED ${eurephiadb_sqlite_SRC} ${COMMON})
+TARGET_LINK_LIBRARIES(eurephiadb-sqlite sqlite3)
SET_TARGET_PROPERTIES(eurephiadb-sqlite PROPERTIES OUTPUT_NAME eurephiadb-sqlite PREFIX "")
+SET_SOURCE_FILES_PROPERTIES(${common_files_SRC} PROPERTIES GENERATED true)
+
diff --git a/firewall/iptables/CMakeLists.txt b/firewall/iptables/CMakeLists.txt
index adbb168..a05d99f 100644
--- a/firewall/iptables/CMakeLists.txt
+++ b/firewall/iptables/CMakeLists.txt
@@ -7,4 +7,5 @@ SET(efw_ipt_SRC
)
INCLUDE_DIRECTORIES(BEFORE ../..)
ADD_LIBRARY(efw_iptables MODULE ${efw_ipt_SRC})
+TARGET_LINK_LIBRARIES(efw_iptables pthread rt gcc_s)
SET_TARGET_PROPERTIES(efw_iptables PROPERTIES PREFIX "")