forked from Slicer/Slicer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSlicerVersion.cmake
152 lines (131 loc) · 6.17 KB
/
SlicerVersion.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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#
# This module will set the variables Slicer_VERSION and Slicer_VERSION_FULL.
#
# It will also set all variables describing the SCM associated
# with Slicer_MAIN_PROJECT_SOURCE_DIR.
#
# It has been designed to be included in the build system of Slicer.
#
# The following variables are expected to be defined in the including scope:
# GIT_EXECUTABLE
# Slicer_CMAKE_DIR
# Slicer_MAIN_PROJECT_APPLICATION_NAME
# Slicer_MAIN_PROJECT_SOURCE_DIR
# Slicer_RELEASE_TYPE
# Slicer_VERSION_MAJOR
# Slicer_VERSION_MINOR
# Slicer_VERSION_PATCH
#
# --------------------------------------------------------------------------
# Sanity checks
# --------------------------------------------------------------------------
set(expected_defined_vars
GIT_EXECUTABLE
Slicer_CMAKE_DIR
Slicer_MAIN_PROJECT_APPLICATION_NAME
Slicer_MAIN_PROJECT_SOURCE_DIR
Slicer_RELEASE_TYPE
Slicer_VERSION_MAJOR
Slicer_VERSION_MINOR
Slicer_VERSION_PATCH
)
foreach(var ${expected_defined_vars})
if(NOT DEFINED ${var})
message(FATAL_ERROR "${var} is mandatory")
endif()
endforeach()
message(STATUS "Configuring ${Slicer_MAIN_PROJECT_APPLICATION_NAME} release type [${Slicer_RELEASE_TYPE}]")
#-----------------------------------------------------------------------------
# Update CMake module path
#-----------------------------------------------------------------------------
set(CMAKE_MODULE_PATH
${Slicer_CMAKE_DIR}
${CMAKE_MODULE_PATH}
)
include(SlicerMacroExtractRepositoryInfo)
#-----------------------------------------------------------------------------
# Slicer version number
#-----------------------------------------------------------------------------
SlicerMacroExtractRepositoryInfo(
VAR_PREFIX Slicer
SOURCE_DIR ${Slicer_SOURCE_DIR}
)
if(NOT "${Slicer_FORCED_WC_LAST_CHANGED_DATE}" STREQUAL "")
set(Slicer_WC_LAST_CHANGED_DATE "${Slicer_FORCED_WC_LAST_CHANGED_DATE}")
endif()
string(REGEX REPLACE ".*([0-9][0-9][0-9][0-9]\\-[0-9][0-9]\\-[0-9][0-9]).*" "\\1"
Slicer_BUILDDATE "${Slicer_WC_LAST_CHANGED_DATE}")
# Set Slicer_COMMIT_COUNT from working copy commit count adjusted by a custom offset.
if("${Slicer_WC_COMMIT_COUNT_OFFSET}" STREQUAL "")
set(Slicer_WC_COMMIT_COUNT_OFFSET "0")
endif()
math(EXPR Slicer_COMMIT_COUNT "${Slicer_WC_COMMIT_COUNT}+${Slicer_WC_COMMIT_COUNT_OFFSET}")
if("${Slicer_REVISION_TYPE}" STREQUAL "")
set(Slicer_REVISION_TYPE "CommitCount")
endif()
if(NOT "${Slicer_FORCED_REVISION}" STREQUAL "")
set(Slicer_REVISION "${Slicer_FORCED_REVISION}")
elseif(Slicer_REVISION_TYPE STREQUAL "CommitCount")
set(Slicer_REVISION "${Slicer_COMMIT_COUNT}")
elseif(Slicer_REVISION_TYPE STREQUAL "Hash")
set(Slicer_REVISION "${Slicer_WC_REVISION_HASH}")
else()
message(FATAL_ERROR "Invalid Slicer_REVISION_TYPE value: ${Slicer_REVISION_TYPE}")
endif()
set(Slicer_VERSION "${Slicer_VERSION_MAJOR}.${Slicer_VERSION_MINOR}")
set(Slicer_VERSION_FULL "${Slicer_VERSION}.${Slicer_VERSION_PATCH}")
if(NOT "${Slicer_RELEASE_TYPE}" STREQUAL "Stable")
set(Slicer_VERSION_FULL "${Slicer_VERSION_FULL}-${Slicer_BUILDDATE}")
endif()
message(STATUS "Configuring Slicer version [${Slicer_VERSION_FULL}]")
message(STATUS "Configuring Slicer revision [${Slicer_REVISION}]")
#-----------------------------------------------------------------------------
# Slicer main application version number
#-----------------------------------------------------------------------------
SlicerMacroExtractRepositoryInfo(
VAR_PREFIX Slicer_MAIN_PROJECT
SOURCE_DIR ${Slicer_MAIN_PROJECT_SOURCE_DIR}
)
if(NOT "${Slicer_MAIN_PROJECT_FORCED_WC_LAST_CHANGED_DATE}" STREQUAL "")
set(Slicer_MAIN_PROJECT_WC_LAST_CHANGED_DATE "${Slicer_MAIN_PROJECT_FORCED_WC_LAST_CHANGED_DATE}")
endif()
string(REGEX REPLACE ".*([0-9][0-9][0-9][0-9]\\-[0-9][0-9]\\-[0-9][0-9]).*" "\\1"
Slicer_MAIN_PROJECT_BUILDDATE "${Slicer_MAIN_PROJECT_WC_LAST_CHANGED_DATE}")
# Set Slicer_MAIN_PROJECT_COMMIT_COUNT from working copy commit count adjusted by a custom offset.
if("${Slicer_MAIN_PROJECT_WC_COMMIT_COUNT_OFFSET}" STREQUAL "")
if ("${Slicer_MAIN_PROJECT_APPLICATION_NAME}" STREQUAL "Slicer")
# Force SlicerApp's commit count offset to be the same as Slicer_WC_COMMIT_COUNT_OFFSET to make
# Slicer_MAIN_PROJECT_REVISION the same as Slicer_REVISION if the default Slicer application is built.
set(Slicer_MAIN_PROJECT_WC_COMMIT_COUNT_OFFSET "${Slicer_WC_COMMIT_COUNT_OFFSET}")
else()
set(Slicer_MAIN_PROJECT_WC_COMMIT_COUNT_OFFSET "0")
endif()
endif()
math(EXPR Slicer_MAIN_PROJECT_COMMIT_COUNT "${Slicer_MAIN_PROJECT_WC_COMMIT_COUNT}+${Slicer_MAIN_PROJECT_WC_COMMIT_COUNT_OFFSET}")
if("${Slicer_MAIN_PROJECT_REVISION_TYPE}" STREQUAL "")
if ("${Slicer_MAIN_PROJECT_APPLICATION_NAME}" STREQUAL "Slicer")
# Force SlicerApp's revision type to be the same as Slicer_REVISION_TYPE to make
# Slicer_MAIN_PROJECT_REVISION the same as Slicer_REVISION if the default Slicer application is built.
set(Slicer_MAIN_PROJECT_REVISION_TYPE "${Slicer_REVISION_TYPE}")
else()
set(Slicer_MAIN_PROJECT_REVISION_TYPE "CommitCount")
endif()
endif()
if(NOT "${Slicer_MAIN_PROJECT_FORCED_REVISION}" STREQUAL "")
set(Slicer_MAIN_PROJECT_REVISION "${Slicer_FORCED_REVISION}")
elseif(Slicer_MAIN_PROJECT_REVISION_TYPE STREQUAL "CommitCount")
set(Slicer_MAIN_PROJECT_REVISION "${Slicer_MAIN_PROJECT_COMMIT_COUNT}")
elseif(Slicer_MAIN_PROJECT_REVISION_TYPE STREQUAL "Hash")
set(Slicer_MAIN_PROJECT_REVISION "${Slicer_MAIN_PROJECT_WC_REVISION_HASH}")
else()
message(FATAL_ERROR "Invalid Slicer_MAIN_PROJECT_REVISION_TYPE value: ${Slicer_MAIN_PROJECT_REVISION_TYPE}")
endif()
set(Slicer_MAIN_PROJECT_VERSION "${Slicer_MAIN_PROJECT_VERSION_MAJOR}.${Slicer_MAIN_PROJECT_VERSION_MINOR}")
set(Slicer_MAIN_PROJECT_VERSION_FULL "${Slicer_MAIN_PROJECT_VERSION}.${Slicer_MAIN_PROJECT_VERSION_PATCH}")
if(NOT "${Slicer_RELEASE_TYPE}" STREQUAL "Stable")
set(Slicer_MAIN_PROJECT_VERSION_FULL "${Slicer_MAIN_PROJECT_VERSION_FULL}-${Slicer_MAIN_PROJECT_BUILDDATE}")
endif()
if(NOT "${Slicer_MAIN_PROJECT_APPLICATION_NAME}" STREQUAL "Slicer")
message(STATUS "Configuring ${Slicer_MAIN_PROJECT_APPLICATION_NAME} version [${Slicer_MAIN_PROJECT_VERSION_FULL}]")
message(STATUS "Configuring ${Slicer_MAIN_PROJECT_APPLICATION_NAME} revision [${Slicer_MAIN_PROJECT_REVISION}]")
endif()