Skip to content

Commit

Permalink
add commit distance (#19)
Browse files Browse the repository at this point in the history
  • Loading branch information
loriab authored Jan 9, 2024
1 parent 6ee6108 commit 6728e31
Showing 1 changed file with 28 additions and 3 deletions.
31 changes: 28 additions & 3 deletions cmake/DynamicVersion.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ function(dynamic_version)
dynamic_version(PROJECT_PREFIX <prefix>)
dynamic_version(PROJECT_PREFIX <prefix>
[OUTPUT_VERSION <var>] [OUTPUT_DESCRIBE <var>] [OUTPUT_COMMIT <var>]
[PROJECT_SOURCE <path>] [GIT_ARCHIVAL_FILE <file>])
[OUTPUT_DISTANCE <var>] [OUTPUT_SHORT_HASH <var>] [PROJECT_SOURCE <path>]
[GIT_ARCHIVAL_FILE <file>])

Fallbacks
dynamic_version(...
Expand All @@ -64,6 +65,12 @@ function(dynamic_version)
`OUTPUT_COMMIT` [Default: GIT_COMMIT]
Variable where to save the current git commit hash

`OUTPUT_DISTANCE` [Default: GIT_DISTANCE]
Variable where to save the distance from git tag

`OUTPUT_SHORT_HASH` [Default: GIT_SHORT_HASH]
Variable where to save the shortened git commit hash

`PROJECT_SOURCE` [Default: `${CMAKE_CURRENT_SOURCE_DIR}`]
Location of the project source. Has to be either an extracted git archive or a git clone

Expand Down Expand Up @@ -131,6 +138,8 @@ function(dynamic_version)
OUTPUT_VERSION
OUTPUT_DESCRIBE
OUTPUT_COMMIT
OUTPUT_DISTANCE
OUTPUT_SHORT_HASH
PROJECT_SOURCE
GIT_ARCHIVAL_FILE
FALLBACK_VERSION
Expand All @@ -155,6 +164,12 @@ function(dynamic_version)
if (NOT DEFINED ARGS_OUTPUT_COMMIT)
set(ARGS_OUTPUT_COMMIT GIT_COMMIT)
endif ()
if (NOT DEFINED ARGS_OUTPUT_DISTANCE)
set(ARGS_OUTPUT_DISTANCE GIT_DISTANCE)
endif ()
if (NOT DEFINED ARGS_OUTPUT_SHORT_HASH)
set(ARGS_OUTPUT_SHORT_HASH GIT_SHORT_HASH)
endif ()
if (NOT DEFINED ARGS_PROJECT_SOURCE)
set(ARGS_PROJECT_SOURCE ${CMAKE_CURRENT_SOURCE_DIR})
endif ()
Expand Down Expand Up @@ -235,6 +250,8 @@ function(dynamic_version)
string(JSON ${ARGS_OUTPUT_VERSION} ERROR_VARIABLE _ GET ${data} version)
string(JSON ${ARGS_OUTPUT_DESCRIBE} ERROR_VARIABLE _ GET ${data} describe)
string(JSON ${ARGS_OUTPUT_COMMIT} ERROR_VARIABLE _ GET ${data} commit)
string(JSON ${ARGS_OUTPUT_DISTANCE} ERROR_VARIABLE _ GET ${data} distance)
string(JSON ${ARGS_OUTPUT_SHORT_HASH} ERROR_VARIABLE _ GET ${data} short-hash)

# Configure targets
if (failed)
Expand Down Expand Up @@ -278,11 +295,15 @@ function(dynamic_version)
set(${ARGS_OUTPUT_DESCRIBE} ${${ARGS_OUTPUT_DESCRIBE}} PARENT_SCOPE)
set(${ARGS_OUTPUT_VERSION} ${${ARGS_OUTPUT_VERSION}} PARENT_SCOPE)
set(${ARGS_OUTPUT_COMMIT} ${${ARGS_OUTPUT_COMMIT}} PARENT_SCOPE)
set(${ARGS_OUTPUT_DISTANCE} ${${ARGS_OUTPUT_DISTANCE}} PARENT_SCOPE)
set(${ARGS_OUTPUT_SHORT_HASH} ${${ARGS_OUTPUT_SHORT_HASH}} PARENT_SCOPE)
endif ()
return(PROPAGATE
${ARGS_OUTPUT_DESCRIBE}
${ARGS_OUTPUT_VERSION}
${ARGS_OUTPUT_COMMIT}
${ARGS_OUTPUT_DISTANCE}
${ARGS_OUTPUT_SHORT_HASH}
)
endfunction()

Expand Down Expand Up @@ -429,13 +450,13 @@ function(get_dynamic_version)
OUTPUT_STRIP_TRAILING_WHITESPACE
COMMAND_ERROR_IS_FATAL ANY)
# Get version and describe-name
execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --match=?[0-9.]*
execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --long --match=?[0-9.]*
WORKING_DIRECTORY ${ARGS_PROJECT_SOURCE}
OUTPUT_VARIABLE describe-name
OUTPUT_STRIP_TRAILING_WHITESPACE
COMMAND_ERROR_IS_FATAL ANY)
# Match any part containing digits and periods (strips out rc and so on)
if (NOT describe-name MATCHES "^([v]?([0-9\\.]+).*)")
if (NOT describe-name MATCHES "^([v]?([0-9\\.]+)-([0-9]+)-g(.*))")
message(${error_message_type}
"Version tag is ill-formatted\n"
" Describe-name: ${describe-name}"
Expand All @@ -448,6 +469,10 @@ function(get_dynamic_version)
string(JSON data SET
${data} version \"${CMAKE_MATCH_2}\")
file(WRITE ${ARGS_TMP_FOLDER}/.version ${CMAKE_MATCH_2})
string(JSON data SET
${data} distance \"${CMAKE_MATCH_3}\")
string(JSON data SET
${data} short-hash \"${CMAKE_MATCH_4}\")
string(JSON data SET
${data} commit \"${git-hash}\")
file(WRITE ${ARGS_TMP_FOLDER}/.git_commit ${git-hash})
Expand Down

0 comments on commit 6728e31

Please sign in to comment.