diff options
author | Brad King <brad.king@kitware.com> | 2021-02-08 17:04:11 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2021-02-08 17:04:17 (GMT) |
commit | 4b406ead2a61262e4a766ce469e12f0570084f30 (patch) | |
tree | a30d709f76554a819aa5c55a210e13e1992f9e19 | |
parent | 24e465a550e195c3add494a59ac9c1b888d0b12a (diff) | |
parent | c99dfd7be78c4e69a96b837b40f1a9b20bc2e277 (diff) | |
download | CMake-4b406ead2a61262e4a766ce469e12f0570084f30.zip CMake-4b406ead2a61262e4a766ce469e12f0570084f30.tar.gz CMake-4b406ead2a61262e4a766ce469e12f0570084f30.tar.bz2 |
Merge topic 'FindGit-version-optimization-more'
c99dfd7be7 FindGit: Cache the version more effectively
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5774
-rw-r--r-- | Modules/FindGit.cmake | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/Modules/FindGit.cmake b/Modules/FindGit.cmake index 83da707..99850b4 100644 --- a/Modules/FindGit.cmake +++ b/Modules/FindGit.cmake @@ -80,26 +80,26 @@ if(GIT_EXECUTABLE) # Avoid querying the version if we've already done that this run. For # projects that use things like ExternalProject or FetchContent heavily, # this saving can be measurable on some platforms. - set(__doGitVersionCheck YES) - if(DEFINED GIT_VERSION_STRING) - # This is an internal property, projects must not try to use it. - # We don't want this stored in the cache because it might still change - # between CMake runs, but it shouldn't change during a run. - get_property(__gitVersionProp GLOBAL - PROPERTY _CMAKE_FindGit_GIT_EXECUTABLE_VERSION - ) - if(__gitVersionProp) - list(GET __gitVersionProp 0 __gitExe) - list(GET __gitVersionProp 1 __gitVersion) - if("${__gitExe}" STREQUAL "${GIT_EXECUTABLE}" AND - "${__gitVersion}" STREQUAL "${GIT_VERSION_STRING}") - set(__doGitVersionCheck NO) - endif() + # + # This is an internal property, projects must not try to use it. + # We don't want this stored in the cache because it might still change + # between CMake runs, but it shouldn't change during a run for a given + # git executable location. + set(__doGitVersionCheck TRUE) + get_property(__gitVersionProp GLOBAL + PROPERTY _CMAKE_FindGit_GIT_EXECUTABLE_VERSION + ) + if(__gitVersionProp) + list(GET __gitVersionProp 0 __gitExe) + list(GET __gitVersionProp 1 __gitVersion) + if(__gitExe STREQUAL GIT_EXECUTABLE AND NOT __gitVersion STREQUAL "") + set(GIT_VERSION_STRING "${__gitVersion}") + set(__doGitVersionCheck FALSE) endif() - unset(__gitVersionProp) unset(__gitExe) unset(__gitVersion) endif() + unset(__gitVersionProp) if(__doGitVersionCheck) execute_process(COMMAND ${GIT_EXECUTABLE} --version @@ -121,6 +121,7 @@ if(GIT_EXECUTABLE) add_executable(Git::Git IMPORTED) set_property(TARGET Git::Git PROPERTY IMPORTED_LOCATION "${GIT_EXECUTABLE}") endif() + unset(_findgit_role) endif() include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) |