| /*========================================================================= |
| |
| Program: CMake - Cross-Platform Makefile Generator |
| Module: $RCSfile: cmCPackPackageMakerGenerator.h,v $ |
| Language: C++ |
| Date: $Date: 2012/03/29 17:21:10 $ |
| Version: $Revision: 1.1.1.1 $ |
| |
| Copyright (c) 2002 Kitware, Inc. All rights reserved. |
| See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. |
| |
| This software is distributed WITHOUT ANY WARRANTY; without even |
| the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
| PURPOSE. See the above copyright notices for more information. |
| |
| =========================================================================*/ |
| |
| #ifndef cmCPackPackageMakerGenerator_h |
| #define cmCPackPackageMakerGenerator_h |
| |
| |
| #include "cmCPackGenerator.h" |
| |
| class cmCPackComponent; |
| |
| /** \class cmCPackPackageMakerGenerator |
| * \brief A generator for PackageMaker files |
| * |
| * http://developer.apple.com/documentation/Darwin |
| * /Reference/ManPages/man1/packagemaker.1.html |
| */ |
| class cmCPackPackageMakerGenerator : public cmCPackGenerator |
| { |
| public: |
| cmCPackTypeMacro(cmCPackPackageMakerGenerator, cmCPackGenerator); |
| |
| /** |
| * Construct generator |
| */ |
| cmCPackPackageMakerGenerator(); |
| virtual ~cmCPackPackageMakerGenerator(); |
| |
| virtual bool SupportsComponentInstallation() const; |
| |
| protected: |
| int CopyInstallScript(const char* resdir, |
| const char* script, |
| const char* name); |
| virtual int InitializeInternal(); |
| int CompressFiles(const char* outFileName, const char* toplevel, |
| const std::vector<std::string>& files); |
| virtual const char* GetOutputExtension() { return ".dmg"; } |
| virtual const char* GetOutputPostfix() { 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 char* name, const char *dirName); |
| bool CopyResourcePlistFile(const char* name, const char* outName = 0); |
| |
| // Run PackageMaker with the given command line, which will (if |
| // successful) produce the given package file. Returns true if |
| // PackageMaker succeeds, false otherwise. |
| bool RunPackageMaker(const char *command, const char *packageFile); |
| |
| // 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); |
| |
| // Generate a package in the file packageFile for the given |
| // component. All of the files within this component are stored in |
| // the directory packageDir. Returns true if successful, false |
| // otherwise. |
| bool GenerateComponentPackage(const char *packageFile, |
| const char *packageDir, |
| 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, |
| cmOStringStream& 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, |
| cmOStringStream& 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, |
| cmOStringStream& out); |
| |
| /// Create the "choice" XML element to describe a component group |
| /// for the installer GUI. |
| void CreateChoice(const cmCPackComponentGroup& group, |
| cmOStringStream& out); |
| |
| /// Create the "choice" XML element to describe a component for the |
| /// installer GUI. |
| void CreateChoice(const cmCPackComponent& component, |
| cmOStringStream& out); |
| |
| // Escape the given string to make it usable as an XML attribute |
| // value. |
| std::string EscapeForXML(std::string str); |
| |
| double PackageMakerVersion; |
| double PackageCompatibilityVersion; |
| }; |
| |
| #endif |