1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- file Copyright.txt or https://cmake.org/licensing for details. */
- #ifndef cmCPackPKGGenerator_h
- #define cmCPackPKGGenerator_h
- #include "cmConfigure.h" // IWYU pragma: keep
- #include <set>
- #include <sstream>
- #include <string>
- #include "cmCPackComponentGroup.h"
- #include "cmCPackGenerator.h"
- class cmXMLWriter;
- /** \class cmCPackPKGGenerator
- * \brief A generator for pkg files
- *
- */
- class cmCPackPKGGenerator : public cmCPackGenerator
- {
- public:
- cmCPackTypeMacro(cmCPackPKGGenerator, cmCPackGenerator);
- /**
- * Construct generator
- */
- cmCPackPKGGenerator();
- ~cmCPackPKGGenerator() override;
- bool SupportsComponentInstallation() const override;
- protected:
- int InitializeInternal() override;
- const char* GetOutputPostfix() override { return "darwin"; }
- // Copies or creates the resource file with the given name to the
- // package or package staging directory dirName. The variable
- // CPACK_RESOURCE_FILE_${NAME} (where ${NAME} is the uppercased
- // version of name) specifies the input file to use for this file,
- // which will be configured via ConfigureFile.
- bool CopyCreateResourceFile(const std::string& name,
- const std::string& dirName);
- bool CopyResourcePlistFile(const std::string& name, const char* outName = 0);
- int CopyInstallScript(const std::string& resdir, const std::string& script,
- const std::string& name);
- // Retrieve the name of package file that will be generated for this
- // component. The name is just the file name with extension, and
- // does not include the subdirectory.
- std::string GetPackageName(const cmCPackComponent& component);
- // Writes a distribution.dist file, which turns a metapackage into a
- // full-fledged distribution. This file is used to describe
- // inter-component dependencies. metapackageFile is the name of the
- // metapackage for the distribution. Only valid for a
- // component-based install.
- void WriteDistributionFile(const char* metapackageFile);
- // Subroutine of WriteDistributionFile that writes out the
- // dependency attributes for inter-component dependencies.
- void AddDependencyAttributes(const cmCPackComponent& component,
- std::set<const cmCPackComponent*>& visited,
- std::ostringstream& out);
- // Subroutine of WriteDistributionFile that writes out the
- // reverse dependency attributes for inter-component dependencies.
- void AddReverseDependencyAttributes(
- const cmCPackComponent& component,
- std::set<const cmCPackComponent*>& visited, std::ostringstream& out);
- // Generates XML that encodes the hierarchy of component groups and
- // their components in a form that can be used by distribution
- // metapackages.
- void CreateChoiceOutline(const cmCPackComponentGroup& group,
- cmXMLWriter& xout);
- /// Create the "choice" XML element to describe a component group
- /// for the installer GUI.
- void CreateChoice(const cmCPackComponentGroup& group, cmXMLWriter& xout);
- /// Create the "choice" XML element to describe a component for the
- /// installer GUI.
- void CreateChoice(const cmCPackComponent& component, cmXMLWriter& xout);
- // The PostFlight component when creating a metapackage
- cmCPackComponent PostFlightComponent;
- };
- #endif
|