| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| file Copyright.txt or https://cmake.org/licensing for details. */ |
| #ifndef cmCPackIFWPackage_h |
| #define cmCPackIFWPackage_h |
| |
| #include "cmConfigure.h" // IWYU pragma: keep |
| |
| #include "cmCPackIFWCommon.h" |
| |
| #include <map> |
| #include <set> |
| #include <string> |
| #include <vector> |
| |
| class cmCPackComponent; |
| class cmCPackComponentGroup; |
| class cmCPackIFWInstaller; |
| |
| /** \class cmCPackIFWPackage |
| * \brief A single component to be installed by CPack IFW generator |
| */ |
| class cmCPackIFWPackage : public cmCPackIFWCommon |
| { |
| public: |
| // Types |
| |
| enum CompareTypes |
| { |
| CompareNone = 0x0, |
| CompareEqual = 0x1, |
| CompareLess = 0x2, |
| CompareLessOrEqual = 0x3, |
| CompareGreater = 0x4, |
| CompareGreaterOrEqual = 0x5 |
| }; |
| |
| struct CompareStruct |
| { |
| CompareStruct(); |
| |
| unsigned int Type; |
| std::string Value; |
| }; |
| |
| struct DependenceStruct |
| { |
| DependenceStruct(); |
| DependenceStruct(const std::string& dependence); |
| |
| std::string Name; |
| CompareStruct Compare; |
| |
| std::string NameWithCompare() const; |
| |
| bool operator<(const DependenceStruct& other) const |
| { |
| return Name < other.Name; |
| } |
| }; |
| |
| public: |
| // [Con|De]structor |
| |
| /** |
| * Construct package |
| */ |
| cmCPackIFWPackage(); |
| |
| public: |
| // Configuration |
| |
| /// Human-readable name of the component |
| std::map<std::string, std::string> DisplayName; |
| |
| /// Human-readable description of the component |
| std::map<std::string, std::string> Description; |
| |
| /// Version number of the component |
| std::string Version; |
| |
| /// Date when this component version was released |
| std::string ReleaseDate; |
| |
| /// Domain-like identification for this component |
| std::string Name; |
| |
| /// File name of a script being loaded |
| std::string Script; |
| |
| /// List of license agreements to be accepted by the installing user |
| std::vector<std::string> Licenses; |
| |
| /// List of pages to load |
| std::vector<std::string> UserInterfaces; |
| |
| /// List of translation files to load |
| std::vector<std::string> Translations; |
| |
| /// Priority of the component in the tree |
| std::string SortingPriority; |
| |
| /// Description added to the component description |
| std::string UpdateText; |
| |
| /// Set to true to preselect the component in the installer |
| std::string Default; |
| |
| /// Marks the package as essential to force a restart of the MaintenanceTool |
| std::string Essential; |
| |
| /// Set to true to hide the component from the installer |
| std::string Virtual; |
| |
| /// Determines that the package must always be installed |
| std::string ForcedInstallation; |
| |
| /// List of components to replace |
| std::vector<std::string> Replaces; |
| |
| /// Package needs to be installed with elevated permissions |
| std::string RequiresAdminRights; |
| |
| /// Set to false if you want to hide the checkbox for an item |
| std::string Checkable; |
| |
| public: |
| // Internal implementation |
| |
| std::string GetComponentName(cmCPackComponent* component); |
| |
| void DefaultConfiguration(); |
| |
| int ConfigureFromOptions(); |
| int ConfigureFromComponent(cmCPackComponent* component); |
| int ConfigureFromGroup(cmCPackComponentGroup* group); |
| int ConfigureFromGroup(const std::string& groupName); |
| int ConfigureFromPrefix(const std::string& prefix); |
| |
| void GeneratePackageFile(); |
| |
| // Pointer to installer |
| cmCPackIFWInstaller* Installer; |
| // Collection of dependencies |
| std::set<cmCPackIFWPackage*> Dependencies; |
| // Collection of unresolved dependencies |
| std::set<DependenceStruct*> AlienDependencies; |
| // Collection of unresolved automatic dependency on |
| std::set<DependenceStruct*> AlienAutoDependOn; |
| // Patch to package directory |
| std::string Directory; |
| }; |
| |
| #endif // cmCPackIFWPackage_h |