diff --git a/.travis.yml b/.travis.yml index b5a6c4249..646e02ed1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -80,7 +80,7 @@ before_install: if [ "$TRAVIS_OS_NAME" = "linux" ]; then qbtconf="$qbtconf --prefix="$qbt_path" PKG_CONFIG_PATH=/opt/qt55/lib/pkgconfig:$PKG_CONFIG_PATH" else - qbtconf="$qbtconf --prefix="$qbt_path"" + qbtconf="$qbtconf --prefix="$qbt_path" PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig:$PKG_CONFIG_PATH" fi # options for specific branches @@ -120,7 +120,8 @@ install: # dependencies brew update > /dev/null brew outdated "pkg-config" || brew upgrade "pkg-config" - brew install colormake ccache zlib qt libtorrent-rasterbar + brew install colormake ccache zlib qt openssl libtorrent-rasterbar + PATH="/usr/local/opt/ccache/libexec:$PATH" brew link --force zlib qt @@ -130,9 +131,9 @@ install: sudo ln -s /usr/local/opt/qt/mkspecs /usr/local/mkspecs sudo ln -s /usr/local/opt/qt/plugins /usr/local/plugins - fi - MY_CMAKE_OPENSSL_HINT="-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl/" + MY_CMAKE_OPENSSL_HINT="-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl/" + fi fi - | if [ "$TRAVIS_BRANCH" != "$coverity_branch" ]; then @@ -159,8 +160,8 @@ script: # For some reason for RC_1_1 we need to also specify the OpenSSL compiler/linker flags # Homebrew doesn't symlink OpenSSL for security reasons ./bootstrap.sh - ./configure $qbtconf CXXFLAGS="$CXXFLAGS $(PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig:$PKG_CONFIG_PATH" pkg-config --cflags openssl) -std=c++14" \ - LDFLAGS="$LDFLAGS $(PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig:$PKG_CONFIG_PATH" pkg-config --libs openssl)" + ./configure $qbtconf CXXFLAGS="$CXXFLAGS -std=c++14" + sed -i "" -e "s/^\(CC.*&&\).*$/\1 $CC/" src/Makefile # workaround for Qt & ccache: https://bugreports.qt.io/browse/QTBUG-31034 sed -i "" -e "s/^\(CXX.*&&\).*$/\1 $CXX/" src/Makefile sed -i "" -e 's/^\(CXXFLAGS.*\)$/\1 -Wno-unused-local-typedefs -Wno-inconsistent-missing-override/' src/Makefile diff --git a/CMakeLists.txt b/CMakeLists.txt index fc3fc7f27..012605d47 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,6 +32,7 @@ include(FeatureSummary) # version requirements set(requiredBoostVersion 1.35) set(requiredQtVersion 5.5.1) +set(requiredOpensslVersion 1.0) if(WIN32) include(winconf) diff --git a/configure b/configure index 0cc216f94..47533ffb9 100755 --- a/configure +++ b/configure @@ -601,6 +601,8 @@ EXPAND_BINDIR EXPAND_PREFIX zlib_LIBS zlib_CFLAGS +openssl_LIBS +openssl_CFLAGS libtorrent_LIBS libtorrent_CFLAGS BOOST_SYSTEM_LIB @@ -745,6 +747,8 @@ Qt5Svg_CFLAGS Qt5Svg_LIBS libtorrent_CFLAGS libtorrent_LIBS +openssl_CFLAGS +openssl_LIBS zlib_CFLAGS zlib_LIBS' @@ -1433,6 +1437,10 @@ Some influential environment variables: C compiler flags for libtorrent, overriding pkg-config libtorrent_LIBS linker flags for libtorrent, overriding pkg-config + openssl_CFLAGS + C compiler flags for openssl, overriding pkg-config + openssl_LIBS + linker flags for openssl, overriding pkg-config zlib_CFLAGS C compiler flags for zlib, overriding pkg-config zlib_LIBS linker flags for zlib, overriding pkg-config @@ -5391,6 +5399,99 @@ $as_echo "yes" >&6; } fi +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for openssl" >&5 +$as_echo_n "checking for openssl... " >&6; } + +if test -n "$openssl_CFLAGS"; then + pkg_cv_openssl_CFLAGS="$openssl_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 1.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "openssl >= 1.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_openssl_CFLAGS=`$PKG_CONFIG --cflags "openssl >= 1.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$openssl_LIBS"; then + pkg_cv_openssl_LIBS="$openssl_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 1.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "openssl >= 1.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_openssl_LIBS=`$PKG_CONFIG --libs "openssl >= 1.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + openssl_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "openssl >= 1.0" 2>&1` + else + openssl_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "openssl >= 1.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$openssl_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (openssl >= 1.0) were not met: + +$openssl_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables openssl_CFLAGS +and openssl_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables openssl_CFLAGS +and openssl_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details" "$LINENO" 5; } +else + openssl_CFLAGS=$pkg_cv_openssl_CFLAGS + openssl_LIBS=$pkg_cv_openssl_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + CXXFLAGS="$openssl_CFLAGS $CXXFLAGS" + LIBS="$openssl_LIBS $LIBS" +fi + + pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for zlib" >&5 $as_echo_n "checking for zlib... " >&6; } diff --git a/configure.ac b/configure.ac index 6fb0ec932..751403ba8 100644 --- a/configure.ac +++ b/configure.ac @@ -195,6 +195,11 @@ PKG_CHECK_MODULES(libtorrent, [CXXFLAGS="$libtorrent_CFLAGS $CXXFLAGS" LIBS="$libtorrent_LIBS $LIBS"]) +PKG_CHECK_MODULES(openssl, + [openssl >= 1.0], + [CXXFLAGS="$openssl_CFLAGS $CXXFLAGS" + LIBS="$openssl_LIBS $LIBS"]) + PKG_CHECK_MODULES(zlib, [zlib >= 1.2.5.2], [CXXFLAGS="$zlib_CFLAGS $CXXFLAGS" @@ -207,7 +212,7 @@ AC_COMPILE_IFELSE([DETECT_CPP11_PROGRAM()], QBT_CXX11_FOUND="yes"], [AC_MSG_RESULT([no]) QBT_CXX11_FOUND="no"]) - + # In case of no, check if the compiler can support at least C++11 # and if yes, enable it leaving a warning to the user AS_IF([test "x$QBT_CXX11_FOUND" = "xno"], diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 364d9fc59..eb746d6c5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -16,6 +16,7 @@ include(QbtTargetSources) find_package(Boost ${requiredBoostVersion} REQUIRED) find_package(LibtorrentRasterbar REQUIRED) +find_package(OpenSSL ${requiredOpensslVersion} REQUIRED) if (Boost_VERSION VERSION_LESS 106000) add_definitions(-DBOOST_NO_CXX11_RVALUE_REFERENCES)