xref: /llvm-project/third-party/benchmark/cmake/GetGitVersion.cmake (revision a5b797172cc902db166e9a695716fb81405f86e4)
15dda2efdSMircea Trofin# - Returns a version string from Git tags
25dda2efdSMircea Trofin#
35dda2efdSMircea Trofin# This function inspects the annotated git tags for the project and returns a string
45dda2efdSMircea Trofin# into a CMake variable
55dda2efdSMircea Trofin#
65dda2efdSMircea Trofin#  get_git_version(<var>)
75dda2efdSMircea Trofin#
85dda2efdSMircea Trofin# - Example
95dda2efdSMircea Trofin#
105dda2efdSMircea Trofin# include(GetGitVersion)
115dda2efdSMircea Trofin# get_git_version(GIT_VERSION)
125dda2efdSMircea Trofin#
135dda2efdSMircea Trofin# Requires CMake 2.8.11+
145dda2efdSMircea Trofinfind_package(Git)
155dda2efdSMircea Trofin
165dda2efdSMircea Trofinif(__get_git_version)
175dda2efdSMircea Trofin  return()
185dda2efdSMircea Trofinendif()
195dda2efdSMircea Trofinset(__get_git_version INCLUDED)
205dda2efdSMircea Trofin
215dda2efdSMircea Trofinfunction(get_git_version var)
225dda2efdSMircea Trofin  if(GIT_EXECUTABLE)
23*a5b79717SMircea Trofin      execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --match "v[0-9]*.[0-9]*.[0-9]*" --abbrev=8 --dirty
245dda2efdSMircea Trofin          WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
255dda2efdSMircea Trofin          RESULT_VARIABLE status
26*a5b79717SMircea Trofin          OUTPUT_VARIABLE GIT_VERSION
275dda2efdSMircea Trofin          ERROR_QUIET)
285dda2efdSMircea Trofin      if(status)
29*a5b79717SMircea Trofin          set(GIT_VERSION "v0.0.0")
305dda2efdSMircea Trofin      endif()
315dda2efdSMircea Trofin  else()
32*a5b79717SMircea Trofin      set(GIT_VERSION "v0.0.0")
335dda2efdSMircea Trofin  endif()
345dda2efdSMircea Trofin
355dda2efdSMircea Trofin  set(${var} ${GIT_VERSION} PARENT_SCOPE)
365dda2efdSMircea Trofinendfunction()
37