# Try to find the libssh2 library; once done this will define: # # LIBSSH2_FOUND - True if libssh2 was found, false otherwise. # LIBSSH2_INCLUDE_DIRS - Include directories needed to include libssh2 # headers. # LIBSSH2_LIBRARIES - Libraries needed to link to libssh2. # LIBSSH2_VERSION - The version of libssh2 found. # LIBSSH2_VERSION_MAJOR - The major version of libssh2. # LIBSSH2_VERSION_MINOR - The minor version of libssh2. # LIBSSH2_VERSION_PATCH - The patch version of libssh2. if(UNIX) if(CMAKE_VERSION VERSION_LESS "2.8.0") find_package(PkgConfig) pkg_check_modules(_LIBSSH2 libssh2) else() find_package(PkgConfig QUIET) pkg_check_modules(_LIBSSH2 QUIET libssh2) endif() endif() if(NOT LIBSSH2_INCLUDE_DIRS AND NOT LIBSSH2_LIBRARIES) set(_LIBSSH2_ROOT_HINTS ${LIBSSH2_ROOT_DIR} ${LIBSSH2_ROOT} $ENV{LIBSSH2_ROOT_DIR} $ENV{LIBSSH2_ROOT}) if(NOT WIN32) set(_LIBSSH2_ROOT_PATHS "/usr/" "/usr/local/") if(_LIBSSH2_FOUND) set(_LIBSSH2_ROOT_PATHS ${_LIBSSH2_ROOT_PATHS} ${_LIBSSH2_LIBDIR}) endif() endif() set(_LIBSSH2_ROOT_HINTS_AND_PATHS HINTS ${_LIBSSH2_ROOT_HINTS} PATHS ${_LIBSSH2_ROOT_PATHS}) find_path(LIBSSH2_INCLUDE_DIR NAMES libssh2.h ${_LIBSSH2_ROOT_HINTS_AND_PATHS} PATH_SUFFIXES include NO_DEFAULT_PATH) if(CASS_USE_STATIC_LIBS) set(_LIBSSH2_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) if(WIN32) set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) else() set(CMAKE_FIND_LIBRARY_SUFFIXES .a) endif() endif() find_library(LIBSSH2_LIBRARY NAMES libssh2 ssh2 ${_LIBSSH2_ROOT_HINTS_AND_PATHS} PATH_SUFFIXES lib NO_DEFAULT_PATH) endif() if(LIBSSH2_INCLUDE_DIR AND EXISTS ${LIBSSH2_INCLUDE_DIR}/libssh2.h) set(_LIBSSH2_VERSION_REGEX "^#define[\t ]+LIBSSH2_VERSION_NUM[\t ]+0x[0-9][0-9][0-9][0-9][0-9][0-9].*") file(STRINGS "${LIBSSH2_INCLUDE_DIR}/libssh2.h" _LIBSSH2_VERSION_STRING REGEX "${_LIBSSH2_VERSION_REGEX}") string(REGEX REPLACE "^.*LIBSSH2_VERSION_NUM[\t ]+0x([0-9][0-9]).*$" "\\1" LIBSSH2_VERSION_MAJOR "${_LIBSSH2_VERSION_STRING}") string(REGEX REPLACE "^.*LIBSSH2_VERSION_NUM[\t ]+0x[0-9][0-9]([0-9][0-9]).*$" "\\1" LIBSSH2_VERSION_MINOR "${_LIBSSH2_VERSION_STRING}") string(REGEX REPLACE "^.*LIBSSH2_VERSION_NUM[\t ]+0x[0-9][0-9][0-9][0-9]([0-9][0-9]).*$" "\\1" LIBSSH2_VERSION_PATCH "${_LIBSSH2_VERSION_STRING}") string(REGEX REPLACE "^0(.+)" "\\1" LIBSSH2_VERSION_MAJOR "${LIBSSH2_VERSION_MAJOR}") string(REGEX REPLACE "^0(.+)" "\\1" LIBSSH2_VERSION_MINOR "${LIBSSH2_VERSION_MINOR}") string(REGEX REPLACE "^0(.+)" "\\1" LIBSSH2_VERSION_PATCH "${LIBSSH2_VERSION_PATCH}") set(LIBSSH2_VERSION "${LIBSSH2_VERSION_MAJOR}.${LIBSSH2_VERSION_MINOR}.${LIBSSH2_VERSION_PATCH}") message(STATUS "libssh2 version: v${LIBSSH2_VERSION}") endif() unset(_LIBSSH2_VERSION_STRING) include(FindPackageHandleStandardArgs) set(_LIBSSH2_FAIL_MESSAGE "Could NOT find libssh2, try to set the path to libssh2 root folder in the system variable LIBSSH2_ROOT_DIR") if(LIBSSH2_VERSION) if(CMAKE_VERSION VERSION_LESS "2.8.0") find_package_handle_standard_args(Libssh2 REQUIRED_VARS LIBSSH2_FOUND LIBSSH2_LIBRARY LIBSSH2_INCLUDE_DIR) if(NOT LIBSSH2_FOUND) message(FATAL_ERROR "${_LIBSSH2_FAIL_MESSAGE}") endif() else() find_package_handle_standard_args(Libssh2 REQUIRED_VARS LIBSSH2_LIBRARY LIBSSH2_INCLUDE_DIR VERSION_VAR LIBSSH2_VERSION) endif() else() find_package_handle_standard_args(Libssh2 "${_LIBSSH2_FAIL_MESSAGE}" LIBSSH2_LIBRARY LIBSSH2_INCLUDE_DIR) endif() if(LIBSSH2_FOUND) set(LIBSSH2_INCLUDE_DIRS ${LIBSSH2_INCLUDE_DIR}) set(LIBSSH2_LIBRARIES ${LIBSSH2_LIBRARY}) endif() mark_as_advanced(LIBSSH2_INCLUDE_DIRS LIBSSH2_LIBRARIES LIBSSH2_VERSION LIBSSH2_VERSION_MAJOR LIBSSH2_VERSION_MINOR LIBSSH2_VERSION_PATCH) # Restore the original find library ordering if(CASS_USE_STATIC_LIBS) set(CMAKE_FIND_LIBRARY_SUFFIXES ${_LIBSSH2_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}) endif()