diff options
author | Peter Wu <peter@lekensteyn.nl> | 2020-05-10 16:23:30 +0200 |
---|---|---|
committer | Peter Wu <peter@lekensteyn.nl> | 2020-05-15 21:58:12 +0200 |
commit | a158a0916691164b40b29e301d7cf589882598c0 (patch) | |
tree | dfc06f1de8df6402c02c9fd521521f230bb8a919 | |
parent | a384e870bc59c839d48f856a31eb8f9f3b7dec3b (diff) |
CMake: add libssh build support
Closes #5372
-rw-r--r-- | CMakeLists.txt | 26 | ||||
-rw-r--r-- | docs/INSTALL.cmake | 3 | ||||
-rw-r--r-- | lib/curl_config.h.cmake | 6 |
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 |