Warning, /frameworks/extra-cmake-modules/find-modules/FindLibGit2.cmake is written in an unsupported language. File is not indexed.
0001 # SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org> 0002 # SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org> 0003 # SPDX-FileCopyrightText: 2014 Christoph Cullmann <cullmann@kde.org> 0004 # SPDX-FileCopyrightText: 2023 Louis Moureaux <m_louis30@yahoo.com> 0005 # 0006 # SPDX-License-Identifier: BSD-3-Clause 0007 0008 #[=======================================================================[.rst: 0009 FindLibGit2 0010 ----------- 0011 0012 Try to find libgit2 on a Unix system. 0013 0014 This will define the following variables: 0015 0016 ``LIBGIT2_FOUND`` 0017 True if (the requested version of) libgit2 is available 0018 ``LIBGIT2_VERSION`` 0019 The version of libgit2 0020 ``LIBGIT2_LIBRARIES`` 0021 This can be passed to target_link_libraries() instead of the ``LibGit2::LibGit2`` 0022 target 0023 ``LIBGIT2_INCLUDE_DIRS`` 0024 This should be passed to target_include_directories() if the target is not 0025 used for linking 0026 ``LIBGIT2_DEFINITIONS`` 0027 This should be passed to target_compile_options() if the target is not 0028 used for linking 0029 0030 If ``LIBGIT2_FOUND`` is TRUE, it will also define the following imported target: 0031 0032 ``LibGit2::LibGit2`` 0033 The libgit2 library 0034 0035 In general we recommend using the imported target, as it is easier to use. 0036 Bear in mind, however, that if the target is in the link interface of an 0037 exported library, it must be made available by the package config file. 0038 0039 Since 1.3.0. 0040 #]=======================================================================] 0041 0042 include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake) 0043 0044 ecm_find_package_version_check(LibGit2) 0045 0046 # Use pkg-config to get the directories and then use these values 0047 # in the FIND_PATH() and FIND_LIBRARY() calls 0048 find_package(PkgConfig QUIET) 0049 pkg_check_modules(PKG_GIT2 QUIET libgit2) 0050 0051 set(LIBGIT2_DEFINITIONS ${PKG_GIT2_CFLAGS_OTHER}) 0052 0053 find_path(LIBGIT2_INCLUDE_DIR 0054 NAMES 0055 git2.h 0056 HINTS 0057 ${PKG_GIT2_INCLUDE_DIRS} 0058 ) 0059 find_library(LIBGIT2_LIBRARY 0060 NAMES 0061 git2 0062 HINTS 0063 ${PKG_GIT2_LIBRARY_DIRS} 0064 ) 0065 0066 # get version from header, should work on windows, too 0067 if(LIBGIT2_INCLUDE_DIR) 0068 file(STRINGS "${LIBGIT2_INCLUDE_DIR}/git2/version.h" LIBGIT2_H REGEX "^#define LIBGIT2_VERSION +\"[^\"]*\"$") 0069 0070 string(REGEX REPLACE "^.*LIBGIT2_VERSION +\"([0-9]+).*$" "\\1" LIBGIT2_VERSION_MAJOR "${LIBGIT2_H}") 0071 string(REGEX REPLACE "^.*LIBGIT2_VERSION +\"[0-9]+\\.([0-9]+).*$" "\\1" LIBGIT2_VERSION_MINOR "${LIBGIT2_H}") 0072 string(REGEX REPLACE "^.*LIBGIT2_VERSION +\"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" LIBGIT2_VERSION_PATCH "${LIBGIT2_H}") 0073 set(LIBGIT2_VERSION "${LIBGIT2_VERSION_MAJOR}.${LIBGIT2_VERSION_MINOR}.${LIBGIT2_VERSION_PATCH}") 0074 0075 set(LIBGIT2_MAJOR_VERSION "${LIBGIT2_VERSION_MAJOR}") 0076 set(LIBGIT2_MINOR_VERSION "${LIBGIT2_VERSION_MINOR}") 0077 set(LIBGIT2_PATCH_VERSION "${LIBGIT2_VERSION_PATCH}") 0078 0079 unset(LIBGIT2_H) 0080 endif() 0081 0082 include(FindPackageHandleStandardArgs) 0083 find_package_handle_standard_args(LibGit2 0084 FOUND_VAR 0085 LIBGIT2_FOUND 0086 REQUIRED_VARS 0087 LIBGIT2_LIBRARY 0088 LIBGIT2_INCLUDE_DIR 0089 VERSION_VAR 0090 LIBGIT2_VERSION 0091 ) 0092 0093 if(LIBGIT2_FOUND AND NOT TARGET LibGit2::LibGit2) 0094 add_library(LibGit2::LibGit2 UNKNOWN IMPORTED) 0095 set_target_properties(LibGit2::LibGit2 PROPERTIES 0096 IMPORTED_LOCATION "${LIBGIT2_LIBRARY}" 0097 INTERFACE_COMPILE_OPTIONS "${LIBGIT2_DEFINITIONS}" 0098 INTERFACE_INCLUDE_DIRECTORIES "${LIBGIT2_INCLUDE_DIR}" 0099 ) 0100 endif() 0101 0102 mark_as_advanced(LIBGIT2_LIBRARY LIBGIT2_INCLUDE_DIR) 0103 0104 set(LIBGIT2_LIBRARIES ${LIBGIT2_LIBRARY}) 0105 set(LIBGIT2_INCLUDE_DIRS ${LIBGIT2_INCLUDE_DIR}) 0106 0107 include(FeatureSummary) 0108 set_package_properties(LibGit2 PROPERTIES 0109 URL "https://libgit2.github.com/" 0110 DESCRIPTION "A plain C library to interface with the git version control system." 0111 )