blob: 67a49584ff21b3c6bb8cb2049754cece389ebb3b [file] [log] [blame]
# 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()