| # Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| # file Copyright.txt or https://cmake.org/licensing for details. | |
| #[=======================================================================[.rst: | |
| CPackIFW | |
| -------- | |
| .. versionadded:: 3.1 | |
| This module looks for the location of the command-line utilities supplied with the | |
| `Qt Installer Framework <http://doc.qt.io/qtinstallerframework/index.html>`_ | |
| (QtIFW). | |
| The module also defines several commands to control the behavior of the | |
| :cpack_gen:`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`` | |
| .. versionadded:: 3.6 | |
| if set, then the package manager stays disabled until that | |
| component is updated. | |
| ``VIRTUAL`` | |
| .. versionadded:: 3.8 | |
| 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`` | |
| .. versionadded:: 3.8 | |
| if set, then the component must always be installed. | |
| It is a equivalent of the ``REQUIRED`` option from the | |
| :command:`cpack_add_component` command. | |
| ``REQUIRES_ADMIN_RIGHTS`` | |
| .. versionadded:: 3.8 | |
| 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`` | |
| .. versionadded:: 3.8 | |
| set to rewrite original name configured by | |
| :command:`cpack_add_component` command. | |
| ``DESCRIPTION`` | |
| .. versionadded:: 3.8 | |
| set to rewrite original description configured by | |
| :command:`cpack_add_component` command. | |
| ``UPDATE_TEXT`` | |
| .. versionadded:: 3.8 | |
| 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`` | |
| .. versionadded:: 3.8 | |
| keep empty to auto generate. | |
| ``SCRIPT`` | |
| is a relative or absolute path to operations script | |
| for this component. | |
| ``SORTING_PRIORITY`` | |
| .. versionadded:: 3.8 | |
| is priority of the component in the tree. | |
| ``PRIORITY`` | |
| .. deprecated:: 3.8 | |
| Old name for ``SORTING_PRIORITY``. | |
| ``DEPENDS``, ``DEPENDENCIES`` | |
| .. versionadded:: 3.8 | |
| list of dependency component or component group identifiers in | |
| QtIFW style. | |
| .. versionadded:: 3.21 | |
| Component or group names listed as dependencies may contain hyphens. | |
| This requires QtIFW 3.1 or later. | |
| ``AUTO_DEPEND_ON`` | |
| .. versionadded:: 3.8 | |
| 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`` | |
| .. versionadded:: 3.8 | |
| 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`` | |
| .. versionadded:: 3.7 | |
| is a list of <file_path> ('.ui' files) representing pages to load. | |
| ``TRANSLATIONS`` | |
| .. versionadded:: 3.8 | |
| is a list of <file_path> ('.qm' files) representing translations to load. | |
| ``REPLACES`` | |
| .. versionadded:: 3.10 | |
| list of identifiers of component or component group to replace. | |
| ``CHECKABLE`` | |
| .. versionadded:: 3.10 | |
| 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`` | |
| .. versionadded:: 3.8 | |
| if set, then the group will be hidden from the installer. | |
| Note that setting this on a root component does not work. | |
| ``FORCED_INSTALLATION`` | |
| .. versionadded:: 3.8 | |
| if set, then the group must always be installed. | |
| ``REQUIRES_ADMIN_RIGHTS`` | |
| .. versionadded:: 3.8 | |
| 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`` | |
| .. versionadded:: 3.8 | |
| set to rewrite original name configured by | |
| :command:`cpack_add_component_group` command. | |
| ``DESCRIPTION`` | |
| .. versionadded:: 3.8 | |
| set to rewrite original description configured by | |
| :command:`cpack_add_component_group` command. | |
| ``UPDATE_TEXT`` | |
| .. versionadded:: 3.8 | |
| 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`` | |
| .. versionadded:: 3.8 | |
| keep empty to auto generate. | |
| ``SCRIPT`` | |
| is a relative or absolute path to operations script | |
| for this component group. | |
| ``SORTING_PRIORITY`` | |
| is priority of the component group in the tree. | |
| ``PRIORITY`` | |
| .. deprecated:: 3.8 | |
| Old name for ``SORTING_PRIORITY``. | |
| ``DEPENDS``, ``DEPENDENCIES`` | |
| .. versionadded:: 3.8 | |
| list of dependency component or component group identifiers in | |
| QtIFW style. | |
| .. versionadded:: 3.21 | |
| Component or group names listed as dependencies may contain hyphens. | |
| This requires QtIFW 3.1 or later. | |
| ``AUTO_DEPEND_ON`` | |
| .. versionadded:: 3.8 | |
| 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`` | |
| .. versionadded:: 3.8 | |
| 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`` | |
| .. versionadded:: 3.7 | |
| is a list of <file_path> ('.ui' files) representing pages to load. | |
| ``TRANSLATIONS`` | |
| .. versionadded:: 3.8 | |
| is a list of <file_path> ('.qm' files) representing translations to load. | |
| ``REPLACES`` | |
| .. versionadded:: 3.10 | |
| list of identifiers of component or component group to replace. | |
| ``CHECKABLE`` | |
| .. versionadded:: 3.10 | |
| 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 | |
| .. versionadded:: 3.6 | |
| 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 | |
| .. versionadded:: 3.7 | |
| 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 | |
| #============================================================================= | |
| # Default path | |
| foreach(_CPACK_IFW_PATH_VAR "CPACK_IFW_ROOT" "QTIFWDIR" "QTDIR") | |
| if(DEFINED ${_CPACK_IFW_PATH_VAR} | |
| AND NOT "${${_CPACK_IFW_PATH_VAR}}" STREQUAL "") | |
| list(APPEND _CPACK_IFW_PATHS "${${_CPACK_IFW_PATH_VAR}}") | |
| endif() | |
| if(NOT "$ENV{${_CPACK_IFW_PATH_VAR}}" STREQUAL "") | |
| list(APPEND _CPACK_IFW_PATHS "$ENV{${_CPACK_IFW_PATH_VAR}}") | |
| endif() | |
| endforeach() | |
| if(WIN32) | |
| list(APPEND _CPACK_IFW_PATHS | |
| "$ENV{HOMEDRIVE}/Qt" | |
| "C:/Qt") | |
| else() | |
| list(APPEND _CPACK_IFW_PATHS | |
| "$ENV{HOME}/Qt" | |
| "/opt/Qt") | |
| endif() | |
| list(REMOVE_DUPLICATES _CPACK_IFW_PATHS) | |
| set(_CPACK_IFW_PREFIXES | |
| # QtSDK | |
| "Tools/QtInstallerFramework/" | |
| # Second branch | |
| "QtIFW" | |
| # First branch | |
| "QtIFW-") | |
| set(_CPACK_IFW_VERSIONS | |
| "4.3" | |
| "4.2" | |
| "4.1" | |
| "4.0" | |
| "3.2" | |
| "3.2.0" | |
| "3.1" | |
| "3.1.0" | |
| "3.0" | |
| "3.0.0" | |
| "2.3" | |
| "2.3.0" | |
| "2.2" | |
| "2.2.0" | |
| "2.1" | |
| "2.1.0" | |
| "2.0" | |
| "2.0.5" | |
| "2.0.3" | |
| "2.0.2" | |
| "2.0.1" | |
| "2.0.0" | |
| "1.6" | |
| "1.6.0" | |
| "1.5" | |
| "1.5.0" | |
| "1.4" | |
| "1.4.0" | |
| "1.3" | |
| "1.3.0") | |
| set(_CPACK_IFW_SUFFIXES "bin") | |
| foreach(_CPACK_IFW_PREFIX ${_CPACK_IFW_PREFIXES}) | |
| foreach(_CPACK_IFW_VERSION ${_CPACK_IFW_VERSIONS}) | |
| list(APPEND | |
| _CPACK_IFW_SUFFIXES "${_CPACK_IFW_PREFIX}${_CPACK_IFW_VERSION}/bin") | |
| endforeach() | |
| endforeach() | |
| # Look for 'binarycreator' | |
| find_program(CPACK_IFW_BINARYCREATOR_EXECUTABLE | |
| NAMES binarycreator | |
| PATHS ${_CPACK_IFW_PATHS} | |
| PATH_SUFFIXES ${_CPACK_IFW_SUFFIXES} | |
| DOC "QtIFW binarycreator command line client") | |
| mark_as_advanced(CPACK_IFW_BINARYCREATOR_EXECUTABLE) | |
| # Look for 'repogen' | |
| find_program(CPACK_IFW_REPOGEN_EXECUTABLE | |
| NAMES repogen | |
| PATHS ${_CPACK_IFW_PATHS} | |
| PATH_SUFFIXES ${_CPACK_IFW_SUFFIXES} | |
| DOC "QtIFW repogen command line client" | |
| ) | |
| mark_as_advanced(CPACK_IFW_REPOGEN_EXECUTABLE) | |
| # Look for 'installerbase' | |
| find_program(CPACK_IFW_INSTALLERBASE_EXECUTABLE | |
| NAMES installerbase | |
| PATHS ${_CPACK_IFW_PATHS} | |
| PATH_SUFFIXES ${_CPACK_IFW_SUFFIXES} | |
| DOC "QtIFW installer executable base" | |
| ) | |
| mark_as_advanced(CPACK_IFW_INSTALLERBASE_EXECUTABLE) | |
| # Look for 'devtool' (appeared in the second branch) | |
| find_program(CPACK_IFW_DEVTOOL_EXECUTABLE | |
| NAMES devtool | |
| PATHS ${_CPACK_IFW_PATHS} | |
| PATH_SUFFIXES ${_CPACK_IFW_SUFFIXES} | |
| DOC "QtIFW devtool command line client" | |
| ) | |
| mark_as_advanced(CPACK_IFW_DEVTOOL_EXECUTABLE) | |
| # Look for 'archivegen' | |
| find_program(CPACK_IFW_ARCHIVEGEN_EXECUTABLE | |
| NAMES archivegen | |
| PATHS ${_CPACK_IFW_PATHS} | |
| PATH_SUFFIXES ${_CPACK_IFW_SUFFIXES} | |
| DOC "QtIFW archivegen command line client" | |
| ) | |
| mark_as_advanced(CPACK_IFW_ARCHIVEGEN_EXECUTABLE) | |
| # | |
| ## Next code is included only once | |
| # | |
| if(NOT CPackIFW_CMake_INCLUDED) | |
| set(CPackIFW_CMake_INCLUDED 1) | |
| #============================================================================= | |
| # Framework version | |
| #============================================================================= | |
| set(CPACK_IFW_FRAMEWORK_VERSION_FORCED "" | |
| CACHE STRING "The forced version of used QtIFW tools") | |
| mark_as_advanced(CPACK_IFW_FRAMEWORK_VERSION_FORCED) | |
| set(CPACK_IFW_FRAMEWORK_VERSION_TIMEOUT 1 | |
| CACHE STRING "The timeout to return QtIFW framework version string from \"installerbase\" executable") | |
| mark_as_advanced(CPACK_IFW_FRAMEWORK_VERSION_TIMEOUT) | |
| if(CPACK_IFW_INSTALLERBASE_EXECUTABLE AND NOT CPACK_IFW_FRAMEWORK_VERSION_FORCED) | |
| set(CPACK_IFW_FRAMEWORK_VERSION) | |
| # Invoke version from "installerbase" executable | |
| foreach(_ifw_version_argument --version --framework-version) | |
| if(NOT CPACK_IFW_FRAMEWORK_VERSION) | |
| execute_process(COMMAND | |
| "${CPACK_IFW_INSTALLERBASE_EXECUTABLE}" ${_ifw_version_argument} | |
| TIMEOUT ${CPACK_IFW_FRAMEWORK_VERSION_TIMEOUT} | |
| RESULT_VARIABLE CPACK_IFW_FRAMEWORK_VERSION_RESULT | |
| OUTPUT_VARIABLE CPACK_IFW_FRAMEWORK_VERSION_OUTPUT | |
| OUTPUT_STRIP_TRAILING_WHITESPACE | |
| ENCODING UTF8) | |
| if(NOT CPACK_IFW_FRAMEWORK_VERSION_RESULT AND CPACK_IFW_FRAMEWORK_VERSION_OUTPUT) | |
| string(REGEX MATCH "[0-9]+(\\.[0-9]+)*" | |
| CPACK_IFW_FRAMEWORK_VERSION "${CPACK_IFW_FRAMEWORK_VERSION_OUTPUT}") | |
| if(CPACK_IFW_FRAMEWORK_VERSION) | |
| if("${_ifw_version_argument}" STREQUAL "--framework-version") | |
| set(CPACK_IFW_FRAMEWORK_VERSION_SOURCE "INSTALLERBASE_FRAMEWORK_VERSION") | |
| elseif("${_ifw_version_argument}" STREQUAL "--version") | |
| set(CPACK_IFW_FRAMEWORK_VERSION_SOURCE "INSTALLERBASE_FRAMEWORK_VERSION") | |
| endif() | |
| endif() | |
| endif() | |
| endif() | |
| endforeach() | |
| # Finally try to get version from executable path | |
| if(NOT CPACK_IFW_FRAMEWORK_VERSION) | |
| string(REGEX MATCH "[0-9]+(\\.[0-9]+)*" | |
| CPACK_IFW_FRAMEWORK_VERSION "${CPACK_IFW_INSTALLERBASE_EXECUTABLE}") | |
| if(CPACK_IFW_FRAMEWORK_VERSION) | |
| set(CPACK_IFW_FRAMEWORK_VERSION_SOURCE "INSTALLERBASE_PATH") | |
| endif() | |
| endif() | |
| elseif(CPACK_IFW_FRAMEWORK_VERSION_FORCED) | |
| set(CPACK_IFW_FRAMEWORK_VERSION ${CPACK_IFW_FRAMEWORK_VERSION_FORCED}) | |
| set(CPACK_IFW_FRAMEWORK_VERSION_SOURCE "FORCED") | |
| endif() | |
| if(CPACK_IFW_VERBOSE) | |
| if(CPACK_IFW_FRAMEWORK_VERSION AND CPACK_IFW_FRAMEWORK_VERSION_FORCED) | |
| message(STATUS "Found QtIFW ${CPACK_IFW_FRAMEWORK_VERSION} (forced) version") | |
| elseif(CPACK_IFW_FRAMEWORK_VERSION) | |
| message(STATUS "Found QtIFW ${CPACK_IFW_FRAMEWORK_VERSION} version") | |
| endif() | |
| endif() | |
| if(CPACK_IFW_INSTALLERBASE_EXECUTABLE AND NOT CPACK_IFW_FRAMEWORK_VERSION) | |
| message(WARNING "Could not detect QtIFW tools version. Set used version to variable \"CPACK_IFW_FRAMEWORK_VERSION_FORCED\" manually.") | |
| endif() | |
| #============================================================================= | |
| # Macro definition | |
| #============================================================================= | |
| # Macro definition based on CPackComponent | |
| if(NOT CPackComponent_CMake_INCLUDED) | |
| include(CPackComponent) | |
| endif() | |
| # Resolve full filename for script file | |
| macro(_cpack_ifw_resolve_script _variable) | |
| set(_ifw_script_macro ${_variable}) | |
| set(_ifw_script_file ${${_ifw_script_macro}}) | |
| if(DEFINED ${_ifw_script_macro}) | |
| get_filename_component(${_ifw_script_macro} ${_ifw_script_file} ABSOLUTE) | |
| set(_ifw_script_file ${${_ifw_script_macro}}) | |
| if(NOT EXISTS ${_ifw_script_file}) | |
| message(WARNING "CPack IFW: script file \"${_ifw_script_file}\" does not exist") | |
| set(${_ifw_script_macro}) | |
| endif() | |
| endif() | |
| endmacro() | |
| # Resolve full path to license file | |
| macro(_cpack_ifw_resolve_lisenses _variable) | |
| if(${_variable}) | |
| set(_ifw_license_file FALSE) | |
| set(_ifw_licenses_fix) | |
| foreach(_ifw_licenses_arg ${${_variable}}) | |
| if(_ifw_license_file) | |
| get_filename_component(_ifw_licenses_arg "${_ifw_licenses_arg}" ABSOLUTE) | |
| set(_ifw_license_file FALSE) | |
| else() | |
| set(_ifw_license_file TRUE) | |
| endif() | |
| list(APPEND _ifw_licenses_fix "${_ifw_licenses_arg}") | |
| endforeach(_ifw_licenses_arg) | |
| set(${_variable} "${_ifw_licenses_fix}") | |
| endif() | |
| endmacro() | |
| # Resolve full path to a list of provided files | |
| macro(_cpack_ifw_resolve_file_list _variable) | |
| if(${_variable}) | |
| set(_ifw_list_fix) | |
| foreach(_ifw_file_arg ${${_variable}}) | |
| get_filename_component(_ifw_file_arg "${_ifw_file_arg}" ABSOLUTE) | |
| if(EXISTS ${_ifw_file_arg}) | |
| list(APPEND _ifw_list_fix "${_ifw_file_arg}") | |
| else() | |
| message(WARNING "CPack IFW: page file \"${_ifw_file_arg}\" does not exist. Skipping") | |
| endif() | |
| endforeach(_ifw_file_arg) | |
| set(${_variable} "${_ifw_list_fix}") | |
| endif() | |
| endmacro() | |
| # Macro for configure component | |
| macro(cpack_ifw_configure_component compname) | |
| string(TOUPPER ${compname} _CPACK_IFWCOMP_UNAME) | |
| set(_IFW_OPT COMMON ESSENTIAL VIRTUAL FORCED_INSTALLATION REQUIRES_ADMIN_RIGHTS) | |
| set(_IFW_ARGS NAME VERSION RELEASE_DATE SCRIPT PRIORITY SORTING_PRIORITY UPDATE_TEXT DEFAULT CHECKABLE) | |
| set(_IFW_MULTI_ARGS DISPLAY_NAME DESCRIPTION DEPENDS DEPENDENCIES AUTO_DEPEND_ON LICENSES USER_INTERFACES TRANSLATIONS REPLACES) | |
| cmake_parse_arguments(CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME} "${_IFW_OPT}" "${_IFW_ARGS}" "${_IFW_MULTI_ARGS}" ${ARGN}) | |
| _cpack_ifw_resolve_script(CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_SCRIPT) | |
| _cpack_ifw_resolve_lisenses(CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_LICENSES) | |
| _cpack_ifw_resolve_file_list(CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_USER_INTERFACES) | |
| _cpack_ifw_resolve_file_list(CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_TRANSLATIONS) | |
| set(_CPACK_IFWCOMP_STR "\n# Configuration for IFW component \"${compname}\"\n") | |
| foreach(_IFW_ARG_NAME ${_IFW_OPT}) | |
| cpack_append_option_set_command( | |
| CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_${_IFW_ARG_NAME} | |
| _CPACK_IFWCOMP_STR) | |
| endforeach() | |
| foreach(_IFW_ARG_NAME ${_IFW_ARGS}) | |
| cpack_append_string_variable_set_command( | |
| CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_${_IFW_ARG_NAME} | |
| _CPACK_IFWCOMP_STR) | |
| endforeach() | |
| foreach(_IFW_ARG_NAME ${_IFW_MULTI_ARGS}) | |
| cpack_append_list_variable_set_command( | |
| CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_${_IFW_ARG_NAME} | |
| _CPACK_IFWCOMP_STR) | |
| endforeach() | |
| if(CPack_CMake_INCLUDED) | |
| file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_IFWCOMP_STR}") | |
| endif() | |
| endmacro() | |
| # Macro for configure group | |
| macro(cpack_ifw_configure_component_group grpname) | |
| string(TOUPPER ${grpname} _CPACK_IFWGRP_UNAME) | |
| set(_IFW_OPT VIRTUAL FORCED_INSTALLATION REQUIRES_ADMIN_RIGHTS) | |
| set(_IFW_ARGS NAME VERSION RELEASE_DATE SCRIPT PRIORITY SORTING_PRIORITY UPDATE_TEXT DEFAULT CHECKABLE) | |
| set(_IFW_MULTI_ARGS DISPLAY_NAME DESCRIPTION DEPENDS DEPENDENCIES AUTO_DEPEND_ON LICENSES USER_INTERFACES TRANSLATIONS REPLACES) | |
| cmake_parse_arguments(CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME} "${_IFW_OPT}" "${_IFW_ARGS}" "${_IFW_MULTI_ARGS}" ${ARGN}) | |
| _cpack_ifw_resolve_script(CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_SCRIPT) | |
| _cpack_ifw_resolve_lisenses(CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_LICENSES) | |
| _cpack_ifw_resolve_file_list(CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_USER_INTERFACES) | |
| _cpack_ifw_resolve_file_list(CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_TRANSLATIONS) | |
| set(_CPACK_IFWGRP_STR "\n# Configuration for IFW component group \"${grpname}\"\n") | |
| foreach(_IFW_ARG_NAME ${_IFW_OPT}) | |
| cpack_append_option_set_command( | |
| CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_${_IFW_ARG_NAME} | |
| _CPACK_IFWGRP_STR) | |
| endforeach() | |
| foreach(_IFW_ARG_NAME ${_IFW_ARGS}) | |
| cpack_append_string_variable_set_command( | |
| CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_${_IFW_ARG_NAME} | |
| _CPACK_IFWGRP_STR) | |
| endforeach() | |
| foreach(_IFW_ARG_NAME ${_IFW_MULTI_ARGS}) | |
| cpack_append_list_variable_set_command( | |
| CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_${_IFW_ARG_NAME} | |
| _CPACK_IFWGRP_STR) | |
| endforeach() | |
| if(CPack_CMake_INCLUDED) | |
| file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_IFWGRP_STR}") | |
| endif() | |
| endmacro() | |
| # Macro for adding repository | |
| macro(cpack_ifw_add_repository reponame) | |
| string(TOUPPER ${reponame} _CPACK_IFWREPO_UNAME) | |
| set(_IFW_OPT DISABLED) | |
| set(_IFW_ARGS URL USERNAME PASSWORD DISPLAY_NAME) | |
| set(_IFW_MULTI_ARGS) | |
| cmake_parse_arguments(CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME} "${_IFW_OPT}" "${_IFW_ARGS}" "${_IFW_MULTI_ARGS}" ${ARGN}) | |
| set(_CPACK_IFWREPO_STR "\n# Configuration for IFW repository \"${reponame}\"\n") | |
| foreach(_IFW_ARG_NAME ${_IFW_OPT}) | |
| cpack_append_option_set_command( | |
| CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME} | |
| _CPACK_IFWREPO_STR) | |
| endforeach() | |
| foreach(_IFW_ARG_NAME ${_IFW_ARGS}) | |
| cpack_append_string_variable_set_command( | |
| CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME} | |
| _CPACK_IFWREPO_STR) | |
| endforeach() | |
| foreach(_IFW_ARG_NAME ${_IFW_MULTI_ARGS}) | |
| cpack_append_variable_set_command( | |
| CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME} | |
| _CPACK_IFWREPO_STR) | |
| endforeach() | |
| list(APPEND CPACK_IFW_REPOSITORIES_ALL ${reponame}) | |
| string(APPEND _CPACK_IFWREPO_STR "list(APPEND CPACK_IFW_REPOSITORIES_ALL ${reponame})\n") | |
| if(CPack_CMake_INCLUDED) | |
| file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_IFWREPO_STR}") | |
| endif() | |
| endmacro() | |
| # Macro for updating repository | |
| macro(cpack_ifw_update_repository reponame) | |
| string(TOUPPER ${reponame} _CPACK_IFWREPO_UNAME) | |
| set(_IFW_OPT ADD REMOVE REPLACE DISABLED) | |
| set(_IFW_ARGS URL OLD_URL NEW_URL USERNAME PASSWORD DISPLAY_NAME) | |
| set(_IFW_MULTI_ARGS) | |
| cmake_parse_arguments(CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME} "${_IFW_OPT}" "${_IFW_ARGS}" "${_IFW_MULTI_ARGS}" ${ARGN}) | |
| set(_CPACK_IFWREPO_STR "\n# Configuration for IFW repository \"${reponame}\" update\n") | |
| foreach(_IFW_ARG_NAME ${_IFW_OPT}) | |
| cpack_append_option_set_command( | |
| CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME} | |
| _CPACK_IFWREPO_STR) | |
| endforeach() | |
| foreach(_IFW_ARG_NAME ${_IFW_ARGS}) | |
| cpack_append_string_variable_set_command( | |
| CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME} | |
| _CPACK_IFWREPO_STR) | |
| endforeach() | |
| foreach(_IFW_ARG_NAME ${_IFW_MULTI_ARGS}) | |
| cpack_append_variable_set_command( | |
| CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME} | |
| _CPACK_IFWREPO_STR) | |
| endforeach() | |
| if(CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_ADD | |
| OR CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_REMOVE | |
| OR CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_REPLACE) | |
| list(APPEND CPACK_IFW_REPOSITORIES_ALL ${reponame}) | |
| string(APPEND _CPACK_IFWREPO_STR "list(APPEND CPACK_IFW_REPOSITORIES_ALL ${reponame})\n") | |
| else() | |
| set(_CPACK_IFWREPO_STR) | |
| endif() | |
| if(CPack_CMake_INCLUDED AND _CPACK_IFWREPO_STR) | |
| file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_IFWREPO_STR}") | |
| endif() | |
| endmacro() | |
| # Macro for adding resources | |
| macro(cpack_ifw_add_package_resources) | |
| set(_CPACK_IFW_PACKAGE_RESOURCES ${ARGV}) | |
| _cpack_ifw_resolve_file_list(_CPACK_IFW_PACKAGE_RESOURCES) | |
| list(APPEND CPACK_IFW_PACKAGE_RESOURCES ${_CPACK_IFW_PACKAGE_RESOURCES}) | |
| set(_CPACK_IFWQRC_STR "list(APPEND CPACK_IFW_PACKAGE_RESOURCES \"${_CPACK_IFW_PACKAGE_RESOURCES}\")\n") | |
| if(CPack_CMake_INCLUDED) | |
| file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_IFWQRC_STR}") | |
| endif() | |
| endmacro() | |
| # Resolve package control script | |
| _cpack_ifw_resolve_script(CPACK_IFW_PACKAGE_CONTROL_SCRIPT) | |
| endif() # NOT CPackIFW_CMake_INCLUDED |