diff options
Diffstat (limited to 'src/lib/CMakeLists.txt')
-rw-r--r-- | src/lib/CMakeLists.txt | 104 |
1 files changed, 89 insertions, 15 deletions
diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index 728d975a..4522613b 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -15,7 +15,7 @@ protobuf_generate_c(CACEP_PROTO_SRCS CACEP_PROTO_HDRS cacep.proto) if (NOT APPLE) find_library(LIBRT_LIBRARIES rt) if (NOT LIBRT_LIBRARIES) - message(FATAL_ERROR "Could not find librt.") + message(FATAL_ERROR "Could not find librt") endif () else () set(LIBRT_LIBRARIES "") @@ -23,7 +23,7 @@ endif () find_library(LIBPTHREAD_LIBRARIES pthread) if (NOT LIBPTHREAD_LIBRARIES) - message(FATAL_ERROR "Could not find libpthread.") + message(FATAL_ERROR "Could not find libpthread") endif () include(CheckSymbolExists) @@ -31,30 +31,60 @@ list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_POSIX_C_SOURCE=200809L) list(APPEND CMAKE_REQUIRED_DEFINITIONS -D__XSI_VISIBLE=500) list(APPEND CMAKE_REQUIRED_LIBRARIES pthread) check_symbol_exists(pthread_mutexattr_setrobust pthread.h HAVE_ROBUST_MUTEX) -set(HAVE_ROBUST_MUTEX CACHE STRING "Have robust mutexes") + +if (HAVE_ROBUST_MUTEX) + set(DISABLE_ROBUST_MUTEXES FALSE CACHE BOOL "Disable robust mutex support") + if (NOT DISABLE_ROBUST_MUTEXES) + message(STATUS "Robust mutex support enabled") + set(HAVE_ROBUST_MUTEX TRUE) + else () + message(STATUS "Robust mutex support disabled by user") + set(HAVE_ROBUST_MUTEX FALSE) + endif () +endif () find_library(LIBGCRYPT_LIBRARIES gcrypt) if (LIBGCRYPT_LIBRARIES) - find_path(LIBGCRYPT_INCLUDE_DIR gcrypt.h HINTS /usr/include /usr/local/include) - if (NOT LIBGCRYPT_INCLUDE_DIR STREQUAL "GRYPT_INCLUDE_DIR-NOTFOUND") + find_path(LIBGCRYPT_INCLUDE_DIR gcrypt.h + HINTS /usr/include /usr/local/include) + if (LIBGCRYPT_INCLUDE_DIR) file(STRINGS ${LIBGCRYPT_INCLUDE_DIR}/gcrypt.h GCSTR REGEX "^#define GCRYPT_VERSION ") string(REGEX REPLACE "^#define GCRYPT_VERSION \"(.*)\".*$" "\\1" GCVER "${GCSTR}") - message(STATUS "Found libgcrypt: ${LIBGCRYPT_LIBRARIES} (found version \"${GCVER}\")") + message(STATUS "Found libgcrypt: ${LIBGCRYPT_LIBRARIES}" + "(found version \"${GCVER}\")") if (NOT GCVER VERSION_LESS "1.7.0") - set(HAVE_LIBGCRYPT "1" CACHE STRING "Have libgcrypt") + set (DISABLE_LIBGCRYPT FALSE CACHE BOOL "Disable libgcrypt support") + if (NOT DISABLE_LIBGCRYPT) + message(STATUS "libgcrypt support enabled") + set(HAVE_LIBGCRYPT TRUE) + else () + message(STATUS "libgcrpyt support disabled by user") + endif() + else () + message(STATUS "Install version > \"1.7.0\" to enable libgcrypt support") endif() endif () -else () +endif () + +if (NOT HAVE_LIBGCRYPT) set(LIBGCRYPT_LIBRARIES "") set(LIBGCRYPT_INCLUDE_DIR "") endif () find_package(OpenSSL) if (OPENSSL_FOUND) - set(HAVE_OPENSSL "1" CACHE STRING "Have OpenSSL") -else () + set (DISABLE_OPENSSL FALSE CACHE BOOL "Disable OpenSSL support") + if (NOT DISABLE_OPENSSL) + message(STATUS "OpenSSL support enabled") + set(HAVE_OPENSSL TRUE) + else() + message(STATUS "OpenSSL support disabled by user") + endif() +endif () + +if (NOT HAVE_OPENSSL) set (OPENSSL_INCLUDE_DIR "") endif () @@ -62,9 +92,9 @@ if (APPLE OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") set(SYS_RND_HDR "") else () find_path(SYS_RND_HDR sys/random.h PATH /usr/include/ /usr/local/include/) - if (NOT SYS_RND_HDR STREQUAL "SYS_RND_HDR-NOTFOUND") + if (SYS_RND_HDR) message(STATUS "Found sys/random.h in ${SYS_RND_HDR}") - set(HAVE_SYS_RANDOM "1" CACHE STRING "Have random header") + set(HAVE_SYS_RANDOM TRUE) else () set(SYS_RND_HDR "") endif () @@ -73,10 +103,52 @@ endif() if (NOT ((CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") OR APPLE OR HAVE_SYS_RANDOM OR HAVE_OPENSSL OR HAVE_LIBGCRYPT)) message(FATAL_ERROR "No secure random generator found, " - "please install libgcrypt (> 1.7.0) or OpenSSL" - ) + "please install libgcrypt (> 1.7.0) or OpenSSL") endif () +mark_as_advanced(LIBRT_LIBRARIES LIBPTHREAD_LIBRARIES + LIBGCRYPT_LIBRARIES OPENSSL_LIBRARIES SYS_RND_INCLUDE_DIR + LIBGCRYPT_INCLUDE_DIR SYS_RND_HDR) + +math(EXPR SHM_BUFFER_EXPR "1 << 20") +set(SHM_BUFFER_SIZE ${SHM_BUFFER_EXPR} CACHE STRING + "Number of blocks in SDU buffer, must be a power of 2") +set(SYS_MAX_FLOWS 4096 CACHE STRING + "Maximum number of total flows for this system") +set(AP_MAX_FLOWS 1024 CACHE STRING + "Maximum number of flows in an application") +set(AP_RES_FDS 64 CACHE STRING + "Number of reserved flow descriptors per application") +set(AP_MAX_FQUEUES 32 CACHE STRING + "Maximum number of flow sets per application") +set(DU_BUFF_HEADSPACE 128 CACHE STRING + "Bytes of headspace to reserve for future headers") +set(DU_BUFF_TAILSPACE 0 CACHE STRING + "Bytes of tailspace to reserve for future tails") +if (NOT APPLE) + set(PTHREAD_COND_CLOCK "CLOCK_MONOTONIC" CACHE STRING + "Clock to use for condition variable timing") +else () + set (PTHREAD_COND_CLOCK "CLOCK_REALTIME" CACHE INTERNAL + "Clock to use for condition variable timing") +endif () +set(SOCKET_TIMEOUT 1000 CACHE STRING + "Default timeout for responses from IPCPs (ms)") +set(CDAP_REPLY_TIMEOUT 6000 CACHE STRING + "Timeout for CDAP to wait for reply") +set(SHM_PREFIX "ouroboros" CACHE STRING + "String to prepend to POSIX shared memory filenames") +set(SHM_RBUFF_PREFIX "/${SHM_PREFIX}.rbuff." CACHE INTERNAL + "Prefix for rbuff POSIX shared memory filenames") +set(SHM_LOCKFILE_NAME "/${SHM_PREFIX}.lockfile" CACHE INTERNAL + "Filename for the POSIX shared memory lockfile") +set(SHM_FLOW_SET_PREFIX "/${SHM_PREFIX}.set." CACHE INTERNAL + "Prefix for the POSIX shared memory flow set") +set(SHM_RDRB_NAME "/${SHM_PREFIX}.rdrb" CACHE INTERNAL + "Name for the main POSIX shared memory buffer") +set(SHM_RDRB_BLOCK_SIZE "sysconf(_SC_PAGESIZE)" CACHE STRING + "SDU buffer block size, multiple of pagesize for performance") + set(SOURCE_FILES # Add source files here bitmap.c @@ -94,7 +166,6 @@ set(SOURCE_FILES lockfile.c logs.c md5.c - nsm.c qos.c qoscube.c random.c @@ -110,6 +181,9 @@ set(SOURCE_FILES utils.c ) +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/config.h.in" + "${CMAKE_CURRENT_BINARY_DIR}/config.h" @ONLY) + add_library(ouroboros SHARED ${SOURCE_FILES} ${IRM_PROTO_SRCS} ${IPCP_PROTO_SRCS} ${DIF_CONFIG_PROTO_SRCS} ${CDAP_PROTO_SRCS} ${CACEP_PROTO_SRCS} ${RO_PROTO_SRCS}) |