blob: dfd2a749bdda170fca3e2aa41599b7eaedcedd98 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
From a8f82ea60cde15cbbd0ebcf729062de6bad9859c Mon Sep 17 00:00:00 2001
From: Thomas Orozco <thomas@orozco.fr>
Date: Tue, 28 Mar 2017 21:59:07 +0200
Subject: [PATCH] Allow setting VERSION_GIT
Fixes: #79
---
CMakeLists.txt | 48 +++++++++++++++++++++++++++++-------------------
1 file changed, 29 insertions(+), 19 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8936f18..06c180c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,34 +6,44 @@ set (tini_VERSION_MAJOR 0)
set (tini_VERSION_MINOR 14)
set (tini_VERSION_PATCH 0)
+set (GIT_PREFIX " - git.")
+
# Build options
option(MINIMAL "Disable argument parsing and verbose output" OFF)
+# Set VERSION_GIT to INTERNAL so it does not persist across runs of CMake, just
+# like the auto-discovery would.
+set(VERSION_GIT "" CACHE INTERNAL "Override the git revision")
+
if(MINIMAL)
add_definitions(-DTINI_MINIMAL=1)
endif()
# Extract git version and dirty-ness
-execute_process (
- COMMAND git --git-dir "${PROJECT_SOURCE_DIR}/.git" --work-tree "${PROJECT_SOURCE_DIR}" log -n 1 --date=local --pretty=format:%h
- WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
- RESULT_VARIABLE git_version_check_ret
- OUTPUT_VARIABLE tini_VERSION_GIT
-)
-
-execute_process(
- COMMAND git --git-dir "${PROJECT_SOURCE_DIR}/.git" --work-tree "${PROJECT_SOURCE_DIR}" status --porcelain --untracked-files=no
- WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
- OUTPUT_VARIABLE git_dirty_check_out
-)
-
-if("${git_version_check_ret}" EQUAL 0)
- set(tini_VERSION_GIT " - git.${tini_VERSION_GIT}")
- if(NOT "${git_dirty_check_out}" STREQUAL "")
- set(tini_VERSION_GIT "${tini_VERSION_GIT}-dirty")
- endif()
+if(VERSION_GIT)
+ set(tini_VERSION_GIT "${GIT_PREFIX}${VERSION_GIT}")
else()
- set(tini_VERSION_GIT "")
+ execute_process (
+ COMMAND git --git-dir "${PROJECT_SOURCE_DIR}/.git" --work-tree "${PROJECT_SOURCE_DIR}" log -n 1 --date=local --pretty=format:%h
+ WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
+ RESULT_VARIABLE git_version_check_ret
+ OUTPUT_VARIABLE tini_VERSION_GIT
+ )
+
+ execute_process(
+ COMMAND git --git-dir "${PROJECT_SOURCE_DIR}/.git" --work-tree "${PROJECT_SOURCE_DIR}" status --porcelain --untracked-files=no
+ WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
+ OUTPUT_VARIABLE git_dirty_check_out
+ )
+
+ if("${git_version_check_ret}" EQUAL 0)
+ set(tini_VERSION_GIT "${GIT_PREFIX}${tini_VERSION_GIT}")
+ if(NOT "${git_dirty_check_out}" STREQUAL "")
+ set(tini_VERSION_GIT "${tini_VERSION_GIT}-dirty")
+ endif()
+ else()
+ set(tini_VERSION_GIT "")
+ endif()
endif()
# Flags
|