-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathGetGitRepoVersion.cmake
68 lines (58 loc) · 1.8 KB
/
GetGitRepoVersion.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
63
64
65
66
67
68
if(DEFINED ENV{GIT_DESCRIBE_HASH})
set(GIT_DESCRIBE_HASH $ENV{GIT_DESCRIBE_HASH})
else()
set(GIT_DESCRIBE_HASH "unknown")
endif()
if(NOT DEFINED ENV{GIT_DESCRIBE_TAG})
find_package(Git REQUIRED)
execute_process(
COMMAND ${GIT_EXECUTABLE} describe --tags --always
OUTPUT_VARIABLE GIT_REPO_VERSION
RESULT_VARIABLE result)
if(NOT result EQUAL 0)
set(GIT_REPO_VERSION "0.0.0")
endif()
else()
set(GIT_REPO_VERSION $ENV{GIT_DESCRIBE_TAG})
endif()
if(DEFINED ENV{GIT_DESCRIBE_NUMBER})
set(GIT_DESCRIBE_NUMBER $ENV{GIT_DESCRIBE_NUMBER})
else()
set(GIT_DESCRIBE_NUMBER "unknown")
endif()
string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)" GIT_REPO_VERSION ${GIT_REPO_VERSION})
string(REPLACE "." ";" VERSION_LIST ${GIT_REPO_VERSION})
list(GET VERSION_LIST 0 GIT_REPO_VERSION_MAJOR)
list(GET VERSION_LIST 1 GIT_REPO_VERSION_MINOR)
list(GET VERSION_LIST 2 GIT_REPO_VERSION_PATCH)
# note! making sure there's no end of line or other left-over artifacts
set(GIT_REPO_VERSION
"${GIT_REPO_VERSION_MAJOR}.${GIT_REPO_VERSION_MINOR}.${GIT_REPO_VERSION_PATCH}")
# COMPATIBILITY
set(ROQ_VERSION ${GIT_REPO_VERSION})
set(ROQ_VERSION_MAJOR ${GIT_REPO_VERSION_MAJOR})
set(ROQ_VERSION_MINOR ${GIT_REPO_VERSION_MINOR})
set(ROQ_VERSION_PATCH ${GIT_REPO_VERSION_PATCH})
if(DEFINED ENV{ROQ_BUILD_TYPE})
set(ROQ_BUILD_TYPE $ENV{ROQ_BUILD_TYPE})
else()
if(DEFINED CMAKE_BUILD_TYPE)
set(ROQ_BUILD_TYPE ${CMAKE_BUILD_TYPE})
else()
set(ROQ_BUILD_TYPE "unknown")
endif()
endif()
if(DEFINED ENV{ROQ_BUILD_NUMBER})
set(ROQ_BUILD_NUMBER $ENV{ROQ_BUILD_NUMBER})
else()
if(DEFINED ENV{PKG_BUILDNUM}) # conda-build
set(ROQ_BUILD_NUMBER $ENV{PKG_BUILDNUM})
else()
set(ROQ_BUILD_NUMBER "unknown")
endif()
endif()
if(DEFINED ENV{HOST})
set(ROQ_HOST $ENV{HOST})
else()
set(ROQ_HOST "unknown")
endif()