meta-ast 0.4.0

Polyglot static-analysis engine: extract symbols and cross-language dependency graphs from 8 supported source languages, with optional MetaCall deployment manifest generation.
Documentation
#
# CMake Find LibGit2 Library by Parra Studios
# Copyright (C) 2016 - 2026 Vicente Eduardo Ferrer Garcia <vic798@gmail.com>
#

# Find libgit2 library and include paths
#
# LibGit2_FOUND - True if LibGit2 was found
# LibGit2_INCLUDE_DIR - LibGit2 headers path
# LibGit2_VERSION - LibGit2 version
# LibGit2_VERSION_MAJOR - LibGit2 major version
# LibGit2_VERSION_MINOR - LibGit2 minor version
# LibGit2_VERSION_REVISION - LibGit2 patch version
# LibGit2_LIBRARY - LibGit2 shared library
# LibGit2_LIBRARY_DIR - LibGit2 shared library folder
#

# Prevent vervosity if already included
if(LibGit2_LIBRARY)
	set(LibGit2_FIND_QUIETLY TRUE)
endif()

# Include package manager
include(FindPackageHandleStandardArgs)

# Find via PkgConfig
find_package(PkgConfig QUIET)
pkg_check_modules(PKG_GIT2 QUIET libgit2)

if(NOT PKG_GIT2_FOUND)
	return()
endif()

if(NOT LibGit2_DEFINITIONS)
	set(LibGit2_DEFINITIONS ${PKG_GIT2_CFLAGS_OTHER})
endif()

if(NOT LibGit2_INCLUDE_DIR)
	find_path(LibGit2_INCLUDE_DIR
		NAMES git2.h
		HINTS ${PKG_GIT2_INCLUDE_DIRS}
	)
endif()

if(NOT LibGit2_VERSION AND LibGit2_INCLUDE_DIR)
	file(STRINGS "${LibGit2_INCLUDE_DIR}/git2/version.h" LibGit2_VERSION_MAJOR REGEX "^#define LIBGIT2_VER_MAJOR +([0-9]+)")
	string(REGEX MATCH "([0-9]+)$" LibGit2_VERSION_MAJOR "${LibGit2_VERSION_MAJOR}")

	file(STRINGS "${LibGit2_INCLUDE_DIR}/git2/version.h" LibGit2_VERSION_MINOR REGEX "^#define LIBGIT2_VER_MINOR +([0-9]+)")
	string(REGEX MATCH "([0-9]+)$" LibGit2_VERSION_MINOR "${LibGit2_VERSION_MINOR}")

	file(STRINGS "${LibGit2_INCLUDE_DIR}/git2/version.h" LibGit2_VERSION_REVISION REGEX "^#define LIBGIT2_VER_REVISION +([0-9]+)")
	string(REGEX MATCH "([0-9]+)$" LibGit2_VERSION_REVISION "${LibGit2_VERSION_REVISION}")

	set(LibGit2_VERSION "${LibGit2_VERSION_MAJOR}.${LibGit2_VERSION_MINOR}.${LibGit2_VERSION_REVISION}")
endif()

if(NOT LibGit2_LIBRARY)
	find_library(LibGit2_LIBRARY
		NAMES git2
		HINTS ${PKG_GIT2_LIBRARY_DIRS}
	)
endif()

set(LibGit2_LIBRARIES ${LibGit2_LIBRARY})
set(LibGit2_INCLUDE_DIRS ${LibGit2_INCLUDE_DIR})
get_filename_component(LibGit2_LIBRARY_DIR ${LibGit2_LIBRARY} DIRECTORY)

# Define package
find_package_handle_standard_args(LibGit2
	FOUND_VAR
		LibGit2_FOUND
	REQUIRED_VARS
		LibGit2_LIBRARY
		LibGit2_LIBRARY_DIR
		LibGit2_INCLUDE_DIR
		LibGit2_INCLUDE_DIRS
	VERSION_VAR
		LibGit2_VERSION
)

mark_as_advanced(LibGit2_LIBRARY LibGit2_LIBRARY_DIR LibGit2_INCLUDE_DIR)