diff --git a/.ci/install.sh b/.ci/install.sh index f81f9265..ee172581 100755 --- a/.ci/install.sh +++ b/.ci/install.sh @@ -4,7 +4,8 @@ set -ex if [ $TRAVIS_OS_NAME == osx ]; then brew update - brew install qt5 lmdb clang-format ninja + brew install qt5 lmdb clang-format ninja libsodium spdlog + brew upgrade boost curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py sudo python get-pip.py @@ -23,6 +24,7 @@ if [ $TRAVIS_OS_NAME == linux ]; then QT_PKG="59" fi + sudo add-apt-repository -y ppa:chris-lea/libsodium sudo add-apt-repository -y ppa:beineri/opt-qt${QT_VERSION}-trusty sudo add-apt-repository -y ppa:george-edison55/cmake-3.x sudo apt-get update -qq @@ -32,5 +34,6 @@ if [ $TRAVIS_OS_NAME == linux ]; then qt${QT_PKG}svg \ qt${QT_PKG}multimedia \ cmake \ - liblmdb-dev + liblmdb-dev \ + libsodium-dev fi diff --git a/.ci/script.sh b/.ci/script.sh index a954eba6..f5966349 100755 --- a/.ci/script.sh +++ b/.ci/script.sh @@ -10,7 +10,16 @@ if [ $TRAVIS_OS_NAME == osx ]; then export CMAKE_PREFIX_PATH=/usr/local/opt/qt5 fi -make ci +# Build & install dependencies +mkdir -p .deps/usr/{lib,include}/ +cmake -Hdeps -B.deps \ + -DUSE_BUNDLED_BOOST=${USE_BUNDLED_BOOST} \ + -DUSE_BUNDLED_SPDLOG=${USE_BUNDLED_SPDLOG} +cmake --build .deps + +# Build nheko +cmake -GNinja -H. -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo +cmake --build build if [ $TRAVIS_OS_NAME == osx ]; then make lint; diff --git a/.travis.yml b/.travis.yml index 2047a2db..3e631f30 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,6 +14,8 @@ matrix: compiler: clang env: - DEPLOYMENT=1 + - USE_BUNDLED_BOOST=0 + - USE_BUNDLED_SPDLOG=0 - os: linux compiler: gcc env: @@ -22,6 +24,8 @@ matrix: - QT_VERSION="-5.10.1" - QT_PKG=510 - DEPLOYMENT=1 + - USE_BUNDLED_BOOST=1 + - USE_BUNDLED_SPDLOG=1 addons: apt: sources: ["ubuntu-toolchain-r-test"] @@ -33,6 +37,8 @@ matrix: - C_COMPILER=gcc-7 - QT_VERSION=571 - QT_PKG=57 + - USE_BUNDLED_BOOST=1 + - USE_BUNDLED_SPDLOG=1 addons: apt: sources: ["ubuntu-toolchain-r-test"] @@ -44,6 +50,8 @@ matrix: - C_COMPILER=clang-5.0 - QT_VERSION=592 - QT_PKG=59 + - USE_BUNDLED_BOOST=1 + - USE_BUNDLED_SPDLOG=1 addons: apt: sources: ["ubuntu-toolchain-r-test", "llvm-toolchain-trusty-5.0"] diff --git a/CMakeLists.txt b/CMakeLists.txt index 0fcd9f2c..63c718e8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,6 +39,11 @@ if(APPLE) set(OPENSSL_ROOT_DIR /usr/local/opt/openssl) endif() +if(NOT MSVC AND NOT APPLE) + set(THREADS_PREFER_PTHREAD_FLAG ON) + find_package(Threads REQUIRED) +endif() + # # LMDB # @@ -72,7 +77,20 @@ set(CMAKE_C_COMPILER gcc) set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) -include(CompilerFlags) +if(NOT MSVC) + set( + CMAKE_CXX_FLAGS + "${CMAKE_CXX_FLAGS} \ + -Wall \ + -Wextra \ + -Werror \ + -pipe \ + -pedantic \ + -fsized-deallocation \ + -fdiagnostics-color=always \ + -Wunreachable-code" + ) +endif() if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Debug" CACHE STRING @@ -187,10 +205,10 @@ set(SRC_FILES # ExternalProject dependencies set(EXTERNAL_PROJECT_DEPS "") +find_package(ZLIB REQUIRED) +find_package(OpenSSL REQUIRED) find_package(MatrixStructs REQUIRED) find_package(MatrixClient REQUIRED) -find_package(OpenSSL REQUIRED) -find_package(ZLIB REQUIRED) # # tweeny diff --git a/appveyor.yml b/appveyor.yml index 0cd819ab..c9f3023e 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -14,6 +14,8 @@ build: install: - set QT_DIR=C:\Qt\5.10.1\msvc2017_64 - set PATH=%PATH%;%QT_DIR%\bin;C:\MinGW\bin + - set PATH=%PATH%;C:\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\bin + - mingw32-make.exe --version - call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" - vcpkg install boost-asio:%PLATFORM%-windows diff --git a/cmake/CompilerFlags.cmake b/cmake/CompilerFlags.cmake deleted file mode 100644 index f5860a99..00000000 --- a/cmake/CompilerFlags.cmake +++ /dev/null @@ -1,26 +0,0 @@ -if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \ - -Wall \ - -Wextra \ - -Werror \ - -pipe \ - -Wno-unused-function \ - -pedantic \ - -Wunreachable-code") - - if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") - execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) - - if (GCC_VERSION VERSION_GREATER 4.9) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=always" ) - endif() - endif() - - if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=always" ) - endif() -endif() - -if(NOT APPLE AND NOT MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread") -endif() diff --git a/deps/cmake/Olm.cmake b/deps/cmake/Olm.cmake index b0df2833..0eb44d37 100644 --- a/deps/cmake/Olm.cmake +++ b/deps/cmake/Olm.cmake @@ -4,8 +4,6 @@ else() set(MAKE_CMD "make") endif() -set(OLM_NAME "${CMAKE_STATIC_LIBRARY_PREFIX}olm${CMAKE_STATIC_LIBRARY_SUFFIX}") - ExternalProject_Add( Olm