CMake: Fix libssh >= 0.9.5 version detection

libssh 0.9.5 moved version macros to a different header file.

Closes #16845
This commit is contained in:
João Valverde 2020-09-12 16:07:22 +01:00
parent 889dd0cbfb
commit fd7739de6b
1 changed files with 9 additions and 3 deletions

View File

@ -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})