diff --git a/cmake/modules/FindLIBSSH.cmake b/cmake/modules/FindLIBSSH.cmake index c6f1781516..91504a48ae 100644 --- a/cmake/modules/FindLIBSSH.cmake +++ b/cmake/modules/FindLIBSSH.cmake @@ -61,15 +61,21 @@ else () ${LIBSSH_LIBRARY} ) - file(STRINGS ${LIBSSH_INCLUDE_DIR}/libssh/libssh.h LIBSSH_VERSION_MAJOR + # libssh >= 0.9.5 has libssh_version.h + set(_libssh_version_header "${LIBSSH_INCLUDE_DIR}/libssh/libssh_version.h") + if(NOT EXISTS "${_libssh_version_header}") + set(_libssh_version_header "${LIBSSH_INCLUDE_DIR}/libssh/libssh.h") + endif() + + file(STRINGS "${_libssh_version_header}" LIBSSH_VERSION_MAJOR REGEX "#define[ ]+LIBSSH_VERSION_MAJOR[ ]+[0-9]+") # Older versions of libssh like libssh-0.2 have LIBSSH_VERSION but not LIBSSH_VERSION_MAJOR if(LIBSSH_VERSION_MAJOR) string(REGEX MATCH "[0-9]+" LIBSSH_VERSION_MAJOR ${LIBSSH_VERSION_MAJOR}) - file(STRINGS ${LIBSSH_INCLUDE_DIR}/libssh/libssh.h LIBSSH_VERSION_MINOR + file(STRINGS "${_libssh_version_header}" LIBSSH_VERSION_MINOR REGEX "#define[ ]+LIBSSH_VERSION_MINOR[ ]+[0-9]+") string(REGEX MATCH "[0-9]+" LIBSSH_VERSION_MINOR ${LIBSSH_VERSION_MINOR}) - file(STRINGS ${LIBSSH_INCLUDE_DIR}/libssh/libssh.h LIBSSH_VERSION_PATCH + file(STRINGS "${_libssh_version_header}" LIBSSH_VERSION_PATCH REGEX "#define[ ]+LIBSSH_VERSION_MICRO[ ]+[0-9]+") string(REGEX MATCH "[0-9]+" LIBSSH_VERSION_PATCH ${LIBSSH_VERSION_PATCH}) set(LIBSSH_VERSION ${LIBSSH_VERSION_MAJOR}.${LIBSSH_VERSION_MINOR}.${LIBSSH_VERSION_PATCH})