summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2020-05-10 16:23:30 +0200
committerPeter Wu <peter@lekensteyn.nl>2020-05-15 21:58:12 +0200
commita158a0916691164b40b29e301d7cf589882598c0 (patch)
treedfc06f1de8df6402c02c9fd521521f230bb8a919
parenta384e870bc59c839d48f856a31eb8f9f3b7dec3b (diff)
downloadcurl-a158a0916691164b40b29e301d7cf589882598c0.tar.gz
CMake: add libssh build support
Closes #5372
-rw-r--r--CMakeLists.txt26
-rw-r--r--docs/INSTALL.cmake3
-rw-r--r--lib/curl_config.h.cmake6
3 files changed, 31 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 616b9dcbc..a311e1259 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -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()
diff --git a/docs/INSTALL.cmake b/docs/INSTALL.cmake
index 03328cbcd..c967b0851 100644
--- a/docs/INSTALL.cmake
+++ b/docs/INSTALL.cmake
@@ -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
diff --git a/lib/curl_config.h.cmake b/lib/curl_config.h.cmake
index 39160a9a8..05a5acb03 100644
--- a/lib/curl_config.h.cmake
+++ b/lib/curl_config.h.cmake
@@ -428,6 +428,9 @@
/* 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