Browse Source

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 <[email protected]>
Merge-request: !2149
Brad King 7 years ago
parent
commit
44ca3d922c
68 changed files with 3561 additions and 3528 deletions
  1. 35 0
      Help/cpack_gen/archive.rst
  2. 64 0
      Help/cpack_gen/bundle.rst
  3. 23 0
      Help/cpack_gen/cygwin.rst
  4. 529 0
      Help/cpack_gen/deb.rst
  5. 101 0
      Help/cpack_gen/dmg.rst
  6. 138 0
      Help/cpack_gen/freebsd.rst
  7. 335 0
      Help/cpack_gen/ifw.rst
  8. 130 0
      Help/cpack_gen/nsis.rst
  9. 189 0
      Help/cpack_gen/nuget.rst
  10. 23 0
      Help/cpack_gen/packagemaker.rst
  11. 68 0
      Help/cpack_gen/productbuild.rst
  12. 955 0
      Help/cpack_gen/rpm.rst
  13. 284 0
      Help/cpack_gen/wix.rst
  14. 1 0
      Help/index.rst
  15. 23 12
      Help/manual/cmake-modules.7.rst
  16. 28 0
      Help/manual/cpack-generators.7.rst
  17. 4 1
      Help/module/CPackArchive.rst
  18. 4 1
      Help/module/CPackBundle.rst
  19. 4 1
      Help/module/CPackCygwin.rst
  20. 4 1
      Help/module/CPackDMG.rst
  21. 4 1
      Help/module/CPackDeb.rst
  22. 4 1
      Help/module/CPackFreeBSD.rst
  23. 4 1
      Help/module/CPackNSIS.rst
  24. 4 1
      Help/module/CPackNuGet.rst
  25. 4 1
      Help/module/CPackPackageMaker.rst
  26. 4 1
      Help/module/CPackProductBuild.rst
  27. 4 1
      Help/module/CPackRPM.rst
  28. 4 1
      Help/module/CPackWIX.rst
  29. 2 2
      Help/release/3.1.rst
  30. 12 14
      Help/release/3.10.rst
  31. 2 2
      Help/release/3.11.rst
  32. 2 2
      Help/release/3.12.rst
  33. 5 5
      Help/release/3.2.rst
  34. 7 7
      Help/release/3.3.rst
  35. 5 5
      Help/release/3.4.rst
  36. 12 10
      Help/release/3.5.rst
  37. 31 29
      Help/release/3.6.rst
  38. 10 11
      Help/release/3.7.rst
  39. 11 11
      Help/release/3.8.rst
  40. 11 10
      Help/release/3.9.rst
  41. 9 0
      Help/release/dev/cpack-generator-documentation.rst
  42. 0 39
      Modules/CPackArchive.cmake
  43. 0 70
      Modules/CPackBundle.cmake
  44. 0 27
      Modules/CPackCygwin.cmake
  45. 0 105
      Modules/CPackDMG.cmake
  46. 0 248
      Modules/CPackFreeBSD.cmake
  47. 325 671
      Modules/CPackIFW.cmake
  48. 0 138
      Modules/CPackNSIS.cmake
  49. 0 27
      Modules/CPackPackageMaker.cmake
  50. 0 72
      Modules/CPackProductBuild.cmake
  51. 0 307
      Modules/CPackWIX.cmake
  52. 0 531
      Modules/Internal/CPack/CPackDeb.cmake
  53. 107 0
      Modules/Internal/CPack/CPackFreeBSD.cmake
  54. 1 194
      Modules/Internal/CPack/CPackNuGet.cmake
  55. 0 957
      Modules/Internal/CPack/CPackRPM.cmake
  56. 20 0
      Modules/Internal/CPack/CPackWIX.cmake
  57. 0 1
      Modules/Internal/CPack/CPackZIP.cmake
  58. 1 1
      Source/CPack/WiX/cmCPackWIXGenerator.cxx
  59. 2 2
      Source/CPack/cmCPackDebGenerator.cxx
  60. 1 1
      Source/CPack/cmCPackFreeBSDGenerator.cxx
  61. 1 1
      Source/CPack/cmCPackNSISGenerator.cxx
  62. 1 1
      Source/CPack/cmCPackNuGetGenerator.cxx
  63. 2 2
      Source/CPack/cmCPackRPMGenerator.cxx
  64. 1 1
      Source/cmRST.cxx
  65. 1 0
      Tests/CMakeLib/testRST.expect
  66. 1 0
      Tests/CMakeLib/testRST.rst
  67. 3 0
      Utilities/Sphinx/cmake.py
  68. 1 0
      Utilities/Sphinx/create_identifiers.py

+ 35 - 0
Help/cpack_gen/archive.rst

@@ -0,0 +1,35 @@
+CPack Archive Generator
+-----------------------
+
+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.

+ 64 - 0
Help/cpack_gen/bundle.rst

@@ -0,0 +1,64 @@
+CPack Bundle Generator
+----------------------
+
+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.)

+ 23 - 0
Help/cpack_gen/cygwin.rst

@@ -0,0 +1,23 @@
+CPack Cygwin Generator
+----------------------
+
+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.

+ 529 - 0
Help/cpack_gen/deb.rst

@@ -0,0 +1,529 @@
+CPack Deb Generator
+-------------------
+
+The built in (binary) CPack Deb generator (Unix only)
+
+Variables specific to CPack Debian (DEB) generator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The CPack Deb generator may be used to create Deb package using :module:`CPack`.
+The CPack Deb generator is a :module:`CPack` generator thus it uses the
+``CPACK_XXX`` variables used by :module:`CPack`.
+
+The CPack Deb 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.
+
+The CPack Deb generator 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 CPack Deb generator 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 CPack Deb generator 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 the CPack Deb generator 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 the CPack Deb generator 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 the CPack Deb generator 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.

+ 101 - 0
Help/cpack_gen/dmg.rst

@@ -0,0 +1,101 @@
+CPack DMG Generator
+-------------------
+
+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.)

+ 138 - 0
Help/cpack_gen/freebsd.rst

@@ -0,0 +1,138 @@
+CPack FreeBSD Generator
+-----------------------
+
+The built in (binary) CPack FreeBSD (pkg) generator (Unix only)
+
+Variables specific to CPack FreeBSD (pkg) generator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The CPack FreeBSD generator 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`.
+
+The CPack FreeBSD generator 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
+:cpack_gen:`CPack Deb Generator`. It also tries to re-use RPM packaging
+information when Debian does not specify.
+
+The CPack FreeBSD generator should work on any host with libpkg installed. The
+packages it produces are specific to the host architecture and ABI.
+
+The CPack FreeBSD generator sets package-metadata through
+:code:`CPACK_FREEBSD_XXX` variables. The CPack FreeBSD generator, unlike the
+CPack Deb generator, 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. [email protected]) 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

+ 335 - 0
Help/cpack_gen/ifw.rst

@@ -0,0 +1,335 @@
+CPack IFW Generator
+-------------------
+
+See :module:`CPackIFW` for details on the CPackIFW module.
+
+.. _QtIFW: http://doc.qt.io/qtinstallerframework/index.html
+
+
+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.
+
+
+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

+ 130 - 0
Help/cpack_gen/nsis.rst

@@ -0,0 +1,130 @@
+CPack NSIS Generator
+--------------------
+
+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")

+ 189 - 0
Help/cpack_gen/nuget.rst

@@ -0,0 +1,189 @@
+CPack NuGet Generator
+---------------------
+
+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
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The CPack NuGet generator may be used to create NuGet packages using
+:module:`CPack`. The CPack NuGet generator is a :module:`CPack` generator thus
+it uses the ``CPACK_XXX`` variables used by :module:`CPack`.
+
+The CPack NuGet generator 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 CPack NuGet generator specific variables:
+
+.. variable:: CPACK_NUGET_COMPONENT_INSTALL
+
+ Enable component packaging for CPack NuGet generator
+
+ * 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 CPack NuGet generator.
+
+ * 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

+ 23 - 0
Help/cpack_gen/packagemaker.rst

@@ -0,0 +1,23 @@
+CPack PackageMaker Generator
+----------------------------
+
+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.

+ 68 - 0
Help/cpack_gen/productbuild.rst

@@ -0,0 +1,68 @@
+CPack productbuild Generator
+----------------------------
+
+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.

+ 955 - 0
Help/cpack_gen/rpm.rst

@@ -0,0 +1,955 @@
+CPack RPM Generator
+-------------------
+
+The built in (binary) CPack RPM generator (Unix only)
+
+Variables specific to CPack RPM generator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The CPack RPM generator may be used to create RPM packages using :module:`CPack`.
+The CPack RPM generator is a :module:`CPack` generator thus it uses the
+``CPACK_XXX`` variables used by :module:`CPack`.
+
+The CPack RPM generator 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 CPack RPM generator 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 CPack RPM generator specific variables:
+
+.. variable:: CPACK_RPM_COMPONENT_INSTALL
+
+ Enable component packaging for CPack RPM generator
+
+ * 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, the CPack RPM generator 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 CPack RPM generator 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 the CPack RPM generator 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
+ the CPack RPM generator 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 the CPack RPM generator 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
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The CPack RPM generator 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")

+ 284 - 0
Help/cpack_gen/wix.rst

@@ -0,0 +1,284 @@
+CPack WiX Generator
+-------------------
+
+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.

+ 1 - 0
Help/index.rst

@@ -41,6 +41,7 @@ Reference Manuals
    /manual/cmake-server.7
    /manual/cmake-toolchains.7
    /manual/cmake-variables.7
+   /manual/cpack-generators.7
 
 .. only:: html or text
 

+ 23 - 12
Help/manual/cmake-modules.7.rst

@@ -54,22 +54,10 @@ All Modules
    /module/CMakePrintSystemInformation
    /module/CMakePushCheckState
    /module/CMakeVerifyManifest
-   /module/CPackArchive
-   /module/CPackBundle
    /module/CPackComponent
-   /module/CPackCygwin
-   /module/CPackDeb
-   /module/CPackDMG
-   /module/CPackFreeBSD
    /module/CPackIFW
    /module/CPackIFWConfigureFile
-   /module/CPackNSIS
-   /module/CPackNuGet
-   /module/CPackPackageMaker
-   /module/CPackProductBuild
-   /module/CPackRPM
    /module/CPack
-   /module/CPackWIX
    /module/CSharpUtilities
    /module/CTest
    /module/CTestCoverageCollectGCOV
@@ -263,3 +251,26 @@ All Modules
    /module/Use_wxWindows
    /module/WriteBasicConfigVersionFile
    /module/WriteCompilerDetectionHeader
+
+Legacy CPack Modules
+====================
+
+These modules used to be mistakenly exposed to the user, and have been moved
+out of user visibility. They are for CPack internal use, and should never be
+used directly.
+
+.. toctree::
+   :maxdepth: 1
+
+   /module/CPackArchive
+   /module/CPackBundle
+   /module/CPackCygwin
+   /module/CPackDeb
+   /module/CPackDMG
+   /module/CPackFreeBSD
+   /module/CPackNSIS
+   /module/CPackNuGet
+   /module/CPackPackageMaker
+   /module/CPackProductBuild
+   /module/CPackRPM
+   /module/CPackWIX

+ 28 - 0
Help/manual/cpack-generators.7.rst

@@ -0,0 +1,28 @@
+.. cmake-manual-description: CPack Generator Reference
+
+cpack-generators(7)
+*******************
+
+.. only:: html
+
+   .. contents::
+
+Generators
+==========
+
+.. toctree::
+   :maxdepth: 1
+
+   /cpack_gen/archive
+   /cpack_gen/bundle
+   /cpack_gen/cygwin
+   /cpack_gen/deb
+   /cpack_gen/dmg
+   /cpack_gen/freebsd
+   /cpack_gen/ifw
+   /cpack_gen/nsis
+   /cpack_gen/nuget
+   /cpack_gen/packagemaker
+   /cpack_gen/productbuild
+   /cpack_gen/rpm
+   /cpack_gen/wix

+ 4 - 1
Help/module/CPackArchive.rst

@@ -1 +1,4 @@
-.. cmake-module:: ../../Modules/CPackArchive.cmake
+CPackArchive
+------------
+
+The documentation for the CPack Archive generator has moved here: :cpack_gen:`CPack Archive Generator`

+ 4 - 1
Help/module/CPackBundle.rst

@@ -1 +1,4 @@
-.. cmake-module:: ../../Modules/CPackBundle.cmake
+CPackBundle
+-----------
+
+The documentation for the CPack Bundle generator has moved here: :cpack_gen:`CPack Bundle Generator`

+ 4 - 1
Help/module/CPackCygwin.rst

@@ -1 +1,4 @@
-.. cmake-module:: ../../Modules/CPackCygwin.cmake
+CPackCygwin
+-----------
+
+The documentation for the CPack Cygwin generator has moved here: :cpack_gen:`CPack Cygwin Generator`

+ 4 - 1
Help/module/CPackDMG.rst

@@ -1 +1,4 @@
-.. cmake-module:: ../../Modules/CPackDMG.cmake
+CPackDMG
+--------
+
+The documentation for the CPack DMG generator has moved here: :cpack_gen:`CPack DMG Generator`

+ 4 - 1
Help/module/CPackDeb.rst

@@ -1 +1,4 @@
-.. cmake-module:: ../../Modules/CPackDeb.cmake
+CPackDeb
+--------
+
+The documentation for the CPack Deb generator has moved here: :cpack_gen:`CPack Deb Generator`

+ 4 - 1
Help/module/CPackFreeBSD.rst

@@ -1 +1,4 @@
-.. cmake-module:: ../../Modules/CPackFreeBSD.cmake
+CPackFreeBSD
+------------
+
+The documentation for the CPack FreeBSD generator has moved here: :cpack_gen:`CPack FreeBSD Generator`

+ 4 - 1
Help/module/CPackNSIS.rst

@@ -1 +1,4 @@
-.. cmake-module:: ../../Modules/CPackNSIS.cmake
+CPackNSIS
+---------
+
+The documentation for the CPack NSIS generator has moved here: :cpack_gen:`CPack NSIS Generator`

+ 4 - 1
Help/module/CPackNuGet.rst

@@ -1 +1,4 @@
-.. cmake-module:: ../../Modules/CPackNuGet.cmake
+CPackNuGet
+----------
+
+The documentation for the CPack NuGet generator has moved here: :cpack_gen:`CPack NuGet Generator`

+ 4 - 1
Help/module/CPackPackageMaker.rst

@@ -1 +1,4 @@
-.. cmake-module:: ../../Modules/CPackPackageMaker.cmake
+CPackPackageMaker
+-----------------
+
+The documentation for the CPack PackageMaker generator has moved here: :cpack_gen:`CPack PackageMaker Generator`

+ 4 - 1
Help/module/CPackProductBuild.rst

@@ -1 +1,4 @@
-.. cmake-module:: ../../Modules/CPackProductBuild.cmake
+CPackProductBuild
+-----------------
+
+The documentation for the CPack productbuild generator has moved here: :cpack_gen:`CPack productbuild Generator`

+ 4 - 1
Help/module/CPackRPM.rst

@@ -1 +1,4 @@
-.. cmake-module:: ../../Modules/CPackRPM.cmake
+CPackRPM
+--------
+
+The documentation for the CPack RPM generator has moved here: :cpack_gen:`CPack RPM Generator`

+ 4 - 1
Help/module/CPackWIX.rst

@@ -1 +1,4 @@
-.. cmake-module:: ../../Modules/CPackWIX.cmake
+CPackWIX
+--------
+
+The documentation for the CPack WiX generator has moved here: :cpack_gen:`CPack WiX Generator`

+ 2 - 2
Help/release/3.1.rst

@@ -289,12 +289,12 @@ CPack
 -----
 
 * :manual:`cpack(1)` gained an ``IFW`` generator to package using
-  Qt Framework Installer tools.  See the :module:`CPackIFW` module.
+  Qt Framework Installer tools.  See the :cpack_gen:`CPack IFW Generator`.
 
 * :manual:`cpack(1)` gained ``7Z`` and ``TXZ`` generators supporting
   lzma-compressed archives.
 
-* The :module:`CPackDeb` module learned a new
+* The :cpack_gen:`CPack Deb Generator` learned a new
   :variable:`CPACK_DEBIAN_COMPRESSION_TYPE` variable to set the
   tarball compression type.
 

+ 12 - 14
Help/release/3.10.rst

@@ -184,37 +184,35 @@ CTest
 CPack
 -----
 
-* CPack gained a ``FREEBSD`` generator for FreeBSD ``pkg(8)``, configured
-  by the :module:`CPackFreeBSD` module.
+* A :cpack_gen:`CPack FreeBSD Generator` was added for FreeBSD ``pkg(8)``.
 
-* The CPack ``DEB`` generator, configured by the :module:`CPackDeb` module,
-  was enabled on Windows.  While not fully featured (due to the lack of
-  external UNIX tools) this will allow building basic cross-platform Debian
-  packages.
+* The :cpack_gen:`CPack Deb Generator` was enabled on Windows.  While not
+  fully featured (due to the lack of external UNIX tools) this will allow
+  building basic cross-platform Debian packages.
 
-* The :module:`CPackDeb` module learned to set package release version in
-  ``Version`` info property.
+* The :cpack_gen:`CPack Deb Generator` learned to set package release
+  version in ``Version`` info property.
   See the :variable:`CPACK_DEBIAN_PACKAGE_RELEASE` variable.
 
-* The :module:`CPackDeb` module learned more strict package version checking
-  that complies with Debian rules.
+* The :cpack_gen:`CPack Deb Generator` learned more strict package
+  version checking that complies with Debian rules.
 
 * The :module:`CPackIFW` module :command:`cpack_ifw_configure_component` and
   :command:`cpack_ifw_configure_component_group` commands gained a new
   ``REPLACES`` and ``CHECKABLE`` options.
 
-* The :module:`CPackIFW` module gained new
+* The :cpack_gen:`CPack IFW Generator` gained new
   :variable:`CPACK_IFW_PACKAGE_FILE_EXTENSION` variable to customize
   target binary format.
 
-* The :module:`CPackIFW` module gained new
+* The :cpack_gen:`CPack IFW Generator` gained new
   :variable:`CPACK_IFW_REPOSITORIES_DIRECTORIES` variable to specify
   additional repositories dirs that will be used to resolve and
   repack dependent components. This feature is only available when
   using QtIFW 3.1 or later.
 
-* Modules :module:`CPackRPM` and :module:`CPackDeb` learned to set package epoch
-  version.
+* The :cpack_gen:`CPack RPM Generator` and :cpack_gen:`CPack Deb Generator`
+  learned to set the package epoch version.
   See :variable:`CPACK_RPM_PACKAGE_EPOCH` and
   :variable:`CPACK_DEBIAN_PACKAGE_EPOCH` variables.
 

+ 2 - 2
Help/release/3.11.rst

@@ -200,11 +200,11 @@ CPack
 
 * :manual:`cpack(1)` gained ``--trace`` and ``--trace-expand`` options.
 
-* The :module:`CPackIFW` module gained new
+* The :cpack_gen:`CPack IFW Generator` gained new
   :variable:`CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR` variable to control
   if the target directory should not be deleted when uninstalling.
 
-* The :module:`CPackRPM` module learned to enable enforcing of execute
+* The :cpack_gen:`CPack RPM Generator` learned to enable enforcing of execute
   privileges on programs and shared libraries.
   See :variable:`CPACK_RPM_INSTALL_WITH_EXEC` variable.
 

+ 2 - 2
Help/release/3.12.rst

@@ -237,8 +237,8 @@ CPack
   :variable:`CMAKE_PROJECT_VERSION_PATCH`
   to initialize corresponding CPack variables.
 
-* :manual:`cpack(1)` gained basic support for `NuGet`_.
-  See the :module:`CPackNuGet` module.
+* A :cpack_gen:`CPack NuGet Generator` was was added with basic
+  support for `NuGet`_.
 
 .. _NuGet: https://docs.microsoft.com/en-us/nuget/what-is-nuget
 

+ 5 - 5
Help/release/3.2.rst

@@ -156,27 +156,27 @@ CTest
 CPack
 -----
 
-* The :module:`CPackRPM` module learned options to set per-component
+* The :cpack_gen:`CPack RPM Generator` learned options to set per-component
   descriptions and summaries.  See the
   :variable:`CPACK_RPM_<component>_PACKAGE_DESCRIPTION` and
   :variable:`CPACK_RPM_<component>_PACKAGE_SUMMARY` variables.
 
-* The :module:`CPackRPM` module learned options to specify
+* The :cpack_gen:`CPack RPM Generator` learned options to specify
   requirements for pre- and post-install scripts.  See the
   :variable:`CPACK_RPM_PACKAGE_REQUIRES_PRE` and
   :variable:`CPACK_RPM_PACKAGE_REQUIRES_POST` variables.
 
-* The :module:`CPackRPM` module learned options to specify
+* The :cpack_gen:`CPack RPM Generator` learned options to specify
   requirements for pre- and post-uninstall scripts.  See the
   :variable:`CPACK_RPM_PACKAGE_REQUIRES_PREUN` and
   :variable:`CPACK_RPM_PACKAGE_REQUIRES_POSTUN` variables.
 
-* The :module:`CPackRPM` module learned a new
+* The :cpack_gen:`CPack RPM Generator` learned a new
   :variable:`CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX` variable to
   specify a component-specific value to use instead of
   :variable:`CPACK_PACKAGING_INSTALL_PREFIX`.
 
-* The :module:`CPackRPM` module learned a new
+* The :cpack_gen:`CPack RPM Generator` learned a new
   :variable:`CPACK_RPM_RELOCATION_PATHS` variable to
   specify multiple relocation prefixes for a single rpm package.
 

+ 7 - 7
Help/release/3.3.rst

@@ -169,26 +169,26 @@ CTest
 CPack
 -----
 
-* The :manual:`cpack(1)` ``IFW`` generator and the :module:`CPackIFW`
-  module learned to support Qt Framework Installer 2.0 tools.
+* The :cpack_gen:`CPack IFW Generator` learned to support
+  Qt Framework Installer 2.0 tools.
 
-* The :module:`CPackDeb` module learned a new
+* The :cpack_gen:`CPack Deb Generator` learned a new
   :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_SHLIBDEPS`
   variable to specify per-component use of ``dpkg-shlibdeps``.
 
-* The :module:`CPackDeb` module learned a new
+* The :cpack_gen:`CPack Deb Generator` learned a new
   :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_DEPENDS`
   option to specify per-component dependencies.
 
-* The :module:`CPackRPM` module learned to package symbolic links
+* The :cpack_gen:`CPack RPM Generator` learned to package symbolic links
   more cleanly and now supports directory symlinks with recent
   ``rpmbuild`` versions.
 
-* The :module:`CPackRPM` module learned a new
+* The :cpack_gen:`CPack RPM Generator` learned a new
   :variable:`CPACK_RPM_ADDITIONAL_MAN_DIRS` variable to specify
   directories containing man pages for the brp-compress RPM macro.
 
-* The :module:`CPackRPM` module learned a new
+* The :cpack_gen:`CPack RPM Generator` learned a new
   :variable:`CPACK_RPM_<component>_PACKAGE_ARCHITECTURE` variable
   to specify a component-specific package architecture.
 

+ 5 - 5
Help/release/3.4.rst

@@ -197,7 +197,7 @@ CTest
 CPack
 -----
 
-* The :module:`CPackDeb` module learned to set package dependencies
+* The :cpack_gen:`CPack Deb Generator` learned to set package dependencies
   per component.  See variables:
 
   * :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_BREAKS`
@@ -249,11 +249,11 @@ Other Changes
   :module:`CheckSymbolExists`, and :module:`FindThreads` modules learned to
   work in environments where only CXX is enabled.
 
-* The :module:`CPackDeb` module now correctly excludes symlinks during package
-  checksum calculation.
+* The :cpack_gen:`CPack Deb Generator` now correctly excludes symlinks
+  during package checksum calculation.
 
-* The :module:`CPackDeb` no longer uses fakeroot and system tar program for
-  packaging.
+* The :cpack_gen:`CPack Deb Generator` no longer uses fakeroot and
+  system tar program for packaging.
 
 * The :module:`CPack` module no longer mangles settings with CMake-special
   characters when they're used as defaults for other settings. The macro

+ 12 - 10
Help/release/3.5.rst

@@ -120,31 +120,33 @@ Platforms
 CPack
 -----
 
-* The :module:`CPackDMG` module learned new variable to specify AppleScript
-  file run to customize appearance of ``DragNDrop`` installer folder,
-  including background image setting using supplied PNG or multi-resolution
-  TIFF file.  See the :variable:`CPACK_DMG_DS_STORE_SETUP_SCRIPT` and
+* The :cpack_gen:`CPack DMG Generator` learned new variable to
+  specify AppleScript file run to customize appearance of ``DragNDrop``
+  installer folder, including background image setting using supplied
+  PNG or multi-resolution TIFF file.
+  See the :variable:`CPACK_DMG_DS_STORE_SETUP_SCRIPT` and
   :variable:`CPACK_DMG_BACKGROUND_IMAGE` variables.
 
-* The :module:`CPackDeb` module learned to set the optional config
+* The :cpack_gen:`CPack Deb Generator` learned to set the optional config
   file ``Source`` field using a monolithic or per-component variable.
   See :variable:`CPACK_DEBIAN_PACKAGE_SOURCE`.
 
-* The :module:`CPackDeb` module learned to set Package, Section
+* The :cpack_gen:`CPack Deb Generator` learned to set Package, Section
   and Priority control fields per-component.
   See variables :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_SECTION` and
   :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_PRIORITY`.
 
-* The :module:`CPack DragNDrop generator <CPackDMG>` learned to add
+* The :cpack_gen:`CPack DMG Generator` learned to add
   multi-lingual SLAs to a DMG which is presented to the user when they try to
   mount the DMG.  See the :variable:`CPACK_DMG_SLA_LANGUAGES` and
   :variable:`CPACK_DMG_SLA_DIR` variables for details.
 
-* The :module:`CPackNSIS` module learned new variables to add bitmaps to the
-  installer.  See the :variable:`CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP`
+* The :cpack_gen:`CPack NSIS Generator` learned new variables to
+  add bitmaps to the installer.
+  See the :variable:`CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP`
   and :variable:`CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP` variables.
 
-* The :module:`CPackRPM` module learned to set Name and Group
+* The :cpack_gen:`CPack RPM Generator` learned to set Name and Group
   control fields per-component.
   See :variable:`CPACK_RPM_<component>_PACKAGE_NAME`
   and :variable:`CPACK_RPM_<component>_PACKAGE_GROUP`.

+ 31 - 29
Help/release/3.6.rst

@@ -165,25 +165,25 @@ CTest
 CPack
 -----
 
-* The :module:`CPackDeb` module learned how to handle ``$ORIGIN``
+* The :cpack_gen:`CPack Deb Generator` learned how to handle ``$ORIGIN``
   in ``CMAKE_INSTALL_RPATH`` when :variable:`CPACK_DEBIAN_PACKAGE_SHLIBDEPS`
   is used for dependency auto detection.
 
-* The :module:`CPackDeb` module learned how to generate ``DEBIAN/shlibs``
-  contorl file when package contains shared libraries.
+* The :cpack_gen:`CPack Deb Generator` learned how to generate
+  ``DEBIAN/shlibs`` contorl file when package contains shared libraries.
 
-* The :module:`CPackDeb` module learned how to generate ``DEBIAN/postinst`` and
-  ``DEBIAN/postrm`` files if the package installs libraries in
-  ldconfig-controlled locations (e.g. ``/lib/``, ``/usr/lib/``).
+* The :cpack_gen:`CPack Deb Generator` learned how to generate
+  ``DEBIAN/postinst`` and ``DEBIAN/postrm`` files if the package installs
+  libraries in ldconfig-controlled locations (e.g. ``/lib/``, ``/usr/lib/``).
 
-* The :module:`CPackDeb` module learned how to generate dependencies between
-  Debian packages if multi-component setup is used and
+* The :cpack_gen:`CPack Deb Generator` learned how to generate dependencies
+  between Debian packages if multi-component setup is used and
   :variable:`CPACK_COMPONENT_<compName>_DEPENDS` variables are set.
   For backward compatibility this feature is disabled by default.
   See :variable:`CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS`.
 
-* The :module:`CPackDeb` module learned how to set custom package file names
-  including how to generate properly-named Debian packages::
+* The :cpack_gen:`CPack Deb Generator` learned how to set custom package
+  file names including how to generate properly-named Debian packages::
 
     <PackageName>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb
 
@@ -191,42 +191,44 @@ CPack
   :variable:`CPACK_DEBIAN_FILE_NAME` and
   :variable:`CPACK_DEBIAN_<COMPONENT>_FILE_NAME`.
 
-* The :module:`CPackDeb` module learned how to set the package release number
-  (``DebianRevisionNumber`` in package file name when used in combination with
-  ``DEB-DEFAULT`` value set by :variable:`CPACK_DEBIAN_FILE_NAME`).  See
-  :variable:`CPACK_DEBIAN_PACKAGE_RELEASE`.
+* The :cpack_gen:`CPack Deb Generator` learned how to set the package
+  release number (``DebianRevisionNumber`` in package file name when
+  used in combination with ``DEB-DEFAULT`` value set by
+  :variable:`CPACK_DEBIAN_FILE_NAME`).
+  See :variable:`CPACK_DEBIAN_PACKAGE_RELEASE`.
 
-* The :module:`CPackDeb` module learned how to set the package architecture
-  per-component.  See :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_ARCHITECTURE`.
+* The :cpack_gen:`CPack Deb Generator` learned how to set the package
+  architecture per-component.
+  See :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_ARCHITECTURE`.
 
-* The :module:`CPackDMG` module learned a new option to tell the CPack
-  ``DragNDrop`` generaor to skip the ``/Applications`` symlink.
+* The :cpack_gen:`CPack DMG Generator` learned a new option to skip the
+  ``/Applications`` symlink.
   See the :variable:`CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK` variable.
 
 * The :module:`CPackIFW` module gained a new
   :command:`cpack_ifw_update_repository` command to update a QtIFW-specific
   repository from a remote repository.
 
-* The :module:`CPackRPM` module learned how to set RPM ``dist`` tag as part of
-  RPM ``Release:`` tag when enabled (mandatory on some Linux distributions for
-  e.g. on Fedora).
+* The :cpack_gen:`CPack RPM Generator` learned how to set RPM ``dist`` tag
+  as part of RPM ``Release:`` tag when enabled (mandatory on some Linux
+  distributions for e.g. on Fedora).
   See :variable:`CPACK_RPM_PACKAGE_RELEASE_DIST`.
 
-* The :module:`CPackRPM` module learned how to set default values for owning
-  user/group and file/directory permissions of package content.
+* The :cpack_gen:`CPack RPM Generator` learned how to set default values
+  for owning user/group and file/directory permissions of package content.
   See :variable:`CPACK_RPM_DEFAULT_USER`, :variable:`CPACK_RPM_DEFAULT_GROUP`,
   :variable:`CPACK_RPM_DEFAULT_FILE_PERMISSIONS`,
   :variable:`CPACK_RPM_DEFAULT_DIR_PERMISSIONS` and their per component
   counterparts.
 
-* The :module:`CPackRPM` module learned how to set user defined package file
-  names, how to specify that rpmbuild should decide on file name format as
-  well as handling of multiple rpm packages generated by a single user defined
-  spec file.
+* The :cpack_gen:`CPack RPM Generator` learned how to set user defined
+  package file names, how to specify that rpmbuild should decide on file
+  name format as well as handling of multiple rpm packages generated by a
+  single user defined spec file.
   See :variable:`CPACK_RPM_PACKAGE_NAME` and
   :variable:`CPACK_RPM_<component>_PACKAGE_NAME`.
 
-* The :module:`CPackRPM` module learned how to correctly handle symlinks
+* The :cpack_gen:`CPack RPM Generator` learned how to correctly handle symlinks
   that are pointing outside generated packages.
 
 Other
@@ -296,7 +298,7 @@ Other Changes
   Input variables of the old case will be honored if provided, and output
   variables of the old case are always provided.
 
-* The :module:`CPackRPM` module now supports upper cased component
+* The :cpack_gen:`CPack RPM Generator` now supports upper cased component
   names in per component CPackRPM specific variables.
   E.g. component named ``foo`` now expects component specific
   variable to be ``CPACK_RPM_FOO_PACKAGE_NAME`` while before

+ 10 - 11
Help/release/3.7.rst

@@ -221,13 +221,12 @@ CTest
 CPack
 -----
 
-* CPack gained a ``productbuild`` generator on OS X, configured by
-  the :module:`CPackProductBuild` module.
+* CPack gained a :cpack_gen:`CPack productbuild Generator` on OS X.
 
 * CPack gained a new :variable:`CPACK_PACKAGE_CHECKSUM` variable to
   enable generation of a checksum file for each package file.
 
-* The :module:`CPackDeb` module learned to support long file names
+* The :cpack_gen:`CPack Deb Generator` learned to support long file names
   when archive format is set to GNU tar.
   See :variable:`CPACK_DEBIAN_ARCHIVE_TYPE`
 
@@ -240,32 +239,32 @@ CPack
   ``USER_INTERFACES`` option to add a list of additional pages to the IFW
   installer.
 
-* The :module:`CPackRPM` module learned to generate debuginfo
+* The :cpack_gen:`CPack RPM Generator` learned to generate debuginfo
   packages on demand. See :variable:`CPACK_RPM_DEBUGINFO_PACKAGE`
   and its per component version.
 
-* The :module:`CPackRPM` module learned to generate source rpm
+* The :cpack_gen:`CPack RPM Generator` learned to generate source rpm
   (SRPM) packages on demand. See :variable:`CPACK_RPM_PACKAGE_SOURCES`,
   :variable:`CPACK_RPM_SOURCE_PKG_BUILD_PARAMS` and
   :variable:`CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX`.
 
-* The CPack NSIS generator now supports
+* The :cpack_gen:`CPack NSIS Generator` now supports
   :variable:`CPACK_NSIS_<compName>_INSTALL_DIRECTORY`.
   This can be used to set component specific installation directories.
 
-* The CPack WIX generator now supports
+* The :cpack_gen:`CPack WiX Generator` now supports
   :variable:`CPACK_WIX_SKIP_PROGRAM_FOLDER` to allow specification
   of a custom absolute installation prefix outside
   of the ProgramFiles folders.
 
-* The CPack WIX generator now supports
+* The :cpack_gen:`CPack WiX Generator` now supports
   :variable:`CPACK_COMPONENT_<compName>_DISABLED`.
   This can be used to deselect a component from being installed by default.
 
-* The CPack WIX generator now supports :variable:`CPACK_WIX_PATCH_FILE`
-  fragments for Feature elements.
+* The :cpack_gen:`CPack WiX Generator` now supports
+  :variable:`CPACK_WIX_PATCH_FILE` fragments for Feature elements.
 
-* The CPack WIX generator now supports
+* The :cpack_gen:`CPack WiX Generator` now supports
   :variable:`CPACK_WIX_ROOT_FEATURE_TITLE` and
   :variable:`CPACK_WIX_ROOT_FEATURE_DESCRIPTION` to allow the specification
   of a custom title and description for the root feature element.

+ 11 - 11
Help/release/3.8.rst

@@ -307,7 +307,7 @@ CPack
   option now is deprecated and will be removed in a future version of CMake.
   Please use new ``SORTING_PRIORITY`` option instead.
 
-* The :module:`CPackIFW` module gained new
+* The :cpack_gen:`CPack IFW Generator` gained new
   :variable:`CPACK_IFW_PACKAGE_WATERMARK`,
   :variable:`CPACK_IFW_PACKAGE_BANNER`,
   :variable:`CPACK_IFW_PACKAGE_BACKGROUND`,
@@ -317,26 +317,26 @@ CPack
   :variable:`CPACK_IFW_PACKAGE_TITLE_COLOR`
   variables to customize a QtIFW installer look.
 
-* The :module:`CPackProductBuild` module gained options to sign packages.
+* The :cpack_gen:`CPack productbuild Generator` gained options to sign packages.
   See the variables :variable:`CPACK_PRODUCTBUILD_IDENTITY_NAME`,
   :variable:`CPACK_PRODUCTBUILD_KEYCHAIN_PATH`,
   :variable:`CPACK_PKGBUILD_IDENTITY_NAME`, and
   :variable:`CPACK_PKGBUILD_KEYCHAIN_PATH`.
 
-* The :module:`CPackRPM` module learned to omit tags that are not supported by
-  provided ``rpmbuild`` tool. If unsupported tags are set they are ignored
-  and a developer warning is printed out.
+* The :cpack_gen:`CPack RPM Generator` learned to omit tags that are not
+  supported by provided ``rpmbuild`` tool. If unsupported tags are set they
+  are ignored and a developer warning is printed out.
 
-* The :module:`CPackRPM` module learned to generate main component package
-  which forces generation of a rpm for defined component without component
-  suffix in filename and package name.
+* The :cpack_gen:`CPack RPM Generator` learned to generate main component
+  package which forces generation of a rpm for defined component without
+  component suffix in filename and package name.
   See :variable:`CPACK_RPM_MAIN_COMPONENT` variable.
 
-* The :module:`CPackRPM` module learned to generate a single ``debuginfo``
-  package on demand even if components packaging is used.
+* The :cpack_gen:`CPack RPM Generator` learned to generate a single
+  ``debuginfo`` package on demand even if components packaging is used.
   See :variable:`CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE` variable.
 
-* The :module:`CPackRPM` module learned to support
+* The :cpack_gen:`CPack RPM Generator` learned to support
   multiple directives per file when using
   :variable:`CPACK_RPM_USER_FILELIST` variable.
 

+ 11 - 10
Help/release/3.9.rst

@@ -206,7 +206,7 @@ CTest
 CPack
 -----
 
-* The :module:`CPackArchive` module learned to modify the filename
+* The :cpack_gen:`CPack Archive Generator` learned to modify the filename
   per-component.  See the :variable:`CPACK_ARCHIVE_FILE_NAME` variable and
   its per-component version :variable:`CPACK_ARCHIVE_<component>_FILE_NAME`.
 
@@ -220,23 +220,24 @@ CPack
   internationalization support for ``DISPLAY_NAME`` and ``DESCRIPTION``
   options.
 
-* The :module:`CPackIFW` module learned the new hint :variable:`CPACK_IFW_ROOT`
-  variable for finding the QtIFW tool suite installed in a non-standard place.
+* The :cpack_gen:`CPack IFW Generator` learned the new hint
+  :variable:`CPACK_IFW_ROOT` variable for finding the QtIFW tool suite
+  installed in a non-standard place.
 
-* The :module:`CPackProductBuild` module gained a new
+* The :cpack_gen:`CPack productbuild Generator` gained a new
   :variable:`CPACK_PRODUCTBUILD_RESOURCES_DIR` variable to
   specify resources to be copied into the ``Resources``
   directory.
 
-* The :module:`CPackRPM` module learned to modify the ``debuginfo`` package
-  name.  See the :variable:`CPACK_RPM_DEBUGINFO_FILE_NAME` variable.
+* The :cpack_gen:`CPack RPM Generator` learned to modify the ``debuginfo``
+  package name.  See the :variable:`CPACK_RPM_DEBUGINFO_FILE_NAME` variable.
 
-* The :module:`CPackWIX` module patching system now has the ability to set
-  additional attributes.  This can be done by specifying attributes with
-  the ``CPackWiXFragment`` XML tag after the ``Id`` attribute.
+* The :cpack_gen:`CPack WiX Generator` patching system now has the
+  ability to set additional attributes.  This can be done by specifying
+  attributes with the ``CPackWiXFragment`` XML tag after the ``Id`` attribute.
   See the :variable:`CPACK_WIX_PATCH_FILE` variable.
 
-* The CPack WIX generator implemented a new
+* The :cpack_gen:`CPack WiX Generator` implemented a new
   :variable:`CPACK_WIX_ROOT_FOLDER_ID` variable which allows
   using a custom root folder ID instead of the default
   ``ProgramFilesFolder`` / ``ProgramFiles64Folder``.

+ 9 - 0
Help/release/dev/cpack-generator-documentation.rst

@@ -0,0 +1,9 @@
+cpack-generator-documentation
+-----------------------------
+
+* The CPack generators have been moved into their own separate section in the
+  documentation, rather than having the documentation in their internal
+  implementation modules.
+* These internal implementation modules are also no longer available to scripts
+  that may have been incorrectly including them, because they should never have
+  been available in the first place.

+ 0 - 39
Modules/CPackArchive.cmake

@@ -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.

+ 0 - 70
Modules/CPackBundle.cmake

@@ -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

+ 0 - 27
Modules/CPackCygwin.cmake

@@ -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.

+ 0 - 105
Modules/CPackDMG.cmake

@@ -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.)

+ 0 - 248
Modules/CPackFreeBSD.cmake

@@ -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. [email protected]) 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")

+ 325 - 671
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

+ 0 - 138
Modules/CPackNSIS.cmake

@@ -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...

+ 0 - 27
Modules/CPackPackageMaker.cmake

@@ -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.

+ 0 - 72
Modules/CPackProductBuild.cmake

@@ -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.

+ 0 - 307
Modules/CPackWIX.cmake

@@ -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()

+ 0 - 531
Modules/CPackDeb.cmake → 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
 #

+ 107 - 0
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")

+ 1 - 194
Modules/CPackNuGet.cmake → 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
       )

+ 0 - 957
Modules/CPackRPM.cmake → 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)

+ 20 - 0
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()

+ 0 - 1
Modules/CPackZIP.cmake → Modules/Internal/CPack/CPackZIP.cmake

@@ -28,4 +28,3 @@ if(NOT ZIP_EXECUTABLE)
     set(CPACK_ZIP_NEED_QUOTES FALSE)
   endif()
 endif()
-

+ 1 - 1
Source/CPack/WiX/cmCPackWIXGenerator.cxx

@@ -148,7 +148,7 @@ int cmCPackWIXGenerator::PackageFiles()
 
 bool cmCPackWIXGenerator::InitializeWiXConfiguration()
 {
-  if (!ReadListFile("CPackWIX.cmake")) {
+  if (!ReadListFile("Internal/CPack/CPackWIX.cmake")) {
     cmCPackLogger(cmCPackLog::LOG_ERROR,
                   "Error while executing CPackWIX.cmake" << std::endl);
     return false;

+ 2 - 2
Source/CPack/cmCPackDebGenerator.cxx

@@ -61,7 +61,7 @@ int cmCPackDebGenerator::PackageOnePack(std::string const& initialTopLevel,
   component_path += packageName;
   this->SetOption("CPACK_DEB_PACKAGE_COMPONENT_PART_PATH",
                   component_path.c_str());
-  if (!this->ReadListFile("CPackDeb.cmake")) {
+  if (!this->ReadListFile("Internal/CPack/CPackDeb.cmake")) {
     cmCPackLogger(cmCPackLog::LOG_ERROR,
                   "Error while execution CPackDeb.cmake" << std::endl);
     retval = 0;
@@ -179,7 +179,7 @@ int cmCPackDebGenerator::PackageComponentsAllInOne(
     this->SetOption("CPACK_DEB_PACKAGE_COMPONENT_PART_PATH",
                     component_path.c_str());
   }
-  if (!this->ReadListFile("CPackDeb.cmake")) {
+  if (!this->ReadListFile("Internal/CPack/CPackDeb.cmake")) {
     cmCPackLogger(cmCPackLog::LOG_ERROR,
                   "Error while execution CPackDeb.cmake" << std::endl);
     retval = 0;

+ 1 - 1
Source/CPack/cmCPackFreeBSDGenerator.cxx

@@ -298,7 +298,7 @@ static bool has_suffix(const std::string& str, const std::string& suffix)
 
 int cmCPackFreeBSDGenerator::PackageFiles()
 {
-  if (!this->ReadListFile("CPackFreeBSD.cmake")) {
+  if (!this->ReadListFile("Internal/CPack/CPackFreeBSD.cmake")) {
     cmCPackLogger(cmCPackLog::LOG_ERROR,
                   "Error while execution CPackFreeBSD.cmake" << std::endl);
     return 0;

+ 1 - 1
Source/CPack/cmCPackNSISGenerator.cxx

@@ -703,7 +703,7 @@ std::string cmCPackNSISGenerator::CreateComponentDescription(
 
     // Find a ZIP program
     if (!this->IsSet("ZIP_EXECUTABLE")) {
-      this->ReadListFile("CPackZIP.cmake");
+      this->ReadListFile("Internal/CPack/CPackZIP.cmake");
 
       if (!this->IsSet("ZIP_EXECUTABLE")) {
         cmCPackLogger(cmCPackLog::LOG_ERROR,

+ 1 - 1
Source/CPack/cmCPackNuGetGenerator.cxx

@@ -49,7 +49,7 @@ int cmCPackNuGetGenerator::PackageFiles()
     this->SetOption("CPACK_NUGET_ORDINAL_MONOLITIC", "TRUE");
   }
 
-  auto retval = this->ReadListFile("CPackNuGet.cmake");
+  auto retval = this->ReadListFile("Internal/CPack/CPackNuGet.cmake");
   if (retval) {
     AddGeneratedPackageNames();
   } else {

+ 2 - 2
Source/CPack/cmCPackRPMGenerator.cxx

@@ -89,7 +89,7 @@ int cmCPackRPMGenerator::PackageOnePack(std::string const& initialToplevel,
   component_path += packageName;
   this->SetOption("CPACK_RPM_PACKAGE_COMPONENT_PART_PATH",
                   component_path.c_str());
-  if (!this->ReadListFile("CPackRPM.cmake")) {
+  if (!this->ReadListFile("Internal/CPack/CPackRPM.cmake")) {
     cmCPackLogger(cmCPackLog::LOG_ERROR,
                   "Error while execution CPackRPM.cmake" << std::endl);
     retval = 0;
@@ -385,7 +385,7 @@ int cmCPackRPMGenerator::PackageComponentsAllInOne(
                     component_path.c_str());
   }
 
-  if (this->ReadListFile("CPackRPM.cmake")) {
+  if (this->ReadListFile("Internal/CPack/CPackRPM.cmake")) {
     AddGeneratedPackageNames();
   } else {
     cmCPackLogger(cmCPackLog::LOG_ERROR,

+ 1 - 1
Source/cmRST.cxx

@@ -34,7 +34,7 @@ cmRST::cmRST(std::ostream& os, std::string const& docroot)
   , NoteDirective("^.. note::[ \t]*(.*)$")
   , ModuleRST("^#\\[(=*)\\[\\.rst:$")
   , CMakeRole("(:cmake)?:("
-              "command|generator|variable|envvar|module|policy|"
+              "command|cpack_gen|generator|variable|envvar|module|policy|"
               "prop_cache|prop_dir|prop_gbl|prop_inst|prop_sf|"
               "prop_test|prop_tgt|"
               "manual"

+ 1 - 0
Tests/CMakeLib/testRST.expect

@@ -19,6 +19,7 @@ Variable ``VARIABLE_<PLACEHOLDER>`` with trailing placeholder and target.
 Environment variable ``SOME_ENV_VAR``.
 Environment variable ``some env var`` with space and target.
 Generator ``Some Generator`` with space.
+Generator ``Some Generator`` with space.
 Inline literal ``~!@#$%^&*( )_+-=\\[]{}'":;,<>.?/``.
 Inline link Link Text.
 Inline link Link Text <With \-escaped Brackets>.

+ 1 - 0
Tests/CMakeLib/testRST.rst

@@ -26,6 +26,7 @@ Variable :variable:`VARIABLE_<PLACEHOLDER> <target>` with trailing placeholder a
 Environment variable :envvar:`SOME_ENV_VAR`.
 Environment variable :envvar:`some env var <SOME_ENV_VAR>` with space and target.
 Generator :generator:`Some Generator` with space.
+Generator :cpack_gen:`Some Generator` with space.
 Inline literal ``~!@#$%^&*( )_+-=\\[]{}'":;,<>.?/``.
 Inline link `Link Text <ExternalDest>`_.
 Inline link `Link Text \<With \\-escaped Brackets\> <ExternalDest>`_.

+ 3 - 0
Utilities/Sphinx/cmake.py

@@ -144,6 +144,7 @@ class _cmake_index_entry:
 
 _cmake_index_objs = {
     'command':    _cmake_index_entry('command'),
+    'cpack_gen':  _cmake_index_entry('cpack generator'),
     'envvar':     _cmake_index_entry('envvar'),
     'generator':  _cmake_index_entry('generator'),
     'manual':     _cmake_index_entry('manual'),
@@ -325,6 +326,7 @@ class CMakeDomain(Domain):
     label = 'CMake'
     object_types = {
         'command':    ObjType('command',    'command'),
+        'cpack_gen':  ObjType('cpack_gen',  'cpack_gen'),
         'envvar':     ObjType('envvar',     'envvar'),
         'generator':  ObjType('generator',  'generator'),
         'variable':   ObjType('variable',   'variable'),
@@ -358,6 +360,7 @@ class CMakeDomain(Domain):
     }
     roles = {
         'command':    CMakeXRefRole(fix_parens = True, lowercase = True),
+        'cpack_gen':  CMakeXRefRole(),
         'envvar':     CMakeXRefRole(),
         'generator':  CMakeXRefRole(),
         'variable':   CMakeXRefRole(),

+ 1 - 0
Utilities/Sphinx/create_identifiers.py

@@ -21,6 +21,7 @@ newlines = []
 for line in lines:
 
   mapping = (("command", "command"),
+             ("cpack generator", "cpack_gen"),
              ("envvar", "envvar"),
              ("variable", "variable"),
              ("generator", "generator"),