From 207708efef418d1db3af1cca0505f19d2db196ee Mon Sep 17 00:00:00 2001 From: Rudi Heitbaum Date: Fri, 11 Nov 2022 13:21:38 +1100 Subject: [PATCH] [CMake]: only warn when the working directory in a git worktree (#7562) Signed-off-by: Rudi Heitbaum Signed-off-by: Rudi Heitbaum Co-authored-by: Derek Bailey --- CMake/Version.cmake | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/CMake/Version.cmake b/CMake/Version.cmake index a713f3413..e3db9cc60 100644 --- a/CMake/Version.cmake +++ b/CMake/Version.cmake @@ -3,35 +3,37 @@ set(VERSION_MINOR 10) set(VERSION_PATCH 26) set(VERSION_COMMIT 0) -find_program(GIT git) -if(GIT AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git") - execute_process( +if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git") + find_program(GIT git) + if(GIT) + execute_process( COMMAND ${GIT} describe --tags WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE GIT_DESCRIBE_DIRTY OUTPUT_STRIP_TRAILING_WHITESPACE RESULT_VARIABLE GIT_DESCRIBE_RESULT - ) + ) - if(GIT_DESCRIBE_RESULT EQUAL 0) - # Test if the most recent Git tag matches the pattern "v..*" - if(GIT_DESCRIBE_DIRTY MATCHES "^v[0-9]+\\.[0-9]+\\.[0-9]+.*") - string(REGEX REPLACE "^v([0-9]+)\\..*" "\\1" VERSION_MAJOR "${GIT_DESCRIBE_DIRTY}") - string(REGEX REPLACE "^v[0-9]+\\.([0-9]+).*" "\\1" VERSION_MINOR "${GIT_DESCRIBE_DIRTY}") - string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" VERSION_PATCH "${GIT_DESCRIBE_DIRTY}") - string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.[0-9]+\\-([0-9]+).*" "\\1" VERSION_COMMIT "${GIT_DESCRIBE_DIRTY}") - # If the tag points to the commit, then only the tag is shown in "git describe" - if(VERSION_COMMIT STREQUAL GIT_DESCRIBE_DIRTY) - set(VERSION_COMMIT 0) + if(GIT_DESCRIBE_RESULT EQUAL 0) + # Test if the most recent Git tag matches the pattern "v..*" + if(GIT_DESCRIBE_DIRTY MATCHES "^v[0-9]+\\.[0-9]+\\.[0-9]+.*") + string(REGEX REPLACE "^v([0-9]+)\\..*" "\\1" VERSION_MAJOR "${GIT_DESCRIBE_DIRTY}") + string(REGEX REPLACE "^v[0-9]+\\.([0-9]+).*" "\\1" VERSION_MINOR "${GIT_DESCRIBE_DIRTY}") + string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" VERSION_PATCH "${GIT_DESCRIBE_DIRTY}") + string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.[0-9]+\\-([0-9]+).*" "\\1" VERSION_COMMIT "${GIT_DESCRIBE_DIRTY}") + # If the tag points to the commit, then only the tag is shown in "git describe" + if(VERSION_COMMIT STREQUAL GIT_DESCRIBE_DIRTY) + set(VERSION_COMMIT 0) + endif() + else() + message(WARNING "\"${GIT_DESCRIBE_DIRTY}\" does not match pattern v..-") endif() else() - message(WARNING "\"${GIT_DESCRIBE_DIRTY}\" does not match pattern v..-") + message(WARNING "git describe failed with exit code: ${GIT_DESCRIBE_RESULT}") endif() else() - message(WARNING "git describe failed with exit code: ${GIT_DESCRIBE_RESULT}") + message(WARNING "git is not found") endif() -else() - message(WARNING "git is not found") endif() message(STATUS "Proceeding with version: ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_COMMIT}")