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
|
cmake_minimum_required(VERSION 3.16...3.31)
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}")
|