mutriz

git clone git://archive.git.mtrnord.blog/Nordgedanken/mutriz.git
Log | Files | Refs

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})