PROJECT(eurephia C) cmake_minimum_required(VERSION 2.6) 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" OFF) SET(OPNVPN_SRC "" CACHE STRING "Path to OpenVPN source code") IF(SQLITE3) message(STATUS "Will build database interface for SQLite") SET(subdirs ${subdirs} database/sqlite) SET(DATABASE ON) ENDIF(SQLITE3) IF(NOT DATABASE) message(FATAL_ERROR "Cannot build eurephia without any database drivers.") ENDIF(NOT DATABASE) IF(DEBUG) message(STATUS "DEBUG enabled - might be a security issue") ADD_DEFINITIONS(-DENABLE_DEBUG) IF(SHOW_SECRETS) message(STATUS "SHOW_SECRETS ENABLED -- THIS WILL LOG PASSWORDS IN CLEAR TEXT") ADD_DEFINITIONS(-DSHOW_SECRETS) ENDIF(SHOW_SECRETS) ENDIF(DEBUG) IF(NOT OPENVPN_SRC) message(FATAL_ERROR "Missing path to OpenVPN source - try running ./configure again") 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 the OpenVPN source code really located here? ${OPENVPN_SRC}") 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(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) 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) ADD_DEFINITIONS(-g -Wall) SUBDIRS(${subdirs} plugin)