From 1f709b985d75a3b27e8ea26af219c0396bcdc350 Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Wed, 30 Sep 2020 10:49:41 +0200
Subject: [PATCH] [CMake] Move git info to PreFind.

---
 scripts/cmake/PreFind.cmake      | 67 +++++++++++++++++++++++++++++++-
 scripts/cmake/ProjectSetup.cmake | 66 -------------------------------
 2 files changed, 65 insertions(+), 68 deletions(-)

diff --git a/scripts/cmake/PreFind.cmake b/scripts/cmake/PreFind.cmake
index 58aa681e37f..308323a35d7 100644
--- a/scripts/cmake/PreFind.cmake
+++ b/scripts/cmake/PreFind.cmake
@@ -1,5 +1,11 @@
+### Git detection ###
 find_package(Git REQUIRED)
 
+if(DEFINED ENV{OGS_VERSION})
+    set(OGS_VERSION $ENV{OGS_VERSION})
+    message(STATUS "OGS VERSION: ${OGS_VERSION} (set via environment)")
+endif()
+
 if(NOT IS_GIT_REPO)
     execute_process(COMMAND ${GIT_EXECUTABLE} status
         WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
@@ -8,8 +14,7 @@ if(NOT IS_GIT_REPO)
     if(IS_GIT_REPO GREATER 0)
         set(IS_GIT_REPO FALSE CACHE INTERNAL "")
         if(DEFINED OGS_VERSION)
-            message(WARNING "Using user-provided OGS_VERSION: ${OGS_VERSION}!")
-            message(WARNING "Submodule setup is skipped!")
+            message(WARNING "Using user-provided OGS_VERSION; Submodule setup is skipped!")
         else()
             message(FATAL_ERROR "No git repository found at ${PROJECT_SOURCE_DIR}! "
                 "Please use git to obtain the source code! See "
@@ -21,6 +26,64 @@ if(NOT IS_GIT_REPO)
     endif()
 endif()
 
+if(IS_GIT_REPO)
+    # Get version info from Git, implementation based on
+    # https://github.com/tomtom-international/cpp-dependencies
+    execute_process(
+        COMMAND ${GIT_EXECUTABLE} describe --tags --long --dirty --always
+        WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+        RESULT_VARIABLE DESCRIBE_RESULT
+        OUTPUT_VARIABLE DESCRIBE_STDOUT
+    )
+    if(DESCRIBE_RESULT EQUAL 0)
+        string(STRIP "${DESCRIBE_STDOUT}" DESCRIBE_STDOUT)
+        message(STATUS "Git reported this project's version as '${DESCRIBE_STDOUT}'")
+        if(DESCRIBE_STDOUT MATCHES "^(.*)-(dirty)$")
+          set(DESCRIBE_DIRTY "${CMAKE_MATCH_2}")
+          set(DESCRIBE_STDOUT "${CMAKE_MATCH_1}")
+        endif()
+        if(DESCRIBE_STDOUT MATCHES "^([0-9a-f]+)$")
+          set(DESCRIBE_COMMIT_NAME "${CMAKE_MATCH_1}")
+          set(DESCRIBE_STDOUT "")
+        elseif(DESCRIBE_STDOUT MATCHES "^(.*)-g([0-9a-f]+)$")
+          set(DESCRIBE_COMMIT_NAME "g${CMAKE_MATCH_2}")
+          set(DESCRIBE_STDOUT "${CMAKE_MATCH_1}")
+        endif()
+        if(DESCRIBE_STDOUT MATCHES "^(.*)-([0-9]+)$")
+          set(DESCRIBE_COMMIT_COUNT "${CMAKE_MATCH_2}")
+          set(DESCRIBE_TAG "${CMAKE_MATCH_1}")
+          set(DESCRIBE_STDOUT "")
+        endif()
+
+        set(OGS_VERSION ${DESCRIBE_TAG})
+        if(DESCRIBE_COMMIT_COUNT GREATER 0)
+          set(OGS_VERSION "${OGS_VERSION}-${DESCRIBE_COMMIT_COUNT}-${DESCRIBE_COMMIT_NAME}")
+        endif()
+
+        if(DESCRIBE_DIRTY)
+          string(TIMESTAMP DESCRIBE_DIRTY_TIMESTAMP "%Y%m%d%H%M%S" UTC)
+          set(OGS_VERSION "${OGS_VERSION}.dirty.${DESCRIBE_DIRTY_TIMESTAMP}")
+        endif()
+        message(STATUS "OGS VERSION: ${OGS_VERSION}")
+    else()
+        message(WARNING "Git repository contains no tags! Please run: git fetch --tags")
+    endif()
+
+    # Get git commit
+    execute_process(
+        COMMAND ${GIT_EXECUTABLE} log -1 --format=%H
+        WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+        OUTPUT_VARIABLE GIT_SHA1
+        OUTPUT_STRIP_TRAILING_WHITESPACE
+    )
+
+    execute_process(
+        COMMAND ${GIT_EXECUTABLE} log -1 --format=%h
+        WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+        OUTPUT_VARIABLE GIT_SHA1_SHORT
+        OUTPUT_STRIP_TRAILING_WHITESPACE
+    )
+endif()
 if(OGS_USE_PYTHON)
     find_package(Python3 COMPONENTS Interpreter Development REQUIRED)
 else()
diff --git a/scripts/cmake/ProjectSetup.cmake b/scripts/cmake/ProjectSetup.cmake
index 0432deda6ef..4b5c27caecc 100644
--- a/scripts/cmake/ProjectSetup.cmake
+++ b/scripts/cmake/ProjectSetup.cmake
@@ -27,69 +27,3 @@ if(APPLE)
 else()
     set(CMAKE_INSTALL_RPATH "$ORIGIN/../${CMAKE_INSTALL_LIBDIR}")
 endif()
-
-if(NOT IS_GIT_REPO)
-    return()
-endif()
-
-if(DEFINED ENV{OGS_VERSION})
-    set(OGS_VERSION $ENV{OGS_VERSION})
-    message(STATUS "OGS VERSION: ${OGS_VERSION} (set via environment)")
-else()
-    # Get version info from Git, implementation based on
-    # https://github.com/tomtom-international/cpp-dependencies
-    execute_process(
-        COMMAND ${GIT_EXECUTABLE} describe --tags --long --dirty --always
-        WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
-        RESULT_VARIABLE DESCRIBE_RESULT
-        OUTPUT_VARIABLE DESCRIBE_STDOUT
-    )
-    if(DESCRIBE_RESULT EQUAL 0)
-        string(STRIP "${DESCRIBE_STDOUT}" DESCRIBE_STDOUT)
-        message(STATUS "Git reported this project's version as '${DESCRIBE_STDOUT}'")
-        if(DESCRIBE_STDOUT MATCHES "^(.*)-(dirty)$")
-          set(DESCRIBE_DIRTY "${CMAKE_MATCH_2}")
-          set(DESCRIBE_STDOUT "${CMAKE_MATCH_1}")
-        endif()
-        if(DESCRIBE_STDOUT MATCHES "^([0-9a-f]+)$")
-          set(DESCRIBE_COMMIT_NAME "${CMAKE_MATCH_1}")
-          set(DESCRIBE_STDOUT "")
-        elseif(DESCRIBE_STDOUT MATCHES "^(.*)-g([0-9a-f]+)$")
-          set(DESCRIBE_COMMIT_NAME "g${CMAKE_MATCH_2}")
-          set(DESCRIBE_STDOUT "${CMAKE_MATCH_1}")
-        endif()
-        if(DESCRIBE_STDOUT MATCHES "^(.*)-([0-9]+)$")
-          set(DESCRIBE_COMMIT_COUNT "${CMAKE_MATCH_2}")
-          set(DESCRIBE_TAG "${CMAKE_MATCH_1}")
-          set(DESCRIBE_STDOUT "")
-        endif()
-
-        set(OGS_VERSION ${DESCRIBE_TAG})
-        if(DESCRIBE_COMMIT_COUNT GREATER 0)
-          set(OGS_VERSION "${OGS_VERSION}-${DESCRIBE_COMMIT_COUNT}-${DESCRIBE_COMMIT_NAME}")
-        endif()
-
-        if(DESCRIBE_DIRTY)
-          string(TIMESTAMP DESCRIBE_DIRTY_TIMESTAMP "%Y%m%d%H%M%S" UTC)
-          set(OGS_VERSION "${OGS_VERSION}.dirty.${DESCRIBE_DIRTY_TIMESTAMP}")
-        endif()
-        message(STATUS "OGS VERSION: ${OGS_VERSION}")
-    else()
-        message(WARNING "Git repository contains no tags! Please run: git fetch --tags")
-    endif()
-endif()
-
-# Get git commit
-execute_process(
-    COMMAND ${GIT_EXECUTABLE} log -1 --format=%H
-    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
-    OUTPUT_VARIABLE GIT_SHA1
-    OUTPUT_STRIP_TRAILING_WHITESPACE
-)
-
-execute_process(
-    COMMAND ${GIT_EXECUTABLE} log -1 --format=%h
-    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
-    OUTPUT_VARIABLE GIT_SHA1_SHORT
-    OUTPUT_STRIP_TRAILING_WHITESPACE
-)
-- 
GitLab