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 <[email protected]>
---
 CMakeLists.txt             | 19 ++++++++++++-------
 packaging/android/build.sh |  2 +-
 2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b4eed8b..a2e7dd5 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 00263d4..b70704f 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?
-- 
2.1.4

_______________________________________________
subsurface mailing list
[email protected]
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to