From 1f112c7738603269b47085d93c02d1a703b18618 Mon Sep 17 00:00:00 2001 From: Anton Lundin Date: Thu, 9 Jul 2015 00:42:11 +0200 Subject: [PATCH] Make the libssh linking optional Due to bugs in libgit2, we force linking with libssh2 to add git-over-ssh support. On android we currency don't want libssh2 due to its dependency chain, so this makes the libssh2 force linking opt-out. Signed-off-by: Anton Lundin Signed-off-by: Dirk Hohndel --- CMakeLists.txt | 19 ++++++++++++------- packaging/android/build.sh | 2 +- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b4eed8bed..a2e7dd5ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,7 @@ option(NO_DOCS "disable the docs" OFF) option(NO_PRINTING "disable the printing support" ON) option(NO_USERMANUAL "don't include a viewer for the user manual" OFF) option(USE_LIBGIT23_API "allow building with libgit2 master" OFF) +option(FORCE_LIBSSH "force linking with libssh to workaround libgit2 bug" ON) option(SUBSURFACE_MOBILE "build the QtQuick version for mobile device" OFF) option(FBSUPPORT "allow posting to Facebook" ON) @@ -54,8 +55,10 @@ if(LIBGIT2_FROM_PKGCONFIG) if(USE_LIBGIT23_API) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_LIBGIT23_API") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_LIBGIT23_API") - pkg_config_library(LIBSSH2 libssh2 REQUIRED) - set(LIBGIT2_LIBRARIES ${LIBGIT2_LIBRARIES} ${LIBSSH2_LIBRARIES}) + if(FORCE_LIBSSH) + pkg_config_library(LIBSSH2 libssh2 REQUIRED) + set(LIBGIT2_LIBRARIES ${LIBGIT2_LIBRARIES} ${LIBSSH2_LIBRARIES}) + endif() endif() else() find_package(LIBGIT2 REQUIRED) @@ -63,12 +66,14 @@ else() if(USE_LIBGIT23_API) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_LIBGIT23_API") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_LIBGIT23_API") + if(FORCE_LIBSSH) find_package(Libssh2 QUIET CONFIG) - if ("${LIBSSH2_VERSION}" STRGREATER "1.6.1") - set(LIBSSH2_LIBRARIES Libssh2::libssh2) - endif() - if(!LIBSSH2_FOUND OR "${LIBSSH2_FOUND}" STREQUAL "") - pkg_config_library(LIBSSH2 libssh2 REQUIRED) + if ("${LIBSSH2_VERSION}" STRGREATER "1.6.1") + set(LIBSSH2_LIBRARIES Libssh2::libssh2) + endif() + if(!LIBSSH2_FOUND OR "${LIBSSH2_FOUND}" STREQUAL "") + pkg_config_library(LIBSSH2 libssh2 REQUIRED) + endif() endif() find_package(libcurl QUIET) if(!LIBCURL_FOUND OR "${LIBCURL_FOUND}" STREQUAL "") diff --git a/packaging/android/build.sh b/packaging/android/build.sh index 00263d4fb..b70704f45 100644 --- a/packaging/android/build.sh +++ b/packaging/android/build.sh @@ -158,7 +158,7 @@ fi mkdir -p subsurface-build-$ARCH cd subsurface-build-$ARCH -cmake -DCMAKE_SYSTEM_NAME=Android -DLIBDC_FROM_PKGCONFIG=ON -DLIBGIT2_FROM_PKGCONFIG=ON -DUSE_LIBGIT23_API=ON -DNO_MARBLE=ON -DNO_PRINTING=ON -DNO_USERMANUAL=ON -DCMAKE_PREFIX_PATH:UNINITIALIZED=${QT5_ANDROID}/android_${QT_ARCH}/lib/cmake $SUBSURFACE_SOURCE +cmake -DCMAKE_SYSTEM_NAME=Android -DFORCE_LIBSSH=OFF -DLIBDC_FROM_PKGCONFIG=ON -DLIBGIT2_FROM_PKGCONFIG=ON -DUSE_LIBGIT23_API=ON -DNO_MARBLE=ON -DNO_PRINTING=ON -DNO_USERMANUAL=ON -DCMAKE_PREFIX_PATH:UNINITIALIZED=${QT5_ANDROID}/android_${QT_ARCH}/lib/cmake $SUBSURFACE_SOURCE make #make install INSTALL_ROOT=android_build # bug in androiddeployqt? why is it looking for something with the builddir in it?