diff --git a/.ci/install.sh b/.ci/install.sh index ed25fcf..6019e0a 100755 --- a/.ci/install.sh +++ b/.ci/install.sh @@ -4,7 +4,7 @@ set -ex if [ $TRAVIS_OS_NAME == osx ]; then brew update - brew install qt5 lmdb clang-format ninja libsodium + brew install qt5 lmdb clang-format ninja libsodium cmark brew upgrade boost cmake curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py diff --git a/.ci/script.sh b/.ci/script.sh index 69433db..622bda9 100755 --- a/.ci/script.sh +++ b/.ci/script.sh @@ -22,7 +22,9 @@ if [ $TRAVIS_OS_NAME == osx ]; then fi # Build & install dependencies -cmake -GNinja -Hdeps -B.deps -DUSE_BUNDLED_BOOST=${USE_BUNDLED_BOOST} +cmake -GNinja -Hdeps -B.deps \ + -DUSE_BUNDLED_BOOST=${USE_BUNDLED_BOOST} \ + -DUSE_BUNDLED_CMARK=${USE_BUNDLED_CMARK} cmake --build .deps # Build nheko diff --git a/.travis.yml b/.travis.yml index e6c6d44..bd165f8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,6 +15,7 @@ matrix: env: - DEPLOYMENT=1 - USE_BUNDLED_BOOST=0 + - USE_BUNDLED_CMARK=0 - os: linux compiler: gcc env: @@ -24,6 +25,7 @@ matrix: - QT_PKG=510 - DEPLOYMENT=1 - USE_BUNDLED_BOOST=1 + - USE_BUNDLED_CMARK=1 addons: apt: sources: ["ubuntu-toolchain-r-test"] @@ -36,6 +38,7 @@ matrix: - QT_VERSION="-5.10.1" - QT_PKG=510 - USE_BUNDLED_BOOST=1 + - USE_BUNDLED_CMARK=1 addons: apt: sources: ["ubuntu-toolchain-r-test"] @@ -48,6 +51,7 @@ matrix: - QT_VERSION=571 - QT_PKG=57 - USE_BUNDLED_BOOST=1 + - USE_BUNDLED_CMARK=1 addons: apt: sources: ["ubuntu-toolchain-r-test"] @@ -60,6 +64,7 @@ matrix: - QT_VERSION=592 - QT_PKG=59 - USE_BUNDLED_BOOST=1 + - USE_BUNDLED_CMARK=1 addons: apt: sources: ["ubuntu-toolchain-r-test", "llvm-toolchain-trusty-5.0"] diff --git a/README.md b/README.md index 681d8d2..d9d0ca4 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,7 @@ sudo port install nheko - CMake 3.1 or greater. - [mtxclient](https://github.com/mujx/mtxclient) - [LMDB](https://symas.com/lightning-memory-mapped-database/) +- [cmark](https://github.com/commonmark/cmark) - Boost 1.66 or greater. - [libolm](https://git.matrix.org/git/olm) - [libsodium](https://github.com/jedisct1/libsodium) @@ -115,6 +116,7 @@ sudo pacman -S qt5-base \ gcc \ fontconfig \ lmdb \ + cmark \ boost \ libsodium ``` @@ -139,7 +141,7 @@ sudo apt-get install -y g++-7 qt59base qt59svg qt59tools qt59multimedia cmake li ```bash brew update -brew install qt5 lmdb cmake llvm libsodium spdlog boost +brew install qt5 lmdb cmake llvm libsodium spdlog boost cmark ``` ##### Windows @@ -166,6 +168,7 @@ cd vcpkg boost-signals2 \ boost-system \ boost-thread \ + cmark \ libsodium \ lmdb \ openssl \ diff --git a/appveyor.yml b/appveyor.yml index aaaf280..95c862d 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -64,6 +64,8 @@ build_script: -DCMAKE_TOOLCHAIN_FILE=C:/Tools/vcpkg/scripts/buildsystems/vcpkg.cmake -DLMDBXX_INCLUDE_DIR=.deps/usr/include -DTWEENY_INCLUDE_DIR=.deps/usr/include + -DCMARK_INCLUDE_DIR=.deps/usr/include + -DCMARK_LIBRARY=.deps/usr/lib/cmark_static.lib - cmake --build build --config Release after_build: diff --git a/cmake/Findcmark.cmake b/cmake/Findcmark.cmake index fd7d062..29092bb 100644 --- a/cmake/Findcmark.cmake +++ b/cmake/Findcmark.cmake @@ -2,23 +2,25 @@ # CMake module to search for the cmark library # -find_path(CMARK_INCLUDE_DIR - NAMES cmark.h - PATHS /usr/include - /usr/local/include - $ENV{LIB_DIR}/include - $ENV{LIB_DIR}/include/cmark) +include(FindPkgConfig) +pkg_check_modules(PC_CMARK QUIET cmark) -find_library(CMARK_LIBRARY - NAMES cmark - PATHS /usr/lib /usr/local/lib $ENV{LIB_DIR}/lib) - -if(OLM_FOUND) - set(OLM_INCLUDE_DIRS ${CMARK_INCLUDE_DIR}) +if(NOT CMARK_INCLUDE_DIR) + find_path(CMARK_INCLUDE_DIR + NAMES cmark.h + PATHS ${PC_CMARK_INCLUDEDIR} + ${PC_CMARK_INCLUDE_DIRS} + /usr/include + /usr/local/include) +endif() - if(NOT OLM_LIBRARIES) - set(OLM_LIBRARIES ${CMARK_LIBRARY}) - endif() +if(NOT CMARK_LIBRARY) + find_library(CMARK_LIBRARY + NAMES cmark + HINTS ${PC_CMARK_LIBDIR} + ${PC_CMARK_LIBRARY_DIRS} + /usr/lib + /usr/local/lib) endif() if(NOT TARGET cmark::cmark) @@ -37,3 +39,6 @@ find_package_handle_standard_args(cmark CMARK_LIBRARY) mark_as_advanced(CMARK_LIBRARY CMARK_INCLUDE_DIR) + +set(CMARK_LIBRARIES ${CMARK_LIBRARY}) +set(CMARK_INCLUDE_DIRS ${CMARK_INCLUDE_DIR}) diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 5df60d2..25b1b89 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -22,6 +22,7 @@ set(DEPS_DOWNLOAD_DIR "${DEPS_BUILD_DIR}/downloads" option(USE_BUNDLED "Use bundled dependencies." ON) option(USE_BUNDLED_BOOST "Use the bundled version of Boost." ${USE_BUNDLED}) +option(USE_BUNDLED_CMARK "Use the bundled version of cmark." ${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_TWEENY "Use the bundled version of Tweeny." ${USE_BUNDLED}) @@ -38,10 +39,10 @@ set(BOOST_SHA256 set( MTXCLIENT_URL - https://github.com/mujx/mtxclient/archive/659bfe7cd9b87bb009ebc703398fd93dc098b0f0.tar.gz + https://github.com/mujx/mtxclient/archive/1a539721ec86cb8b5f9d0b51cbe2251e46257a9b.tar.gz ) set(MTXCLIENT_HASH - d6794940354fd6e163ca52cab7878bba3c71ebfe3ca9a51ada5485a09c0d27f8) + 7c458f57f774c75afaf403869e57a753620b5b619b1a7cd0b63bbc4735fc8993) set( TWEENY_URL @@ -60,6 +61,9 @@ set(LMDBXX_HASH set(OLM_URL https://git.matrix.org/git/olm.git) set(OLM_TAG 4065c8e11a33ba41133a086ed3de4da94dcb6bae) +set(CMARK_URL https://github.com/commonmark/cmark/archive/0.28.3.tar.gz) +set(CMARK_HASH acc98685d3c1b515ff787ac7c994188dadaf28a2d700c10c1221da4199bae1fc) + set(SPDLOG_URL https://github.com/gabime/spdlog/archive/v1.1.0.tar.gz) set(SPDLOG_HASH 3dbcbfd8c07e25f5e0d662b194d3a7772ef214358c49ada23c044c4747ce8b19) @@ -84,6 +88,10 @@ if(USE_BUNDLED_OLM) include(Olm) endif() +if(USE_BUNDLED_CMARK) + include(cmark) +endif() + if(USE_BUNDLED_TWEENY) include(Tweeny) endif() diff --git a/deps/cmake/cmark.cmake b/deps/cmake/cmark.cmake new file mode 100644 index 0000000..e0d45e8 --- /dev/null +++ b/deps/cmake/cmark.cmake @@ -0,0 +1,21 @@ +set(WINDOWS_FLAGS "") + +if(MSVC) + set(WINDOWS_FLAGS "-DCMAKE_GENERATOR_PLATFORM=x64") +endif() + +ExternalProject_Add( + cmark + + URL ${CMARK_URL} + URL_HASH SHA256=${CMARK_HASH} + + BUILD_IN_SOURCE 0 + SOURCE_DIR ${DEPS_BUILD_DIR}/cmark + CONFIGURE_COMMAND ${CMAKE_COMMAND} + -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} + -DCMARK_TESTS=OFF + ${DEPS_BUILD_DIR}/cmark + ${WINDOWS_FLAGS}) + +list(APPEND THIRD_PARTY_DEPS cmark)