Warning, /network/kio-extras/cmake/Findlibssh.cmake is written in an unsupported language. File is not indexed.

0001 # - Try to find libssh
0002 # Once done this will define
0003 #
0004 #  LIBSSH_FOUND - system has libssh
0005 #  LIBSSH_INCLUDE_DIR - the libssh include directory
0006 #  LIBSSH_LIBRARIES - Link these to use libssh
0007 #  LIBSSH_DEFINITIONS - Compiler switches required for using libssh
0008 
0009 # SPDX-License-Identifier: BSD-3-Clause
0010 # SPDX-FileCopyrightText: 2009-2014 Andreas Schneider <asn@cryptomilk.org>
0011 # SPDX-FileCopyrightText: 2018 Harald Sitter <sitter@kde.org>
0012 
0013 # Define an imported target to have compatibility with newer libssh and so
0014 # we have a single target to use regardless of the code path taken in the
0015 # finder and the actual libssh version defining the target.
0016 macro(libssh_ensure_imported_target)
0017   if(NOT TARGET ssh)
0018       add_library(ssh SHARED IMPORTED)
0019       set_target_properties(ssh PROPERTIES
0020           IMPORTED_LOCATION "${LIBSSH_LIBRARIES}"
0021           INTERFACE_INCLUDE_DIRECTORIES "${LIBSSH_INCLUDE_DIR}"
0022       )
0023   endif()
0024 endmacro()
0025 
0026 # We prefer the config, but on Ubuntu 18.04 LTS (and to some extent later
0027 # versions it seems) they've not packaged the config properly. So, go for the
0028 # config by default and fall back to manual lookup iff the config was not found.
0029 # https://bugs.kde.org/show_bug.cgi?id=400291
0030 # https://bugs.launchpad.net/ubuntu/+source/libssh/+bug/1800135
0031 find_package(libssh ${libssh_FIND_VERSION} NO_MODULE QUIET)
0032 if(libssh_FOUND)
0033   # Certain versions with config may not have the target, so make sure it's
0034   # defined.
0035   libssh_ensure_imported_target()
0036   return()
0037 endif()
0038 
0039 find_path(LIBSSH_INCLUDE_DIR
0040   NAMES
0041     libssh/libssh.h
0042   PATHS
0043     /usr/include
0044     /usr/local/include
0045     /opt/local/include
0046     /sw/include
0047     ${CMAKE_INCLUDE_PATH}
0048     ${CMAKE_INSTALL_PREFIX}/include
0049 )
0050 
0051 find_library(SSH_LIBRARY
0052   NAMES
0053     ssh
0054     libssh
0055   PATHS
0056     /usr/lib
0057     /usr/local/lib
0058     /opt/local/lib
0059     /sw/lib
0060     ${CMAKE_LIBRARY_PATH}
0061     ${CMAKE_INSTALL_PREFIX}/lib
0062 )
0063 
0064 set(LIBSSH_LIBRARIES
0065     ${LIBSSH_LIBRARIES}
0066     ${SSH_LIBRARY}
0067 )
0068 
0069 message("LIB: ${LIBSSH_LIBRARIES}; INC: ${LIBSSH_INCLUDE_DIR};")
0070 
0071 if (LIBSSH_INCLUDE_DIR AND libssh_FIND_VERSION)
0072   file(STRINGS ${LIBSSH_INCLUDE_DIR}/libssh/libssh.h LIBSSH_VERSION_MAJOR
0073     REGEX "#define[ ]+LIBSSH_VERSION_MAJOR[ ]+[0-9]+")
0074 
0075   # Older versions of libssh like libssh-0.2 have LIBSSH_VERSION but not LIBSSH_VERSION_MAJOR
0076   if (LIBSSH_VERSION_MAJOR)
0077     string(REGEX MATCH "[0-9]+" LIBSSH_VERSION_MAJOR ${LIBSSH_VERSION_MAJOR})
0078     file(STRINGS ${LIBSSH_INCLUDE_DIR}/libssh/libssh.h LIBSSH_VERSION_MINOR
0079       REGEX "#define[ ]+LIBSSH_VERSION_MINOR[ ]+[0-9]+")
0080     string(REGEX MATCH "[0-9]+" LIBSSH_VERSION_MINOR ${LIBSSH_VERSION_MINOR})
0081     file(STRINGS ${LIBSSH_INCLUDE_DIR}/libssh/libssh.h LIBSSH_VERSION_PATCH
0082       REGEX "#define[ ]+LIBSSH_VERSION_MICRO[ ]+[0-9]+")
0083     string(REGEX MATCH "[0-9]+" LIBSSH_VERSION_PATCH ${LIBSSH_VERSION_PATCH})
0084 
0085     set(LIBSSH_VERSION ${LIBSSH_VERSION_MAJOR}.${LIBSSH_VERSION_MINOR}.${LIBSSH_VERSION_PATCH})
0086 
0087   else (LIBSSH_VERSION_MAJOR)
0088     message(STATUS "LIBSSH_VERSION_MAJOR not found in ${LIBSSH_INCLUDE_DIR}/libssh/libssh.h, assuming libssh is too old")
0089     set(LIBSSH_FOUND FALSE)
0090   endif (LIBSSH_VERSION_MAJOR)
0091 endif (LIBSSH_INCLUDE_DIR AND libssh_FIND_VERSION)
0092 
0093 # If the version is too old, but libs and includes are set,
0094 # find_package_handle_standard_args will set LIBSSH_FOUND to TRUE again,
0095 # so we need this if() here.
0096 include(FindPackageHandleStandardArgs)
0097 find_package_handle_standard_args(libssh
0098                                   FOUND_VAR
0099                                     LIBSSH_FOUND
0100                                   REQUIRED_VARS
0101                                     LIBSSH_LIBRARIES
0102                                     LIBSSH_INCLUDE_DIR
0103                                   VERSION_VAR
0104                                     LIBSSH_VERSION)
0105 
0106 libssh_ensure_imported_target()
0107 
0108 # show the LIBSSH_INCLUDE_DIR and LIBSSH_LIBRARIES variables only in the advanced view
0109 mark_as_advanced(LIBSSH_INCLUDE_DIR LIBSSH_LIBRARIES)