From fa29e58203415c562349abd5795a3de10811e669 Mon Sep 17 00:00:00 2001 From: Matthias Maier Date: Wed, 21 Jan 2015 18:40:32 +0100 Subject: [PATCH] CMake: Refactor setup_git.cmake into its own macro --- CMakeLists.txt | 1 - .../macro_deal_ii_query_git_information.cmake | 94 +++++++++++++++++++ cmake/setup_git.cmake | 86 ----------------- cmake/setup_write_config.cmake | 19 ++++ 4 files changed, 113 insertions(+), 87 deletions(-) create mode 100644 cmake/macros/macro_deal_ii_query_git_information.cmake delete mode 100644 cmake/setup_git.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 4f2c02d7a8..07032657f4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -126,7 +126,6 @@ ENDFOREACH() 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) ######################################################################## diff --git a/cmake/macros/macro_deal_ii_query_git_information.cmake b/cmake/macros/macro_deal_ii_query_git_information.cmake new file mode 100644 index 0000000000..6ca84c01f2 --- /dev/null +++ b/cmake/macros/macro_deal_ii_query_git_information.cmake @@ -0,0 +1,94 @@ +## --------------------------------------------------------------------- +## +## Copyright (C) 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. +## +## --------------------------------------------------------------------- + +# +# This file implements the DEAL_II_QUERY_GIT_INFORMATION macro, which is +# part of the deal.II library. +# +# Usage: +# DEAL_II_QUERY_GIT_INFORMATION() +# +# This will try to gather information about current branch, as well as +# short and long revision. If ${CMAKE_SOURCE_DIR} is the root of a git +# repository the following variables will be populated: +# +# DEAL_II_GIT_BRANCH +# DEAL_II_GIT_REVISION +# DEAL_II_GIT_SHORTREV +# + +MACRO(DEAL_II_QUERY_GIT_INFORMATION) + + MESSAGE(STATUS "Query git repository information.") + + 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 revision: + # + + 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() + + # + # Query for branch: + # + + 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() + +ENDMACRO() diff --git a/cmake/setup_git.cmake b/cmake/setup_git.cmake deleted file mode 100644 index ac9f165d85..0000000000 --- a/cmake/setup_git.cmake +++ /dev/null @@ -1,86 +0,0 @@ -## --------------------------------------------------------------------- -## -## 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} -# -###" - ) diff --git a/cmake/setup_write_config.cmake b/cmake/setup_write_config.cmake index bd56e6de34..c458b72f35 100644 --- a/cmake/setup_write_config.cmake +++ b/cmake/setup_write_config.cmake @@ -14,6 +14,25 @@ ## --------------------------------------------------------------------- +######################################################################## +# # +# Query for git repository information: # +# # +######################################################################## + +DEAL_II_QUERY_GIT_INFORMATION() + +FILE(WRITE ${CMAKE_BINARY_DIR}/revision.log +"### +# +# Git information: +# Branch: ${DEAL_II_GIT_BRANCH} +# Revision: ${DEAL_II_GIT_REVISION} +# +###" + ) + + ######################################################################## # # # Write a nice configuration summary to file: # -- 2.39.5