diff options
author | Konstantinos Sideris <sideris.konstantin@gmail.com> | 2018-06-04 13:54:51 +0300 |
---|---|---|
committer | Konstantinos Sideris <sideris.konstantin@gmail.com> | 2018-06-04 13:54:51 +0300 |
commit | 0a9d95dfc9ef2c7e822257cc7b256cdd24d4a0d3 (patch) | |
tree | c708e27bb7b74e3571dd6c082847fa1d7a3e587a /deps | |
parent | 70ffa434246dbb1a8c8c22479c7b57d7ad0f0826 (diff) |
Include mtxclient in the build
Diffstat (limited to 'deps')
-rw-r--r-- | deps/CMakeLists.txt | 82 | ||||
-rw-r--r-- | deps/cmake/Boost.cmake | 23 | ||||
-rw-r--r-- | deps/cmake/MatrixClient.cmake | 30 | ||||
-rw-r--r-- | deps/cmake/MatrixStructs.cmake | 25 | ||||
-rw-r--r-- | deps/cmake/Olm.cmake | 24 | ||||
-rw-r--r-- | deps/cmake/SpdLog.cmake | 15 |
6 files changed, 199 insertions, 0 deletions
diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt new file mode 100644 index 00000000..234e904f --- /dev/null +++ b/deps/CMakeLists.txt @@ -0,0 +1,82 @@ +cmake_minimum_required(VERSION 3.1) +project(NHEKO_DEPS) + +# Point CMake at any custom modules we may ship +list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) +endif() + +set(DEPS_INSTALL_DIR "${CMAKE_BINARY_DIR}/usr" + CACHE PATH "Dependencies install directory.") +set(DEPS_BIN_DIR "${DEPS_INSTALL_DIR}/bin" + CACHE PATH "Dependencies binary install directory.") +set(DEPS_LIB_DIR "${DEPS_INSTALL_DIR}/lib" + CACHE PATH "Dependencies library install directory.") +set(DEPS_BUILD_DIR "${CMAKE_BINARY_DIR}/build" + CACHE PATH "Dependencies build directory.") +set(DEPS_DOWNLOAD_DIR "${DEPS_BUILD_DIR}/downloads" + CACHE PATH "Dependencies download directory.") + +option(USE_BUNDLED "Use bundled dependencies." ON) + +option(USE_BUNDLED_BOOST "Use the bundled version of Boost." ${USE_BUNDLED}) +option(USE_BUNDLED_SPDLOG "Use the bundled version of spdlog." ${USE_BUNDLED}) +option(USE_BUNDLED_OLM "Use the bundled version of libolm." ${USE_BUNDLED}) +option(USE_BUNDLED_MATRIX_STRUCTS "Use the bundled version of matrix-structs." + ${USE_BUNDLED}) +option(USE_BUNDLED_MATRIX_CLIENT "Use the bundled version of mtxclient." + ${USE_BUNDLED}) + +include(ExternalProject) + +set(BOOST_URL + https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.tar.bz2) +set(BOOST_SHA256 + 5721818253e6a0989583192f96782c4a98eb6204965316df9f5ad75819225ca9) + +set(MATRIX_STRUCTS_URL https://github.com/mujx/matrix-structs) +set(MATRIX_STRUCTS_TAG eeb7373729a1618e2b3838407863342b88b8a0de) + +set(MTXCLIENT_URL https://github.com/mujx/mtxclient) +set(MTXCLIENT_TAG 219d2a8887376122e76ba0f64c0cc9935f62f308) + +set(OLM_URL https://git.matrix.org/git/olm.git) +set(OLM_TAG 4065c8e11a33ba41133a086ed3de4da94dcb6bae) + +set(SPDLOG_URL https://github.com/gabime/spdlog) +set(SPDLOG_TAG 560df2878ad308b27873b3cc5e810635d69cfad6) + +if(USE_BUNDLED_BOOST) + include(Boost) +endif() + +if(USE_BUNDLED_SPDLOG) + include(SpdLog) +endif() + +if(USE_BUNDLED_OLM) + include(Olm) +endif() + +if(USE_BUNDLED_MATRIX_STRUCTS) + include(MatrixStructs) +endif() + +if(WIN32) + if("${TARGET_ARCH}" STREQUAL "X86_64") + set(TARGET_ARCH x64) + elseif(TARGET_ARCH STREQUAL "X86") + set(TARGET_ARCH ia32) + endif() +endif() + +add_custom_target(third-party ALL + COMMAND ${CMAKE_COMMAND} -E touch .third-party + DEPENDS ${THIRD_PARTY_DEPS}) + +if(USE_BUNDLED_MATRIX_CLIENT) + include(MatrixClient) + add_dependencies(MatrixClient third-party) +endif() diff --git a/deps/cmake/Boost.cmake b/deps/cmake/Boost.cmake new file mode 100644 index 00000000..572d1d07 --- /dev/null +++ b/deps/cmake/Boost.cmake @@ -0,0 +1,23 @@ +if(WIN32) + message(STATUS "Building Boost in Windows is not supported (skipping)") + return() +endif() + +ExternalProject_Add( + Boost + + URL ${BOOST_URL} + URL_HASH SHA256=${BOOST_SHA256} + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/boost + DOWNLOAD_NO_PROGRESS 0 + + BUILD_IN_SOURCE 1 + SOURCE_DIR ${DEPS_BUILD_DIR}/boost + CONFIGURE_COMMAND ${DEPS_BUILD_DIR}/boost/bootstrap.sh + --with-libraries=random,thread,system,iostreams,atomic,chrono,date_time,regex + --prefix=${DEPS_INSTALL_DIR} + BUILD_COMMAND ${DEPS_BUILD_DIR}/boost/b2 -d0 variant=release link=static threading=multi --layout=system + INSTALL_COMMAND ${DEPS_BUILD_DIR}/boost/b2 -d0 install +) + +list(APPEND THIRD_PARTY_DEPS Boost) diff --git a/deps/cmake/MatrixClient.cmake b/deps/cmake/MatrixClient.cmake new file mode 100644 index 00000000..7377f710 --- /dev/null +++ b/deps/cmake/MatrixClient.cmake @@ -0,0 +1,30 @@ +set(PLATFORM_FLAGS "") + +if(MSVC) + set(PLATFORM_FLAGS "-DCMAKE_GENERATOR_PLATFORM=x64") +endif() + +if(APPLE) + set(PLATFORM_FLAGS "-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl") +endif() + +ExternalProject_Add( + MatrixClient + + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/mtxclient + GIT_REPOSITORY ${MTXCLIENT_URL} + GIT_TAG ${MTXCLIENT_TAG} + + BUILD_IN_SOURCE 1 + SOURCE_DIR ${DEPS_BUILD_DIR}/mtxclient + CONFIGURE_COMMAND ${CMAKE_COMMAND} + -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} + -DCMAKE_BUILD_TYPE=Release + -DBUILD_LIB_TESTS=OFF + -DBUILD_LIB_EXAMPLES=OFF + ${PLATFORM_FLAGS} + ${DEPS_BUILD_DIR}/mtxclient + BUILD_COMMAND + ${CMAKE_COMMAND} --build ${DEPS_BUILD_DIR}/mtxclient --config Release) + +list(APPEND THIRD_PARTY_DEPS MatrixClient) diff --git a/deps/cmake/MatrixStructs.cmake b/deps/cmake/MatrixStructs.cmake new file mode 100644 index 00000000..fd12ad39 --- /dev/null +++ b/deps/cmake/MatrixStructs.cmake @@ -0,0 +1,25 @@ +set(WINDOWS_FLAGS "") + +if(MSVC) + set(WINDOWS_FLAGS "-DCMAKE_GENERATOR_PLATFORM=x64") +endif() + +ExternalProject_Add( + MatrixStructs + + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/matrix_structs + GIT_REPOSITORY ${MATRIX_STRUCTS_URL} + GIT_TAG ${MATRIX_STRUCTS_TAG} + + BUILD_IN_SOURCE 1 + SOURCE_DIR ${DEPS_BUILD_DIR}/matrix_structs + CONFIGURE_COMMAND ${CMAKE_COMMAND} + -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} + -DCMAKE_BUILD_TYPE=Release + ${DEPS_BUILD_DIR}/matrix_structs + ${WINDOWS_FLAGS} + BUILD_COMMAND ${CMAKE_COMMAND} + --build ${DEPS_BUILD_DIR}/matrix_structs + --config Release) + +list(APPEND THIRD_PARTY_DEPS MatrixStructs) diff --git a/deps/cmake/Olm.cmake b/deps/cmake/Olm.cmake new file mode 100644 index 00000000..b0df2833 --- /dev/null +++ b/deps/cmake/Olm.cmake @@ -0,0 +1,24 @@ +if(MSVC) + set(MAKE_CMD "mingw32-make.exe") +else() + set(MAKE_CMD "make") +endif() + +set(OLM_NAME "${CMAKE_STATIC_LIBRARY_PREFIX}olm${CMAKE_STATIC_LIBRARY_SUFFIX}") + +ExternalProject_Add( + Olm + + GIT_REPOSITORY ${OLM_URL} + GIT_TAG ${OLM_TAG} + + BUILD_IN_SOURCE 1 + SOURCE_DIR ${DEPS_BUILD_DIR}/olm + CONFIGURE_COMMAND "" + BUILD_COMMAND ${MAKE_CMD} static + INSTALL_COMMAND + cp -R ${DEPS_BUILD_DIR}/olm/include ${DEPS_INSTALL_DIR} && + cp ${DEPS_BUILD_DIR}/olm/build/libolm.a ${DEPS_INSTALL_DIR}/lib +) + +list(APPEND THIRD_PARTY_DEPS Olm) diff --git a/deps/cmake/SpdLog.cmake b/deps/cmake/SpdLog.cmake new file mode 100644 index 00000000..e49c947f --- /dev/null +++ b/deps/cmake/SpdLog.cmake @@ -0,0 +1,15 @@ +ExternalProject_Add( + SpdLog + + GIT_REPOSITORY ${SPDLOG_URL} + GIT_TAG ${SPDLOG_TAG} + + BUILD_IN_SOURCE 1 + SOURCE_DIR ${DEPS_BUILD_DIR}/spdlog + CONFIGURE_COMMAND ${CMAKE_COMMAND} + -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} + -DCMAKE_BUILD_TYPE=Release + ${DEPS_BUILD_DIR}/spdlog +) + +list(APPEND THIRD_PARTY_DEPS SpdLog) |