-
Notifications
You must be signed in to change notification settings - Fork 1
/
version.cmake
62 lines (51 loc) · 1.89 KB
/
version.cmake
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
# Originally from: https://www.mattkeeter.com/blog/2018-01-06-versioning/
execute_process(COMMAND git log --pretty=format:'%h' -n 1
OUTPUT_VARIABLE GIT_REV
ERROR_QUIET)
# Check whether we got any revision (which isn't
# always the case, e.g. when someone downloaded a zip
# file from Github instead of a checkout)
if ("${GIT_REV}" STREQUAL "")
set(GIT_REV "N/A")
set(GIT_DIFF "")
set(GIT_TAG "N/A")
set(GIT_BRANCH "N/A")
else()
execute_process(
COMMAND bash -c "git diff --quiet --exit-code ':(exclude)../config/version.h' || echo '-WORKING'"
OUTPUT_VARIABLE GIT_DIFF)
execute_process(
COMMAND git describe --exact-match --tags
OUTPUT_VARIABLE GIT_TAG ERROR_QUIET)
execute_process(
COMMAND git rev-parse --abbrev-ref HEAD
OUTPUT_VARIABLE GIT_BRANCH)
string(STRIP "${GIT_REV}" GIT_REV)
string(SUBSTRING "${GIT_REV}" 1 7 GIT_REV)
string(STRIP "${GIT_DIFF}" GIT_DIFF)
string(STRIP "${GIT_TAG}" GIT_TAG)
string(STRIP "${GIT_BRANCH}" GIT_BRANCH)
endif()
string(TIMESTAMP BUILD_DATE "%m/%d/%Y")
string(TIMESTAMP BUILD_DATE_UTC "%m/%d/%Y" UTC)
string(TIMESTAMP BUILD_TIME "%H:%M:%S")
string(TIMESTAMP BUILD_TIME_UTC "%H:%M:%S" UTC)
set(VERSION "/*
* Howdy!
*
* This file is automatically generated on a new build.
* You should not change it manually!
*/
#pragma once
#define TH_GIT_REV \"${GIT_REV}${GIT_DIFF}\"
#define TH_GIT_TAG \"${GIT_TAG}\"
#define TH_GIT_BRANCH \"${GIT_BRANCH}\"
#define TH_BUILD_DATE \"${BUILD_DATE}\"
#define TH_BUILD_DATE_UTC \"${BUILD_DATE_UTC}\"
#define TH_BUILD_TIME \"${BUILD_TIME}\"
#define TH_BUILD_TIME_UTC \"${BUILD_TIME_UTC}\"
")
if (NOT DEFINED TH_CURRENT_SOURCE_DIR)
message(FATAL_ERROR "You must set TH_CURRENT_SOURCE_DIR to the root of the project to run this script.")
endif()
file(WRITE ${TH_CURRENT_SOURCE_DIR}/config/version.h "${VERSION}")