From 2a1ddc661ca4c7ff53149cd65c22e23c2c670c0a Mon Sep 17 00:00:00 2001 From: Matthias Maier Date: Fri, 2 Jan 2015 02:54:37 +0100 Subject: [PATCH] CMake: Query branch and commit during configure --- CMakeLists.txt | 7 +--- cmake/setup_git.cmake | 86 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 5 deletions(-) create mode 100644 cmake/setup_git.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 462ad74893..e0eb3066a4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -118,15 +118,12 @@ ENDFOREACH() # # Finalize the configuration: # +VERBOSE_INCLUDE(${CMAKE_SOURCE_DIR}/cmake/setup_cpack.cmake) VERBOSE_INCLUDE(${CMAKE_SOURCE_DIR}/cmake/setup_custom_targets.cmake) VERBOSE_INCLUDE(${CMAKE_SOURCE_DIR}/cmake/setup_finalize.cmake) +VERBOSE_INCLUDE(${CMAKE_SOURCE_DIR}/cmake/setup_git.cmake) VERBOSE_INCLUDE(${CMAKE_SOURCE_DIR}/cmake/setup_write_config.cmake) -# -# CPack configuration -# -VERBOSE_INCLUDE(${CMAKE_SOURCE_DIR}/cmake/setup_cpack.cmake) - ######################################################################## # # # Compilation and installation: # diff --git a/cmake/setup_git.cmake b/cmake/setup_git.cmake new file mode 100644 index 0000000000..ac9f165d85 --- /dev/null +++ b/cmake/setup_git.cmake @@ -0,0 +1,86 @@ +## --------------------------------------------------------------------- +## +## Copyright (C) 2014 - 2015 by the deal.II authors +## +## This file is part of the deal.II library. +## +## The deal.II library is free software; you can use it, redistribute +## it, and/or modify it under the terms of the GNU Lesser General +## Public License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## The full text of the license can be found in the file LICENSE at +## the top level of the deal.II distribution. +## +## --------------------------------------------------------------------- + +# +# Query git commit and branch information. If git was found and the source +# directory is under version control the following variables are populated: +# +# DEAL_II_GIT_BRANCH +# DEAL_II_GIT_REVISION +# DEAL_II_GIT_SHORTREV +# + +FIND_PACKAGE(Git) + +# +# Only run the following if we have git and the source directory seems to +# be under version control. +# +IF(GIT_FOUND AND EXISTS ${CMAKE_SOURCE_DIR}/.git/HEAD) + # + # Bogus configure_file calls to trigger a reconfigure, and thus an update + # of branch and commit information every time HEAD has changed. + # + CONFIGURE_FILE( + ${CMAKE_SOURCE_DIR}/.git/HEAD + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/HEAD + ) + FILE(STRINGS ${CMAKE_SOURCE_DIR}/.git/HEAD _head_ref LIMIT_COUNT 1) + STRING(REPLACE "ref: " "" _head_ref ${_head_ref}) + IF(EXISTS ${CMAKE_SOURCE_DIR}/.git/${_head_ref}) + CONFIGURE_FILE( + ${CMAKE_SOURCE_DIR}/.git/${_head_ref} + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/HEAD_REF + ) + ENDIF() + + # + # Query for branch and commit information: + # + EXECUTE_PROCESS( + COMMAND ${GIT_EXECUTABLE} log -n 1 --pretty=format:"%H %h" + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE _info + RESULT_VARIABLE _result + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + IF(${_result} EQUAL 0) + STRING(REGEX REPLACE "^\"([^ ]+) ([^ ]+)\"$" + "\\1" DEAL_II_GIT_REVISION "${_info}") + STRING(REGEX REPLACE "^\"([^ ]+) ([^ ]+)\"$" + "\\2" DEAL_II_GIT_SHORTREV "${_info}") + ENDIF() + + EXECUTE_PROCESS( + COMMAND ${GIT_EXECUTABLE} symbolic-ref HEAD + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE _branch + RESULT_VARIABLE _result + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + IF(${_result} EQUAL 0) + STRING(REGEX REPLACE "refs/heads/" "" DEAL_II_GIT_BRANCH "${_branch}") + ENDIF() +ENDIF() + +FILE(WRITE ${CMAKE_BINARY_DIR}/revision.log +"### +# +# Git information: +# Branch: ${DEAL_II_GIT_BRANCH} +# Revision: ${DEAL_II_GIT_REVISION} +# +###" + ) -- 2.39.5