|
|
|
/*============================================================================
|
|
|
|
CMake - Cross Platform Makefile Generator
|
|
|
|
Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
|
|
|
|
|
|
|
|
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 cmCPackIFWGenerator_h
|
|
|
|
#define cmCPackIFWGenerator_h
|
|
|
|
|
|
|
|
#include <cmGeneratedFileStream.h>
|
|
|
|
#include <CPack/cmCPackGenerator.h>
|
|
|
|
|
|
|
|
#include "cmCPackIFWPackage.h"
|
|
|
|
#include "cmCPackIFWInstaller.h"
|
|
|
|
|
|
|
|
/** \class cmCPackIFWGenerator
|
|
|
|
* \brief A generator for Qt Installer Framework tools
|
|
|
|
*
|
|
|
|
* http://qt-project.org/doc/qtinstallerframework/index.html
|
|
|
|
*/
|
|
|
|
class cmCPackIFWGenerator : public cmCPackGenerator
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
cmCPackTypeMacro(cmCPackIFWGenerator, cmCPackGenerator);
|
|
|
|
|
|
|
|
typedef std::map<std::string, cmCPackIFWPackage> PackagesMap;
|
|
|
|
typedef std::map<std::string, cmCPackComponent> ComponentsMap;
|
|
|
|
typedef std::map<std::string, cmCPackComponentGroup> ComponentGoupsMap;
|
|
|
|
typedef std::map<std::string, cmCPackIFWPackage::DependenceStruct>
|
|
|
|
DependenceMap;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Construct IFW generator
|
|
|
|
*/
|
|
|
|
cmCPackIFWGenerator();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Destruct IFW generator
|
|
|
|
*/
|
|
|
|
virtual ~cmCPackIFWGenerator();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Compare \a version with QtIFW framework version
|
|
|
|
*/
|
|
|
|
bool IsVersionLess(const char *version);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Compare \a version with QtIFW framework version
|
|
|
|
*/
|
|
|
|
bool IsVersionGreater(const char *version);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Compare \a version with QtIFW framework version
|
|
|
|
*/
|
|
|
|
bool IsVersionEqual(const char *version);
|
|
|
|
|
|
|
|
protected: // cmCPackGenerator reimplementation
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Initialize generator
|
|
|
|
* @return 0 on failure
|
|
|
|
*/
|
|
|
|
virtual int InitializeInternal();
|
|
|
|
virtual int PackageFiles();
|
|
|
|
virtual const char* GetPackagingInstallPrefix();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Extension of binary installer
|
|
|
|
* @return Executable suffix or value from default implementation
|
|
|
|
*/
|
|
|
|
virtual const char* GetOutputExtension();
|
|
|
|
|
|
|
|
virtual std::string GetComponentInstallDirNameSuffix(
|
|
|
|
const std::string& componentName);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Get Component
|
|
|
|
* @param projectName Project name
|
|
|
|
* @param componentName Component name
|
|
|
|
*
|
|
|
|
* This method calls the base implementation.
|
|
|
|
*
|
|
|
|
* @return Pointer to component
|
|
|
|
*/
|
|
|
|
virtual cmCPackComponent* GetComponent(
|
|
|
|
const std::string& projectName,
|
|
|
|
const std::string& componentName);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Get group of component
|
|
|
|
* @param projectName Project name
|
|
|
|
* @param groupName Component group name
|
|
|
|
*
|
|
|
|
* This method calls the base implementation.
|
|
|
|
*
|
|
|
|
* @return Pointer to component group
|
|
|
|
*/
|
|
|
|
virtual cmCPackComponentGroup* GetComponentGroup(
|
|
|
|
const std::string& projectName,
|
|
|
|
const std::string& groupName);
|
|
|
|
|
|
|
|
enum cmCPackGenerator::CPackSetDestdirSupport SupportsSetDestdir() const;
|
|
|
|
virtual bool SupportsAbsoluteDestination() const;
|
|
|
|
virtual bool SupportsComponentInstallation() const;
|
|
|
|
|
|
|
|
protected: // Methods
|
|
|
|
|
|
|
|
bool IsOnePackage() const;
|
|
|
|
|
|
|
|
std::string GetRootPackageName();
|
|
|
|
|
|
|
|
std::string GetGroupPackageName(cmCPackComponentGroup *group) const;
|
|
|
|
std::string GetComponentPackageName(cmCPackComponent *component) const;
|
|
|
|
|
|
|
|
cmCPackIFWPackage* GetGroupPackage(cmCPackComponentGroup *group) const;
|
|
|
|
cmCPackIFWPackage* GetComponentPackage(cmCPackComponent *component) const;
|
|
|
|
|
|
|
|
void WriteGeneratedByToStrim(cmGeneratedFileStream& xout);
|
|
|
|
|
|
|
|
protected: // Data
|
|
|
|
|
|
|
|
friend class cmCPackIFWPackage;
|
|
|
|
friend class cmCPackIFWInstaller;
|
|
|
|
|
|
|
|
// Installer
|
|
|
|
cmCPackIFWInstaller Installer;
|
|
|
|
// Collection of packages
|
|
|
|
PackagesMap Packages;
|
|
|
|
// Collection of binary packages
|
|
|
|
std::set<cmCPackIFWPackage*> BinaryPackages;
|
|
|
|
// Collection of downloaded packages
|
|
|
|
std::set<cmCPackIFWPackage*> DownloadedPackages;
|
|
|
|
// Dependent packages
|
|
|
|
DependenceMap DependentPackages;
|
|
|
|
std::map<cmCPackComponent*, cmCPackIFWPackage*> ComponentPackages;
|
|
|
|
std::map<cmCPackComponentGroup*, cmCPackIFWPackage*> GroupPackages;
|
|
|
|
|
|
|
|
private:
|
|
|
|
std::string RepoGen;
|
|
|
|
std::string BinCreator;
|
|
|
|
std::string FrameworkVersion;
|
|
|
|
std::string ExecutableSuffix;
|
|
|
|
|
|
|
|
bool OnlineOnly;
|
|
|
|
bool ResolveDuplicateNames;
|
|
|
|
std::vector<std::string> PkgsDirsVector;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|