forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			CMake
		
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			CMake
		
	
	
	
| # - Returns a version string from Git tags
 | |
| #
 | |
| # This function inspects the annotated git tags for the project and returns a string
 | |
| # into a CMake variable
 | |
| #
 | |
| #  get_git_version(<var>)
 | |
| #
 | |
| # - Example
 | |
| #
 | |
| # include(GetGitVersion)
 | |
| # get_git_version(GIT_VERSION)
 | |
| #
 | |
| # Requires CMake 2.8.11+
 | |
| find_package(Git)
 | |
| 
 | |
| if(__get_git_version)
 | |
|   return()
 | |
| endif()
 | |
| set(__get_git_version INCLUDED)
 | |
| 
 | |
| function(get_git_version var)
 | |
|   if(GIT_EXECUTABLE)
 | |
|       execute_process(COMMAND ${GIT_EXECUTABLE} describe --match "v[0-9]*.[0-9]*.[0-9]*" --abbrev=8
 | |
|           WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
 | |
|           RESULT_VARIABLE status
 | |
|           OUTPUT_VARIABLE GIT_VERSION
 | |
|           ERROR_QUIET)
 | |
|       if(${status})
 | |
|           set(GIT_VERSION "v0.0.0")
 | |
|       else()
 | |
|           string(STRIP ${GIT_VERSION} GIT_VERSION)
 | |
|           string(REGEX REPLACE "-[0-9]+-g" "-" GIT_VERSION ${GIT_VERSION})
 | |
|       endif()
 | |
| 
 | |
|       # Work out if the repository is dirty
 | |
|       execute_process(COMMAND ${GIT_EXECUTABLE} update-index -q --refresh
 | |
|           WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
 | |
|           OUTPUT_QUIET
 | |
|           ERROR_QUIET)
 | |
|       execute_process(COMMAND ${GIT_EXECUTABLE} diff-index --name-only HEAD --
 | |
|           WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
 | |
|           OUTPUT_VARIABLE GIT_DIFF_INDEX
 | |
|           ERROR_QUIET)
 | |
|       string(COMPARE NOTEQUAL "${GIT_DIFF_INDEX}" "" GIT_DIRTY)
 | |
|       if (${GIT_DIRTY})
 | |
|           set(GIT_VERSION "${GIT_VERSION}-dirty")
 | |
|       endif()
 | |
|   else()
 | |
|       set(GIT_VERSION "v0.0.0")
 | |
|   endif()
 | |
| 
 | |
|   message("-- git Version: ${GIT_VERSION}")
 | |
|   set(${var} ${GIT_VERSION} PARENT_SCOPE)
 | |
| endfunction()
 |