|
|
|
@@ -0,0 +1,66 @@ |
|
|
|
Function ( GitGetVersion GIT_ROOT OUT_MAJOR OUT_MINOR OUT_PATCH OUT_BUILD OUT_HASH ) |
|
|
|
|
|
|
|
If ( NOT EXISTS "${GIT_ROOT}/.git" ) |
|
|
|
Return ( ) |
|
|
|
EndIf ( ) |
|
|
|
|
|
|
|
Message ( "" ) |
|
|
|
|
|
|
|
# Execute process to get git revisions |
|
|
|
Execute_Process ( COMMAND |
|
|
|
bash -c "git -C ${GIT_ROOT} show-ref --tags | egrep 'refs\/tags\/v?[0-9]+\.[0-9]+(\.[0-9]+(\.[0-9]+))' | head -1" |
|
|
|
RESULT_VARIABLE |
|
|
|
GIT_RET |
|
|
|
OUTPUT_VARIABLE |
|
|
|
GIT_REV |
|
|
|
ERROR_VARIABLE |
|
|
|
GIT_ERR ) |
|
|
|
If ( NOT ${GIT_RET} EQUAL 0 ) |
|
|
|
Message ( FATAL_ERROR "Unable to get git revisions! ${GIT_RET}" ) |
|
|
|
EndIf ( ) |
|
|
|
If ( "${GIT_REV}" STREQUAL "" ) |
|
|
|
Return () |
|
|
|
EndIf () |
|
|
|
|
|
|
|
# Split the git revision string |
|
|
|
String ( REPLACE " " ";" SPLIT ${GIT_REV} ) |
|
|
|
List ( LENGTH SPLIT COUNT ) |
|
|
|
If ( NOT ${COUNT} EQUAL 2 ) |
|
|
|
Return ( ) |
|
|
|
EndIf ( ) |
|
|
|
List ( GET SPLIT 0 HASH ) |
|
|
|
List ( GET SPLIT 1 VERSION ) |
|
|
|
|
|
|
|
# Split the version |
|
|
|
String ( STRIP "${VERSION}" SPLIT ) |
|
|
|
String ( REGEX REPLACE "refs?\/tags?\/v?" "" SPLIT ${SPLIT} ) |
|
|
|
String ( REPLACE "." ";" SPLIT ${SPLIT} ) |
|
|
|
List ( LENGTH SPLIT COUNT ) |
|
|
|
If ( ${COUNT} LESS 2 ) |
|
|
|
Message ( FATAL_ERROR "Unable to parse version string!" ) |
|
|
|
EndIf ( ) |
|
|
|
|
|
|
|
# major |
|
|
|
List ( GET SPLIT 0 TMP ) |
|
|
|
Set ( ${OUT_MAJOR} ${TMP} PARENT_SCOPE ) |
|
|
|
|
|
|
|
# minor |
|
|
|
List ( GET SPLIT 1 TMP ) |
|
|
|
Set ( ${OUT_MINOR} ${TMP} PARENT_SCOPE ) |
|
|
|
|
|
|
|
# patch |
|
|
|
If ( ${COUNT} GREATER 2 ) |
|
|
|
List ( GET SPLIT 2 TMP ) |
|
|
|
Set ( ${OUT_PATCH} ${TMP} PARENT_SCOPE ) |
|
|
|
EndIf ( ) |
|
|
|
|
|
|
|
# build |
|
|
|
If ( ${COUNT} GREATER 3 ) |
|
|
|
List ( GET SPLIT 3 TMP ) |
|
|
|
Set ( ${OUT_BUILD} ${TMP} PARENT_SCOPE ) |
|
|
|
EndIf ( ) |
|
|
|
|
|
|
|
# hash |
|
|
|
Set ( ${OUT_HASH} ${HASH} PARENT_SCOPE ) |
|
|
|
|
|
|
|
EndFunction ( ) |