96afb12087
This converts the CMake license to a pure 3-clause OSI-approved BSD License. We drop the previous license clause requiring modified versions to be plainly marked. We also update the CMake copyright to cover the full development time range.
121 lines
4.7 KiB
C++
121 lines
4.7 KiB
C++
/*============================================================================
|
|
CMake - Cross Platform Makefile Generator
|
|
Copyright 2000-2009 Kitware, Inc.
|
|
|
|
Distributed under the OSI-approved BSD License (the "License");
|
|
see accompanying file Copyright.txt for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
See the License 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
|