-
-
Notifications
You must be signed in to change notification settings - Fork 515
/
CPackConfigVersion.cmake.in
193 lines (156 loc) · 8.42 KB
/
CPackConfigVersion.cmake.in
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
cmake_minimum_required(VERSION 3.5...3.24)
cmake_policy(SET CMP0054 NEW)
execute_process(COMMAND ${CMAKE_COMMAND} -E echo "+Executing CPackConfigVersion.cmake")
execute_process(COMMAND ${CMAKE_COMMAND} -E echo "++Running for: CPACK_GENERATOR: ${CPACK_GENERATOR}")
# set a variable if the variable is not currently set
function(setDefault var defaultValue)
if(NOT DEFINED ${var})
set(${var} "${defaultValue}" PARENT_SCOPE)
else()
execute_process(COMMAND ${CMAKE_COMMAND} -E echo "++\"${var}\"=\"${${var}}\" (ignoring default: \"${defaultValue}\")")
endif()
endfunction()
set(_STANDARD_CPACK_SOURCE_GENERATORS 7Z TGZ TXZ STGZ TBZ2 TZ ZIP CygwinSource)
# Get the version info from autorevision
if(("${CPACK_GENERATOR}" IN_LIST CPACK_SOURCE_GENERATOR) OR ("${CPACK_GENERATOR}" IN_LIST _STANDARD_CPACK_SOURCE_GENERATORS))
# Currently, there is nothing to be set based on the version # for the source package in this CPack config stage
# (The autorevision.cache for the packaged source must be generated as part of the CPack Install Script stage)
return()
# If in the future something needs to be set on the source package based on the version #,
# the method to retrieve the appropriate version for the source follows:
# # When packaging source, use the source autorevision.cache (if revision info cannot be obtained from Git)
# set(CACHEFILE "@PROJECT_SOURCE_DIR@/build_tools/autorevision.cache")
#
# execute_process(COMMAND ${CMAKE_COMMAND} -E echo "++Get source revision info (cache: ${CACHEFILE})")
#
# # Attempt to get version information from the Git repo, but fall back to the in-source autorevision cache if needed
# execute_process(COMMAND ${CMAKE_COMMAND} -DCACHEFILE=${CACHEFILE} -DSKIPUPDATECACHE="1" -DVAROUT=1 -P "@PROJECT_SOURCE_DIR@/build_tools/autorevision.cmake"
# WORKING_DIRECTORY "@PROJECT_SOURCE_DIR@"
# OUTPUT_VARIABLE autorevision_info
# OUTPUT_STRIP_TRAILING_WHITESPACE
# )
else()
# When packaging build products, force-use the autorevision.cache generated by the current *build*
set(CACHEFILE "@CMAKE_BINARY_DIR@/build_tools/autorevision.cache")
execute_process(COMMAND ${CMAKE_COMMAND} -E echo "++Get build revision info from: ${CACHEFILE}")
# Attempt to get version information from the current build's autorevision cache. Fail if cache is not present.
execute_process(COMMAND ${CMAKE_COMMAND} -DCACHEFILE=${CACHEFILE} -DSKIPUPDATECACHE="1" -DCACHEFORCE="1" -DVAROUT=1 -P "@PROJECT_SOURCE_DIR@/build_tools/autorevision.cmake"
WORKING_DIRECTORY "@PROJECT_SOURCE_DIR@"
OUTPUT_VARIABLE autorevision_info
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif()
include("@PROJECT_SOURCE_DIR@/build_tools/autorevision_helpers.cmake")
# Import the autorevision values into the current scope
cmakeSetAutorevisionValues("${autorevision_info}")
# Extract a proper version number from the git tag
extractVersionNumberFromGitTag("${VCS_MOST_RECENT_TAGGED_VERSION}")
if(DID_EXTRACT_VERSION)
set(CPACK_PACKAGE_VERSION "${EXTRACTED_VERSION}")
set(CPACK_PACKAGE_VERSION_MAJOR "${EXTRACTED_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${EXTRACTED_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${EXTRACTED_VERSION_PATCH}")
else()
# Failed to extract version from autorevision info/cache
message( WARNING "The VCS_MOST_RECENT_TAGGED_VERSION tag does not seem to include a version #; defaulting to 0.0.0" )
set(CPACK_PACKAGE_VERSION "0.0.0")
set(CPACK_PACKAGE_VERSION_MAJOR "0")
set(CPACK_PACKAGE_VERSION_MINOR "0")
set(CPACK_PACKAGE_VERSION_PATCH "0")
endif()
execute_process(COMMAND ${CMAKE_COMMAND} -E echo "++Setting CPACK_PACKAGE_VERSION: ${CPACK_PACKAGE_VERSION}")
if(DEFINED CPACK_WZ_PORTABLE AND CPACK_WZ_PORTABLE)
list(APPEND CPACK_COMPONENTS_ALL PortableConfig)
else()
list(REMOVE_ITEM CPACK_COMPONENTS_ALL PortableConfig)
endif()
if(CPACK_GENERATOR MATCHES "NSIS")
# For the NSIS installer
if(CPACK_WZ_PORTABLE)
set(PACKAGE_NAME "Warzone 2100 Portable")
else()
set(PACKAGE_NAME "Warzone 2100")
endif()
execute_process(COMMAND ${CMAKE_COMMAND} -E echo "++PACKAGE_NAME: ${PACKAGE_NAME}")
set(CPACK_PACKAGE_NAME "${PACKAGE_NAME}")
set(CPACK_NSIS_DISPLAY_NAME "${PACKAGE_NAME}")
set(CPACK_NSIS_PACKAGE_NAME "${PACKAGE_NAME}")
# Compute the installer version #
set(INSTALLER_VERSION "${CPACK_PACKAGE_VERSION}.0" CACHE STRING "NSIS version")
# Compute the version string (ex. "3.2.3" if an exact version tag, "master" if a master branch nightly build)
getVersionString()
message( STATUS "Version String: \"${VERSION_STRING}\"" )
set(PACKAGE_VERSION "${VERSION_STRING}")
execute_process(COMMAND ${CMAKE_COMMAND} -E echo "++Setting NSIS PACKAGE_VERSION: ${PACKAGE_VERSION}")
# Output the NSIS.version.nsh defines (so the installer script picks them up)
configure_file(
@CMAKE_CURRENT_SOURCE_DIR@/nsis/NSIS.version.in
@CMAKE_BINARY_DIR@/NSIS.version.nsh
)
endif()
if(CPACK_GENERATOR STREQUAL "DEB")
setDefault(CPACK_DEBIAN_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}")
setDefault(CPACK_DEB_COMPONENT_INSTALL ON)
set(CPACK_COMPONENTS_ALL Core Data Docs Info Languages Manpages DebianInfo)
set(CPACK_COMPONENT_DEBIANINFO_REQUIRED ON)
set(CPACK_COMPONENT_DEBIANINFO_GROUP "CoreGroup")
############################################
# Support component DEB install
# - If desired, set the following at configure-time: -D CPACK_DEB_COMPONENT_INSTALL=ON -D CPACK_COMPONENTS_GROUPING=ONE_PER_GROUP
# "warzone2100" package ("Core" group)
# - members
set(CPACK_COMPONENT_CORE_GROUP "CoreGroup")
set(CPACK_COMPONENT_INFO_GROUP "CoreGroup")
set(CPACK_COMPONENT_MANPAGES_GROUP "CoreGroup")
# - package settings
set(CPACK_DEBIAN_COREGROUP_PACKAGE_NAME "warzone2100")
set(CPACK_DEBIAN_COREGROUP_FILE_NAME DEB-DEFAULT)
set(CPACK_DEBIAN_COREGROUP_PACKAGE_DEPENDS "warzone2100-data (= ${CPACK_DEBIAN_PACKAGE_VERSION})")
# "warzone2100-data" package ("Data" group)
# - members
set(CPACK_COMPONENT_DATA_GROUP "DataGroup")
set(CPACK_COMPONENT_DOCS_GROUP "DataGroup")
set(CPACK_COMPONENT_LANGUAGES_GROUP "DataGroup")
#set(CPACK_COMPONENT_FONTS_GROUP "DataGroup")
# - package settings
set(CPACK_DEBIAN_DATAGROUP_PACKAGE_NAME "warzone2100-data")
set(CPACK_DEBIAN_DATAGROUP_FILE_NAME DEB-DEFAULT)
set(CPACK_DEBIAN_DATAGROUP_PACKAGE_ARCHITECTURE "all")
set(CPACK_DEBIAN_DATAGROUP_PACKAGE_RECOMMENDS "warzone2100")
set(CPACK_DEBIAN_DATAGROUP_PACKAGE_SHLIBDEPS OFF)
endif()
if(CPACK_GENERATOR STREQUAL "RPM")
setDefault(CPACK_RPM_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}")
setDefault(CPACK_RPM_PACKAGE_RELEASE_DIST ON)
set(CPACK_COMPONENTS_ALL Core Data Docs Info Languages Manpages)
############################################
# Support component RPM install
# - If desired, set the following at configure-time: -D CPACK_RPM_COMPONENT_INSTALL=ON -D CPACK_COMPONENTS_GROUPING=ONE_PER_GROUP
# "warzone2100" package ("Core" group)
# - members
set(CPACK_COMPONENT_CORE_GROUP "CoreGroup")
set(CPACK_COMPONENT_INFO_GROUP "CoreGroup")
set(CPACK_COMPONENT_MANPAGES_GROUP "CoreGroup")
# - package settings
set(CPACK_RPM_COREGROUP_PACKAGE_NAME "warzone2100")
set(CPACK_RPM_COREGROUP_FILE_NAME "warzone2100-${CPACK_RPM_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}.rpm")
set(CPACK_RPM_COREGROUP_PACKAGE_REQUIRES "warzone2100-data = ${CPACK_RPM_PACKAGE_VERSION}")
# "warzone2100-data" package ("Data" group)
# - members
set(CPACK_COMPONENT_DATA_GROUP "DataGroup")
set(CPACK_COMPONENT_DOCS_GROUP "DataGroup")
set(CPACK_COMPONENT_LANGUAGES_GROUP "DataGroup")
#set(CPACK_COMPONENT_FONTS_GROUP "DataGroup")
# - package settings
set(CPACK_RPM_DATAGROUP_PACKAGE_NAME "warzone2100-data")
set(CPACK_RPM_DATAGROUP_FILE_NAME "warzone2100-data-${CPACK_RPM_PACKAGE_VERSION}-noarch.rpm")
set(CPACK_RPM_DATAGROUP_PACKAGE_ARCHITECTURE "noarch")
endif()
if (WZ_DEVELOPMENT_BUILD)
string(TIMESTAMP _current_date "%Y-%m-%d" UTC)
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Innovative 3D real-time strategy (development build)")
set(CPACK_RPM_PACKAGE_SUMMARY "Innovative 3D real-time strategy (development build)")
set(CPACK_RPM_PACKAGE_DESCRIPTION "Development build of Warzone 2100 (Built: ${_current_date})\nFor more information, and the latest development (and release!) builds, please see: https://github.com/Warzone2100/warzone2100")
set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "Innovative 3D real-time strategy (development build)\n Development build of Warzone 2100 (Built: ${_current_date})\n .\n For more information, and the latest development (and release!) builds, please see: https://github.com/Warzone2100/warzone2100")
endif()
execute_process(COMMAND ${CMAKE_COMMAND} -E echo "++CPACK_COMPONENTS_ALL: ${CPACK_COMPONENTS_ALL}")