From d7d37fe292a85b5e1b0b34c773a6af039b7849d8 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 6 Mar 2017 11:17:50 +0100 Subject: libgit version check --- cmake/modules/FindLibgit2.cmake | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'cmake/modules') diff --git a/cmake/modules/FindLibgit2.cmake b/cmake/modules/FindLibgit2.cmake index f33db4a..fbfb32f 100644 --- a/cmake/modules/FindLibgit2.cmake +++ b/cmake/modules/FindLibgit2.cmake @@ -9,8 +9,8 @@ # use pkg-config to get the directories and then use these values # in the FIND_PATH() and FIND_LIBRARY() calls -#FIND_PACKAGE(PkgConfig) -#PKG_SEARCH_MODULE(PC_LIBGIT2 libgit2) +FIND_PACKAGE(PkgConfig) +PKG_SEARCH_MODULE(PC_LIBGIT2 libgit2) SET(LIBGIT2_DEFINITIONS ${PC_LIBGIT2_CFLAGS_OTHER}) @@ -26,11 +26,28 @@ FIND_LIBRARY(LIBGIT2_LIBRARIES NAMES git2 ${PC_LIBGIT2_LIBRARY_DIRS} ) -#Should be replaced by a version check -include(CheckFunctionExists) -CHECK_FUNCTION_EXISTS(git_buf_free HAVE_BUF_FREE) +message("foo: ${LIBGIT2_INCLUDE_DIR} : ${PC_LIBGIT2_INCLUDEDIR} : ${PC_LIBGIT2_INCLUDE_DIRS}") + +# get version from header, should work on windows, too +if(LIBGIT2_INCLUDE_DIR) + file(STRINGS "${LIBGIT2_INCLUDE_DIR}/git2/version.h" LIBGIT2_H REGEX "^#define LIBGIT2_VERSION \"[^\"]*\"$") + + string(REGEX REPLACE "^.*LIBGIT2_VERSION \"([0-9]+).*$" "\\1" LIBGIT2_VERSION_MAJOR "${LIBGIT2_H}") + string(REGEX REPLACE "^.*LIBGIT2_VERSION \"[0-9]+\\.([0-9]+).*$" "\\1" LIBGIT2_VERSION_MINOR "${LIBGIT2_H}") + string(REGEX REPLACE "^.*LIBGIT2_VERSION \"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" LIBGIT2_VERSION_PATCH "${LIBGIT2_H}") + set(LIBGIT2_VERSION "${LIBGIT2_VERSION_MAJOR}.${LIBGIT2_VERSION_MINOR}.${LIBGIT2_VERSION_PATCH}") + + set(LIBGIT2_MAJOR_VERSION "${LIBGIT2_VERSION_MAJOR}") + set(LIBGIT2_MINOR_VERSION "${LIBGIT2_VERSION_MINOR}") + set(LIBGIT2_PATCH_VERSION "${LIBGIT2_VERSION_PATCH}") + + unset(LIBGIT2_H) +endif() INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(libgit2 DEFAULT_MSG LIBGIT2_LIBRARIES LIBGIT2_INCLUDE_DIR HAVE_BUF_FREE) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(libgit2 + REQUIRED_VARS LIBGIT2_LIBRARIES LIBGIT2_INCLUDE_DIR + FOUND_VAR LIBGIT2_FOUND + VERSION_VAR LIBGIT2_VERSION) MARK_AS_ADVANCED(LIBGIT2_INCLUDE_DIR LIBGIT2_LIBRARIES) -- cgit v1.2.3