1 # Default output files will be CPackConfig.cmake and CPackSourceConfig.cmake.
2 # This can be overwritten with CPACK_OUTPUT_CONFIG_FILE and
3 # CPACK_SOURCE_OUTPUT_CONFIG_FILE.
5 # Pick a configuration file
6 SET(cpack_input_file "${CMAKE_ROOT}/Templates/CPackConfig.cmake.in")
7 IF(EXISTS "${CMAKE_SOURCE_DIR}/CPackConfig.cmake.in")
8 SET(cpack_input_file "${CMAKE_SOURCE_DIR}/CPackConfig.cmake.in")
9 ENDIF(EXISTS "${CMAKE_SOURCE_DIR}/CPackConfig.cmake.in")
10 SET(cpack_source_input_file "${CMAKE_ROOT}/Templates/CPackConfig.cmake.in")
11 IF(EXISTS "${CMAKE_SOURCE_DIR}/CPackSourceConfig.cmake.in")
12 SET(cpack_source_input_file "${CMAKE_SOURCE_DIR}/CPackSourceConfig.cmake.in")
13 ENDIF(EXISTS "${CMAKE_SOURCE_DIR}/CPackSourceConfig.cmake.in")
15 # Macro for setting values if a user did not overwrite them
16 MACRO(cpack_set_if_not_set name value)
17 IF(NOT DEFINED "${name}")
18 SET(${name} "${value}")
19 ENDIF(NOT DEFINED "${name}")
20 ENDMACRO(cpack_set_if_not_set)
22 # Macro to encode variables for the configuration file
23 # find any varable that stars with CPACK and create a variable
24 # _CPACK_OTHER_VARIABLES_ that contains SET commands for
25 # each cpack variable. _CPACK_OTHER_VARIABLES_ is then
26 # used as an @ replacment in configure_file for the CPackConfig.
27 MACRO(cpack_encode_variables)
28 SET(_CPACK_OTHER_VARIABLES_)
29 GET_CMAKE_PROPERTY(res VARIABLES)
31 IF("xxx${var}" MATCHES "xxxCPACK")
32 SET(_CPACK_OTHER_VARIABLES_
33 "${_CPACK_OTHER_VARIABLES_}\nSET(${var} \"${${var}}\")")
34 ENDIF("xxx${var}" MATCHES "xxxCPACK")
35 ENDFOREACH(var ${res})
36 ENDMACRO(cpack_encode_variables)
38 # Set the package name
39 cpack_set_if_not_set(CPACK_PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
40 cpack_set_if_not_set(CPACK_PACKAGE_VERSION_MAJOR "0")
41 cpack_set_if_not_set(CPACK_PACKAGE_VERSION_MINOR "1")
42 cpack_set_if_not_set(CPACK_PACKAGE_VERSION_PATCH "1")
43 cpack_set_if_not_set(CPACK_PACKAGE_VERSION
44 "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
45 cpack_set_if_not_set(CPACK_PACKAGE_VENDOR "Humanity")
46 cpack_set_if_not_set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
47 "${CMAKE_PROJECT_NAME} built using CMake")
49 cpack_set_if_not_set(CPACK_PACKAGE_DESCRIPTION_FILE
50 "${CMAKE_ROOT}/Templates/CPack.GenericDescription.txt")
51 cpack_set_if_not_set(CPACK_RESOURCE_FILE_LICENSE
52 "${CMAKE_ROOT}/Templates/CPack.GenericLicense.txt")
53 cpack_set_if_not_set(CPACK_RESOURCE_FILE_README
54 "${CMAKE_ROOT}/Templates/CPack.GenericDescription.txt")
55 cpack_set_if_not_set(CPACK_RESOURCE_FILE_WELCOME
56 "${CMAKE_ROOT}/Templates/CPack.GenericWelcome.txt")
58 cpack_set_if_not_set(CPACK_MODULE_PATH "${CMAKE_MODULE_PATH}")
60 IF(CPACK_NSIS_MODIFY_PATH)
61 SET(CPACK_NSIS_MODIFY_PATH ON)
62 ENDIF(CPACK_NSIS_MODIFY_PATH)
64 SET(__cpack_system_name ${CMAKE_SYSTEM_NAME})
65 IF(${__cpack_system_name} MATCHES Windows)
67 SET(__cpack_system_name win64)
69 SET(__cpack_system_name win32)
71 ENDIF(${__cpack_system_name} MATCHES Windows)
72 cpack_set_if_not_set(CPACK_SYSTEM_NAME "${__cpack_system_name}")
74 # <project>-<major>.<minor>.<patch>-<release>-<platform>.<pkgtype>
75 cpack_set_if_not_set(CPACK_PACKAGE_FILE_NAME
76 "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}-${CPACK_SYSTEM_NAME}")
77 cpack_set_if_not_set(CPACK_PACKAGE_INSTALL_DIRECTORY
78 "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}")
79 cpack_set_if_not_set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY
80 "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}")
81 cpack_set_if_not_set(CPACK_PACKAGE_DEFAULT_LOCATION "/")
82 cpack_set_if_not_set(CPACK_PACKAGE_RELOCATABLE "true")
84 # always force to exactly "true" or "false" for CPack.Info.plist.in:
85 if(CPACK_PACKAGE_RELOCATABLE)
86 set(CPACK_PACKAGE_RELOCATABLE "true")
87 else(CPACK_PACKAGE_RELOCATABLE)
88 set(CPACK_PACKAGE_RELOCATABLE "false")
89 endif(CPACK_PACKAGE_RELOCATABLE)
91 macro(cpack_check_file_exists file description)
92 if(NOT EXISTS "${file}")
93 message(SEND_ERROR "CPack ${description} file: \"${file}\" could not be found.")
94 endif(NOT EXISTS "${file}")
95 endmacro(cpack_check_file_exists)
97 cpack_check_file_exists("${CPACK_PACKAGE_DESCRIPTION_FILE}" "package description")
98 cpack_check_file_exists("${CPACK_RESOURCE_FILE_LICENSE}" "license resource")
99 cpack_check_file_exists("${CPACK_RESOURCE_FILE_README}" "readme resource")
100 cpack_check_file_exists("${CPACK_RESOURCE_FILE_WELCOME}" "welcome resource")
102 macro(cpack_optional_append _list _cond _item)
104 set(${_list} ${${_list}} ${_item})
106 endmacro(cpack_optional_append _list _cond _item)
108 # Provide options to choose generators
109 # we might check here if the required tools for the generates exist
110 # and set the defaults according to the results
111 if(NOT CPACK_GENERATOR)
114 option(CPACK_CYGWIN_BINARY "Enable to build Cygwin binary packages" ON)
117 option(CPACK_PACKAGEMAKER "Enable to build PackageMaker packages" ON)
118 option(CPACK_OSXX11 "Enable to build OSX X11 packages" OFF)
120 option(CPACK_TZ "Enable to build TZ packages" ON)
122 option(CPACK_STGZ "Enable to build STGZ packages" ON)
123 option(CPACK_TGZ "Enable to build TGZ packages" ON)
124 option(CPACK_TBZ2 "Enable to build TBZ2 packages" ON)
125 option(CPACK_DEB "Enable to build Debian packages" OFF)
126 option(CPACK_RPM "Enable to build RPM packages" OFF)
127 option(CPACK_NSIS "Enable to build NSIS packages" OFF)
130 option(CPACK_NSIS "Enable to build NSIS packages" ON)
131 option(CPACK_ZIP "Enable to build ZIP packages" ON)
134 cpack_optional_append(CPACK_GENERATOR CPACK_PACKAGEMAKER PackageMaker)
135 cpack_optional_append(CPACK_GENERATOR CPACK_OSXX11 OSXX11)
136 cpack_optional_append(CPACK_GENERATOR CPACK_CYGWIN_BINARY CygwinBinary)
137 cpack_optional_append(CPACK_GENERATOR CPACK_DEB DEB)
138 cpack_optional_append(CPACK_GENERATOR CPACK_RPM RPM)
139 cpack_optional_append(CPACK_GENERATOR CPACK_NSIS NSIS)
140 cpack_optional_append(CPACK_GENERATOR CPACK_STGZ STGZ)
141 cpack_optional_append(CPACK_GENERATOR CPACK_TGZ TGZ)
142 cpack_optional_append(CPACK_GENERATOR CPACK_TBZ2 TBZ2)
143 cpack_optional_append(CPACK_GENERATOR CPACK_TZ TZ)
144 cpack_optional_append(CPACK_GENERATOR CPACK_ZIP ZIP)
146 endif(NOT CPACK_GENERATOR)
148 # Provide options to choose source generators
149 if(NOT CPACK_SOURCE_GENERATOR)
152 option(CPACK_SOURCE_CYGWIN "Enable to build Cygwin source packages" ON)
154 option(CPACK_SOURCE_TBZ2 "Enable to build TBZ2 source packages" ON)
155 option(CPACK_SOURCE_TGZ "Enable to build TGZ source packages" ON)
156 option(CPACK_SOURCE_TZ "Enable to build TZ source packages" ON)
157 option(CPACK_SOURCE_ZIP "Enable to build ZIP source packages" OFF)
160 option(CPACK_SOURCE_ZIP "Enable to build ZIP source packages" ON)
163 cpack_optional_append(CPACK_SOURCE_GENERATOR CPACK_SOURCE_CYGWIN CygwinSource)
164 cpack_optional_append(CPACK_SOURCE_GENERATOR CPACK_SOURCE_TGZ TGZ)
165 cpack_optional_append(CPACK_SOURCE_GENERATOR CPACK_SOURCE_TBZ2 TBZ2)
166 cpack_optional_append(CPACK_SOURCE_GENERATOR CPACK_SOURCE_TZ TZ)
167 cpack_optional_append(CPACK_SOURCE_GENERATOR CPACK_SOURCE_ZIP ZIP)
168 endif(NOT CPACK_SOURCE_GENERATOR)
170 # mark the above options as advanced
171 mark_as_advanced(CPACK_CYGWIN_BINARY CPACK_PACKAGEMAKER CPACK_OSXX11
172 CPACK_STGZ CPACK_TGZ CPACK_TBZ2 CPACK_DEB CPACK_RPM
173 CPACK_TZ CPACK_NSIS CPACK_ZIP
174 CPACK_SOURCE_CYGWIN CPACK_SOURCE_TBZ2 CPACK_SOURCE_TGZ
175 CPACK_SOURCE_TZ CPACK_SOURCE_ZIP)
177 # Set some other variables
178 cpack_set_if_not_set(CPACK_INSTALL_CMAKE_PROJECTS
179 "${CMAKE_BINARY_DIR};${CMAKE_PROJECT_NAME};ALL;/")
180 cpack_set_if_not_set(CPACK_CMAKE_GENERATOR "${CMAKE_GENERATOR}")
181 cpack_set_if_not_set(CPACK_TOPLEVEL_TAG "${CPACK_SYSTEM_NAME}")
183 cpack_set_if_not_set(CPACK_NSIS_DISPLAY_NAME "@CPACK_PACKAGE_INSTALL_DIRECTORY@")
185 cpack_set_if_not_set(CPACK_OUTPUT_CONFIG_FILE
186 "${CMAKE_BINARY_DIR}/CPackConfig.cmake")
188 cpack_set_if_not_set(CPACK_SOURCE_OUTPUT_CONFIG_FILE
189 "${CMAKE_BINARY_DIR}/CPackSourceConfig.cmake")
191 cpack_set_if_not_set(CPACK_SET_DESTDIR OFF)
192 cpack_set_if_not_set(CPACK_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
194 cpack_set_if_not_set(CPACK_NSIS_INSTALLER_ICON_CODE "")
195 cpack_set_if_not_set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "")
197 cpack_encode_variables()
198 configure_file("${cpack_input_file}" "${CPACK_OUTPUT_CONFIG_FILE}" @ONLY IMMEDIATE)
200 # Generate source file
201 cpack_set_if_not_set(CPACK_SOURCE_INSTALLED_DIRECTORIES
202 "${CMAKE_SOURCE_DIR};/")
203 cpack_set_if_not_set(CPACK_SOURCE_TOPLEVEL_TAG "${CPACK_SYSTEM_NAME}-Source")
204 cpack_set_if_not_set(CPACK_SOURCE_PACKAGE_FILE_NAME
205 "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}-Source")
206 cpack_set_if_not_set(CPACK_SOURCE_IGNORE_FILES
207 "/CVS/;/\\\\\\\\.svn/;\\\\\\\\.swp$;\\\\\\\\.#;/#")
208 SET(CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_SOURCE_INSTALL_CMAKE_PROJECTS}")
209 SET(CPACK_INSTALLED_DIRECTORIES "${CPACK_SOURCE_INSTALLED_DIRECTORIES}")
210 SET(CPACK_GENERATOR "${CPACK_SOURCE_GENERATOR}")
211 SET(CPACK_TOPLEVEL_TAG "${CPACK_SOURCE_TOPLEVEL_TAG}")
212 SET(CPACK_PACKAGE_FILE_NAME "${CPACK_SOURCE_PACKAGE_FILE_NAME}")
213 SET(CPACK_IGNORE_FILES "${CPACK_SOURCE_IGNORE_FILES}")
214 SET(CPACK_STRIP_FILES "${CPACK_SOURCE_STRIP_FILES}")
216 cpack_encode_variables()
217 configure_file("${cpack_source_input_file}"
218 "${CPACK_SOURCE_OUTPUT_CONFIG_FILE}" @ONLY IMMEDIATE)