Initial commit.
[CMakeLuaTailorHgBridge.git] / CMakeLua / Modules / CPack.cmake
blobb0075ac23d5358bd11f568525a93aff907e73104
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)
30   FOREACH(var ${res})
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)
66   IF(CMAKE_CL_64)
67     SET(__cpack_system_name win64)
68   ELSE(CMAKE_CL_64)
69     SET(__cpack_system_name win32)
70   ENDIF(CMAKE_CL_64)
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)
103   if(${_cond})
104     set(${_list} ${${_list}} ${_item})
105   endif(${_cond})
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)
112   if(UNIX)
113     if(CYGWIN)
114       option(CPACK_CYGWIN_BINARY "Enable to build Cygwin binary packages" ON)
115     else(CYGWIN)
116       if(APPLE)
117         option(CPACK_PACKAGEMAKER "Enable to build PackageMaker packages" ON)
118         option(CPACK_OSXX11       "Enable to build OSX X11 packages"      OFF)
119       else(APPLE)
120         option(CPACK_TZ  "Enable to build TZ packages"     ON)
121       endif(APPLE)
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)
128     endif(CYGWIN)
129   else(UNIX)
130     option(CPACK_NSIS "Enable to build NSIS packages" ON)
131     option(CPACK_ZIP  "Enable to build ZIP packages" ON)
132   endif(UNIX)
133   
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)
145   
146 endif(NOT CPACK_GENERATOR)
148 # Provide options to choose source generators
149 if(NOT CPACK_SOURCE_GENERATOR)
150   if(UNIX)
151     if(CYGWIN)
152       option(CPACK_SOURCE_CYGWIN "Enable to build Cygwin source packages" ON)
153     else(CYGWIN)
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)
158     endif(CYGWIN)
159   else(UNIX)
160     option(CPACK_SOURCE_ZIP "Enable to build ZIP source packages" ON)
161   endif(UNIX)
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)