Merge topic 'CPack-fixCPACK_MONOLITHIC_INSTALL-handling'

805c1b2 Handle CPACK_MONOLITHIC_INSTALL in some rare use cases.
This commit is contained in:
Brad King 2012-03-19 14:42:00 -04:00 committed by CMake Topic Stage
commit 0e339f7054
5 changed files with 23 additions and 3 deletions

View File

@ -247,7 +247,7 @@ int cmCPackArchiveGenerator::PackageFiles()
cmCPackLogger(cmCPackLog::LOG_DEBUG, "Toplevel: "
<< toplevel << std::endl);
if (SupportsComponentInstallation()) {
if (WantsComponentInstallation()) {
// CASE 1 : COMPONENT ALL-IN-ONE package
// If ALL COMPONENTS in ONE package has been requested
// then the package file is unique and should be open here.

View File

@ -236,7 +236,7 @@ int cmCPackDebGenerator::PackageFiles()
int retval = -1;
/* Are we in the component packaging case */
if (SupportsComponentInstallation()) {
if (WantsComponentInstallation()) {
// CASE 1 : COMPONENT ALL-IN-ONE package
// If ALL GROUPS or ALL COMPONENTS in ONE package has been requested
// then the package file is unique and should be open here.

View File

@ -1436,6 +1436,12 @@ bool cmCPackGenerator::SupportsComponentInstallation() const
return false;
}
//----------------------------------------------------------------------
bool cmCPackGenerator::WantsComponentInstallation() const
{
return (!IsOn("CPACK_MONOLITHIC_INSTALL") & SupportsComponentInstallation());
}
//----------------------------------------------------------------------
cmCPackInstallationType*
cmCPackGenerator::GetInstallationType(const char *projectName,

View File

@ -189,7 +189,21 @@ protected:
virtual int InstallProjectViaInstallCMakeProjects(
bool setDestDir, const char* tempInstallDirectory);
/**
* Does the CPack generator support component installation?.
* Some Generators requires the user to set
* CPACK_<GENNAME>_COMPONENT_INSTALL in order to make this
* method return true.
* @return true if supported, false otherwise
*/
virtual bool SupportsComponentInstallation() const;
/**
* Does the currently running generator want a component installation.
* The generator may support component installation but he may
* be requiring monolithic install using CPACK_MONOLITHIC_INSTALL.
* @return true if component installation is supported and wanted.
*/
virtual bool WantsComponentInstallation() const;
virtual cmCPackInstallationType* GetInstallationType(const char *projectName,
const char* name);
virtual cmCPackComponent* GetComponent(const char *projectName,

View File

@ -201,7 +201,7 @@ int cmCPackRPMGenerator::PackageFiles()
<< toplevel << std::endl);
/* Are we in the component packaging case */
if (SupportsComponentInstallation()) {
if (WantsComponentInstallation()) {
// CASE 1 : COMPONENT ALL-IN-ONE package
// If ALL COMPONENTS in ONE package has been requested
// then the package file is unique and should be open here.