From bbae0cfd10f316791a4a9211fcafc04a7ca6e146 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com> Date: Mon, 19 Mar 2018 12:32:04 +0100 Subject: [PATCH] Fixed get git revision on build --- cmake/git_revision.cmake | 20 +++++++++++++++++ utils/CMakeLists.txt | 46 +++++++++++++++++++++++++--------------- 2 files changed, 49 insertions(+), 17 deletions(-) create mode 100644 cmake/git_revision.cmake diff --git a/cmake/git_revision.cmake b/cmake/git_revision.cmake new file mode 100644 index 000000000..c18a046df --- /dev/null +++ b/cmake/git_revision.cmake @@ -0,0 +1,20 @@ +# --------------- get git revision info --------------- + +# quite hugly but seems necessary +set(CMAKE_CURRENT_SOURCE_DIR ${INVOCATION_DIR}) + +list(APPEND CMAKE_MODULE_PATH "${INVOCATION_DIR}/../cmake/cmake-modules") +include(GetGitRevisionDescription) + +git_describe(PASTIS_VERSION "--abbrev=0") +get_git_head_revision(PASTIS_HEAD PASTIS_HASH) +git_local_changes(PASTIS_HAS_LOCAL_CHANGES) + +if(${PASTIS_HAS_LOCAL_CHANGES} STREQUAL "CLEAN") + set(PASTIS_IS_CLEAN true) +else() + set(PASTIS_IS_CLEAN false) +endif() + +# Generates revision header file candidate +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pastis_git_revision.hpp.in" "${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision" @ONLY) diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt index 73cfdd7bd..d191e66a0 100644 --- a/utils/CMakeLists.txt +++ b/utils/CMakeLists.txt @@ -9,24 +9,12 @@ add_library( # --------------- get git revision info --------------- -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/cmake-modules") -include(GetGitRevisionDescription) - -git_describe(PASTIS_VERSION "--abbrev=0") -get_git_head_revision(PASTIS_HEAD PASTIS_HASH) -git_local_changes(PASTIS_HAS_LOCAL_CHANGES) - -if(${PASTIS_HAS_LOCAL_CHANGES} STREQUAL "CLEAN") - set(PASTIS_IS_CLEAN true) -else() - set(PASTIS_IS_CLEAN false) -endif() - # Generates revision header file add_custom_target( - git_revision + PastisGitRevison ALL - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp) + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp +) set_source_files_properties( ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp @@ -35,7 +23,31 @@ set_source_files_properties( HEADER_FILE_ONLY TRUE ) -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pastis_git_revision.hpp.in" "${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp" @ONLY) +# --------- check git revision info at build ---------- + +add_custom_command(TARGET PastisGitRevison + COMMAND ${CMAKE_COMMAND} -E remove -f + ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp + COMMENT "" + ) + +add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp + PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision + ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp + COMMENT "" + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision + VERBATIM + ) + +add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision + PRE_BUILD + COMMAND ${CMAKE_COMMAND} -DINVOCATION_DIR=${CMAKE_CURRENT_SOURCE_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/git_revision.cmake + COMMENT "Check pastis git status" + VERBATIM + ) list( APPEND @@ -47,4 +59,4 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) # Additional dependencies add_dependencies( PastisUtils - git_revision) + PastisGitRevison) -- GitLab