Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / third-party / benchmark / cmake / GetGitVersion.cmake
blob04a1f9b70d683f3fcbffdcd928234a9ae44a9f34
1 # - Returns a version string from Git tags
3 # This function inspects the annotated git tags for the project and returns a string
4 # into a CMake variable
6 #  get_git_version(<var>)
8 # - Example
10 # include(GetGitVersion)
11 # get_git_version(GIT_VERSION)
13 # Requires CMake 2.8.11+
14 find_package(Git)
16 if(__get_git_version)
17   return()
18 endif()
19 set(__get_git_version INCLUDED)
21 function(get_git_version var)
22   if(GIT_EXECUTABLE)
23       execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --match "v[0-9]*.[0-9]*.[0-9]*" --abbrev=8
24           WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
25           RESULT_VARIABLE status
26           OUTPUT_VARIABLE GIT_DESCRIBE_VERSION
27           ERROR_QUIET)
28       if(status)
29           set(GIT_DESCRIBE_VERSION "v0.0.0")
30       endif()
31       
32       string(STRIP ${GIT_DESCRIBE_VERSION} GIT_DESCRIBE_VERSION)
33       if(GIT_DESCRIBE_VERSION MATCHES v[^-]*-) 
34          string(REGEX REPLACE "v([^-]*)-([0-9]+)-.*" "\\1.\\2"  GIT_VERSION ${GIT_DESCRIBE_VERSION})
35       else()
36          string(REGEX REPLACE "v(.*)" "\\1" GIT_VERSION ${GIT_DESCRIBE_VERSION})
37       endif()
39       # Work out if the repository is dirty
40       execute_process(COMMAND ${GIT_EXECUTABLE} update-index -q --refresh
41           WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
42           OUTPUT_QUIET
43           ERROR_QUIET)
44       execute_process(COMMAND ${GIT_EXECUTABLE} diff-index --name-only HEAD --
45           WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
46           OUTPUT_VARIABLE GIT_DIFF_INDEX
47           ERROR_QUIET)
48       string(COMPARE NOTEQUAL "${GIT_DIFF_INDEX}" "" GIT_DIRTY)
49       if (${GIT_DIRTY})
50           set(GIT_DESCRIBE_VERSION "${GIT_DESCRIBE_VERSION}-dirty")
51       endif()
52       message(STATUS "git version: ${GIT_DESCRIBE_VERSION} normalized to ${GIT_VERSION}")
53   else()
54       set(GIT_VERSION "0.0.0")
55   endif()
57   set(${var} ${GIT_VERSION} PARENT_SCOPE)
58 endfunction()