diff --git a/cmake/Findlibssh.cmake b/cmake/Findlibssh.cmake --- a/cmake/Findlibssh.cmake +++ b/cmake/Findlibssh.cmake @@ -32,13 +32,29 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. +# Define an imported target to have compatibility with newer libssh and so +# we have a single target to use regardless of the code path taken in the +# finder and the actual libssh version defining the target. +macro(libssh_ensure_imported_target) + if(NOT TARGET ssh) + add_library(ssh SHARED IMPORTED) + set_target_properties(ssh PROPERTIES + IMPORTED_LOCATION "${LIBSSH_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${LIBSSH_INCLUDE_DIR}" + ) + endif() +endmacro() + # We prefer the config, but on Ubuntu 18.04 LTS (and to some extent later # versions it seems) they've not packaged the config properly. So, go for the # config by default and fall back to manual lookup iff the config was not found. # https://bugs.kde.org/show_bug.cgi?id=400291 # https://bugs.launchpad.net/ubuntu/+source/libssh/+bug/1800135 find_package(libssh ${libssh_FIND_VERSION} NO_MODULE QUIET) if(libssh_FOUND) + # Certain versions with config may not have the target, so make sure it's + # defined. + libssh_ensure_imported_target() return() endif() @@ -109,5 +125,7 @@ VERSION_VAR LIBSSH_VERSION) +libssh_ensure_imported_target() + # show the LIBSSH_INCLUDE_DIRS and LIBSSH_LIBRARIES variables only in the advanced view mark_as_advanced(LIBSSH_INCLUDE_DIR LIBSSH_LIBRARIES) diff --git a/sftp/CMakeLists.txt b/sftp/CMakeLists.txt --- a/sftp/CMakeLists.txt +++ b/sftp/CMakeLists.txt @@ -22,7 +22,7 @@ KF5::WidgetsAddons # KMessageBox KF5::I18n Qt5::Network - ${LIBSSH_LIBRARIES}) + ssh) set_target_properties(kio_sftp PROPERTIES OUTPUT_NAME "sftp") install(TARGETS kio_sftp DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio)