diff options
author | Brad King <brad.king@kitware.com> | 2018-06-22 13:47:47 +0000 |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2018-06-22 09:48:00 -0400 |
commit | 44ca3d922cc1da390eaea3673a025a9b96556afc (patch) | |
tree | d99fd257c73f63d9ac07aa228102011813df259c /Modules | |
parent | 5e1f5190377d6c2eed1e0cdbf57f51d3aa6a4717 (diff) | |
parent | 57e4c51e8a891615ac53dcaf6f087af352d24ff6 (diff) | |
download | cmake-44ca3d922cc1da390eaea3673a025a9b96556afc.tar.gz |
Merge topic 'cpack-generator-documentation'
57e4c51e8a Help: Update old version release notes for CPack generator docs
4181830881 Help: Add release notes for CPack generator documentation and module updates
48bc8b2b82 CPack: Move internal implementation modules into Internal/CPack directory
2a2829cc75 Help: Add new section for CPack generators
be6267808a CPackIFW: Turn documentation into a block comment
0180524c7a Help: Move legacy CPack modules into separate section
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2149
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/CPackArchive.cmake | 39 | ||||
-rw-r--r-- | Modules/CPackBundle.cmake | 70 | ||||
-rw-r--r-- | Modules/CPackCygwin.cmake | 27 | ||||
-rw-r--r-- | Modules/CPackDMG.cmake | 105 | ||||
-rw-r--r-- | Modules/CPackFreeBSD.cmake | 248 | ||||
-rw-r--r-- | Modules/CPackIFW.cmake | 996 | ||||
-rw-r--r-- | Modules/CPackNSIS.cmake | 138 | ||||
-rw-r--r-- | Modules/CPackPackageMaker.cmake | 27 | ||||
-rw-r--r-- | Modules/CPackProductBuild.cmake | 72 | ||||
-rw-r--r-- | Modules/CPackWIX.cmake | 307 | ||||
-rw-r--r-- | Modules/Internal/CPack/CPackDeb.cmake (renamed from Modules/CPackDeb.cmake) | 531 | ||||
-rw-r--r-- | Modules/Internal/CPack/CPackFreeBSD.cmake | 107 | ||||
-rw-r--r-- | Modules/Internal/CPack/CPackNuGet.cmake (renamed from Modules/CPackNuGet.cmake) | 195 | ||||
-rw-r--r-- | Modules/Internal/CPack/CPackRPM.cmake (renamed from Modules/CPackRPM.cmake) | 957 | ||||
-rw-r--r-- | Modules/Internal/CPack/CPackWIX.cmake | 20 | ||||
-rw-r--r-- | Modules/Internal/CPack/CPackZIP.cmake (renamed from Modules/CPackZIP.cmake) | 1 |
16 files changed, 453 insertions, 3387 deletions
diff --git a/Modules/CPackArchive.cmake b/Modules/CPackArchive.cmake deleted file mode 100644 index 741fb1fdd4..0000000000 --- a/Modules/CPackArchive.cmake +++ /dev/null @@ -1,39 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. - -#.rst: -# CPackArchive -# ------------ -# -# Archive CPack generator that supports packaging of sources and binaries in -# different formats: -# -# - 7Z - 7zip - (.7z) -# - TBZ2 (.tar.bz2) -# - TGZ (.tar.gz) -# - TXZ (.tar.xz) -# - TZ (.tar.Z) -# - ZIP (.zip) -# -# Variables specific to CPack Archive generator -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# .. variable:: CPACK_ARCHIVE_FILE_NAME -# CPACK_ARCHIVE_<component>_FILE_NAME -# -# Package file name without extension which is added automatically depending -# on the archive format. -# -# * Mandatory : YES -# * Default : ``<CPACK_PACKAGE_FILE_NAME>[-<component>].<extension>`` with -# spaces replaced by '-' -# -# .. variable:: CPACK_ARCHIVE_COMPONENT_INSTALL -# -# Enable component packaging for CPackArchive -# -# * Mandatory : NO -# * Default : OFF -# -# If enabled (ON) multiple packages are generated. By default a single package -# containing files of all components is generated. diff --git a/Modules/CPackBundle.cmake b/Modules/CPackBundle.cmake deleted file mode 100644 index 8f37ef87ee..0000000000 --- a/Modules/CPackBundle.cmake +++ /dev/null @@ -1,70 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. - -#.rst: -# CPackBundle -# ----------- -# -# CPack Bundle generator (Mac OS X) specific options -# -# Variables specific to CPack Bundle generator -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# Installers built on Mac OS X using the Bundle generator use the -# aforementioned DragNDrop (CPACK_DMG_xxx) variables, plus the following -# Bundle-specific parameters (CPACK_BUNDLE_xxx). -# -# .. variable:: CPACK_BUNDLE_NAME -# -# The name of the generated bundle. This appears in the OSX finder as the -# bundle name. Required. -# -# .. variable:: CPACK_BUNDLE_PLIST -# -# Path to an OSX plist file that will be used for the generated bundle. This -# assumes that the caller has generated or specified their own Info.plist -# file. Required. -# -# .. variable:: CPACK_BUNDLE_ICON -# -# Path to an OSX icon file that will be used as the icon for the generated -# bundle. This is the icon that appears in the OSX finder for the bundle, and -# in the OSX dock when the bundle is opened. Required. -# -# .. variable:: CPACK_BUNDLE_STARTUP_COMMAND -# -# Path to a startup script. This is a path to an executable or script that -# will be run whenever an end-user double-clicks the generated bundle in the -# OSX Finder. Optional. -# -# .. variable:: CPACK_BUNDLE_APPLE_CERT_APP -# -# The name of your Apple supplied code signing certificate for the application. -# The name usually takes the form "Developer ID Application: [Name]" or -# "3rd Party Mac Developer Application: [Name]". If this variable is not set -# the application will not be signed. -# -# .. variable:: CPACK_BUNDLE_APPLE_ENTITLEMENTS -# -# The name of the plist file that contains your apple entitlements for sandboxing -# your application. This file is required for submission to the Mac App Store. -# -# .. variable:: CPACK_BUNDLE_APPLE_CODESIGN_FILES -# -# A list of additional files that you wish to be signed. You do not need to -# list the main application folder, or the main executable. You should -# list any frameworks and plugins that are included in your app bundle. -# -# .. variable:: CPACK_BUNDLE_APPLE_CODESIGN_PARAMETER -# -# Additional parameter that will passed to codesign. -# Default value: "--deep -f" -# -# .. variable:: CPACK_COMMAND_CODESIGN -# -# Path to the codesign(1) command used to sign applications with an -# Apple cert. This variable can be used to override the automatically -# detected command (or specify its location if the auto-detection fails -# to find it.) - -#Bundle Generator specific code should be put here diff --git a/Modules/CPackCygwin.cmake b/Modules/CPackCygwin.cmake deleted file mode 100644 index 6d203c3133..0000000000 --- a/Modules/CPackCygwin.cmake +++ /dev/null @@ -1,27 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. - -#.rst: -# CPackCygwin -# ----------- -# -# Cygwin CPack generator (Cygwin). -# -# Variables specific to CPack Cygwin generator -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# The -# following variable is specific to installers build on and/or for -# Cygwin: -# -# .. variable:: CPACK_CYGWIN_PATCH_NUMBER -# -# The Cygwin patch number. FIXME: This documentation is incomplete. -# -# .. variable:: CPACK_CYGWIN_PATCH_FILE -# -# The Cygwin patch file. FIXME: This documentation is incomplete. -# -# .. variable:: CPACK_CYGWIN_BUILD_SCRIPT -# -# The Cygwin build script. FIXME: This documentation is incomplete. diff --git a/Modules/CPackDMG.cmake b/Modules/CPackDMG.cmake deleted file mode 100644 index bda600fd45..0000000000 --- a/Modules/CPackDMG.cmake +++ /dev/null @@ -1,105 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. - -#.rst: -# CPackDMG -# -------- -# -# DragNDrop CPack generator (Mac OS X). -# -# Variables specific to CPack DragNDrop generator -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# The following variables are specific to the DragNDrop installers built -# on Mac OS X: -# -# .. variable:: CPACK_DMG_VOLUME_NAME -# -# The volume name of the generated disk image. Defaults to -# CPACK_PACKAGE_FILE_NAME. -# -# .. variable:: CPACK_DMG_FORMAT -# -# The disk image format. Common values are UDRO (UDIF read-only), UDZO (UDIF -# zlib-compressed) or UDBZ (UDIF bzip2-compressed). Refer to hdiutil(1) for -# more information on other available formats. Defaults to UDZO. -# -# .. variable:: CPACK_DMG_DS_STORE -# -# Path to a custom DS_Store file. This .DS_Store file e.g. can be used to -# specify the Finder window position/geometry and layout (such as hidden -# toolbars, placement of the icons etc.). This file has to be generated by -# the Finder (either manually or through AppleScript) using a normal folder -# from which the .DS_Store file can then be extracted. -# -# .. variable:: CPACK_DMG_DS_STORE_SETUP_SCRIPT -# -# Path to a custom AppleScript file. This AppleScript is used to generate -# a .DS_Store file which specifies the Finder window position/geometry and -# layout (such as hidden toolbars, placement of the icons etc.). -# By specifying a custom AppleScript there is no need to use -# CPACK_DMG_DS_STORE, as the .DS_Store that is generated by the AppleScript -# will be packaged. -# -# .. variable:: CPACK_DMG_BACKGROUND_IMAGE -# -# Path to an image file to be used as the background. This file will be -# copied to .background/background.<ext>, where ext is the original image file -# extension. The background image is installed into the image before -# CPACK_DMG_DS_STORE_SETUP_SCRIPT is executed or CPACK_DMG_DS_STORE is -# installed. By default no background image is set. -# -# .. variable:: CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK -# -# Default behaviour is to include a symlink to ``/Applications`` in the DMG. -# Set this option to ``ON`` to avoid adding the symlink. -# -# .. variable:: CPACK_DMG_SLA_DIR -# -# Directory where license and menu files for different languages are stored. -# Setting this causes CPack to look for a ``<language>.menu.txt`` and -# ``<language>.license.txt`` file for every language defined in -# ``CPACK_DMG_SLA_LANGUAGES``. If both this variable and -# ``CPACK_RESOURCE_FILE_LICENSE`` are set, CPack will only look for the menu -# files and use the same license file for all languages. -# -# .. variable:: CPACK_DMG_SLA_LANGUAGES -# -# Languages for which a license agreement is provided when mounting the -# generated DMG. A menu file consists of 9 lines of text. The first line is -# is the name of the language itself, uppercase, in English (e.g. German). -# The other lines are translations of the following strings: -# -# - Agree -# - Disagree -# - Print -# - Save... -# - You agree to the terms of the License Agreement when you click the -# "Agree" button. -# - Software License Agreement -# - This text cannot be saved. The disk may be full or locked, or the file -# may be locked. -# - Unable to print. Make sure you have selected a printer. -# -# For every language in this list, CPack will try to find files -# ``<language>.menu.txt`` and ``<language>.license.txt`` in the directory -# specified by the :variable:`CPACK_DMG_SLA_DIR` variable. -# -# .. variable:: CPACK_COMMAND_HDIUTIL -# -# Path to the hdiutil(1) command used to operate on disk image files on Mac -# OS X. This variable can be used to override the automatically detected -# command (or specify its location if the auto-detection fails to find it.) -# -# .. variable:: CPACK_COMMAND_SETFILE -# -# Path to the SetFile(1) command used to set extended attributes on files and -# directories on Mac OS X. This variable can be used to override the -# automatically detected command (or specify its location if the -# auto-detection fails to find it.) -# -# .. variable:: CPACK_COMMAND_REZ -# -# Path to the Rez(1) command used to compile resources on Mac OS X. This -# variable can be used to override the automatically detected command (or -# specify its location if the auto-detection fails to find it.) diff --git a/Modules/CPackFreeBSD.cmake b/Modules/CPackFreeBSD.cmake deleted file mode 100644 index b681d4fbfa..0000000000 --- a/Modules/CPackFreeBSD.cmake +++ /dev/null @@ -1,248 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. - -#[=======================================================================[.rst: -CPackFreeBSD ------------- - -The built in (binary) CPack FreeBSD (pkg) generator (Unix only) - -Variables specific to CPack FreeBSD (pkg) generator -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -CPackFreeBSD may be used to create pkg(8) packages -- these may be used -on FreeBSD, DragonflyBSD, NetBSD, OpenBSD, but also on Linux or OSX, -depending on the installed package-management tools -- using :module:`CPack`. - -CPackFreeBSD is a :module:`CPack` generator and uses the ``CPACK_XXX`` -variables used by :module:`CPack`. It tries to re-use packaging information -that may already be specified for Debian packages for the :module:`CPackDeb` -generator. it also tries to re-use RPM packaging information when Debian -does not specify. - -CPackFreeBSD generator should work on any host with libpkg installed. The -packages it produces are specific to the host architecture and ABI. - -CPackFreeBSD sets package-metadata through :code:`CPACK_FREEBSD_XXX` variables. -CPackFreeBSD, unlike CPackDeb, does not specially support componentized -packages; a single package is created from all the software artifacts -created through CMake. - -All of the variables can be set specifically for FreeBSD packaging in -the CPackConfig file or in CMakeLists.txt, but most of them have defaults -that use general settings (e.g. CMAKE_PROJECT_NAME) or Debian-specific -variables when those make sense (e.g. the homepage of an upstream project -is usually unchanged by the flavor of packaging). When there is no Debian -information to fall back on, but the RPM packaging has it, fall back to -the RPM information (e.g. package license). - -.. variable:: CPACK_FREEBSD_PACKAGE_NAME - - Sets the package name (in the package manifest, but also affects the - output filename). - - * Mandatory: YES - * Default: - - - :variable:`CPACK_PACKAGE_NAME` (this is always set by CPack itself, - based on CMAKE_PROJECT_NAME). - -.. variable:: CPACK_FREEBSD_PACKAGE_COMMENT - - Sets the package comment. This is the short description displayed by - pkg(8) in standard "pkg info" output. - - * Mandatory: YES - * Default: - - - :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY` (this is always set - by CPack itself, if nothing else sets it explicitly). - - :variable:`PROJECT_DESCRIPTION` (this can be set with the DESCRIPTION - parameter for :command:`project`). - -.. variable:: CPACK_FREEBSD_PACKAGE_DESCRIPTION - - Sets the package description. This is the long description of the package, - given by "pkg info" with a specific package as argument. - - * Mandatory: YES - * Default: - - - :variable:`CPACK_DEBIAN_PACKAGE_DESCRIPTION` (this may be set already - for Debian packaging, so we may as well re-use it). - -.. variable:: CPACK_FREEBSD_PACKAGE_WWW - - The URL of the web site for this package, preferably (when applicable) the - site from which the original source can be obtained and any additional - upstream documentation or information may be found. - - * Mandatory: YES - * Default: - - - :variable:`CMAKE_PROJECT_HOMEPAGE_URL`, or if that is not set, - :variable:`CPACK_DEBIAN_PACKAGE_HOMEPAGE` (this may be set already - for Debian packaging, so we may as well re-use it). - -.. variable:: CPACK_FREEBSD_PACKAGE_LICENSE - - The license, or licenses, which apply to this software package. This must - be one or more license-identifiers that pkg recognizes as acceptable license - identifiers (e.g. "GPLv2"). - - * Mandatory: YES - * Default: - - - :variable:`CPACK_RPM_PACKAGE_LICENSE` - -.. variable:: CPACK_FREEBSD_PACKAGE_LICENSE_LOGIC - - This variable is only of importance if there is more than one license. - The default is "single", which is only applicable to a single license. - Other acceptable values are determined by pkg -- those are "dual" or "multi" -- - meaning choice (OR) or simultaneous (AND) application of the licenses. - - * Mandatory: NO - * Default: single - -.. variable:: CPACK_FREEBSD_PACKAGE_MAINTAINER - - The FreeBSD maintainer (e.g. kde@freebsd.org) of this package. - - * Mandatory: YES - * Default: none - -.. variable:: CPACK_FREEBSD_PACKAGE_ORIGIN - - The origin (ports label) of this package; for packages built by CPack - outside of the ports system this is of less importance. The default - puts the package somewhere under misc/, as a stopgap. - - * Mandatory: YES - * Default: misc/<package name> - -.. variable:: CPACK_FREEBSD_PACKAGE_CATEGORIES - - The ports categories where this package lives (if it were to be built - from ports). If none is set a single category is determined based on - the package origin. - - * Mandatory: YES - * Default: derived from ORIGIN - -.. variable:: CPACK_FREEBSD_PACKAGE_DEPS - - A list of package origins that should be added as package dependencies. - These are in the form <category>/<packagename>, e.g. x11/libkonq. - No version information needs to be provided (this is not included - in the manifest). - - * Mandatory: NO - * Default: empty -#]=======================================================================] - - - -if(CMAKE_BINARY_DIR) - message(FATAL_ERROR "CPackFreeBSD.cmake may only be used by CPack internally.") -endif() - -if(NOT UNIX) - message(FATAL_ERROR "CPackFreeBSD.cmake may only be used under UNIX.") -endif() - - -### -# -# These bits are copied from the Debian packaging file; slightly modified. -# They are used for filling in FreeBSD-packaging variables that can take -# on values from elsewhere -- e.g. the package description may as well be -# copied from Debian. -# -function(_cpack_freebsd_fallback_var OUTPUT_VAR_NAME) - set(FALLBACK_VAR_NAMES ${ARGN}) - - set(VALUE "${${OUTPUT_VAR_NAME}}") - if(VALUE) - return() - endif() - - foreach(variable_name IN LISTS FALLBACK_VAR_NAMES) - if(${variable_name}) - set(${OUTPUT_VAR_NAME} "${${variable_name}}" PARENT_SCOPE) - set(VALUE "${${variable_name}}") - break() - endif() - endforeach() - if(NOT VALUE) - message(WARNING "Variable ${OUTPUT_VAR_NAME} could not be given a fallback value from any variable ${FALLBACK_VAR_NAMES}.") - endif() -endfunction() - -function(check_required_var VAR_NAME) - if(NOT ${VAR_NAME}) - message(FATAL_ERROR "Variable ${VAR_NAME} is not set.") - endif() -endfunction() - -set(_cpack_freebsd_fallback_origin "misc/bogus") - -_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_NAME" - "CPACK_PACKAGE_NAME" - "CMAKE_PROJECT_NAME" - ) - -set(_cpack_freebsd_fallback_www "http://example.com/?pkg=${CPACK_FREEBSD_PACKAGE_NAME}") - -_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_COMMENT" - "CPACK_PACKAGE_DESCRIPTION_SUMMARY" - ) - -# TODO: maybe read the PACKAGE_DESCRIPTION file for the longer -# FreeBSD pkg-descr? -_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_DESCRIPTION" - "CPACK_DEBIAN_PACKAGE_DESCRIPTION" - "CPACK_PACKAGE_DESCRIPTION_SUMMARY" - "PACKAGE_DESCRIPTION" - ) - -# There's really only one homepage for a project, so -# re-use the Debian setting if it's there. -_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_WWW" - "CMAKE_PROJECT_HOMEPAGE_URL" - "CPACK_DEBIAN_PACKAGE_HOMEPAGE" - "_cpack_freebsd_fallback_www" - ) - -_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_VERSION" - "CMAKE_PROJECT_VERSION" - "${CMAKE_PROJECT_NAME}_VERSION" - "PROJECT_VERSION" - "CPACK_PACKAGE_VERSION" - "CPACK_PACKAGE_VERSION" - ) - -_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_MAINTAINER" - "CPACK_PACKAGE_CONTACT" - ) - -_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_LICENSE" - "CPACK_RPM_PACKAGE_LICENSE" - ) - -_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_ORIGIN" - "_cpack_freebsd_fallback_origin" - ) - -if(NOT CPACK_FREEBSD_PACKAGE_CATEGORIES) - string(REGEX REPLACE "/.*" "" CPACK_FREEBSD_PACKAGE_CATEGORIES ${CPACK_FREEBSD_PACKAGE_ORIGIN}) -endif() - -check_required_var("CPACK_FREEBSD_PACKAGE_NAME") -check_required_var("CPACK_FREEBSD_PACKAGE_ORIGIN") -check_required_var("CPACK_FREEBSD_PACKAGE_VERSION") -check_required_var("CPACK_FREEBSD_PACKAGE_MAINTAINER") -check_required_var("CPACK_FREEBSD_PACKAGE_COMMENT") -check_required_var("CPACK_FREEBSD_PACKAGE_DESCRIPTION") -check_required_var("CPACK_FREEBSD_PACKAGE_WWW") -check_required_var("CPACK_FREEBSD_PACKAGE_LICENSE") diff --git a/Modules/CPackIFW.cmake b/Modules/CPackIFW.cmake index 9d733dcd45..141e842549 100644 --- a/Modules/CPackIFW.cmake +++ b/Modules/CPackIFW.cmake @@ -1,677 +1,331 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CPackIFW -# -------- -# -# .. _QtIFW: http://doc.qt.io/qtinstallerframework/index.html -# -# This module looks for the location of the command line utilities supplied -# with the Qt Installer Framework (QtIFW_). -# -# The module also defines several commands to control the behavior of the -# CPack ``IFW`` generator. -# -# -# Overview -# ^^^^^^^^ -# -# CPack ``IFW`` generator helps you to create online and offline -# binary cross-platform installers with a graphical user interface. -# -# CPack IFW generator prepares project installation and generates configuration -# and meta information for QtIFW_ tools. -# -# The QtIFW_ provides a set of tools and utilities to create -# installers for the supported desktop Qt platforms: Linux, Microsoft Windows, -# and Mac OS X. -# -# You should also install QtIFW_ to use CPack ``IFW`` generator. -# -# Hints -# ^^^^^ -# -# Generally, the CPack ``IFW`` generator automatically finds QtIFW_ tools, -# but if you don't use a default path for installation of the QtIFW_ tools, -# the path may be specified in either a CMake or an environment variable: -# -# .. variable:: CPACK_IFW_ROOT -# -# An CMake variable which specifies the location of the QtIFW_ tool suite. -# -# The variable will be cached in the ``CPackConfig.cmake`` file and used at -# CPack runtime. -# -# .. variable:: QTIFWDIR -# -# An environment variable which specifies the location of the QtIFW_ tool -# suite. -# -# .. note:: -# The specified path should not contain "bin" at the end -# (for example: "D:\\DevTools\\QtIFW2.0.5"). -# -# The :variable:`CPACK_IFW_ROOT` variable has a higher priority and overrides -# the value of the :variable:`QTIFWDIR` variable. -# -# Internationalization -# ^^^^^^^^^^^^^^^^^^^^ -# -# Some variables and command arguments support internationalization via -# CMake script. This is an optional feature. -# -# Installers created by QtIFW_ tools have built-in support for -# internationalization and many phrases are localized to many languages, -# but this does not apply to the description of the your components and groups -# that will be distributed. -# -# Localization of the description of your components and groups is useful for -# users of your installers. -# -# A localized variable or argument can contain a single default value, and a -# set of pairs the name of the locale and the localized value. -# -# For example: -# -# .. code-block:: cmake -# -# set(LOCALIZABLE_VARIABLE "Default value" -# en "English value" -# en_US "American value" -# en_GB "Great Britain value" -# ) -# -# Variables -# ^^^^^^^^^ -# -# You can use the following variables to change behavior of CPack ``IFW`` -# generator. -# -# Debug -# """""" -# -# .. variable:: CPACK_IFW_VERBOSE -# -# Set to ``ON`` to enable addition debug output. -# By default is ``OFF``. -# -# Package -# """"""" -# -# .. variable:: CPACK_IFW_PACKAGE_TITLE -# -# Name of the installer as displayed on the title bar. -# By default used :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY`. -# -# .. variable:: CPACK_IFW_PACKAGE_PUBLISHER -# -# Publisher of the software (as shown in the Windows Control Panel). -# By default used :variable:`CPACK_PACKAGE_VENDOR`. -# -# .. variable:: CPACK_IFW_PRODUCT_URL -# -# URL to a page that contains product information on your web site. -# -# .. variable:: CPACK_IFW_PACKAGE_ICON -# -# Filename for a custom installer icon. The actual file is '.icns' (Mac OS X), -# '.ico' (Windows). No functionality on Unix. -# -# .. variable:: CPACK_IFW_PACKAGE_WINDOW_ICON -# -# Filename for a custom window icon in PNG format for the Installer -# application. -# -# .. variable:: CPACK_IFW_PACKAGE_LOGO -# -# Filename for a logo is used as QWizard::LogoPixmap. -# -# .. variable:: CPACK_IFW_PACKAGE_WATERMARK -# -# Filename for a watermark is used as QWizard::WatermarkPixmap. -# -# .. variable:: CPACK_IFW_PACKAGE_BANNER -# -# Filename for a banner is used as QWizard::BannerPixmap. -# -# .. variable:: CPACK_IFW_PACKAGE_BACKGROUND -# -# Filename for an image used as QWizard::BackgroundPixmap (only used by MacStyle). -# -# .. variable:: CPACK_IFW_PACKAGE_WIZARD_STYLE -# -# Wizard style to be used ("Modern", "Mac", "Aero" or "Classic"). -# -# .. variable:: CPACK_IFW_PACKAGE_WIZARD_DEFAULT_WIDTH -# -# Default width of the wizard in pixels. Setting a banner image will override this. -# -# .. variable:: CPACK_IFW_PACKAGE_WIZARD_DEFAULT_HEIGHT -# -# Default height of the wizard in pixels. Setting a watermark image will override this. -# -# .. variable:: CPACK_IFW_PACKAGE_TITLE_COLOR -# -# Color of the titles and subtitles (takes an HTML color code, such as "#88FF33"). -# -# .. variable:: CPACK_IFW_PACKAGE_START_MENU_DIRECTORY -# -# Name of the default program group for the product in the Windows Start menu. -# -# By default used :variable:`CPACK_IFW_PACKAGE_NAME`. -# -# .. variable:: CPACK_IFW_TARGET_DIRECTORY -# -# Default target directory for installation. -# By default used -# "@ApplicationsDir@/:variable:`CPACK_PACKAGE_INSTALL_DIRECTORY`" -# -# You can use predefined variables. -# -# .. variable:: CPACK_IFW_ADMIN_TARGET_DIRECTORY -# -# Default target directory for installation with administrator rights. -# -# You can use predefined variables. -# -# .. variable:: CPACK_IFW_PACKAGE_GROUP -# -# The group, which will be used to configure the root package -# -# .. variable:: CPACK_IFW_PACKAGE_NAME -# -# The root package name, which will be used if configuration group is not -# specified -# -# .. variable:: CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_NAME -# -# Filename of the generated maintenance tool. -# The platform-specific executable file extension is appended. -# -# By default used QtIFW_ defaults (``maintenancetool``). -# -# .. variable:: CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR -# -# Set to ``OFF`` if the target directory should not be deleted when uninstalling. -# -# Is ``ON`` by default -# -# .. variable:: CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_INI_FILE -# -# Filename for the configuration of the generated maintenance tool. -# -# By default used QtIFW_ defaults (``maintenancetool.ini``). -# -# .. variable:: CPACK_IFW_PACKAGE_ALLOW_NON_ASCII_CHARACTERS -# -# Set to ``ON`` if the installation path can contain non-ASCII characters. -# -# Is ``ON`` for QtIFW_ less 2.0 tools. -# -# .. variable:: CPACK_IFW_PACKAGE_ALLOW_SPACE_IN_PATH -# -# Set to ``OFF`` if the installation path cannot contain space characters. -# -# Is ``ON`` for QtIFW_ less 2.0 tools. -# -# .. variable:: CPACK_IFW_PACKAGE_CONTROL_SCRIPT -# -# Filename for a custom installer control script. -# -# .. variable:: CPACK_IFW_PACKAGE_RESOURCES -# -# List of additional resources ('.qrc' files) to include in the installer -# binary. -# -# You can use :command:`cpack_ifw_add_package_resources` command to resolve -# relative paths. -# -# .. variable:: CPACK_IFW_PACKAGE_FILE_EXTENSION -# -# The target binary extension. -# -# On Linux, the name of the target binary is automatically extended with -# '.run', if you do not specify the extension. -# -# On Windows, the target is created as an application with the extension -# '.exe', which is automatically added, if not supplied. -# -# On Mac, the target is created as an DMG disk image with the extension -# '.dmg', which is automatically added, if not supplied. -# -# .. variable:: CPACK_IFW_REPOSITORIES_ALL -# -# The list of remote repositories. -# -# The default value of this variable is computed by CPack and contains -# all repositories added with command :command:`cpack_ifw_add_repository` -# or updated with command :command:`cpack_ifw_update_repository`. -# -# .. variable:: CPACK_IFW_DOWNLOAD_ALL -# -# If this is ``ON`` all components will be downloaded. -# By default is ``OFF`` or used value -# from ``CPACK_DOWNLOAD_ALL`` if set -# -# Components -# """""""""" -# -# .. variable:: CPACK_IFW_RESOLVE_DUPLICATE_NAMES -# -# Resolve duplicate names when installing components with groups. -# -# .. variable:: CPACK_IFW_PACKAGES_DIRECTORIES -# -# Additional prepared packages dirs that will be used to resolve -# dependent components. -# -# .. variable:: CPACK_IFW_REPOSITORIES_DIRECTORIES -# -# Additional prepared repository dirs that will be used to resolve and -# repack dependent components. This feature available only -# since QtIFW_ 3.1. -# -# Tools -# """"" -# -# .. variable:: CPACK_IFW_FRAMEWORK_VERSION -# -# The version of used QtIFW_ tools. -# -# .. variable:: CPACK_IFW_BINARYCREATOR_EXECUTABLE -# -# The path to "binarycreator" command line client. -# -# This variable is cached and may be configured if needed. -# -# .. variable:: CPACK_IFW_REPOGEN_EXECUTABLE -# -# The path to "repogen" command line client. -# -# This variable is cached and may be configured if needed. -# -# .. variable:: CPACK_IFW_INSTALLERBASE_EXECUTABLE -# -# The path to "installerbase" installer executable base. -# -# This variable is cached and may be configured if needed. -# -# .. variable:: CPACK_IFW_DEVTOOL_EXECUTABLE -# -# The path to "devtool" command line client. -# -# This variable is cached and may be configured if needed. -# -# Commands -# ^^^^^^^^^ -# -# The module defines the following commands: -# -# .. command:: cpack_ifw_configure_component -# -# Sets the arguments specific to the CPack IFW generator. -# -# :: -# -# cpack_ifw_configure_component(<compname> [COMMON] [ESSENTIAL] [VIRTUAL] -# [FORCED_INSTALLATION] [REQUIRES_ADMIN_RIGHTS] -# [NAME <name>] -# [DISPLAY_NAME <display_name>] # Note: Internationalization supported -# [DESCRIPTION <description>] # Note: Internationalization supported -# [UPDATE_TEXT <update_text>] -# [VERSION <version>] -# [RELEASE_DATE <release_date>] -# [SCRIPT <script>] -# [PRIORITY|SORTING_PRIORITY <sorting_priority>] # Note: PRIORITY is deprecated -# [DEPENDS|DEPENDENCIES <com_id> ...] -# [AUTO_DEPEND_ON <comp_id> ...] -# [LICENSES <display_name> <file_path> ...] -# [DEFAULT <value>] -# [USER_INTERFACES <file_path> <file_path> ...] -# [TRANSLATIONS <file_path> <file_path> ...] -# [REPLACES <comp_id> ...] -# [CHECKABLE <value>]) -# -# This command should be called after :command:`cpack_add_component` command. -# -# ``COMMON`` -# if set, then the component will be packaged and installed as part -# of a group to which it belongs. -# -# ``ESSENTIAL`` -# if set, then the package manager stays disabled until that -# component is updated. -# -# ``VIRTUAL`` -# if set, then the component will be hidden from the installer. -# It is a equivalent of the ``HIDDEN`` option from the -# :command:`cpack_add_component` command. -# -# ``FORCED_INSTALLATION`` -# if set, then the component must always be installed. -# It is a equivalent of the ``REQUARED`` option from the -# :command:`cpack_add_component` command. -# -# ``REQUIRES_ADMIN_RIGHTS`` -# set it if the component needs to be installed with elevated permissions. -# -# ``NAME`` -# is used to create domain-like identification for this component. -# By default used origin component name. -# -# ``DISPLAY_NAME`` -# set to rewrite original name configured by -# :command:`cpack_add_component` command. -# -# ``DESCRIPTION`` -# set to rewrite original description configured by -# :command:`cpack_add_component` command. -# -# ``UPDATE_TEXT`` -# will be added to the component description if this is an update to -# the component. -# -# ``VERSION`` -# is version of component. -# By default used :variable:`CPACK_PACKAGE_VERSION`. -# -# ``RELEASE_DATE`` -# keep empty to auto generate. -# -# ``SCRIPT`` -# is a relative or absolute path to operations script -# for this component. -# -# ``PRIORITY`` | ``SORTING_PRIORITY`` -# is priority of the component in the tree. -# The ``PRIORITY`` option is deprecated and will be removed in a future -# version of CMake. Please use ``SORTING_PRIORITY`` option instead. -# -# ``DEPENDS`` | ``DEPENDENCIES`` -# list of dependency component or component group identifiers in -# QtIFW_ style. -# -# ``AUTO_DEPEND_ON`` -# list of identifiers of component or component group in QtIFW_ style -# that this component has an automatic dependency on. -# -# ``LICENSES`` -# pair of <display_name> and <file_path> of license text for this -# component. You can specify more then one license. -# -# ``DEFAULT`` -# Possible values are: TRUE, FALSE, and SCRIPT. -# Set to FALSE to disable the component in the installer or to SCRIPT -# to resolved during runtime (don't forget add the file of the script -# as a value of the ``SCRIPT`` option). -# -# ``USER_INTERFACES`` -# is a list of <file_path> ('.ui' files) representing pages to load. -# -# ``TRANSLATIONS`` -# is a list of <file_path> ('.qm' files) representing translations to load. -# -# ``REPLACES`` -# list of identifiers of component or component group to replace. -# -# ``CHECKABLE`` -# Possible values are: TRUE, FALSE. -# Set to FALSE if you want to hide the checkbox for an item. -# This is useful when only a few subcomponents should be selected -# instead of all. -# -# -# .. command:: cpack_ifw_configure_component_group -# -# Sets the arguments specific to the CPack IFW generator. -# -# :: -# -# cpack_ifw_configure_component_group(<groupname> [VIRTUAL] -# [FORCED_INSTALLATION] [REQUIRES_ADMIN_RIGHTS] -# [NAME <name>] -# [DISPLAY_NAME <display_name>] # Note: Internationalization supported -# [DESCRIPTION <description>] # Note: Internationalization supported -# [UPDATE_TEXT <update_text>] -# [VERSION <version>] -# [RELEASE_DATE <release_date>] -# [SCRIPT <script>] -# [PRIORITY|SORTING_PRIORITY <sorting_priority>] # Note: PRIORITY is deprecated -# [DEPENDS|DEPENDENCIES <com_id> ...] -# [AUTO_DEPEND_ON <comp_id> ...] -# [LICENSES <display_name> <file_path> ...] -# [DEFAULT <value>] -# [USER_INTERFACES <file_path> <file_path> ...] -# [TRANSLATIONS <file_path> <file_path> ...] -# [REPLACES <comp_id> ...] -# [CHECKABLE <value>]) -# -# This command should be called after :command:`cpack_add_component_group` -# command. -# -# ``VIRTUAL`` -# if set, then the group will be hidden from the installer. -# Note that setting this on a root component does not work. -# -# ``FORCED_INSTALLATION`` -# if set, then the group must always be installed. -# -# ``REQUIRES_ADMIN_RIGHTS`` -# set it if the component group needs to be installed with elevated -# permissions. -# -# ``NAME`` -# is used to create domain-like identification for this component group. -# By default used origin component group name. -# -# ``DISPLAY_NAME`` -# set to rewrite original name configured by -# :command:`cpack_add_component_group` command. -# -# ``DESCRIPTION`` -# set to rewrite original description configured by -# :command:`cpack_add_component_group` command. -# -# ``UPDATE_TEXT`` -# will be added to the component group description if this is an update to -# the component group. -# -# ``VERSION`` -# is version of component group. -# By default used :variable:`CPACK_PACKAGE_VERSION`. -# -# ``RELEASE_DATE`` -# keep empty to auto generate. -# -# ``SCRIPT`` -# is a relative or absolute path to operations script -# for this component group. -# -# ``PRIORITY`` | ``SORTING_PRIORITY`` -# is priority of the component group in the tree. -# The ``PRIORITY`` option is deprecated and will be removed in a future -# version of CMake. Please use ``SORTING_PRIORITY`` option instead. -# -# ``DEPENDS`` | ``DEPENDENCIES`` -# list of dependency component or component group identifiers in -# QtIFW_ style. -# -# ``AUTO_DEPEND_ON`` -# list of identifiers of component or component group in QtIFW_ style -# that this component group has an automatic dependency on. -# -# ``LICENSES`` -# pair of <display_name> and <file_path> of license text for this -# component group. You can specify more then one license. -# -# ``DEFAULT`` -# Possible values are: TRUE, FALSE, and SCRIPT. -# Set to TRUE to preselect the group in the installer -# (this takes effect only on groups that have no visible child components) -# or to SCRIPT to resolved during runtime (don't forget add the file of -# the script as a value of the ``SCRIPT`` option). -# -# ``USER_INTERFACES`` -# is a list of <file_path> ('.ui' files) representing pages to load. -# -# ``TRANSLATIONS`` -# is a list of <file_path> ('.qm' files) representing translations to load. -# -# ``REPLACES`` -# list of identifiers of component or component group to replace. -# -# ``CHECKABLE`` -# Possible values are: TRUE, FALSE. -# Set to FALSE if you want to hide the checkbox for an item. -# This is useful when only a few subcomponents should be selected -# instead of all. -# -# -# .. command:: cpack_ifw_add_repository -# -# Add QtIFW_ specific remote repository to binary installer. -# -# :: -# -# cpack_ifw_add_repository(<reponame> [DISABLED] -# URL <url> -# [USERNAME <username>] -# [PASSWORD <password>] -# [DISPLAY_NAME <display_name>]) -# -# This command will also add the <reponame> repository -# to a variable :variable:`CPACK_IFW_REPOSITORIES_ALL`. -# -# ``DISABLED`` -# if set, then the repository will be disabled by default. -# -# ``URL`` -# is points to a list of available components. -# -# ``USERNAME`` -# is used as user on a protected repository. -# -# ``PASSWORD`` -# is password to use on a protected repository. -# -# ``DISPLAY_NAME`` -# is string to display instead of the URL. -# -# -# .. command:: cpack_ifw_update_repository -# -# Update QtIFW_ specific repository from remote repository. -# -# :: -# -# cpack_ifw_update_repository(<reponame> -# [[ADD|REMOVE] URL <url>]| -# [REPLACE OLD_URL <old_url> NEW_URL <new_url>]] -# [USERNAME <username>] -# [PASSWORD <password>] -# [DISPLAY_NAME <display_name>]) -# -# This command will also add the <reponame> repository -# to a variable :variable:`CPACK_IFW_REPOSITORIES_ALL`. -# -# ``URL`` -# is points to a list of available components. -# -# ``OLD_URL`` -# is points to a list that will replaced. -# -# ``NEW_URL`` -# is points to a list that will replace to. -# -# ``USERNAME`` -# is used as user on a protected repository. -# -# ``PASSWORD`` -# is password to use on a protected repository. -# -# ``DISPLAY_NAME`` -# is string to display instead of the URL. -# -# -# .. command:: cpack_ifw_add_package_resources -# -# Add additional resources in the installer binary. -# -# :: -# -# cpack_ifw_add_package_resources(<file_path> <file_path> ...) -# -# This command will also add the specified files -# to a variable :variable:`CPACK_IFW_PACKAGE_RESOURCES`. -# -# -# Example usage -# ^^^^^^^^^^^^^ -# -# .. code-block:: cmake -# -# set(CPACK_PACKAGE_NAME "MyPackage") -# set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MyPackage Installation Example") -# set(CPACK_PACKAGE_VERSION "1.0.0") # Version of installer -# -# include(CPack) -# include(CPackIFW) -# -# cpack_add_component(myapp -# DISPLAY_NAME "MyApp" -# DESCRIPTION "My Application") # Default description -# cpack_ifw_configure_component(myapp -# DESCRIPTION ru_RU "Мое Приложение" # Localized description -# VERSION "1.2.3" # Version of component -# SCRIPT "operations.qs") -# cpack_add_component(mybigplugin -# DISPLAY_NAME "MyBigPlugin" -# DESCRIPTION "My Big Downloadable Plugin" -# DOWNLOADED) -# cpack_ifw_add_repository(myrepo -# URL "http://example.com/ifw/repo/myapp" -# DISPLAY_NAME "My Application Repository") -# -# -# Online installer -# ^^^^^^^^^^^^^^^^ -# -# By default CPack IFW generator makes offline installer. This means that all -# components will be packaged into a binary file. -# -# To make a component downloaded, you must set the ``DOWNLOADED`` option in -# :command:`cpack_add_component`. -# -# Then you would use the command :command:`cpack_configure_downloads`. -# If you set ``ALL`` option all components will be downloaded. -# -# You also can use command :command:`cpack_ifw_add_repository` and -# variable :variable:`CPACK_IFW_DOWNLOAD_ALL` for more specific configuration. -# -# CPack IFW generator creates "repository" dir in current binary dir. You -# would copy content of this dir to specified ``site`` (``url``). -# -# See Also -# ^^^^^^^^ -# -# Qt Installer Framework Manual: -# -# * Index page: -# http://doc.qt.io/qtinstallerframework/index.html -# -# * Component Scripting: -# http://doc.qt.io/qtinstallerframework/scripting.html -# -# * Predefined Variables: -# http://doc.qt.io/qtinstallerframework/scripting.html#predefined-variables -# -# * Promoting Updates: -# http://doc.qt.io/qtinstallerframework/ifw-updates.html -# -# Download Qt Installer Framework for you platform from Qt site: -# http://download.qt.io/official_releases/qt-installer-framework -# +#[=======================================================================[.rst: +CPackIFW +-------- + +The documentation for the CPack IFW generator has moved here: :cpack_gen:`CPack IFW Generator` + +.. _QtIFW: http://doc.qt.io/qtinstallerframework/index.html + +This module looks for the location of the command line utilities supplied +with the Qt Installer Framework (QtIFW_). + +The module also defines several commands to control the behavior of the +CPack ``IFW`` generator. + +Commands +^^^^^^^^ + +The module defines the following commands: + +.. command:: cpack_ifw_configure_component + + Sets the arguments specific to the CPack IFW generator. + + :: + + cpack_ifw_configure_component(<compname> [COMMON] [ESSENTIAL] [VIRTUAL] + [FORCED_INSTALLATION] [REQUIRES_ADMIN_RIGHTS] + [NAME <name>] + [DISPLAY_NAME <display_name>] # Note: Internationalization supported + [DESCRIPTION <description>] # Note: Internationalization supported + [UPDATE_TEXT <update_text>] + [VERSION <version>] + [RELEASE_DATE <release_date>] + [SCRIPT <script>] + [PRIORITY|SORTING_PRIORITY <sorting_priority>] # Note: PRIORITY is deprecated + [DEPENDS|DEPENDENCIES <com_id> ...] + [AUTO_DEPEND_ON <comp_id> ...] + [LICENSES <display_name> <file_path> ...] + [DEFAULT <value>] + [USER_INTERFACES <file_path> <file_path> ...] + [TRANSLATIONS <file_path> <file_path> ...] + [REPLACES <comp_id> ...] + [CHECKABLE <value>]) + + This command should be called after :command:`cpack_add_component` command. + + ``COMMON`` + if set, then the component will be packaged and installed as part + of a group to which it belongs. + + ``ESSENTIAL`` + if set, then the package manager stays disabled until that + component is updated. + + ``VIRTUAL`` + if set, then the component will be hidden from the installer. + It is a equivalent of the ``HIDDEN`` option from the + :command:`cpack_add_component` command. + + ``FORCED_INSTALLATION`` + if set, then the component must always be installed. + It is a equivalent of the ``REQUARED`` option from the + :command:`cpack_add_component` command. + + ``REQUIRES_ADMIN_RIGHTS`` + set it if the component needs to be installed with elevated permissions. + + ``NAME`` + is used to create domain-like identification for this component. + By default used origin component name. + + ``DISPLAY_NAME`` + set to rewrite original name configured by + :command:`cpack_add_component` command. + + ``DESCRIPTION`` + set to rewrite original description configured by + :command:`cpack_add_component` command. + + ``UPDATE_TEXT`` + will be added to the component description if this is an update to + the component. + + ``VERSION`` + is version of component. + By default used :variable:`CPACK_PACKAGE_VERSION`. + + ``RELEASE_DATE`` + keep empty to auto generate. + + ``SCRIPT`` + is a relative or absolute path to operations script + for this component. + + ``PRIORITY`` | ``SORTING_PRIORITY`` + is priority of the component in the tree. + The ``PRIORITY`` option is deprecated and will be removed in a future + version of CMake. Please use ``SORTING_PRIORITY`` option instead. + + ``DEPENDS`` | ``DEPENDENCIES`` + list of dependency component or component group identifiers in + QtIFW_ style. + + ``AUTO_DEPEND_ON`` + list of identifiers of component or component group in QtIFW_ style + that this component has an automatic dependency on. + + ``LICENSES`` + pair of <display_name> and <file_path> of license text for this + component. You can specify more then one license. + + ``DEFAULT`` + Possible values are: TRUE, FALSE, and SCRIPT. + Set to FALSE to disable the component in the installer or to SCRIPT + to resolved during runtime (don't forget add the file of the script + as a value of the ``SCRIPT`` option). + + ``USER_INTERFACES`` + is a list of <file_path> ('.ui' files) representing pages to load. + + ``TRANSLATIONS`` + is a list of <file_path> ('.qm' files) representing translations to load. + + ``REPLACES`` + list of identifiers of component or component group to replace. + + ``CHECKABLE`` + Possible values are: TRUE, FALSE. + Set to FALSE if you want to hide the checkbox for an item. + This is useful when only a few subcomponents should be selected + instead of all. + + +.. command:: cpack_ifw_configure_component_group + + Sets the arguments specific to the CPack IFW generator. + + :: + + cpack_ifw_configure_component_group(<groupname> [VIRTUAL] + [FORCED_INSTALLATION] [REQUIRES_ADMIN_RIGHTS] + [NAME <name>] + [DISPLAY_NAME <display_name>] # Note: Internationalization supported + [DESCRIPTION <description>] # Note: Internationalization supported + [UPDATE_TEXT <update_text>] + [VERSION <version>] + [RELEASE_DATE <release_date>] + [SCRIPT <script>] + [PRIORITY|SORTING_PRIORITY <sorting_priority>] # Note: PRIORITY is deprecated + [DEPENDS|DEPENDENCIES <com_id> ...] + [AUTO_DEPEND_ON <comp_id> ...] + [LICENSES <display_name> <file_path> ...] + [DEFAULT <value>] + [USER_INTERFACES <file_path> <file_path> ...] + [TRANSLATIONS <file_path> <file_path> ...] + [REPLACES <comp_id> ...] + [CHECKABLE <value>]) + + This command should be called after :command:`cpack_add_component_group` + command. + + ``VIRTUAL`` + if set, then the group will be hidden from the installer. + Note that setting this on a root component does not work. + + ``FORCED_INSTALLATION`` + if set, then the group must always be installed. + + ``REQUIRES_ADMIN_RIGHTS`` + set it if the component group needs to be installed with elevated + permissions. + + ``NAME`` + is used to create domain-like identification for this component group. + By default used origin component group name. + + ``DISPLAY_NAME`` + set to rewrite original name configured by + :command:`cpack_add_component_group` command. + + ``DESCRIPTION`` + set to rewrite original description configured by + :command:`cpack_add_component_group` command. + + ``UPDATE_TEXT`` + will be added to the component group description if this is an update to + the component group. + + ``VERSION`` + is version of component group. + By default used :variable:`CPACK_PACKAGE_VERSION`. + + ``RELEASE_DATE`` + keep empty to auto generate. + + ``SCRIPT`` + is a relative or absolute path to operations script + for this component group. + + ``PRIORITY`` | ``SORTING_PRIORITY`` + is priority of the component group in the tree. + The ``PRIORITY`` option is deprecated and will be removed in a future + version of CMake. Please use ``SORTING_PRIORITY`` option instead. + + ``DEPENDS`` | ``DEPENDENCIES`` + list of dependency component or component group identifiers in + QtIFW_ style. + + ``AUTO_DEPEND_ON`` + list of identifiers of component or component group in QtIFW_ style + that this component group has an automatic dependency on. + + ``LICENSES`` + pair of <display_name> and <file_path> of license text for this + component group. You can specify more then one license. + + ``DEFAULT`` + Possible values are: TRUE, FALSE, and SCRIPT. + Set to TRUE to preselect the group in the installer + (this takes effect only on groups that have no visible child components) + or to SCRIPT to resolved during runtime (don't forget add the file of + the script as a value of the ``SCRIPT`` option). + + ``USER_INTERFACES`` + is a list of <file_path> ('.ui' files) representing pages to load. + + ``TRANSLATIONS`` + is a list of <file_path> ('.qm' files) representing translations to load. + + ``REPLACES`` + list of identifiers of component or component group to replace. + + ``CHECKABLE`` + Possible values are: TRUE, FALSE. + Set to FALSE if you want to hide the checkbox for an item. + This is useful when only a few subcomponents should be selected + instead of all. + + +.. command:: cpack_ifw_add_repository + + Add QtIFW_ specific remote repository to binary installer. + + :: + + cpack_ifw_add_repository(<reponame> [DISABLED] + URL <url> + [USERNAME <username>] + [PASSWORD <password>] + [DISPLAY_NAME <display_name>]) + + This command will also add the <reponame> repository + to a variable :variable:`CPACK_IFW_REPOSITORIES_ALL`. + + ``DISABLED`` + if set, then the repository will be disabled by default. + + ``URL`` + is points to a list of available components. + + ``USERNAME`` + is used as user on a protected repository. + + ``PASSWORD`` + is password to use on a protected repository. + + ``DISPLAY_NAME`` + is string to display instead of the URL. + + +.. command:: cpack_ifw_update_repository + + Update QtIFW_ specific repository from remote repository. + + :: + + cpack_ifw_update_repository(<reponame> + [[ADD|REMOVE] URL <url>]| + [REPLACE OLD_URL <old_url> NEW_URL <new_url>]] + [USERNAME <username>] + [PASSWORD <password>] + [DISPLAY_NAME <display_name>]) + + This command will also add the <reponame> repository + to a variable :variable:`CPACK_IFW_REPOSITORIES_ALL`. + + ``URL`` + is points to a list of available components. + + ``OLD_URL`` + is points to a list that will replaced. + + ``NEW_URL`` + is points to a list that will replace to. + + ``USERNAME`` + is used as user on a protected repository. + + ``PASSWORD`` + is password to use on a protected repository. + + ``DISPLAY_NAME`` + is string to display instead of the URL. + + +.. command:: cpack_ifw_add_package_resources + + Add additional resources in the installer binary. + + :: + + cpack_ifw_add_package_resources(<file_path> <file_path> ...) + + This command will also add the specified files + to a variable :variable:`CPACK_IFW_PACKAGE_RESOURCES`. + +#]=======================================================================] + +# TODO: +# All of the internal implementation CMake modules for other CPack generators +# have been moved into the Internal/CPack directory. This one has not, because +# it contains user-facing macros which would be lost if it were moved. At some +# point, this module should be split into user-facing macros (which would live +# in this module) and internal implementation details (which would live in +# Internal/CPack/CPackIFW.cmake). #============================================================================= # Search Qt Installer Framework tools diff --git a/Modules/CPackNSIS.cmake b/Modules/CPackNSIS.cmake deleted file mode 100644 index 5bc4395557..0000000000 --- a/Modules/CPackNSIS.cmake +++ /dev/null @@ -1,138 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. - -#.rst: -# CPackNSIS -# --------- -# -# CPack NSIS generator specific options -# -# Variables specific to CPack NSIS generator -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# The following variables are specific to the graphical installers built -# on Windows using the Nullsoft Installation System. -# -# .. variable:: CPACK_NSIS_INSTALL_ROOT -# -# The default installation directory presented to the end user by the NSIS -# installer is under this root dir. The full directory presented to the end -# user is: ${CPACK_NSIS_INSTALL_ROOT}/${CPACK_PACKAGE_INSTALL_DIRECTORY} -# -# .. variable:: CPACK_NSIS_MUI_ICON -# -# An icon filename. The name of a ``*.ico`` file used as the main icon for the -# generated install program. -# -# .. variable:: CPACK_NSIS_MUI_UNIICON -# -# An icon filename. The name of a ``*.ico`` file used as the main icon for the -# generated uninstall program. -# -# .. variable:: CPACK_NSIS_INSTALLER_MUI_ICON_CODE -# -# undocumented. -# -# .. variable:: CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP -# -# The filename of a bitmap to use as the NSIS MUI_WELCOMEFINISHPAGE_BITMAP. -# -# .. variable:: CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP -# -# The filename of a bitmap to use as the NSIS MUI_UNWELCOMEFINISHPAGE_BITMAP. -# -# .. variable:: CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS -# -# Extra NSIS commands that will be added to the beginning of the install -# Section, before your install tree is available on the target system. -# -# .. variable:: CPACK_NSIS_EXTRA_INSTALL_COMMANDS -# -# Extra NSIS commands that will be added to the end of the install Section, -# after your install tree is available on the target system. -# -# .. variable:: CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS -# -# Extra NSIS commands that will be added to the uninstall Section, before -# your install tree is removed from the target system. -# -# .. variable:: CPACK_NSIS_COMPRESSOR -# -# The arguments that will be passed to the NSIS SetCompressor command. -# -# .. variable:: CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL -# -# Ask about uninstalling previous versions first. If this is set to "ON", -# then an installer will look for previous installed versions and if one is -# found, ask the user whether to uninstall it before proceeding with the -# install. -# -# .. variable:: CPACK_NSIS_MODIFY_PATH -# -# Modify PATH toggle. If this is set to "ON", then an extra page will appear -# in the installer that will allow the user to choose whether the program -# directory should be added to the system PATH variable. -# -# .. variable:: CPACK_NSIS_DISPLAY_NAME -# -# The display name string that appears in the Windows Add/Remove Program -# control panel -# -# .. variable:: CPACK_NSIS_PACKAGE_NAME -# -# The title displayed at the top of the installer. -# -# .. variable:: CPACK_NSIS_INSTALLED_ICON_NAME -# -# A path to the executable that contains the installer icon. -# -# .. variable:: CPACK_NSIS_HELP_LINK -# -# URL to a web site providing assistance in installing your application. -# -# .. variable:: CPACK_NSIS_URL_INFO_ABOUT -# -# URL to a web site providing more information about your application. -# -# .. variable:: CPACK_NSIS_CONTACT -# -# Contact information for questions and comments about the installation -# process. -# -# .. variable:: CPACK_NSIS_<compName>_INSTALL_DIRECTORY -# -# Custom install directory for the specified component <compName> instead -# of $INSTDIR. -# -# .. variable:: CPACK_NSIS_CREATE_ICONS_EXTRA -# -# Additional NSIS commands for creating start menu shortcuts. -# -# .. variable:: CPACK_NSIS_DELETE_ICONS_EXTRA -# -# Additional NSIS commands to uninstall start menu shortcuts. -# -# .. variable:: CPACK_NSIS_EXECUTABLES_DIRECTORY -# -# Creating NSIS start menu links assumes that they are in 'bin' unless this -# variable is set. For example, you would set this to 'exec' if your -# executables are in an exec directory. -# -# .. variable:: CPACK_NSIS_MUI_FINISHPAGE_RUN -# -# Specify an executable to add an option to run on the finish page of the -# NSIS installer. -# -# .. variable:: CPACK_NSIS_MENU_LINKS -# -# Specify links in [application] menu. This should contain a list of pair -# "link" "link name". The link may be a URL or a path relative to -# installation prefix. Like:: -# -# set(CPACK_NSIS_MENU_LINKS -# "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake.html" -# "CMake Help" "https://cmake.org" "CMake Web Site") -# - -#FIXME we should put NSIS specific code here -#FIXME but I'm not doing it because I'm not able to test it... diff --git a/Modules/CPackPackageMaker.cmake b/Modules/CPackPackageMaker.cmake deleted file mode 100644 index c2ca4c63c6..0000000000 --- a/Modules/CPackPackageMaker.cmake +++ /dev/null @@ -1,27 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. - -#.rst: -# CPackPackageMaker -# ----------------- -# -# PackageMaker CPack generator (Mac OS X). -# -# Variables specific to CPack PackageMaker generator -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# The following variable is specific to installers built on Mac -# OS X using PackageMaker: -# -# .. variable:: CPACK_OSX_PACKAGE_VERSION -# -# The version of Mac OS X that the resulting PackageMaker archive should be -# compatible with. Different versions of Mac OS X support different -# features. For example, CPack can only build component-based installers for -# Mac OS X 10.4 or newer, and can only build installers that download -# component son-the-fly for Mac OS X 10.5 or newer. If left blank, this value -# will be set to the minimum version of Mac OS X that supports the requested -# features. Set this variable to some value (e.g., 10.4) only if you want to -# guarantee that your installer will work on that version of Mac OS X, and -# don't mind missing extra features available in the installer shipping with -# later versions of Mac OS X. diff --git a/Modules/CPackProductBuild.cmake b/Modules/CPackProductBuild.cmake deleted file mode 100644 index ee78d8d43e..0000000000 --- a/Modules/CPackProductBuild.cmake +++ /dev/null @@ -1,72 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. - -#.rst: -# CPackProductBuild -# ----------------- -# -# productbuild CPack generator (Mac OS X). -# -# Variables specific to CPack productbuild generator -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# The following variable is specific to installers built on Mac -# OS X using productbuild: -# -# .. variable:: CPACK_COMMAND_PRODUCTBUILD -# -# Path to the productbuild(1) command used to generate a product archive for -# the OS X Installer or Mac App Store. This variable can be used to override -# the automatically detected command (or specify its location if the -# auto-detection fails to find it.) -# -# .. variable:: CPACK_PRODUCTBUILD_IDENTITY_NAME -# -# Adds a digital signature to the resulting package. -# -# -# .. variable:: CPACK_PRODUCTBUILD_KEYCHAIN_PATH -# -# Specify a specific keychain to search for the signing identity. -# -# -# .. variable:: CPACK_COMMAND_PKGBUILD -# -# Path to the pkgbuild(1) command used to generate an OS X component package -# on OS X. This variable can be used to override the automatically detected -# command (or specify its location if the auto-detection fails to find it.) -# -# -# .. variable:: CPACK_PKGBUILD_IDENTITY_NAME -# -# Adds a digital signature to the resulting package. -# -# -# .. variable:: CPACK_PKGBUILD_KEYCHAIN_PATH -# -# Specify a specific keychain to search for the signing identity. -# -# -# .. variable:: CPACK_PREFLIGHT_<COMP>_SCRIPT -# -# Full path to a file that will be used as the ``preinstall`` script for the -# named ``<COMP>`` component's package, where ``<COMP>`` is the uppercased -# component name. No ``preinstall`` script is added if this variable is not -# defined for a given component. -# -# -# .. variable:: CPACK_POSTFLIGHT_<COMP>_SCRIPT -# -# Full path to a file that will be used as the ``postinstall`` script for the -# named ``<COMP>`` component's package, where ``<COMP>`` is the uppercased -# component name. No ``postinstall`` script is added if this variable is not -# defined for a given component. -# -# -# .. variable:: CPACK_PRODUCTBUILD_RESOURCES_DIR -# -# If specified the productbuild generator copies files from this directory -# (including subdirectories) to the ``Resources`` directory. This is done -# before the :variable:`CPACK_RESOURCE_FILE_WELCOME`, -# :variable:`CPACK_RESOURCE_FILE_README`, and -# :variable:`CPACK_RESOURCE_FILE_LICENSE` files are copied. diff --git a/Modules/CPackWIX.cmake b/Modules/CPackWIX.cmake deleted file mode 100644 index 27737e59d1..0000000000 --- a/Modules/CPackWIX.cmake +++ /dev/null @@ -1,307 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. - -#.rst: -# CPackWIX -# -------- -# -# CPack WiX generator specific options -# -# Variables specific to CPack WiX generator -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# The following variables are specific to the installers built on -# Windows using WiX. -# -# .. variable:: CPACK_WIX_UPGRADE_GUID -# -# Upgrade GUID (``Product/@UpgradeCode``) -# -# Will be automatically generated unless explicitly provided. -# -# It should be explicitly set to a constant generated globally unique -# identifier (GUID) to allow your installers to replace existing -# installations that use the same GUID. -# -# You may for example explicitly set this variable in your -# CMakeLists.txt to the value that has been generated per default. You -# should not use GUIDs that you did not generate yourself or which may -# belong to other projects. -# -# A GUID shall have the following fixed length syntax:: -# -# XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX -# -# (each X represents an uppercase hexadecimal digit) -# -# .. variable:: CPACK_WIX_PRODUCT_GUID -# -# Product GUID (``Product/@Id``) -# -# Will be automatically generated unless explicitly provided. -# -# If explicitly provided this will set the Product Id of your installer. -# -# The installer will abort if it detects a pre-existing installation that -# uses the same GUID. -# -# The GUID shall use the syntax described for CPACK_WIX_UPGRADE_GUID. -# -# .. variable:: CPACK_WIX_LICENSE_RTF -# -# RTF License File -# -# If CPACK_RESOURCE_FILE_LICENSE has an .rtf extension it is used as-is. -# -# If CPACK_RESOURCE_FILE_LICENSE has an .txt extension it is implicitly -# converted to RTF by the WiX Generator. -# The expected encoding of the .txt file is UTF-8. -# -# With CPACK_WIX_LICENSE_RTF you can override the license file used by the -# WiX Generator in case CPACK_RESOURCE_FILE_LICENSE is in an unsupported -# format or the .txt -> .rtf conversion does not work as expected. -# -# .. variable:: CPACK_WIX_PRODUCT_ICON -# -# The Icon shown next to the program name in Add/Remove programs. -# -# If set, this icon is used in place of the default icon. -# -# .. variable:: CPACK_WIX_UI_REF -# -# This variable allows you to override the Id of the ``<UIRef>`` element -# in the WiX template. -# -# The default is ``WixUI_InstallDir`` in case no CPack components have -# been defined and ``WixUI_FeatureTree`` otherwise. -# -# .. variable:: CPACK_WIX_UI_BANNER -# -# The bitmap will appear at the top of all installer pages other than the -# welcome and completion dialogs. -# -# If set, this image will replace the default banner image. -# -# This image must be 493 by 58 pixels. -# -# .. variable:: CPACK_WIX_UI_DIALOG -# -# Background bitmap used on the welcome and completion dialogs. -# -# If this variable is set, the installer will replace the default dialog -# image. -# -# This image must be 493 by 312 pixels. -# -# .. variable:: CPACK_WIX_PROGRAM_MENU_FOLDER -# -# Start menu folder name for launcher. -# -# If this variable is not set, it will be initialized with CPACK_PACKAGE_NAME -# -# .. variable:: CPACK_WIX_CULTURES -# -# Language(s) of the installer -# -# Languages are compiled into the WixUI extension library. To use them, -# simply provide the name of the culture. If you specify more than one -# culture identifier in a comma or semicolon delimited list, the first one -# that is found will be used. You can find a list of supported languages at: -# http://wix.sourceforge.net/manual-wix3/WixUI_localization.htm -# -# .. variable:: CPACK_WIX_TEMPLATE -# -# Template file for WiX generation -# -# If this variable is set, the specified template will be used to generate -# the WiX wxs file. This should be used if further customization of the -# output is required. -# -# If this variable is not set, the default MSI template included with CMake -# will be used. -# -# .. variable:: CPACK_WIX_PATCH_FILE -# -# Optional list of XML files with fragments to be inserted into -# generated WiX sources -# -# This optional variable can be used to specify an XML file that the -# WiX generator will use to inject fragments into its generated -# source files. -# -# Patch files understood by the CPack WiX generator -# roughly follow this RELAX NG compact schema: -# -# .. code-block:: none -# -# start = CPackWiXPatch -# -# CPackWiXPatch = element CPackWiXPatch { CPackWiXFragment* } -# -# CPackWiXFragment = element CPackWiXFragment -# { -# attribute Id { string }, -# fragmentContent* -# } -# -# fragmentContent = element * - CPackWiXFragment -# { -# (attribute * { text } | text | fragmentContent)* -# } -# -# Currently fragments can be injected into most -# Component, File, Directory and Feature elements. -# -# The following additional special Ids can be used: -# -# * ``#PRODUCT`` for the ``<Product>`` element. -# * ``#PRODUCTFEATURE`` for the root ``<Feature>`` element. -# -# The following example illustrates how this works. -# -# Given that the WiX generator creates the following XML element: -# -# .. code-block:: xml -# -# <Component Id="CM_CP_applications.bin.my_libapp.exe" Guid="*"/> -# -# The following XML patch file may be used to inject an Environment element -# into it: -# -# .. code-block:: xml -# -# <CPackWiXPatch> -# <CPackWiXFragment Id="CM_CP_applications.bin.my_libapp.exe"> -# <Environment Id="MyEnvironment" Action="set" -# Name="MyVariableName" Value="MyVariableValue"/> -# </CPackWiXFragment> -# </CPackWiXPatch> -# -# .. variable:: CPACK_WIX_EXTRA_SOURCES -# -# Extra WiX source files -# -# This variable provides an optional list of extra WiX source files (.wxs) -# that should be compiled and linked. The full path to source files is -# required. -# -# .. variable:: CPACK_WIX_EXTRA_OBJECTS -# -# Extra WiX object files or libraries -# -# This variable provides an optional list of extra WiX object (.wixobj) -# and/or WiX library (.wixlib) files. The full path to objects and libraries -# is required. -# -# .. variable:: CPACK_WIX_EXTENSIONS -# -# This variable provides a list of additional extensions for the WiX -# tools light and candle. -# -# .. variable:: CPACK_WIX_<TOOL>_EXTENSIONS -# -# This is the tool specific version of CPACK_WIX_EXTENSIONS. -# ``<TOOL>`` can be either LIGHT or CANDLE. -# -# .. variable:: CPACK_WIX_<TOOL>_EXTRA_FLAGS -# -# This list variable allows you to pass additional -# flags to the WiX tool ``<TOOL>``. -# -# Use it at your own risk. -# Future versions of CPack may generate flags which may be in conflict -# with your own flags. -# -# ``<TOOL>`` can be either LIGHT or CANDLE. -# -# .. variable:: CPACK_WIX_CMAKE_PACKAGE_REGISTRY -# -# If this variable is set the generated installer will create -# an entry in the windows registry key -# ``HKEY_LOCAL_MACHINE\Software\Kitware\CMake\Packages\<package>`` -# The value for ``<package>`` is provided by this variable. -# -# Assuming you also install a CMake configuration file this will -# allow other CMake projects to find your package with -# the :command:`find_package` command. -# -# .. variable:: CPACK_WIX_PROPERTY_<PROPERTY> -# -# This variable can be used to provide a value for -# the Windows Installer property ``<PROPERTY>`` -# -# The following list contains some example properties that can be used to -# customize information under -# "Programs and Features" (also known as "Add or Remove Programs") -# -# * ARPCOMMENTS - Comments -# * ARPHELPLINK - Help and support information URL -# * ARPURLINFOABOUT - General information URL -# * ARPURLUPDATEINFO - Update information URL -# * ARPHELPTELEPHONE - Help and support telephone number -# * ARPSIZE - Size (in kilobytes) of the application -# -# .. variable:: CPACK_WIX_ROOT_FEATURE_TITLE -# -# Sets the name of the root install feature in the WIX installer. Same as -# CPACK_COMPONENT_<compName>_DISPLAY_NAME for components. -# -# .. variable:: CPACK_WIX_ROOT_FEATURE_DESCRIPTION -# -# Sets the description of the root install feature in the WIX installer. Same as -# CPACK_COMPONENT_<compName>_DESCRIPTION for components. -# -# .. variable:: CPACK_WIX_SKIP_PROGRAM_FOLDER -# -# If this variable is set to true, the default install location -# of the generated package will be CPACK_PACKAGE_INSTALL_DIRECTORY directly. -# The install location will not be located relatively below -# ProgramFiles or ProgramFiles64. -# -# .. note:: -# Installers created with this feature do not take differences -# between the system on which the installer is created -# and the system on which the installer might be used into account. -# -# It is therefore possible that the installer e.g. might try to install -# onto a drive that is unavailable or unintended or a path that does not -# follow the localization or convention of the system on which the -# installation is performed. -# -# .. variable:: CPACK_WIX_ROOT_FOLDER_ID -# -# This variable allows specification of a custom root folder ID. -# The generator specific ``<64>`` token can be used for -# folder IDs that come in 32-bit and 64-bit variants. -# In 32-bit builds the token will expand empty while in 64-bit builds -# it will expand to ``64``. -# -# When unset generated installers will default installing to -# ``ProgramFiles<64>Folder``. -# -# .. variable:: CPACK_WIX_ROOT -# -# This variable can optionally be set to the root directory -# of a custom WiX Toolset installation. -# -# When unspecified CPack will try to locate a WiX Toolset -# installation via the ``WIX`` environment variable instead. -# - -if(NOT CPACK_WIX_ROOT) - string(REPLACE "\\" "/" CPACK_WIX_ROOT "$ENV{WIX}") -endif() - -find_program(CPACK_WIX_CANDLE_EXECUTABLE candle - PATHS "${CPACK_WIX_ROOT}" PATH_SUFFIXES "bin") - -if(NOT CPACK_WIX_CANDLE_EXECUTABLE) - message(FATAL_ERROR "Could not find the WiX candle executable.") -endif() - -find_program(CPACK_WIX_LIGHT_EXECUTABLE light - PATHS "${CPACK_WIX_ROOT}" PATH_SUFFIXES "bin") - -if(NOT CPACK_WIX_LIGHT_EXECUTABLE) - message(FATAL_ERROR "Could not find the WiX light executable.") -endif() diff --git a/Modules/CPackDeb.cmake b/Modules/Internal/CPack/CPackDeb.cmake index fdbae326c9..4ef4539b2a 100644 --- a/Modules/CPackDeb.cmake +++ b/Modules/Internal/CPack/CPackDeb.cmake @@ -1,537 +1,6 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CPackDeb -# -------- -# -# The built in (binary) CPack Deb generator (Unix only) -# -# Variables specific to CPack Debian (DEB) generator -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# CPackDeb may be used to create Deb package using :module:`CPack`. -# CPackDeb is a :module:`CPack` generator thus it uses the ``CPACK_XXX`` -# variables used by :module:`CPack`. -# -# CPackDeb generator should work on any Linux host but it will produce -# better deb package when Debian specific tools ``dpkg-xxx`` are usable on -# the build system. -# -# CPackDeb has specific features which are controlled by the specifics -# :code:`CPACK_DEBIAN_XXX` variables. -# -# :code:`CPACK_DEBIAN_<COMPONENT>_XXXX` variables may be used in order to have -# **component** specific values. Note however that ``<COMPONENT>`` refers to -# the **grouping name** written in upper case. It may be either a component name -# or a component GROUP name. -# -# Here are some CPackDeb wiki resources that are here for historic reasons and -# are no longer maintained but may still prove useful: -# -# - https://gitlab.kitware.com/cmake/community/wikis/doc/cpack/Configuration -# - https://gitlab.kitware.com/cmake/community/wikis/doc/cpack/PackageGenerators#deb-unix-only -# -# List of CPackDEB specific variables: -# -# .. variable:: CPACK_DEB_COMPONENT_INSTALL -# -# Enable component packaging for CPackDEB -# -# * Mandatory : NO -# * Default : OFF -# -# If enabled (ON) multiple packages are generated. By default a single package -# containing files of all components is generated. -# -# .. variable:: CPACK_DEBIAN_PACKAGE_NAME -# CPACK_DEBIAN_<COMPONENT>_PACKAGE_NAME -# -# Set Package control field (variable is automatically transformed to lower -# case). -# -# * Mandatory : YES -# * Default : -# -# - :variable:`CPACK_PACKAGE_NAME` for non-component based -# installations -# - :variable:`CPACK_DEBIAN_PACKAGE_NAME` suffixed with -<COMPONENT> -# for component-based installations. -# -# See https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Source -# -# .. variable:: CPACK_DEBIAN_FILE_NAME -# CPACK_DEBIAN_<COMPONENT>_FILE_NAME -# -# Package file name. -# -# * Mandatory : YES -# * Default : ``<CPACK_PACKAGE_FILE_NAME>[-<component>].deb`` -# -# This may be set to ``DEB-DEFAULT`` to allow CPackDeb to generate package file -# name by itself in deb format:: -# -# <PackageName>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb -# -# Alternatively provided package file name must end -# with either ``.deb`` or ``.ipk`` suffix. -# -# .. note:: -# -# Preferred setting of this variable is ``DEB-DEFAULT`` but for backward -# compatibility with CPackDeb in CMake prior to version 3.6 this feature -# is disabled by default. -# -# .. note:: -# -# By using non default filenames duplicate names may occur. Duplicate files -# get overwritten and it is up to the packager to set the variables in a -# manner that will prevent such errors. -# -# .. variable:: CPACK_DEBIAN_PACKAGE_EPOCH -# -# The Debian package epoch -# -# * Mandatory : No -# * Default : - -# -# Optional number that should be incremented when changing versioning schemas -# or fixing mistakes in the version numbers of older packages. -# -# .. variable:: CPACK_DEBIAN_PACKAGE_VERSION -# -# The Debian package version -# -# * Mandatory : YES -# * Default : :variable:`CPACK_PACKAGE_VERSION` -# -# This variable may contain only alphanumerics (A-Za-z0-9) and the characters -# . + - ~ (full stop, plus, hyphen, tilde) and should start with a digit. If -# :variable:`CPACK_DEBIAN_PACKAGE_RELEASE` is not set then hyphens are not -# allowed. -# -# .. note:: -# -# For backward compatibility with CMake 3.9 and lower a failed test of this -# variable's content is not a hard error when both -# :variable:`CPACK_DEBIAN_PACKAGE_RELEASE` and -# :variable:`CPACK_DEBIAN_PACKAGE_EPOCH` variables are not set. An author -# warning is reported instead. -# -# .. variable:: CPACK_DEBIAN_PACKAGE_RELEASE -# -# The Debian package release - Debian revision number. -# -# * Mandatory : No -# * Default : - -# -# This is the numbering of the DEB package itself, i.e. the version of the -# packaging and not the version of the content (see -# :variable:`CPACK_DEBIAN_PACKAGE_VERSION`). One may change the default value -# if the previous packaging was buggy and/or you want to put here a fancy Linux -# distro specific numbering. -# -# .. variable:: CPACK_DEBIAN_PACKAGE_ARCHITECTURE -# CPACK_DEBIAN_<COMPONENT>_PACKAGE_ARCHITECTURE -# -# The Debian package architecture -# -# * Mandatory : YES -# * Default : Output of :code:`dpkg --print-architecture` (or :code:`i386` -# if :code:`dpkg` is not found) -# -# .. variable:: CPACK_DEBIAN_PACKAGE_DEPENDS -# CPACK_DEBIAN_<COMPONENT>_PACKAGE_DEPENDS -# -# Sets the Debian dependencies of this package. -# -# * Mandatory : NO -# * Default : -# -# - An empty string for non-component based installations -# - :variable:`CPACK_DEBIAN_PACKAGE_DEPENDS` for component-based -# installations. -# -# .. note:: -# -# If :variable:`CPACK_DEBIAN_PACKAGE_SHLIBDEPS` or -# more specifically :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_SHLIBDEPS` -# is set for this component, the discovered dependencies will be appended -# to :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_DEPENDS` instead of -# :variable:`CPACK_DEBIAN_PACKAGE_DEPENDS`. If -# :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_DEPENDS` is an empty string, -# only the automatically discovered dependencies will be set for this -# component. -# -# Example:: -# -# set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.3.1-6), libc6 (< 2.4)") -# -# .. variable:: CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS -# -# Sets inter component dependencies if listed with -# :variable:`CPACK_COMPONENT_<compName>_DEPENDS` variables. -# -# * Mandatory : NO -# * Default : - -# -# .. variable:: CPACK_DEBIAN_PACKAGE_MAINTAINER -# -# The Debian package maintainer -# -# * Mandatory : YES -# * Default : :code:`CPACK_PACKAGE_CONTACT` -# -# .. variable:: CPACK_DEBIAN_PACKAGE_DESCRIPTION -# CPACK_COMPONENT_<COMPONENT>_DESCRIPTION -# -# The Debian package description -# -# * Mandatory : YES -# * Default : -# -# - :variable:`CPACK_DEBIAN_PACKAGE_DESCRIPTION` if set or -# - :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY` -# -# -# .. variable:: CPACK_DEBIAN_PACKAGE_SECTION -# CPACK_DEBIAN_<COMPONENT>_PACKAGE_SECTION -# -# Set Section control field e.g. admin, devel, doc, ... -# -# * Mandatory : YES -# * Default : "devel" -# -# See https://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections -# -# .. variable:: CPACK_DEBIAN_ARCHIVE_TYPE -# -# The archive format used for creating the Debian package. -# -# * Mandatory : YES -# * Default : "paxr" -# -# Possible values are: -# -# - paxr -# - gnutar -# -# .. note:: -# -# Default pax archive format is the most portable format and generates -# packages that do not treat sparse files specially. -# GNU tar format on the other hand supports longer filenames. -# -# .. variable:: CPACK_DEBIAN_COMPRESSION_TYPE -# -# The compression used for creating the Debian package. -# -# * Mandatory : YES -# * Default : "gzip" -# -# Possible values are: -# -# - lzma -# - xz -# - bzip2 -# - gzip -# -# .. variable:: CPACK_DEBIAN_PACKAGE_PRIORITY -# CPACK_DEBIAN_<COMPONENT>_PACKAGE_PRIORITY -# -# Set Priority control field e.g. required, important, standard, optional, -# extra -# -# * Mandatory : YES -# * Default : "optional" -# -# See https://www.debian.org/doc/debian-policy/ch-archive.html#s-priorities -# -# .. variable:: CPACK_DEBIAN_PACKAGE_HOMEPAGE -# -# The URL of the web site for this package, preferably (when applicable) the -# site from which the original source can be obtained and any additional -# upstream documentation or information may be found. -# -# * Mandatory : NO -# * Default : :variable:`CMAKE_PROJECT_HOMEPAGE_URL` -# -# .. note:: -# -# The content of this field is a simple URL without any surrounding -# characters such as <>. -# -# .. variable:: CPACK_DEBIAN_PACKAGE_SHLIBDEPS -# CPACK_DEBIAN_<COMPONENT>_PACKAGE_SHLIBDEPS -# -# May be set to ON in order to use :code:`dpkg-shlibdeps` to generate -# better package dependency list. -# -# * Mandatory : NO -# * Default : -# -# - :variable:`CPACK_DEBIAN_PACKAGE_SHLIBDEPS` if set or -# - OFF -# -# .. note:: -# -# You may need set :variable:`CMAKE_INSTALL_RPATH` to an appropriate value -# if you use this feature, because if you don't :code:`dpkg-shlibdeps` -# may fail to find your own shared libs. -# See https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/RPATH-handling -# -# .. variable:: CPACK_DEBIAN_PACKAGE_DEBUG -# -# May be set when invoking cpack in order to trace debug information -# during CPackDeb run. -# -# * Mandatory : NO -# * Default : - -# -# .. variable:: CPACK_DEBIAN_PACKAGE_PREDEPENDS -# CPACK_DEBIAN_<COMPONENT>_PACKAGE_PREDEPENDS -# -# Sets the `Pre-Depends` field of the Debian package. -# Like :variable:`Depends <CPACK_DEBIAN_PACKAGE_DEPENDS>`, except that it -# also forces :code:`dpkg` to complete installation of the packages named -# before even starting the installation of the package which declares the -# pre-dependency. -# -# * Mandatory : NO -# * Default : -# -# - An empty string for non-component based installations -# - :variable:`CPACK_DEBIAN_PACKAGE_PREDEPENDS` for component-based -# installations. -# -# See http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps -# -# .. variable:: CPACK_DEBIAN_PACKAGE_ENHANCES -# CPACK_DEBIAN_<COMPONENT>_PACKAGE_ENHANCES -# -# Sets the `Enhances` field of the Debian package. -# Similar to :variable:`Suggests <CPACK_DEBIAN_PACKAGE_SUGGESTS>` but works -# in the opposite direction: declares that a package can enhance the -# functionality of another package. -# -# * Mandatory : NO -# * Default : -# -# - An empty string for non-component based installations -# - :variable:`CPACK_DEBIAN_PACKAGE_ENHANCES` for component-based -# installations. -# -# See http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps -# -# .. variable:: CPACK_DEBIAN_PACKAGE_BREAKS -# CPACK_DEBIAN_<COMPONENT>_PACKAGE_BREAKS -# -# Sets the `Breaks` field of the Debian package. -# When a binary package (P) declares that it breaks other packages (B), -# :code:`dpkg` will not allow the package (P) which declares `Breaks` be -# **unpacked** unless the packages that will be broken (B) are deconfigured -# first. -# As long as the package (P) is configured, the previously deconfigured -# packages (B) cannot be reconfigured again. -# -# * Mandatory : NO -# * Default : -# -# - An empty string for non-component based installations -# - :variable:`CPACK_DEBIAN_PACKAGE_BREAKS` for component-based -# installations. -# -# See https://www.debian.org/doc/debian-policy/ch-relationships.html#s-breaks -# -# .. variable:: CPACK_DEBIAN_PACKAGE_CONFLICTS -# CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONFLICTS -# -# Sets the `Conflicts` field of the Debian package. -# When one binary package declares a conflict with another using a `Conflicts` -# field, :code:`dpkg` will not allow them to be unpacked on the system at -# the same time. -# -# * Mandatory : NO -# * Default : -# -# - An empty string for non-component based installations -# - :variable:`CPACK_DEBIAN_PACKAGE_CONFLICTS` for component-based -# installations. -# -# See https://www.debian.org/doc/debian-policy/ch-relationships.html#s-conflicts -# -# .. note:: -# -# This is a stronger restriction than -# :variable:`Breaks <CPACK_DEBIAN_PACKAGE_BREAKS>`, which prevents the -# broken package from being configured while the breaking package is in -# the "Unpacked" state but allows both packages to be unpacked at the same -# time. -# -# .. variable:: CPACK_DEBIAN_PACKAGE_PROVIDES -# CPACK_DEBIAN_<COMPONENT>_PACKAGE_PROVIDES -# -# Sets the `Provides` field of the Debian package. -# A virtual package is one which appears in the `Provides` control field of -# another package. -# -# * Mandatory : NO -# * Default : -# -# - An empty string for non-component based installations -# - :variable:`CPACK_DEBIAN_PACKAGE_PROVIDES` for component-based -# installations. -# -# See https://www.debian.org/doc/debian-policy/ch-relationships.html#s-virtual -# -# .. variable:: CPACK_DEBIAN_PACKAGE_REPLACES -# CPACK_DEBIAN_<COMPONENT>_PACKAGE_REPLACES -# -# Sets the `Replaces` field of the Debian package. -# Packages can declare in their control file that they should overwrite -# files in certain other packages, or completely replace other packages. -# -# * Mandatory : NO -# * Default : -# -# - An empty string for non-component based installations -# - :variable:`CPACK_DEBIAN_PACKAGE_REPLACES` for component-based -# installations. -# -# See http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps -# -# .. variable:: CPACK_DEBIAN_PACKAGE_RECOMMENDS -# CPACK_DEBIAN_<COMPONENT>_PACKAGE_RECOMMENDS -# -# Sets the `Recommends` field of the Debian package. -# Allows packages to declare a strong, but not absolute, dependency on other -# packages. -# -# * Mandatory : NO -# * Default : -# -# - An empty string for non-component based installations -# - :variable:`CPACK_DEBIAN_PACKAGE_RECOMMENDS` for component-based -# installations. -# -# See http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps -# -# .. variable:: CPACK_DEBIAN_PACKAGE_SUGGESTS -# CPACK_DEBIAN_<COMPONENT>_PACKAGE_SUGGESTS -# -# Sets the `Suggests` field of the Debian package. -# Allows packages to declare a suggested package install grouping. -# -# * Mandatory : NO -# * Default : -# -# - An empty string for non-component based installations -# - :variable:`CPACK_DEBIAN_PACKAGE_SUGGESTS` for component-based -# installations. -# -# See http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps -# -# .. variable:: CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS -# -# * Mandatory : NO -# * Default : OFF -# -# Allows to generate shlibs control file automatically. Compatibility is defined by -# :variable:`CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY` variable value. -# -# .. note:: -# -# Libraries are only considered if they have both library name and version -# set. This can be done by setting SOVERSION property with -# :command:`set_target_properties` command. -# -# .. variable:: CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY -# -# Compatibility policy for auto-generated shlibs control file. -# -# * Mandatory : NO -# * Default : "=" -# -# Defines compatibility policy for auto-generated shlibs control file. -# Possible values: "=", ">=" -# -# See https://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-sharedlibs-shlibdeps -# -# .. variable:: CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA -# CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONTROL_EXTRA -# -# This variable allow advanced user to add custom script to the -# control.tar.gz. -# Typical usage is for conffiles, postinst, postrm, prerm. -# -# * Mandatory : NO -# * Default : - -# -# Usage:: -# -# set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA -# "${CMAKE_CURRENT_SOURCE_DIR}/prerm;${CMAKE_CURRENT_SOURCE_DIR}/postrm") -# -# .. note:: -# -# The original permissions of the files will be used in the final -# package unless the variable -# :variable:`CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION` is set. -# In particular, the scripts should have the proper executable -# flag prior to the generation of the package. -# -# .. variable:: CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION -# CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONTROL_STRICT_PERMISSION -# -# This variable indicates if the Debian policy on control files should be -# strictly followed. -# -# * Mandatory : NO -# * Default : FALSE -# -# Usage:: -# -# set(CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION TRUE) -# -# .. note:: -# -# This overrides the permissions on the original files, following the rules -# set by Debian policy -# https://www.debian.org/doc/debian-policy/ch-files.html#s-permissions-owners -# -# .. variable:: CPACK_DEBIAN_PACKAGE_SOURCE -# CPACK_DEBIAN_<COMPONENT>_PACKAGE_SOURCE -# -# Sets the ``Source`` field of the binary Debian package. -# When the binary package name is not the same as the source package name -# (in particular when several components/binaries are generated from one -# source) the source from which the binary has been generated should be -# indicated with the field ``Source``. -# -# * Mandatory : NO -# * Default : -# -# - An empty string for non-component based installations -# - :variable:`CPACK_DEBIAN_PACKAGE_SOURCE` for component-based -# installations. -# -# See https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Source -# -# .. note:: -# -# This value is not interpreted. It is possible to pass an optional -# revision number of the referenced source package as well. -# -# Building Debian packages on Windows -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# To communicate UNIX file permissions from the install stage -# to the CPack DEB generator the "cmake_mode_t" NTFS -# alternate data stream (ADT) is used. -# -# When a filesystem without ADT support is used only owner read/write -# permissions can be preserved. - # CPack script for creating Debian package # Author: Mathieu Malaterre # diff --git a/Modules/Internal/CPack/CPackFreeBSD.cmake b/Modules/Internal/CPack/CPackFreeBSD.cmake new file mode 100644 index 0000000000..16f906cac8 --- /dev/null +++ b/Modules/Internal/CPack/CPackFreeBSD.cmake @@ -0,0 +1,107 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + + +if(CMAKE_BINARY_DIR) + message(FATAL_ERROR "CPackFreeBSD.cmake may only be used by CPack internally.") +endif() + +if(NOT UNIX) + message(FATAL_ERROR "CPackFreeBSD.cmake may only be used under UNIX.") +endif() + + +### +# +# These bits are copied from the Debian packaging file; slightly modified. +# They are used for filling in FreeBSD-packaging variables that can take +# on values from elsewhere -- e.g. the package description may as well be +# copied from Debian. +# +function(_cpack_freebsd_fallback_var OUTPUT_VAR_NAME) + set(FALLBACK_VAR_NAMES ${ARGN}) + + set(VALUE "${${OUTPUT_VAR_NAME}}") + if(VALUE) + return() + endif() + + foreach(variable_name IN LISTS FALLBACK_VAR_NAMES) + if(${variable_name}) + set(${OUTPUT_VAR_NAME} "${${variable_name}}" PARENT_SCOPE) + set(VALUE "${${variable_name}}") + break() + endif() + endforeach() + if(NOT VALUE) + message(WARNING "Variable ${OUTPUT_VAR_NAME} could not be given a fallback value from any variable ${FALLBACK_VAR_NAMES}.") + endif() +endfunction() + +function(check_required_var VAR_NAME) + if(NOT ${VAR_NAME}) + message(FATAL_ERROR "Variable ${VAR_NAME} is not set.") + endif() +endfunction() + +set(_cpack_freebsd_fallback_origin "misc/bogus") + +_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_NAME" + "CPACK_PACKAGE_NAME" + "CMAKE_PROJECT_NAME" + ) + +set(_cpack_freebsd_fallback_www "http://example.com/?pkg=${CPACK_FREEBSD_PACKAGE_NAME}") + +_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_COMMENT" + "CPACK_PACKAGE_DESCRIPTION_SUMMARY" + ) + +# TODO: maybe read the PACKAGE_DESCRIPTION file for the longer +# FreeBSD pkg-descr? +_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_DESCRIPTION" + "CPACK_DEBIAN_PACKAGE_DESCRIPTION" + "CPACK_PACKAGE_DESCRIPTION_SUMMARY" + "PACKAGE_DESCRIPTION" + ) + +# There's really only one homepage for a project, so +# re-use the Debian setting if it's there. +_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_WWW" + "CMAKE_PROJECT_HOMEPAGE_URL" + "CPACK_DEBIAN_PACKAGE_HOMEPAGE" + "_cpack_freebsd_fallback_www" + ) + +_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_VERSION" + "CMAKE_PROJECT_VERSION" + "${CMAKE_PROJECT_NAME}_VERSION" + "PROJECT_VERSION" + "CPACK_PACKAGE_VERSION" + "CPACK_PACKAGE_VERSION" + ) + +_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_MAINTAINER" + "CPACK_PACKAGE_CONTACT" + ) + +_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_LICENSE" + "CPACK_RPM_PACKAGE_LICENSE" + ) + +_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_ORIGIN" + "_cpack_freebsd_fallback_origin" + ) + +if(NOT CPACK_FREEBSD_PACKAGE_CATEGORIES) + string(REGEX REPLACE "/.*" "" CPACK_FREEBSD_PACKAGE_CATEGORIES ${CPACK_FREEBSD_PACKAGE_ORIGIN}) +endif() + +check_required_var("CPACK_FREEBSD_PACKAGE_NAME") +check_required_var("CPACK_FREEBSD_PACKAGE_ORIGIN") +check_required_var("CPACK_FREEBSD_PACKAGE_VERSION") +check_required_var("CPACK_FREEBSD_PACKAGE_MAINTAINER") +check_required_var("CPACK_FREEBSD_PACKAGE_COMMENT") +check_required_var("CPACK_FREEBSD_PACKAGE_DESCRIPTION") +check_required_var("CPACK_FREEBSD_PACKAGE_WWW") +check_required_var("CPACK_FREEBSD_PACKAGE_LICENSE") diff --git a/Modules/CPackNuGet.cmake b/Modules/Internal/CPack/CPackNuGet.cmake index 05403bc36a..198ccad591 100644 --- a/Modules/CPackNuGet.cmake +++ b/Modules/Internal/CPack/CPackNuGet.cmake @@ -1,199 +1,6 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#[=======================================================================[.rst: -CPackNuGet ----------- - -When build a NuGet package there is no direct way to control an output -filename due a lack of the corresponding CLI option of NuGet, so there -is no ``CPACK_NUGET_PACKAGE_FILENAME`` variable. To form the output filename -NuGet uses the package name and the version according to its built-in rules. - -Also, be aware that including a top level directory -(``CPACK_INCLUDE_TOPLEVEL_DIRECTORY``) is ignored by this generator. - - -Variables specific to CPack NuGet generator -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -CPackNuGet may be used to create NuGet packages using :module:`CPack`. -CPackNuGet is a :module:`CPack` generator thus it uses the ``CPACK_XXX`` -variables used by :module:`CPack`. - -CPackNuGet has specific features which are controlled by the specifics -:code:`CPACK_NUGET_XXX` variables. In the "one per group" mode -(see :variable:`CPACK_COMPONENTS_GROUPING`), ``<compName>`` placeholder -in the variables below would contain a group name (uppercased and turned into -a "C" identifier). - -List of CPackNuGet specific variables: - -.. variable:: CPACK_NUGET_COMPONENT_INSTALL - - Enable component packaging for CPackNuGet - - * Mandatory : NO - * Default : OFF - -.. variable:: CPACK_NUGET_PACKAGE_NAME - CPACK_NUGET_<compName>_PACKAGE_NAME - - The NUGET package name. - - * Mandatory : YES - * Default : :variable:`CPACK_PACKAGE_NAME` - -.. variable:: CPACK_NUGET_PACKAGE_VERSION - CPACK_NUGET_<compName>_PACKAGE_VERSION - - The NuGet package version. - - * Mandatory : YES - * Default : :variable:`CPACK_PACKAGE_VERSION` - -.. variable:: CPACK_NUGET_PACKAGE_DESCRIPTION - CPACK_NUGET_<compName>_PACKAGE_DESCRIPTION - - A long description of the package for UI display. - - * Mandatory : YES - * Default : - - :variable:`CPACK_COMPONENT_<compName>_DESCRIPTION`, - - ``CPACK_COMPONENT_GROUP_<groupName>_DESCRIPTION``, - - :variable:`CPACK_PACKAGE_DESCRIPTION` - -.. variable:: CPACK_NUGET_PACKAGE_AUTHORS - CPACK_NUGET_<compName>_PACKAGE_AUTHORS - - A comma-separated list of packages authors, matching the profile names - on nuget.org_. These are displayed in the NuGet Gallery on - nuget.org_ and are used to cross-reference packages by the same - authors. - - * Mandatory : YES - * Default : :variable:`CPACK_PACKAGE_VENDOR` - -.. variable:: CPACK_NUGET_PACKAGE_TITLE - CPACK_NUGET_<compName>_PACKAGE_TITLE - - A human-friendly title of the package, typically used in UI displays - as on nuget.org_ and the Package Manager in Visual Studio. If not - specified, the package ID is used. - - * Mandatory : NO - * Default : - - :variable:`CPACK_COMPONENT_<compName>_DISPLAY_NAME`, - - ``CPACK_COMPONENT_GROUP_<groupName>_DISPLAY_NAME`` - -.. variable:: CPACK_NUGET_PACKAGE_OWNERS - CPACK_NUGET_<compName>_PACKAGE_OWNERS - - A comma-separated list of the package creators using profile names - on nuget.org_. This is often the same list as in authors, - and is ignored when uploading the package to nuget.org_. - - * Mandatory : NO - * Default : - - -.. variable:: CPACK_NUGET_PACKAGE_HOMEPAGE_URL - CPACK_NUGET_<compName>_PACKAGE_HOMEPAGE_URL - - A URL for the package's home page, often shown in UI displays as well - as nuget.org_. - - * Mandatory : NO - * Default : :variable:`CPACK_PACKAGE_HOMEPAGE_URL` - -.. variable:: CPACK_NUGET_PACKAGE_LICENSEURL - CPACK_NUGET_<compName>_PACKAGE_LICENSEURL - - A URL for the package's license, often shown in UI displays as well - as nuget.org_. - - * Mandatory : NO - * Default : - - -.. variable:: CPACK_NUGET_PACKAGE_ICONURL - CPACK_NUGET_<compName>_PACKAGE_ICONURL - - A URL for a 64x64 image with transparency background to use as the - icon for the package in UI display. - - * Mandatory : NO - * Default : - - -.. variable:: CPACK_NUGET_PACKAGE_DESCRIPTION_SUMMARY - CPACK_NUGET_<compName>_PACKAGE_DESCRIPTION_SUMMARY - - A short description of the package for UI display. If omitted, a - truncated version of description is used. - - * Mandatory : NO - * Default : :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY` - -.. variable:: CPACK_NUGET_PACKAGE_RELEASE_NOTES - CPACK_NUGET_<compName>_PACKAGE_RELEASE_NOTES - - A description of the changes made in this release of the package, - often used in UI like the Updates tab of the Visual Studio Package - Manager in place of the package description. - - * Mandatory : NO - * Default : - - -.. variable:: CPACK_NUGET_PACKAGE_COPYRIGHT - CPACK_NUGET_<compName>_PACKAGE_COPYRIGHT - - Copyright details for the package. - - * Mandatory : NO - * Default : - - -.. variable:: CPACK_NUGET_PACKAGE_TAGS - CPACK_NUGET_<compName>_PACKAGE_TAGS - - A space-delimited list of tags and keywords that describe the - package and aid discoverability of packages through search and - filtering. - - * Mandatory : NO - * Default : - - -.. variable:: CPACK_NUGET_PACKAGE_DEPENDENCIES - CPACK_NUGET_<compName>_PACKAGE_DEPENDENCIES - - A list of package dependencies. - - * Mandatory : NO - * Default : - - -.. variable:: CPACK_NUGET_PACKAGE_DEPENDENCIES_<dependency>_VERSION - CPACK_NUGET_<compName>_PACKAGE_DEPENDENCIES_<dependency>_VERSION - - A `version specification`_ for the particular dependency, where - ``<dependency>`` is an item of the dependency list (see above) - transformed with ``MAKE_C_IDENTIFIER`` function of :command:`string` - command. - - * Mandatory : NO - * Default : - - -.. variable:: CPACK_NUGET_PACKAGE_DEBUG - - Enable debug messages while executing ``CPackNuGet.cmake``. - - * Mandatory : NO - * Default : OFF - - -.. _nuget.org: http://nuget.org -.. _version specification: https://docs.microsoft.com/en-us/nuget/reference/package-versioning#version-ranges-and-wildcards - -.. NuGet spec docs https://docs.microsoft.com/en-us/nuget/reference/nuspec - -#]=======================================================================] - # Author: Alex Turbov if(CMAKE_BINARY_DIR) @@ -455,7 +262,7 @@ function(_cpack_nuget_render_spec) # NuGet will name it properly. _cpack_nuget_debug("Rendering `${CPACK_TEMPORARY_DIRECTORY}/CPack.NuGet.nuspec` file...") configure_file( - "${CMAKE_CURRENT_LIST_DIR}/CPack.NuGet.nuspec.in" + "${CMAKE_ROOT}/Modules/CPack.NuGet.nuspec.in" "${CPACK_TEMPORARY_DIRECTORY}/CPack.NuGet.nuspec" @ONLY ) diff --git a/Modules/CPackRPM.cmake b/Modules/Internal/CPack/CPackRPM.cmake index 60b3abe168..d044f05ee4 100644 --- a/Modules/CPackRPM.cmake +++ b/Modules/Internal/CPack/CPackRPM.cmake @@ -1,963 +1,6 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CPackRPM -# -------- -# -# The built in (binary) CPack RPM generator (Unix only) -# -# Variables specific to CPack RPM generator -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# CPackRPM may be used to create RPM packages using :module:`CPack`. -# CPackRPM is a :module:`CPack` generator thus it uses the ``CPACK_XXX`` -# variables used by :module:`CPack`. -# -# CPackRPM has specific features which are controlled by the specifics -# :code:`CPACK_RPM_XXX` variables. -# -# :code:`CPACK_RPM_<COMPONENT>_XXXX` variables may be used in order to have -# **component** specific values. Note however that ``<COMPONENT>`` refers to the -# **grouping name** written in upper case. It may be either a component name or -# a component GROUP name. Usually those variables correspond to RPM spec file -# entities. One may find information about spec files here -# http://www.rpm.org/wiki/Docs -# -# .. note:: -# -# `<COMPONENT>` part of variables is preferred to be in upper case (for e.g. if -# component is named `foo` then use `CPACK_RPM_FOO_XXXX` variable name format) -# as is with other `CPACK_<COMPONENT>_XXXX` variables. -# For the purposes of back compatibility (CMake/CPack version 3.5 and lower) -# support for same cased component (e.g. `fOo` would be used as -# `CPACK_RPM_fOo_XXXX`) is still supported for variables defined in older -# versions of CMake/CPack but is not guaranteed for variables that -# will be added in the future. For the sake of back compatibility same cased -# component variables also override upper cased versions where both are -# present. -# -# Here are some CPackRPM wiki resources that are here for historic reasons and -# are no longer maintained but may still prove useful: -# -# - https://gitlab.kitware.com/cmake/community/wikis/doc/cpack/Configuration -# - https://gitlab.kitware.com/cmake/community/wikis/doc/cpack/PackageGenerators#rpm-unix-only -# -# List of CPackRPM specific variables: -# -# .. variable:: CPACK_RPM_COMPONENT_INSTALL -# -# Enable component packaging for CPackRPM -# -# * Mandatory : NO -# * Default : OFF -# -# If enabled (ON) multiple packages are generated. By default a single package -# containing files of all components is generated. -# -# .. variable:: CPACK_RPM_PACKAGE_SUMMARY -# CPACK_RPM_<component>_PACKAGE_SUMMARY -# -# The RPM package summary. -# -# * Mandatory : YES -# * Default : :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY` -# -# .. variable:: CPACK_RPM_PACKAGE_NAME -# CPACK_RPM_<component>_PACKAGE_NAME -# -# The RPM package name. -# -# * Mandatory : YES -# * Default : :variable:`CPACK_PACKAGE_NAME` -# -# .. variable:: CPACK_RPM_FILE_NAME -# CPACK_RPM_<component>_FILE_NAME -# -# Package file name. -# -# * Mandatory : YES -# * Default : ``<CPACK_PACKAGE_FILE_NAME>[-<component>].rpm`` with spaces -# replaced by '-' -# -# This may be set to ``RPM-DEFAULT`` to allow rpmbuild tool to generate package -# file name by itself. -# Alternatively provided package file name must end with ``.rpm`` suffix. -# -# .. note:: -# -# By using user provided spec file, rpm macro extensions such as for -# generating debuginfo packages or by simply using multiple components more -# than one rpm file may be generated, either from a single spec file or from -# multiple spec files (each component execution produces it's own spec file). -# In such cases duplicate file names may occur as a result of this variable -# setting or spec file content structure. Duplicate files get overwritten -# and it is up to the packager to set the variables in a manner that will -# prevent such errors. -# -# .. variable:: CPACK_RPM_MAIN_COMPONENT -# -# Main component that is packaged without component suffix. -# -# * Mandatory : NO -# * Default : - -# -# This variable can be set to any component or group name so that component or -# group rpm package is generated without component suffix in filename and -# package name. -# -# .. variable:: CPACK_RPM_PACKAGE_EPOCH -# -# The RPM package epoch -# -# * Mandatory : No -# * Default : - -# -# Optional number that should be incremented when changing versioning schemas -# or fixing mistakes in the version numbers of older packages. -# -# .. variable:: CPACK_RPM_PACKAGE_VERSION -# -# The RPM package version. -# -# * Mandatory : YES -# * Default : :variable:`CPACK_PACKAGE_VERSION` -# -# .. variable:: CPACK_RPM_PACKAGE_ARCHITECTURE -# CPACK_RPM_<component>_PACKAGE_ARCHITECTURE -# -# The RPM package architecture. -# -# * Mandatory : YES -# * Default : Native architecture output by ``uname -m`` -# -# This may be set to ``noarch`` if you know you are building a noarch package. -# -# .. variable:: CPACK_RPM_PACKAGE_RELEASE -# -# The RPM package release. -# -# * Mandatory : YES -# * Default : 1 -# -# This is the numbering of the RPM package itself, i.e. the version of the -# packaging and not the version of the content (see -# :variable:`CPACK_RPM_PACKAGE_VERSION`). One may change the default value if -# the previous packaging was buggy and/or you want to put here a fancy Linux -# distro specific numbering. -# -# .. note:: -# -# This is the string that goes into the RPM ``Release:`` field. Some distros -# (e.g. Fedora, CentOS) require ``1%{?dist}`` format and not just a number. -# ``%{?dist}`` part can be added by setting :variable:`CPACK_RPM_PACKAGE_RELEASE_DIST`. -# -# .. variable:: CPACK_RPM_PACKAGE_RELEASE_DIST -# -# The dist tag that is added RPM ``Release:`` field. -# -# * Mandatory : NO -# * Default : OFF -# -# This is the reported ``%{dist}`` tag from the current distribution or empty -# ``%{dist}`` if RPM macro is not set. If this variable is set then RPM -# ``Release:`` field value is set to ``${CPACK_RPM_PACKAGE_RELEASE}%{?dist}``. -# -# .. variable:: CPACK_RPM_PACKAGE_LICENSE -# -# The RPM package license policy. -# -# * Mandatory : YES -# * Default : "unknown" -# -# .. variable:: CPACK_RPM_PACKAGE_GROUP -# CPACK_RPM_<component>_PACKAGE_GROUP -# -# The RPM package group. -# -# * Mandatory : YES -# * Default : "unknown" -# -# .. variable:: CPACK_RPM_PACKAGE_VENDOR -# -# The RPM package vendor. -# -# * Mandatory : YES -# * Default : CPACK_PACKAGE_VENDOR if set or "unknown" -# -# .. variable:: CPACK_RPM_PACKAGE_URL -# CPACK_RPM_<component>_PACKAGE_URL -# -# The projects URL. -# -# * Mandatory : NO -# * Default : :variable:`CMAKE_PROJECT_HOMEPAGE_URL` -# -# .. variable:: CPACK_RPM_PACKAGE_DESCRIPTION -# CPACK_RPM_<component>_PACKAGE_DESCRIPTION -# -# RPM package description. -# -# * Mandatory : YES -# * Default : :variable:`CPACK_COMPONENT_<compName>_DESCRIPTION` (component -# based installers only) if set, :variable:`CPACK_PACKAGE_DESCRIPTION_FILE` -# if set or "no package description available" -# -# .. variable:: CPACK_RPM_COMPRESSION_TYPE -# -# RPM compression type. -# -# * Mandatory : NO -# * Default : - -# -# May be used to override RPM compression type to be used to build the -# RPM. For example some Linux distribution now default to lzma or xz -# compression whereas older cannot use such RPM. Using this one can enforce -# compression type to be used. -# -# Possible values are: -# -# - lzma -# - xz -# - bzip2 -# - gzip -# -# .. variable:: CPACK_RPM_PACKAGE_AUTOREQ -# CPACK_RPM_<component>_PACKAGE_AUTOREQ -# -# RPM spec autoreq field. -# -# * Mandatory : NO -# * Default : - -# -# May be used to enable (1, yes) or disable (0, no) automatic shared libraries -# dependency detection. Dependencies are added to requires list. -# -# .. note:: -# -# By default automatic dependency detection is enabled by rpm generator. -# -# .. variable:: CPACK_RPM_PACKAGE_AUTOPROV -# CPACK_RPM_<component>_PACKAGE_AUTOPROV -# -# RPM spec autoprov field. -# -# * Mandatory : NO -# * Default : - -# -# May be used to enable (1, yes) or disable (0, no) automatic listing of shared -# libraries that are provided by the package. Shared libraries are added to -# provides list. -# -# .. note:: -# -# By default automatic provides detection is enabled by rpm generator. -# -# .. variable:: CPACK_RPM_PACKAGE_AUTOREQPROV -# CPACK_RPM_<component>_PACKAGE_AUTOREQPROV -# -# RPM spec autoreqprov field. -# -# * Mandatory : NO -# * Default : - -# -# Variable enables/disables autoreq and autoprov at the same time. -# See :variable:`CPACK_RPM_PACKAGE_AUTOREQ` and :variable:`CPACK_RPM_PACKAGE_AUTOPROV` -# for more details. -# -# .. note:: -# -# By default automatic detection feature is enabled by rpm. -# -# .. variable:: CPACK_RPM_PACKAGE_REQUIRES -# CPACK_RPM_<component>_PACKAGE_REQUIRES -# -# RPM spec requires field. -# -# * Mandatory : NO -# * Default : - -# -# May be used to set RPM dependencies (requires). Note that you must enclose -# the complete requires string between quotes, for example:: -# -# set(CPACK_RPM_PACKAGE_REQUIRES "python >= 2.5.0, cmake >= 2.8") -# -# The required package list of an RPM file could be printed with:: -# -# rpm -qp --requires file.rpm -# -# .. variable:: CPACK_RPM_PACKAGE_CONFLICTS -# CPACK_RPM_<component>_PACKAGE_CONFLICTS -# -# RPM spec conflicts field. -# -# * Mandatory : NO -# * Default : - -# -# May be used to set negative RPM dependencies (conflicts). Note that you must -# enclose the complete requires string between quotes, for example:: -# -# set(CPACK_RPM_PACKAGE_CONFLICTS "libxml2") -# -# The conflicting package list of an RPM file could be printed with:: -# -# rpm -qp --conflicts file.rpm -# -# .. variable:: CPACK_RPM_PACKAGE_REQUIRES_PRE -# CPACK_RPM_<component>_PACKAGE_REQUIRES_PRE -# -# RPM spec requires(pre) field. -# -# * Mandatory : NO -# * Default : - -# -# May be used to set RPM preinstall dependencies (requires(pre)). Note that -# you must enclose the complete requires string between quotes, for example:: -# -# set(CPACK_RPM_PACKAGE_REQUIRES_PRE "shadow-utils, initscripts") -# -# .. variable:: CPACK_RPM_PACKAGE_REQUIRES_POST -# CPACK_RPM_<component>_PACKAGE_REQUIRES_POST -# -# RPM spec requires(post) field. -# -# * Mandatory : NO -# * Default : - -# -# May be used to set RPM postinstall dependencies (requires(post)). Note that -# you must enclose the complete requires string between quotes, for example:: -# -# set(CPACK_RPM_PACKAGE_REQUIRES_POST "shadow-utils, initscripts") -# -# .. variable:: CPACK_RPM_PACKAGE_REQUIRES_POSTUN -# CPACK_RPM_<component>_PACKAGE_REQUIRES_POSTUN -# -# RPM spec requires(postun) field. -# -# * Mandatory : NO -# * Default : - -# -# May be used to set RPM postuninstall dependencies (requires(postun)). Note -# that you must enclose the complete requires string between quotes, for -# example:: -# -# set(CPACK_RPM_PACKAGE_REQUIRES_POSTUN "shadow-utils, initscripts") -# -# .. variable:: CPACK_RPM_PACKAGE_REQUIRES_PREUN -# CPACK_RPM_<component>_PACKAGE_REQUIRES_PREUN -# -# RPM spec requires(preun) field. -# -# * Mandatory : NO -# * Default : - -# -# May be used to set RPM preuninstall dependencies (requires(preun)). Note that -# you must enclose the complete requires string between quotes, for example:: -# -# set(CPACK_RPM_PACKAGE_REQUIRES_PREUN "shadow-utils, initscripts") -# -# .. variable:: CPACK_RPM_PACKAGE_SUGGESTS -# CPACK_RPM_<component>_PACKAGE_SUGGESTS -# -# RPM spec suggest field. -# -# * Mandatory : NO -# * Default : - -# -# May be used to set weak RPM dependencies (suggests). Note that you must -# enclose the complete requires string between quotes. -# -# .. variable:: CPACK_RPM_PACKAGE_PROVIDES -# CPACK_RPM_<component>_PACKAGE_PROVIDES -# -# RPM spec provides field. -# -# * Mandatory : NO -# * Default : - -# -# May be used to set RPM dependencies (provides). The provided package list -# of an RPM file could be printed with:: -# -# rpm -qp --provides file.rpm -# -# .. variable:: CPACK_RPM_PACKAGE_OBSOLETES -# CPACK_RPM_<component>_PACKAGE_OBSOLETES -# -# RPM spec obsoletes field. -# -# * Mandatory : NO -# * Default : - -# -# May be used to set RPM packages that are obsoleted by this one. -# -# .. variable:: CPACK_RPM_PACKAGE_RELOCATABLE -# -# build a relocatable RPM. -# -# * Mandatory : NO -# * Default : CPACK_PACKAGE_RELOCATABLE -# -# If this variable is set to TRUE or ON CPackRPM will try -# to build a relocatable RPM package. A relocatable RPM may -# be installed using:: -# -# rpm --prefix or --relocate -# -# in order to install it at an alternate place see rpm(8). Note that -# currently this may fail if :variable:`CPACK_SET_DESTDIR` is set to ``ON``. If -# :variable:`CPACK_SET_DESTDIR` is set then you will get a warning message but -# if there is file installed with absolute path you'll get unexpected behavior. -# -# .. variable:: CPACK_RPM_SPEC_INSTALL_POST -# -# Deprecated - use :variable:`CPACK_RPM_SPEC_MORE_DEFINE` instead. -# -# * Mandatory : NO -# * Default : - -# * Deprecated: YES -# -# May be used to override the ``__spec_install_post`` section within the -# generated spec file. This affects the install step during package creation, -# not during package installation. For adding operations to be performed -# during package installation, use -# :variable:`CPACK_RPM_POST_INSTALL_SCRIPT_FILE` instead. -# -# .. variable:: CPACK_RPM_SPEC_MORE_DEFINE -# -# RPM extended spec definitions lines. -# -# * Mandatory : NO -# * Default : - -# -# May be used to add any ``%define`` lines to the generated spec file. An -# example of its use is to prevent stripping of executables (but note that -# this may also disable other default post install processing):: -# -# set(CPACK_RPM_SPEC_MORE_DEFINE "%define __spec_install_post /bin/true") -# -# .. variable:: CPACK_RPM_PACKAGE_DEBUG -# -# Toggle CPackRPM debug output. -# -# * Mandatory : NO -# * Default : - -# -# May be set when invoking cpack in order to trace debug information -# during CPack RPM run. For example you may launch CPack like this:: -# -# cpack -D CPACK_RPM_PACKAGE_DEBUG=1 -G RPM -# -# .. variable:: CPACK_RPM_USER_BINARY_SPECFILE -# CPACK_RPM_<componentName>_USER_BINARY_SPECFILE -# -# A user provided spec file. -# -# * Mandatory : NO -# * Default : - -# -# May be set by the user in order to specify a USER binary spec file -# to be used by CPackRPM instead of generating the file. -# The specified file will be processed by configure_file( @ONLY). -# -# .. variable:: CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE -# -# Spec file template. -# -# * Mandatory : NO -# * Default : - -# -# If set CPack will generate a template for USER specified binary -# spec file and stop with an error. For example launch CPack like this:: -# -# cpack -D CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE=1 -G RPM -# -# The user may then use this file in order to hand-craft is own -# binary spec file which may be used with -# :variable:`CPACK_RPM_USER_BINARY_SPECFILE`. -# -# .. variable:: CPACK_RPM_PRE_INSTALL_SCRIPT_FILE -# CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE -# -# Path to file containing pre (un)install script. -# -# * Mandatory : NO -# * Default : - -# -# May be used to embed a pre (un)installation script in the spec file. -# The referred script file (or both) will be read and directly -# put after the ``%pre`` or ``%preun`` section -# If :variable:`CPACK_RPM_COMPONENT_INSTALL` is set to ON the (un)install -# script for each component can be overridden with -# ``CPACK_RPM_<COMPONENT>_PRE_INSTALL_SCRIPT_FILE`` and -# ``CPACK_RPM_<COMPONENT>_PRE_UNINSTALL_SCRIPT_FILE``. -# One may verify which scriptlet has been included with:: -# -# rpm -qp --scripts package.rpm -# -# .. variable:: CPACK_RPM_POST_INSTALL_SCRIPT_FILE -# CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE -# -# Path to file containing post (un)install script. -# -# * Mandatory : NO -# * Default : - -# -# May be used to embed a post (un)installation script in the spec file. -# The referred script file (or both) will be read and directly -# put after the ``%post`` or ``%postun`` section. -# If :variable:`CPACK_RPM_COMPONENT_INSTALL` is set to ON the (un)install -# script for each component can be overridden with -# ``CPACK_RPM_<COMPONENT>_POST_INSTALL_SCRIPT_FILE`` and -# ``CPACK_RPM_<COMPONENT>_POST_UNINSTALL_SCRIPT_FILE``. -# One may verify which scriptlet has been included with:: -# -# rpm -qp --scripts package.rpm -# -# .. variable:: CPACK_RPM_USER_FILELIST -# CPACK_RPM_<COMPONENT>_USER_FILELIST -# -# * Mandatory : NO -# * Default : - -# -# May be used to explicitly specify ``%(<directive>)`` file line -# in the spec file. Like ``%config(noreplace)`` or any other directive -# that be found in the ``%files`` section. You can have multiple directives -# per line, as in ``%attr(600,root,root) %config(noreplace)``. Since -# CPackRPM is generating the list of files (and directories) the user -# specified files of the ``CPACK_RPM_<COMPONENT>_USER_FILELIST`` list will -# be removed from the generated list. If referring to directories do -# not add a trailing slash. -# -# .. variable:: CPACK_RPM_CHANGELOG_FILE -# -# RPM changelog file. -# -# * Mandatory : NO -# * Default : - -# -# May be used to embed a changelog in the spec file. -# The referred file will be read and directly put after the ``%changelog`` -# section. -# -# .. variable:: CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST -# -# list of path to be excluded. -# -# * Mandatory : NO -# * Default : /etc /etc/init.d /usr /usr/bin /usr/include /usr/lib -# /usr/libx32 /usr/lib64 /usr/share /usr/share/aclocal -# /usr/share/doc -# -# May be used to exclude path (directories or files) from the auto-generated -# list of paths discovered by CPack RPM. The default value contains a -# reasonable set of values if the variable is not defined by the user. If the -# variable is defined by the user then CPackRPM will NOT any of the default -# path. If you want to add some path to the default list then you can use -# :variable:`CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION` variable. -# -# .. variable:: CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION -# -# additional list of path to be excluded. -# -# * Mandatory : NO -# * Default : - -# -# May be used to add more exclude path (directories or files) from the initial -# default list of excluded paths. See -# :variable:`CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST`. -# -# .. variable:: CPACK_RPM_RELOCATION_PATHS -# -# Packages relocation paths list. -# -# * Mandatory : NO -# * Default : - -# -# May be used to specify more than one relocation path per relocatable RPM. -# Variable contains a list of relocation paths that if relative are prefixed -# by the value of :variable:`CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX` or by the -# value of :variable:`CPACK_PACKAGING_INSTALL_PREFIX` if the component version -# is not provided. -# Variable is not component based as its content can be used to set a different -# path prefix for e.g. binary dir and documentation dir at the same time. -# Only prefixes that are required by a certain component are added to that -# component - component must contain at least one file/directory/symbolic link -# with :variable:`CPACK_RPM_RELOCATION_PATHS` prefix for a certain relocation -# path to be added. Package will not contain any relocation paths if there are -# no files/directories/symbolic links on any of the provided prefix locations. -# Packages that either do not contain any relocation paths or contain -# files/directories/symbolic links that are outside relocation paths print -# out an ``AUTHOR_WARNING`` that RPM will be partially relocatable. -# -# .. variable:: CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX -# -# Per component relocation path install prefix. -# -# * Mandatory : NO -# * Default : CPACK_PACKAGING_INSTALL_PREFIX -# -# May be used to set per component :variable:`CPACK_PACKAGING_INSTALL_PREFIX` -# for relocatable RPM packages. -# -# .. variable:: CPACK_RPM_NO_INSTALL_PREFIX_RELOCATION -# CPACK_RPM_NO_<COMPONENT>_INSTALL_PREFIX_RELOCATION -# -# Removal of default install prefix from relocation paths list. -# -# * Mandatory : NO -# * Default : CPACK_PACKAGING_INSTALL_PREFIX or CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX -# are treated as one of relocation paths -# -# May be used to remove CPACK_PACKAGING_INSTALL_PREFIX and CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX -# from relocatable RPM prefix paths. -# -# .. variable:: CPACK_RPM_ADDITIONAL_MAN_DIRS -# -# * Mandatory : NO -# * Default : - -# -# May be used to set additional man dirs that could potentially be compressed -# by brp-compress RPM macro. Variable content must be a list of regular -# expressions that point to directories containing man files or to man files -# directly. Note that in order to compress man pages a path must also be -# present in brp-compress RPM script and that brp-compress script must be -# added to RPM configuration by the operating system. -# -# Regular expressions that are added by default were taken from brp-compress -# RPM macro: -# -# - /usr/man/man.* -# - /usr/man/.*/man.* -# - /usr/info.* -# - /usr/share/man/man.* -# - /usr/share/man/.*/man.* -# - /usr/share/info.* -# - /usr/kerberos/man.* -# - /usr/X11R6/man/man.* -# - /usr/lib/perl5/man/man.* -# - /usr/share/doc/.*/man/man.* -# - /usr/lib/.*/man/man.* -# -# .. variable:: CPACK_RPM_DEFAULT_USER -# CPACK_RPM_<compName>_DEFAULT_USER -# -# default user ownership of RPM content -# -# * Mandatory : NO -# * Default : root -# -# Value should be user name and not UID. -# Note that <compName> must be in upper-case. -# -# .. variable:: CPACK_RPM_DEFAULT_GROUP -# CPACK_RPM_<compName>_DEFAULT_GROUP -# -# default group ownership of RPM content -# -# * Mandatory : NO -# * Default : root -# -# Value should be group name and not GID. -# Note that <compName> must be in upper-case. -# -# .. variable:: CPACK_RPM_DEFAULT_FILE_PERMISSIONS -# CPACK_RPM_<compName>_DEFAULT_FILE_PERMISSIONS -# -# default permissions used for packaged files -# -# * Mandatory : NO -# * Default : - (system default) -# -# Accepted values are lists with ``PERMISSIONS``. Valid permissions -# are: -# -# - OWNER_READ -# - OWNER_WRITE -# - OWNER_EXECUTE -# - GROUP_READ -# - GROUP_WRITE -# - GROUP_EXECUTE -# - WORLD_READ -# - WORLD_WRITE -# - WORLD_EXECUTE -# -# Note that <compName> must be in upper-case. -# -# .. variable:: CPACK_RPM_DEFAULT_DIR_PERMISSIONS -# CPACK_RPM_<compName>_DEFAULT_DIR_PERMISSIONS -# -# default permissions used for packaged directories -# -# * Mandatory : NO -# * Default : - (system default) -# -# Accepted values are lists with PERMISSIONS. Valid permissions -# are the same as for :variable:`CPACK_RPM_DEFAULT_FILE_PERMISSIONS`. -# Note that <compName> must be in upper-case. -# -# .. variable:: CPACK_RPM_INSTALL_WITH_EXEC -# -# force execute permissions on programs and shared libraries -# -# * Mandatory : NO -# * Default : - (system default) -# -# Force set owner, group and world execute permissions on programs and shared -# libraries. This can be used for creating valid rpm packages on systems such -# as Debian where shared libraries do not have execute permissions set. -# -# .. note:: -# -# Programs and shared libraries without execute permissions are ignored during -# separation of debug symbols from the binary for debuginfo packages. -# -# Packaging of Symbolic Links -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# CPackRPM supports packaging of symbolic links:: -# -# execute_process(COMMAND ${CMAKE_COMMAND} -# -E create_symlink <relative_path_location> <symlink_name>) -# install(FILES ${CMAKE_CURRENT_BINARY_DIR}/<symlink_name> -# DESTINATION <symlink_location> COMPONENT libraries) -# -# Symbolic links will be optimized (paths will be shortened if possible) -# before being added to the package or if multiple relocation paths are -# detected, a post install symlink relocation script will be generated. -# -# Symbolic links may point to locations that are not packaged by the same -# package (either a different component or even not packaged at all) but -# those locations will be treated as if they were a part of the package -# while determining if symlink should be either created or present in a -# post install script - depending on relocation paths. -# -# Symbolic links that point to locations outside packaging path produce a -# warning and are treated as non relocatable permanent symbolic links. -# -# Currently there are a few limitations though: -# -# * For component based packaging component interdependency is not checked -# when processing symbolic links. Symbolic links pointing to content of -# a different component are treated the same way as if pointing to location -# that will not be packaged. -# -# * Symbolic links pointing to a location through one or more intermediate -# symbolic links will not be handled differently - if the intermediate -# symbolic link(s) is also on a relocatable path, relocating it during -# package installation may cause initial symbolic link to point to an -# invalid location. -# -# Packaging of debug information -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# Debuginfo packages contain debug symbols and sources for debugging packaged -# binaries. -# -# Debuginfo RPM packaging has it's own set of variables: -# -# .. variable:: CPACK_RPM_DEBUGINFO_PACKAGE -# CPACK_RPM_<component>_DEBUGINFO_PACKAGE -# -# Enable generation of debuginfo RPM package(s). -# -# * Mandatory : NO -# * Default : OFF -# -# .. note:: -# -# Binaries must contain debug symbols before packaging so use either ``Debug`` -# or ``RelWithDebInfo`` for :variable:`CMAKE_BUILD_TYPE` variable value. -# -# .. note:: -# -# Packages generated from packages without binary files, with binary files but -# without execute permissions or without debug symbols will cause packaging -# termination. -# -# .. variable:: CPACK_BUILD_SOURCE_DIRS -# -# Provides locations of root directories of source files from which binaries -# were built. -# -# * Mandatory : YES if :variable:`CPACK_RPM_DEBUGINFO_PACKAGE` is set -# * Default : - -# -# .. note:: -# -# For CMake project :variable:`CPACK_BUILD_SOURCE_DIRS` is set by default to -# point to :variable:`CMAKE_SOURCE_DIR` and :variable:`CMAKE_BINARY_DIR` paths. -# -# .. note:: -# -# Sources with path prefixes that do not fall under any location provided with -# :variable:`CPACK_BUILD_SOURCE_DIRS` will not be present in debuginfo package. -# -# .. variable:: CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX -# CPACK_RPM_<component>_BUILD_SOURCE_DIRS_PREFIX -# -# Prefix of location where sources will be placed during package installation. -# -# * Mandatory : YES if :variable:`CPACK_RPM_DEBUGINFO_PACKAGE` is set -# * Default : "/usr/src/debug/<CPACK_PACKAGE_FILE_NAME>" and -# for component packaging "/usr/src/debug/<CPACK_PACKAGE_FILE_NAME>-<component>" -# -# .. note:: -# -# Each source path prefix is additionally suffixed by ``src_<index>`` where -# index is index of the path used from :variable:`CPACK_BUILD_SOURCE_DIRS` -# variable. This produces ``<CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX>/src_<index>`` -# replacement path. -# Limitation is that replaced path part must be shorter or of equal -# length than the length of its replacement. If that is not the case either -# :variable:`CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX` variable has to be set to -# a shorter path or source directories must be placed on a longer path. -# -# .. variable:: CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS -# -# Directories containing sources that should be excluded from debuginfo packages. -# -# * Mandatory : NO -# * Default : "/usr /usr/src /usr/src/debug" -# -# Listed paths are owned by other RPM packages and should therefore not be -# deleted on debuginfo package uninstallation. -# -# .. variable:: CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS_ADDITION -# -# Paths that should be appended to :variable:`CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS` -# for exclusion. -# -# * Mandatory : NO -# * Default : - -# -# .. variable:: CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE -# -# Create a single debuginfo package even if components packaging is set. -# -# * Mandatory : NO -# * Default : OFF -# -# When this variable is enabled it produces a single debuginfo package even if -# component packaging is enabled. -# -# When using this feature in combination with components packaging and there is -# more than one component this variable requires :variable:`CPACK_RPM_MAIN_COMPONENT` -# to be set. -# -# .. note:: -# -# If none of the :variable:`CPACK_RPM_<component>_DEBUGINFO_PACKAGE` variables -# is set then :variable:`CPACK_RPM_DEBUGINFO_PACKAGE` is automatically set to -# ``ON`` when :variable:`CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE` is set. -# -# .. variable:: CPACK_RPM_DEBUGINFO_FILE_NAME -# CPACK_RPM_<component>_DEBUGINFO_FILE_NAME -# -# Debuginfo package file name. -# -# * Mandatory : NO -# * Default : rpmbuild tool generated package file name -# -# Alternatively provided debuginfo package file name must end with ``.rpm`` -# suffix and should differ from file names of other generated packages. -# -# Variable may contain ``@cpack_component@`` placeholder which will be -# replaced by component name if component packaging is enabled otherwise it -# deletes the placeholder. -# -# Setting the variable to ``RPM-DEFAULT`` may be used to explicitly set -# filename generation to default. -# -# .. note:: -# -# :variable:`CPACK_RPM_FILE_NAME` also supports rpmbuild tool generated package -# file name - disabled by default but can be enabled by setting the variable to -# ``RPM-DEFAULT``. -# -# Packaging of sources (SRPM) -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# SRPM packaging is enabled by setting :variable:`CPACK_RPM_PACKAGE_SOURCES` -# variable while usually using :variable:`CPACK_INSTALLED_DIRECTORIES` variable -# to provide directory containing CMakeLists.txt and source files. -# -# For CMake projects SRPM package would be produced by executing:: -# -# cpack -G RPM --config ./CPackSourceConfig.cmake -# -# .. note:: -# -# Produced SRPM package is expected to be built with :manual:`cmake(1)` executable -# and packaged with :manual:`cpack(1)` executable so CMakeLists.txt has to be -# located in root source directory and must be able to generate binary rpm -# packages by executing ``cpack -G`` command. The two executables as well as -# rpmbuild must also be present when generating binary rpm packages from the -# produced SRPM package. -# -# Once the SRPM package is generated it can be used to generate binary packages -# by creating a directory structure for rpm generation and executing rpmbuild -# tool:: -# -# mkdir -p build_dir/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} -# rpmbuild --define "_topdir <path_to_build_dir>" --rebuild <SRPM_file_name> -# -# Generated packages will be located in build_dir/RPMS directory or its sub -# directories. -# -# .. note:: -# -# SRPM package internally uses CPack/RPM generator to generate binary packages -# so CMakeScripts.txt can decide during the SRPM to binary rpm generation step -# what content the package(s) should have as well as how they should be packaged -# (monolithic or components). CMake can decide this for e.g. by reading environment -# variables set by the package manager before starting the process of generating -# binary rpm packages. This way a single SRPM package can be used to produce -# different binary rpm packages on different platforms depending on the platform's -# packaging rules. -# -# Source RPM packaging has it's own set of variables: -# -# .. variable:: CPACK_RPM_PACKAGE_SOURCES -# -# Should the content be packaged as a source rpm (default is binary rpm). -# -# * Mandatory : NO -# * Default : OFF -# -# .. note:: -# -# For cmake projects :variable:`CPACK_RPM_PACKAGE_SOURCES` variable is set -# to ``OFF`` in CPackConfig.cmake and ``ON`` in CPackSourceConfig.cmake -# generated files. -# -# .. variable:: CPACK_RPM_SOURCE_PKG_BUILD_PARAMS -# -# Additional command-line parameters provided to :manual:`cmake(1)` executable. -# -# * Mandatory : NO -# * Default : - -# -# .. variable:: CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX -# -# Packaging install prefix that would be provided in :variable:`CPACK_PACKAGING_INSTALL_PREFIX` -# variable for producing binary RPM packages. -# -# * Mandatory : YES -# * Default : "/" -# -# .. VARIABLE:: CPACK_RPM_BUILDREQUIRES -# -# List of source rpm build dependencies. -# -# * Mandatory : NO -# * Default : - -# -# May be used to set source RPM build dependencies (BuildRequires). Note that -# you must enclose the complete build requirements string between quotes, for -# example:: -# -# set(CPACK_RPM_BUILDREQUIRES "python >= 2.5.0, cmake >= 2.8") - # Author: Eric Noulard with the help of Alexander Neundorf. function(get_file_permissions FILE RETURN_VAR) diff --git a/Modules/Internal/CPack/CPackWIX.cmake b/Modules/Internal/CPack/CPackWIX.cmake new file mode 100644 index 0000000000..d1875f23c9 --- /dev/null +++ b/Modules/Internal/CPack/CPackWIX.cmake @@ -0,0 +1,20 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +if(NOT CPACK_WIX_ROOT) + string(REPLACE "\\" "/" CPACK_WIX_ROOT "$ENV{WIX}") +endif() + +find_program(CPACK_WIX_CANDLE_EXECUTABLE candle + PATHS "${CPACK_WIX_ROOT}" PATH_SUFFIXES "bin") + +if(NOT CPACK_WIX_CANDLE_EXECUTABLE) + message(FATAL_ERROR "Could not find the WiX candle executable.") +endif() + +find_program(CPACK_WIX_LIGHT_EXECUTABLE light + PATHS "${CPACK_WIX_ROOT}" PATH_SUFFIXES "bin") + +if(NOT CPACK_WIX_LIGHT_EXECUTABLE) + message(FATAL_ERROR "Could not find the WiX light executable.") +endif() diff --git a/Modules/CPackZIP.cmake b/Modules/Internal/CPack/CPackZIP.cmake index 376520c123..f619de400c 100644 --- a/Modules/CPackZIP.cmake +++ b/Modules/Internal/CPack/CPackZIP.cmake @@ -28,4 +28,3 @@ if(NOT ZIP_EXECUTABLE) set(CPACK_ZIP_NEED_QUOTES FALSE) endif() endif() - |