CMakeLists.txt (2577B)
1 cmake_minimum_required(VERSION 3.10) 2 3 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) 4 set(CMAKE_INCLUDE_CURRENT_DIR ON) 5 project(Mutriz LANGUAGES CXX C) 6 7 set(CMAKE_CXX_STANDARD 14) 8 9 set(EXTERNAL_PROJECT_DEPS "") 10 # Dependencies on ExternalProjects 11 set(MUTRIZ_DEPS "") 12 13 # Libraries linked to matrix_client 14 set(MUTRIZ_LIBS "") 15 16 17 file(DOWNLOAD 18 "https://github.com/nlohmann/json/releases/download/v3.1.2/json.hpp" 19 ${PROJECT_SOURCE_DIR}/json.hpp 20 EXPECTED_HASH SHA256=fbdfec4b4cf63b3b565d09f87e6c3c183bdd45c5be1864d3fcb338f6f02c1733) 21 22 file(DOWNLOAD 23 "https://github.com/mpark/variant/releases/download/v1.3.0/variant.hpp" 24 ${PROJECT_SOURCE_DIR}/variant.hpp 25 EXPECTED_MD5 "be0ce322cdd408e1b347b9f1d59ea67a") 26 27 # 28 # OpenSSL 29 # 30 find_package(OpenSSL REQUIRED) 31 include_directories(${OPENSSL_INCLUDE_DIR}) 32 set(MUTRIZ_LIBS ${MUTRIZ_LIBS} ${OPENSSL_LIBRARIES}) 33 34 # 35 # mtxclient 36 # 37 find_library(MTXCLIENT_LIBRARY 38 NAMES matrix_client 39 PATHS ${MTXCLIENT_ROOT} 40 ${MTXCLIENT_ROOT}/lib 41 ${MTXCLIENT_ROOT}/lib/static) 42 43 if(NOT MTXCLIENT_LIBRARY) 44 include(Mtxclient) 45 set(EXTERNAL_PROJECT_DEPS ${EXTERNAL_PROJECT_DEPS} Mtxclient) 46 endif() 47 48 include_directories(SYSTEM ${MTXCLIENT_INCLUDE_DIR}) 49 set(MUTRIZ_LIBS ${MUTRIZ_LIBS} ${MTXCLIENT_LIBRARY}) 50 51 # 52 # Boost 1.66 53 # 54 # If we can't find an already installed version we will 55 # download it and build it from source. 56 # 57 set(Boost_USE_STATIC_LIBS OFF) 58 set(Boost_USE_MULTITHREADED ON) 59 find_package(Boost 1.66) 60 find_package(Boost 1.66 COMPONENTS system random thread iostreams) 61 62 if(NOT Boost_FOUND) 63 include(Boost) 64 set(MUTRIZ_DEPS ${MUTRIZ_DEPS} Boost) 65 endif() 66 67 include_directories(${Boost_INCLUDE_DIRS}) 68 set(MUTRIZ_LIBS ${MUTRIZ_LIBS} ${Boost_LIBRARIES}) 69 70 # 71 # matrix-structs 72 # 73 find_library(MATRIX_STRUCTS_LIBRARY 74 NAMES matrix_structs 75 PATHS ${MATRIX_STRUCTS_ROOT} 76 ${MATRIX_STRUCTS_ROOT}/lib 77 ${MATRIX_STRUCTS_ROOT}/lib/static) 78 79 if(NOT MATRIX_STRUCTS_LIBRARY) 80 include(MatrixStructs) 81 endif() 82 set(MUTRIZ_DEPS ${MUTRIZ_DEPS} MatrixStructs) 83 include_directories(${MATRIX_STRUCTS_INCLUDE_DIRS}) 84 set(MUTRIZ_LIBS ${MUTRIZ_LIBS} matrix_structs) 85 86 # 87 # libolm 88 # 89 include(Olm) 90 set(MTXCLIENT_DEPS ${MTXCLIENT_DEPS} Olm) 91 set(MTXCLIENT_LIBS ${MTXCLIENT_LIBS} olm) 92 93 94 add_executable(Mutriz main.cpp) 95 96 if(EXTERNAL_PROJECT_DEPS) 97 add_dependencies(Mutriz ${EXTERNAL_PROJECT_DEPS}) 98 endif() 99 100 add_dependencies(Mutriz ${MUTRIZ_DEPS}) 101 target_link_libraries(Mutriz ${MUTRIZ_LIBS}) 102 target_include_directories(Mutriz SYSTEM PRIVATE $ENV{INCLUDE})