]> https://gitweb.dealii.org/ - dealii.git/commitdiff
CMake: Query branch and commit during configure
authorMatthias Maier <tamiko@kyomu.43-1.org>
Fri, 2 Jan 2015 01:54:37 +0000 (02:54 +0100)
committerMatthias Maier <tamiko@kyomu.43-1.org>
Sat, 3 Jan 2015 14:56:09 +0000 (15:56 +0100)
CMakeLists.txt
cmake/setup_git.cmake [new file with mode: 0644]

index 462ad74893b52be3bdfd4e1f0d152cfbaf363253..e0eb3066a477dbe9ee1de08b099a5f71baf7fbea 100644 (file)
@@ -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 (file)
index 0000000..ac9f165
--- /dev/null
@@ -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}
+#
+###"
+  )

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.