summaryrefslogtreecommitdiff
path: root/src/lib/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/CMakeLists.txt')
-rw-r--r--src/lib/CMakeLists.txt104
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})