CMake: re-run to get version information when .git/HEAD changes

Fixes an issue where Dolphin's revision information could be incorrect
when:

1) CMake was run while HEAD was at commit A
2) HEAD was set to commit B, which didn't have differences from A
that would cause CMake to be re-run

This does not fix the issue with incorrect information about whether
Dolphin was built from a dirty working tree or not.
This commit is contained in:
Michael Maltese 2017-02-06 17:14:15 -08:00
parent eb3c172b95
commit 9502f322d3
1 changed files with 7 additions and 1 deletions

View File

@ -109,7 +109,13 @@ include(CCache)
# for revision info # for revision info
find_package(Git) find_package(Git)
if(GIT_FOUND AND NOT DOLPHIN_WC_REVISION) if(GIT_FOUND)
# make sure version information gets re-run when the current Git HEAD changes
execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-parse --git-path HEAD
OUTPUT_VARIABLE dolphin_git_head_filename
OUTPUT_STRIP_TRAILING_WHITESPACE)
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${dolphin_git_head_filename}")
# defines DOLPHIN_WC_REVISION # defines DOLPHIN_WC_REVISION
EXECUTE_PROCESS(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-parse HEAD EXECUTE_PROCESS(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
OUTPUT_VARIABLE DOLPHIN_WC_REVISION OUTPUT_VARIABLE DOLPHIN_WC_REVISION