2020-12-17 12:28:48 +00:00
|
|
|
cmake_minimum_required(VERSION 3.10)
|
2017-01-12 11:44:48 +00:00
|
|
|
|
2018-06-10 09:31:12 +00:00
|
|
|
project(odyssey C)
|
2017-01-12 11:44:48 +00:00
|
|
|
|
|
|
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
|
|
|
|
2020-11-23 11:42:44 +00:00
|
|
|
|
|
|
|
set(CLANGCOMPILERSTANDART gnu11)
|
|
|
|
|
2021-01-14 06:54:16 +00:00
|
|
|
set(OD_VERSION_GIT $ENV{VERSION})
|
|
|
|
if ("${OD_VERSION_GIT}" STREQUAL "")
|
|
|
|
execute_process(COMMAND git describe --always
|
|
|
|
OUTPUT_VARIABLE OD_VERSION_GIT
|
|
|
|
RESULT_VARIABLE OD_VERSION_GIT_RESULT
|
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
|
|
ERROR_QUIET)
|
|
|
|
|
|
|
|
if(NOT "${OD_VERSION_GIT_RESULT}" STREQUAL "0")
|
|
|
|
add_definitions(-DOD_VERSION_GIT="unknown")
|
|
|
|
else()
|
|
|
|
add_definitions(-DOD_VERSION_GIT="${OD_VERSION_GIT}")
|
|
|
|
endif()
|
2020-08-04 04:00:14 +00:00
|
|
|
else()
|
2021-01-14 06:54:16 +00:00
|
|
|
add_definitions(-DOD_VERSION_GIT="${OD_VERSION_GIT}")
|
2020-08-04 04:00:14 +00:00
|
|
|
endif()
|
|
|
|
|
2021-01-14 06:54:16 +00:00
|
|
|
set(OD_VERSION_NUMBER $ENV{BUILD_NUMBER})
|
|
|
|
if ("${OD_VERSION_NUMBER}" STREQUAL "")
|
|
|
|
|
|
|
|
execute_process(COMMAND git rev-list --count HEAD
|
|
|
|
OUTPUT_VARIABLE OD_VERSION_NUMBER
|
|
|
|
RESULT_VARIABLE OD_VERSION_NUMBER_RESULT
|
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
|
|
ERROR_QUIET)
|
|
|
|
|
|
|
|
if(NOT "${OD_VERSION_NUMBER_RESULT}" STREQUAL "0")
|
|
|
|
add_definitions(-DOD_VERSION_NUMBER="unknown")
|
|
|
|
else()
|
|
|
|
add_definitions(-DOD_VERSION_NUMBER="${OD_VERSION_NUMBER}")
|
|
|
|
endif()
|
2020-08-04 04:00:14 +00:00
|
|
|
else()
|
2021-01-14 06:54:16 +00:00
|
|
|
add_definitions(-DOD_VERSION_NUMBER="${OD_VERSION_NUMBER}")
|
2018-07-11 13:50:05 +00:00
|
|
|
endif()
|
2017-01-13 13:00:47 +00:00
|
|
|
|
2020-10-26 05:00:17 +00:00
|
|
|
execute_process(COMMAND ${CMAKE_C_COMPILER} --version
|
|
|
|
OUTPUT_VARIABLE OD_COMPILER_VERSION
|
|
|
|
RESULT_VARIABLE OD_COMPILER_VERSION_RESULT
|
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
|
|
ERROR_QUIET)
|
|
|
|
|
|
|
|
|
2020-11-23 11:42:44 +00:00
|
|
|
set(OD_DEVEL_LVL -1)
|
2020-07-26 07:58:15 +00:00
|
|
|
|
2017-01-27 12:55:32 +00:00
|
|
|
if ("${CMAKE_BUILD_TYPE}" STREQUAL "")
|
|
|
|
set(CMAKE_BUILD_TYPE "Debug")
|
2020-07-26 07:58:15 +00:00
|
|
|
set(OD_DEVEL_LVL 1)
|
2017-01-27 12:55:32 +00:00
|
|
|
endif()
|
2017-01-12 11:44:48 +00:00
|
|
|
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
|
2021-04-21 13:11:18 +00:00
|
|
|
set(CMAKE_C_FLAGS "-std=${CLANGCOMPILERSTANDART} -pedantic -Wall -Wextra -Wstrict-aliasing -g -O2 -pthread -D_GNU_SOURCE")
|
2020-07-26 07:58:15 +00:00
|
|
|
set(OD_DEVEL_LVL -1)
|
2017-01-12 11:44:48 +00:00
|
|
|
elseif("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
|
2021-04-21 13:11:18 +00:00
|
|
|
set(CMAKE_C_FLAGS "-std=${CLANGCOMPILERSTANDART} -pedantic -Wall -Wextra -Wstrict-aliasing -g -O0 -pthread -D_GNU_SOURCE")
|
2020-07-26 07:58:15 +00:00
|
|
|
set(OD_DEVEL_LVL 1)
|
2020-04-15 11:40:01 +00:00
|
|
|
elseif("${CMAKE_BUILD_TYPE}" STREQUAL "ASAN")
|
2021-04-21 13:11:18 +00:00
|
|
|
set(CMAKE_C_FLAGS "-std=${CLANGCOMPILERSTANDART} -g -fsanitize=address,undefined -fno-sanitize-recover=all -pedantic -Wall -Wextra -Wstrict-aliasing -g -O0 -pthread -D_GNU_SOURCE")
|
2020-04-15 11:40:01 +00:00
|
|
|
elseif("${CMAKE_BUILD_TYPE}" STREQUAL "TSAN")
|
2021-04-21 13:11:18 +00:00
|
|
|
set(CMAKE_C_FLAGS "-std=${CLANGCOMPILERSTANDART} -g -fsanitize=thread -fno-sanitize-recover=all -pedantic -Wall -Wextra -Wstrict-aliasing -g -O0 -pthread -D_GNU_SOURCE")
|
2017-01-12 11:44:48 +00:00
|
|
|
endif()
|
|
|
|
|
2021-01-12 07:06:27 +00:00
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CC_FLAGS}")
|
|
|
|
|
2017-01-27 12:55:32 +00:00
|
|
|
string(TOLOWER ${CMAKE_BUILD_TYPE} OD_VERSION_BUILD)
|
2020-08-04 04:00:14 +00:00
|
|
|
add_definitions(-DOD_VERSION_BUILD="${OD_VERSION_BUILD}")
|
2017-01-27 12:55:32 +00:00
|
|
|
|
2017-01-18 12:00:33 +00:00
|
|
|
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
|
|
|
find_package(Threads REQUIRED)
|
|
|
|
|
2017-01-12 11:44:48 +00:00
|
|
|
add_custom_target(build_libs)
|
2017-02-06 13:53:17 +00:00
|
|
|
set(od_libraries "rt")
|
2017-01-12 11:44:48 +00:00
|
|
|
|
2018-06-06 15:11:56 +00:00
|
|
|
# debian build
|
|
|
|
option(BUILD_DEBIAN "Enable Debian Build" OFF)
|
|
|
|
if (BUILD_DEBIAN)
|
|
|
|
include(BuildDebian)
|
|
|
|
endif()
|
2017-01-12 11:44:48 +00:00
|
|
|
|
2019-11-11 09:28:50 +00:00
|
|
|
# postgresql
|
|
|
|
find_package(PostgreSQL REQUIRED)
|
2019-12-23 07:00:42 +00:00
|
|
|
|
2019-12-18 09:39:24 +00:00
|
|
|
set(od_libraries ${od_libraries} ${POSTGRESQL_LIBRARY} ${POSTGRESQL_LIBPGPORT} ${PQ_LIBRARY})
|
2019-11-11 09:28:50 +00:00
|
|
|
include_directories(${POSTGRESQL_INCLUDE_DIR})
|
|
|
|
|
2018-11-23 14:07:39 +00:00
|
|
|
# use BoringSSL or OpenSSL
|
|
|
|
option(USE_BORINGSSL "Use BoringSSL" OFF)
|
|
|
|
if (USE_BORINGSSL)
|
|
|
|
find_package(BoringSSL REQUIRED)
|
|
|
|
if (BORINGSSL_FOUND)
|
|
|
|
set(od_ssl ${BORINGSSL_LIBRARIES})
|
|
|
|
include_directories(${BORINGSSL_INCLUDE_DIR})
|
2020-06-11 10:02:48 +00:00
|
|
|
endif ()
|
2021-01-11 10:32:56 +00:00
|
|
|
elseif ("${OPENSSL_LIBRARIES}" STREQUAL "")
|
2020-06-11 10:02:48 +00:00
|
|
|
find_package(OpenSSL REQUIRED)
|
|
|
|
set(od_ssl ${OPENSSL_LIBRARIES})
|
|
|
|
include_directories(${OPENSSL_INCLUDE_DIR})
|
2021-01-11 10:32:56 +00:00
|
|
|
add_definitions(-DUSE_SSL)
|
2020-06-11 10:02:48 +00:00
|
|
|
endif ()
|
2018-06-06 15:11:56 +00:00
|
|
|
|
2019-09-09 09:17:41 +00:00
|
|
|
# use PAM
|
|
|
|
find_package(PAM)
|
2019-09-27 13:47:45 +00:00
|
|
|
if (PAM_FOUND)
|
2019-09-09 09:17:41 +00:00
|
|
|
set(od_pam ${PAM_LIBRARY})
|
2019-09-27 13:47:45 +00:00
|
|
|
include_directories(${PAM_INCLUDE_DIR})
|
2019-09-09 09:17:41 +00:00
|
|
|
endif()
|
|
|
|
|
2021-04-21 13:11:18 +00:00
|
|
|
set(od_libraries ${od_libraries} ${od_pam})
|
|
|
|
|
|
|
|
# use LDAP
|
|
|
|
find_package(LDAP)
|
|
|
|
if (LDAP_FOUND)
|
|
|
|
set(od_ldap ${LDAP_LIBRARY})
|
|
|
|
include_directories(${LDAP_INCLUDE_DIR})
|
|
|
|
endif()
|
|
|
|
|
|
|
|
set(od_libraries ${od_libraries} ${od_ldap})
|
|
|
|
|
2021-01-12 07:06:27 +00:00
|
|
|
#scram
|
|
|
|
|
|
|
|
if (USE_SCRAM)
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_SCRAM")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
#compression
|
2020-11-23 11:55:42 +00:00
|
|
|
option(BUILD_COMPRESSION "Build with compression support" OFF)
|
|
|
|
if(BUILD_COMPRESSION)
|
|
|
|
set(compression_libraries "")
|
2020-11-23 13:57:56 +00:00
|
|
|
add_definitions(-DMM_BUILD_COMPRESSION)
|
2020-11-23 11:55:42 +00:00
|
|
|
# use zstd
|
|
|
|
find_package(Zstd)
|
|
|
|
if(ZSTD_FOUND)
|
|
|
|
include_directories(${ZSTD_INCLUDE_DIR})
|
|
|
|
set(compression_libraries ${compression_libraries} ${ZSTD_LIBRARY})
|
2020-11-23 13:57:56 +00:00
|
|
|
add_definitions(-DMM_HAVE_ZSTD)
|
2020-11-23 11:55:42 +00:00
|
|
|
endif()
|
|
|
|
|
|
|
|
# use zlib
|
|
|
|
find_package(ZLIB)
|
|
|
|
if(ZLIB_FOUND)
|
|
|
|
include_directories(${ZLIB_INCLUDE_DIRS})
|
|
|
|
set(compression_libraries ${compression_libraries} ${ZLIB_LIBRARIES})
|
2020-11-23 13:57:56 +00:00
|
|
|
add_definitions(-DMM_HAVE_ZLIB)
|
2020-11-23 11:55:42 +00:00
|
|
|
endif()
|
2020-11-23 08:22:17 +00:00
|
|
|
endif()
|
|
|
|
|
2018-06-06 15:11:56 +00:00
|
|
|
# machinarium
|
|
|
|
include(BuildMachinarium)
|
|
|
|
build_machinarium()
|
2018-11-23 14:07:39 +00:00
|
|
|
set(od_libraries ${od_libraries} ${MACHINARIUM_LIBRARIES} ${od_ssl} "dl")
|
2018-06-06 15:11:56 +00:00
|
|
|
include_directories(${MACHINARIUM_INCLUDE_DIRS})
|
2017-03-31 14:17:17 +00:00
|
|
|
|
2018-08-23 13:24:07 +00:00
|
|
|
# kiwi
|
|
|
|
include(BuildKiwi)
|
|
|
|
build_kiwi()
|
|
|
|
set(od_libraries ${od_libraries} ${KIWI_LIBRARIES})
|
|
|
|
include_directories(${KIWI_INCLUDE_DIRS})
|
2017-01-12 11:44:48 +00:00
|
|
|
|
2019-09-09 09:17:41 +00:00
|
|
|
|
2019-09-27 13:47:45 +00:00
|
|
|
message(STATUS "")
|
2020-07-27 07:24:25 +00:00
|
|
|
message(STATUS "Odyssey (version: ${OD_VERSION_NUMBER}-${OD_VERSION_GIT}-${OD_VERSION_BUILD})")
|
2019-09-27 13:47:45 +00:00
|
|
|
message(STATUS "")
|
2021-04-21 13:11:18 +00:00
|
|
|
message(STATUS "using compiler: ${CMAKE_C_COMPILER} version
|
2020-10-26 05:00:17 +00:00
|
|
|
${OD_COMPILER_VERSION}")
|
2021-04-21 13:11:18 +00:00
|
|
|
message(STATUS "c lang standart: ${CLANGCOMPILERSTANDART}")
|
2020-10-26 05:00:17 +00:00
|
|
|
message(STATUS " ")
|
2019-11-11 09:28:50 +00:00
|
|
|
message(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
|
|
|
|
message(STATUS "BUILD_DEBIAN: ${BUILD_DEBIAN}")
|
|
|
|
message(STATUS "POSTGRESQL_INCLUDE_DIR: ${POSTGRESQL_INCLUDE_DIR}")
|
|
|
|
message(STATUS "POSTGRESQL_LIBRARY: ${POSTGRESQL_LIBRARY}")
|
2019-12-18 09:39:24 +00:00
|
|
|
message(STATUS "POSTGRESQL_LIBPGPORT: ${POSTGRESQL_LIBPGPORT}")
|
|
|
|
message(STATUS "PG_VERSION_NUM: ${PG_VERSION_NUM}")
|
2019-11-21 11:54:59 +00:00
|
|
|
message(STATUS "PQ_LIBRARY: ${PQ_LIBRARY}")
|
2019-11-11 09:28:50 +00:00
|
|
|
message(STATUS "USE_BORINGSSL: ${USE_BORINGSSL}")
|
|
|
|
message(STATUS "BORINGSSL_ROOT_DIR: ${BORINGSSL_ROOT_DIR}")
|
|
|
|
message(STATUS "BORINGSSL_INCLUDE_DIR: ${BORINGSSL_INCLUDE_DIR}")
|
|
|
|
message(STATUS "OPENSSL_VERSION: ${OPENSSL_VERSION}")
|
|
|
|
message(STATUS "OPENSSL_ROOT_DIR: ${OPENSSL_ROOT_DIR}")
|
|
|
|
message(STATUS "OPENSSL_INCLUDE_DIR: ${OPENSSL_INCLUDE_DIR}")
|
2020-12-30 13:44:19 +00:00
|
|
|
message(STATUS "OPENSSL_LIBRARIES: ${OPENSSL_LIBRARIES}")
|
2021-01-12 07:06:27 +00:00
|
|
|
|
|
|
|
if (PAM_FOUND)
|
|
|
|
message(STATUS "PAM_LIBRARY: ${PAM_LIBRARY}")
|
|
|
|
message(STATUS "PAM_INCLUDE_DIR: ${PAM_INCLUDE_DIR}")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
2021-04-21 13:11:18 +00:00
|
|
|
message(STATUS "USE_SCRAM: ${USE_SCRAM}")
|
|
|
|
|
|
|
|
|
2020-11-23 11:55:42 +00:00
|
|
|
message(STATUS "BUILD_COMPRESSION: ${BUILD_COMPRESSION}")
|
|
|
|
if (BUILD_COMPRESSION)
|
|
|
|
message(STATUS "ZSTD_INCLUDE_DIR: ${ZSTD_INCLUDE_DIR}")
|
|
|
|
message(STATUS "ZSTD_LIBRARY: ${ZSTD_LIBRARY}")
|
|
|
|
message(STATUS "ZLIB_INCLUDE_DIRS: ${ZLIB_INCLUDE_DIRS}")
|
|
|
|
message(STATUS "ZLIB_LIBRARIES: ${ZLIB_LIBRARIES}")
|
|
|
|
endif()
|
2021-04-21 13:11:18 +00:00
|
|
|
|
|
|
|
message(STATUS "LDAP_SUPPORT: ${LDAP_FOUND}")
|
|
|
|
if (LDAP_FOUND)
|
|
|
|
message(STATUS "LDAP_LIBRARY: ${LDAP_LIBRARY}")
|
|
|
|
message(STATUS "LDAP_INCLUDE_DIR: ${LDAP_INCLUDE_DIR}")
|
|
|
|
endif()
|
2017-08-21 14:50:22 +00:00
|
|
|
|
2018-08-28 14:43:46 +00:00
|
|
|
add_subdirectory(sources)
|
2018-04-04 13:36:11 +00:00
|
|
|
add_subdirectory(test)
|
2019-04-29 09:01:15 +00:00
|
|
|
add_subdirectory(stress)
|