]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
CMake: add libssh build support
authorPeter Wu <peter@lekensteyn.nl>
Sun, 10 May 2020 14:23:30 +0000 (16:23 +0200)
committerPeter Wu <peter@lekensteyn.nl>
Fri, 15 May 2020 19:58:12 +0000 (21:58 +0200)
Closes #5372

CMakeLists.txt
docs/INSTALL.cmake
lib/curl_config.h.cmake

index 616b9dcbc585642166bb1b1b486e8dfad1d317d4..a311e125944440c00e2238724b2428f8e0503a2c 100644 (file)
@@ -672,6 +672,20 @@ if(CMAKE_USE_LIBSSH2)
   endif()
 endif()
 
+# libssh
+option(CMAKE_USE_LIBSSH "Use libSSH" OFF)
+mark_as_advanced(CMAKE_USE_LIBSSH)
+if(NOT HAVE_LIBSSH2 AND CMAKE_USE_LIBSSH)
+  find_package(libssh CONFIG)
+  if(libssh_FOUND)
+    message(STATUS "Found libssh ${libssh_VERSION}")
+    # Use imported target for include and library paths.
+    list(APPEND CURL_LIBS ssh)
+    set(USE_LIBSSH ON)
+    set(HAVE_LIBSSH_LIBSSH_H 1)
+  endif()
+endif()
+
 option(CMAKE_USE_GSSAPI "Use GSSAPI implementation (right now only Heimdal is supported with CMake build)" OFF)
 mark_as_advanced(CMAKE_USE_GSSAPI)
 
@@ -1358,8 +1372,8 @@ _add_if("SMB"           NOT CURL_DISABLE_SMB AND use_ntlm)
 _add_if("SMBS"          NOT CURL_DISABLE_SMB AND SSL_ENABLED AND use_ntlm)
 _add_if("SMTP"          NOT CURL_DISABLE_SMTP)
 _add_if("SMTPS"         NOT CURL_DISABLE_SMTP AND SSL_ENABLED)
-_add_if("SCP"           USE_LIBSSH2)
-_add_if("SFTP"          USE_LIBSSH2)
+_add_if("SCP"           USE_LIBSSH2 OR USE_LIBSSH)
+_add_if("SFTP"          USE_LIBSSH2 OR USE_LIBSSH)
 _add_if("RTSP"          NOT CURL_DISABLE_RTSP)
 _add_if("RTMP"          USE_LIBRTMP)
 _add_if("MQTT"          CURL_ENABLE_MQTT)
@@ -1397,6 +1411,14 @@ set(LDFLAGS                 "${CMAKE_SHARED_LINKER_FLAGS}")
 set(LIBCURL_LIBS            "")
 set(libdir                  "${CMAKE_INSTALL_PREFIX}/lib")
 foreach(_lib ${CMAKE_C_IMPLICIT_LINK_LIBRARIES} ${CURL_LIBS})
+  if(TARGET "${_lib}")
+    set(_libname "${_lib}")
+    get_target_property(_lib "${_lib}" LOCATION)
+    if(NOT _lib)
+      message(WARNING "Bad lib in library list: ${_libname}")
+      continue()
+    endif()
+  endif()
   if(_lib MATCHES ".*/.*" OR _lib MATCHES "^-")
     set(LIBCURL_LIBS          "${LIBCURL_LIBS} ${_lib}")
   else()
index 03328cbcd9346ddd1d3d19d3ac463932bd46c515..c967b0851b459059236a3323de7ec3ae75522bb9 100644 (file)
@@ -25,8 +25,7 @@ Current flaws in the curl CMake build
 
    - Builds libcurl without large file support
    - Does not support all SSL libraries (only OpenSSL, WinSSL, DarwinSSL, and
-     mbed TLS)
-   - Doesn't build with SCP and SFTP support (libssh2) (see issue #1155)
+     mbed TLS, NSS, WolfSSL)
    - Doesn't allow different resolver backends (no c-ares build support)
    - No RTMP support built
    - Doesn't allow build curl and libcurl debug enabled
index 39160a9a8954151e8e000578e895e5e210c6ef52..05a5acb03881b9547b34c3792f352d940c0b7ea9 100644 (file)
 /* Define to 1 if you have the <libssh2.h> header file. */
 #cmakedefine HAVE_LIBSSH2_H 1
 
+/* Define to 1 if you have the <libssh/libssh.h> header file. */
+#cmakedefine HAVE_LIBSSH_LIBSSH_H 1
+
 /* if zlib is available */
 #cmakedefine HAVE_LIBZ 1
 
@@ -969,6 +972,9 @@ ${SIZEOF_TIME_T_CODE}
 /* if WolfSSL is enabled */
 #cmakedefine USE_WOLFSSL 1
 
+/* if libSSH is in use */
+#cmakedefine USE_LIBSSH 1
+
 /* if libSSH2 is in use */
 #cmakedefine USE_LIBSSH2 1