2020-12-17 12:28:48 +00:00
|
|
|
cmake_minimum_required(VERSION 3.10)
|
2017-01-11 09:26:20 +00:00
|
|
|
|
2018-06-10 09:31:12 +00:00
|
|
|
project(machinarium C)
|
2020-11-23 11:42:44 +00:00
|
|
|
set(CLANGCOMPILERSTANDART gnu11)
|
2017-01-11 09:26:20 +00:00
|
|
|
|
2018-11-23 14:07:39 +00:00
|
|
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
|
|
|
|
2017-05-18 11:03:00 +00:00
|
|
|
find_package(Threads REQUIRED)
|
|
|
|
set(CMAKE_THREAD_PREFER_PTHREAD true)
|
|
|
|
|
2017-02-07 15:00:27 +00:00
|
|
|
if ("${CMAKE_BUILD_TYPE}" STREQUAL "")
|
|
|
|
set(CMAKE_BUILD_TYPE "Debug")
|
|
|
|
endif()
|
2017-01-11 09:26:20 +00:00
|
|
|
|
|
|
|
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
|
2020-11-23 11:42:44 +00:00
|
|
|
set(CMAKE_C_FLAGS "-std=${CLANGCOMPILERSTANDART} -fPIC -g -O2 -D_GNU_SOURCE -pthread -pedantic ")
|
2017-01-11 09:26:20 +00:00
|
|
|
elseif("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
|
2020-11-23 11:42:44 +00:00
|
|
|
set(CMAKE_C_FLAGS "-std=${CLANGCOMPILERSTANDART} -fPIC -g -O0 -D_GNU_SOURCE -pthread -pedantic ")
|
2017-01-11 09:26:20 +00:00
|
|
|
endif()
|
|
|
|
|
2017-06-27 12:06:54 +00:00
|
|
|
include_directories("${PROJECT_SOURCE_DIR}/sources")
|
|
|
|
include_directories("${PROJECT_BINARY_DIR}/sources")
|
2017-01-11 09:26:20 +00:00
|
|
|
|
2017-05-15 12:32:13 +00:00
|
|
|
option(BUILD_SHARED "Enable SHARED" OFF)
|
2017-05-16 14:31:01 +00:00
|
|
|
option(BUILD_VALGRIND "Enable VALGRIND" ON)
|
2017-03-01 13:21:08 +00:00
|
|
|
|
2017-01-11 09:26:20 +00:00
|
|
|
set(mm_libraries "")
|
|
|
|
|
2017-05-16 14:31:01 +00:00
|
|
|
# valgrind
|
|
|
|
if (BUILD_VALGRIND)
|
|
|
|
find_path(VALGRIND_INCLUDE_PATH "valgrind/valgrind.h"
|
|
|
|
"/usr/include"
|
|
|
|
"/usr/local/include")
|
|
|
|
if (${VALGRIND_INCLUDE_PATH} STREQUAL "VALGRIND_INCLUDE_PATH-NOTFOUND")
|
|
|
|
else()
|
|
|
|
set(HAVE_VALGRIND 1)
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
2020-11-23 11:55:42 +00:00
|
|
|
set(compression_libraries "")
|
|
|
|
if (BUILD_COMPRESSION)
|
2020-11-23 13:57:56 +00:00
|
|
|
add_definitions(-DMM_BUILD_COMPRESSION)
|
2020-11-23 08:22:17 +00:00
|
|
|
|
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-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(mm_libraries "${mm_libraries} ${BORINGSSL_LIBRARIES}")
|
|
|
|
include_directories(${BORINGSSL_INCLUDE_DIR})
|
|
|
|
endif()
|
2021-01-11 10:32:56 +00:00
|
|
|
else ()
|
|
|
|
if ("${OPENSSL_LIBRARIES}" STREQUAL "")
|
|
|
|
find_package(OpenSSL REQUIRED)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
set(mm_libraries "${mm_libraries} ${OPENSSL_LIBRARIES}")
|
|
|
|
include_directories(${OPENSSL_INCLUDE_DIR})
|
2017-03-24 13:50:23 +00:00
|
|
|
endif()
|
|
|
|
|
2017-06-27 12:06:54 +00:00
|
|
|
add_subdirectory(sources)
|
2017-01-11 09:26:20 +00:00
|
|
|
|
2019-09-28 14:42:29 +00:00
|
|
|
message(STATUS "")
|
|
|
|
message(STATUS "Machinarium: Cooperative multitasking framework.")
|
|
|
|
message(STATUS "")
|
|
|
|
message(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
|
|
|
|
message(STATUS "BUILD_SHARED: ${BUILD_SHARED}")
|
|
|
|
message(STATUS "BUILD_VALGRIND: ${BUILD_VALGRIND}")
|
|
|
|
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}")
|
2020-11-23 13:57:56 +00:00
|
|
|
message(STATUS "BUILD_COMPRESSION: ${BUILD_COMPRESSION}")
|
2020-11-23 11:55:42 +00:00
|
|
|
if (BUILD_COMPRESSION)
|
2020-11-23 13:57:56 +00:00
|
|
|
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}")
|
2020-11-23 11:55:42 +00:00
|
|
|
endif()
|
2019-09-28 14:42:29 +00:00
|
|
|
message(STATUS "")
|