summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2006-07-09 17:20:07 (GMT)
committerAndy Cedilnik <andy.cedilnik@kitware.com>2006-07-09 17:20:07 (GMT)
commite36ae0fcb8bcc4383111b1c2ba4b0a7770704745 (patch)
tree7c4792fbe393584fb881d55bb726555b82337c7f
parentfbdac25f8182a6a33e6c3baa90cce55b9417a6af (diff)
downloadCMake-e36ae0fcb8bcc4383111b1c2ba4b0a7770704745.zip
CMake-e36ae0fcb8bcc4383111b1c2ba4b0a7770704745.tar.gz
CMake-e36ae0fcb8bcc4383111b1c2ba4b0a7770704745.tar.bz2
ENH: Several cleanups and support for multiple generators
-rw-r--r--Modules/CPack.cmake8
-rw-r--r--Source/CPack/cmCPackGenericGenerator.cxx259
-rw-r--r--Source/CPack/cmCPackGenericGenerator.h9
-rw-r--r--Source/CPack/cpack.cxx241
4 files changed, 283 insertions, 234 deletions
diff --git a/Modules/CPack.cmake b/Modules/CPack.cmake
index 18fe53a..4af1169 100644
--- a/Modules/CPack.cmake
+++ b/Modules/CPack.cmake
@@ -92,13 +92,13 @@ cpack_check_file_exists("${CPACK_RESOURCE_FILE_WELCOME}" "welcome resource")
IF(NOT CPACK_GENERATOR)
IF(UNIX)
IF(APPLE)
- SET(CPACK_GENERATOR "PackageMaker")
+ SET(CPACK_GENERATOR "PackageMaker;STGZ;TGZ")
ELSE(APPLE)
- SET(CPACK_GENERATOR "STGZ")
+ SET(CPACK_GENERATOR "STGZ;TGZ;TZ")
ENDIF(APPLE)
- SET(CPACK_SOURCE_GENERATOR "TGZ")
+ SET(CPACK_SOURCE_GENERATOR "TGZ;TZ")
ELSE(UNIX)
- SET(CPACK_GENERATOR "NSIS")
+ SET(CPACK_GENERATOR "NSIS;ZIP")
SET(CPACK_SOURCE_GENERATOR "ZIP")
ENDIF(UNIX)
ENDIF(NOT CPACK_GENERATOR)
diff --git a/Source/CPack/cmCPackGenericGenerator.cxx b/Source/CPack/cmCPackGenericGenerator.cxx
index 37f28e1..115f100 100644
--- a/Source/CPack/cmCPackGenericGenerator.cxx
+++ b/Source/CPack/cmCPackGenericGenerator.cxx
@@ -142,6 +142,7 @@ int cmCPackGenericGenerator::PrepareNames()
{
this->SetOptionIfNotSet("CPACK_STRIP_COMMAND", pkgPath.c_str());
}
+ this->SetOptionIfNotSet("CPACK_REMOVE_TOPLEVEL_DIRECTORY", "1");
return 1;
}
@@ -150,23 +151,6 @@ int cmCPackGenericGenerator::PrepareNames()
int cmCPackGenericGenerator::InstallProject()
{
cmCPackLogger(cmCPackLog::LOG_OUTPUT, "Install projects" << std::endl);
- std::vector<cmsys::RegularExpression> ignoreFilesRegex;
- const char* cpackIgnoreFiles = this->GetOption("CPACK_IGNORE_FILES");
- if ( cpackIgnoreFiles )
- {
- std::vector<std::string> ignoreFilesRegexString;
- cmSystemTools::ExpandListArgument(cpackIgnoreFiles,
- ignoreFilesRegexString);
- std::vector<std::string>::iterator it;
- for ( it = ignoreFilesRegexString.begin();
- it != ignoreFilesRegexString.end();
- ++it )
- {
- cmCPackLogger(cmCPackLog::LOG_VERBOSE,
- "Create ignore files regex for: " << it->c_str() << std::endl);
- ignoreFilesRegex.push_back(it->c_str());
- }
- }
this->CleanTemporaryDirectory();
const char* tempInstallDirectory
= this->GetOption("CPACK_TEMPORARY_INSTALL_DIRECTORY");
@@ -178,6 +162,7 @@ int cmCPackGenericGenerator::InstallProject()
<< std::endl);
return 0;
}
+
bool movable = true;
if ( movable )
{
@@ -190,9 +175,80 @@ int cmCPackGenericGenerator::InstallProject()
destDir += tempInstallDirectory;
cmSystemTools::PutEnv(destDir.c_str());
}
-
+
// If the CPackConfig file sets CPACK_INSTALL_COMMANDS then run them
// as listed
+ if ( !this->InstallProjectViaInstallCommands(movable, tempInstallDirectory) )
+ {
+ return 0;
+ }
+
+ // If the CPackConfig file sets CPACK_INSTALLED_DIRECTORIES
+ // then glob it and copy it to CPACK_TEMPORARY_DIRECTORY
+ // This is used in Source packageing
+ if ( !this->InstallProjectViaInstalledDirectories(movable, tempInstallDirectory) )
+ {
+ return 0;
+ }
+
+
+ // If the project is a CMAKE project then run pre-install
+ // and then read the cmake_install script to run it
+ if ( !this->InstallProjectViaInstallCMakeProjects(movable, tempInstallDirectory) )
+ {
+ return 0;
+ }
+
+ if ( !movable )
+ {
+ cmSystemTools::PutEnv("DESTDIR=");
+ }
+
+ const char* stripExecutable = this->GetOption("CPACK_STRIP_COMMAND");
+ const char* stripFiles
+ = this->GetOption("CPACK_STRIP_FILES");
+ if ( stripFiles && *stripFiles && stripExecutable && *stripExecutable )
+ {
+ cmCPackLogger(cmCPackLog::LOG_OUTPUT, "- Strip files" << std::endl);
+ std::vector<std::string> stripFilesVector;
+ cmSystemTools::ExpandListArgument(stripFiles,
+ stripFilesVector);
+ std::vector<std::string>::iterator it;
+ for ( it = stripFilesVector.begin();
+ it != stripFilesVector.end();
+ ++it )
+ {
+ std::string fileName = tempInstallDirectory;
+ fileName += "/" + *it;
+ cmCPackLogger(cmCPackLog::LOG_VERBOSE,
+ " Strip file: " << fileName.c_str()
+ << std::endl);
+ std::string stripCommand = stripExecutable;
+ stripCommand += " \"";
+ stripCommand += fileName + "\"";
+ int retVal = 1;
+ std::string output;
+ bool resB =
+ cmSystemTools::RunSingleCommand(stripCommand.c_str(), &output,
+ &retVal, 0,
+ this->GeneratorVerbose, 0);
+ if ( !resB || retVal )
+ {
+ cmCPackLogger(cmCPackLog::LOG_ERROR,
+ "Problem running install command: " << stripCommand.c_str()
+ << std::endl
+ << "Error was: \"" << output.c_str() << "\""
+ << std::endl);
+ return 0;
+ }
+ }
+ }
+ return res;
+}
+
+//----------------------------------------------------------------------
+int cmCPackGenericGenerator::InstallProjectViaInstallCommands(bool movable, const char* tempInstallDirectory)
+{
const char* installCommands = this->GetOption("CPACK_INSTALL_COMMANDS");
if ( installCommands && *installCommands )
{
@@ -221,15 +277,33 @@ int cmCPackGenericGenerator::InstallProject()
"Problem running install command: " << it->c_str() << std::endl
<< "Please check " << tmpFile.c_str() << " for errors"
<< std::endl);
- res = 0;
- break;
+ return 0;
}
}
}
-
- // If the CPackConfig file sets CPACK_INSTALLED_DIRECTORIES
- // then glob it and copy it to CPACK_TEMPORARY_DIRECTORY
- // This is used in Source packageing
+ return 1;
+}
+
+//----------------------------------------------------------------------
+int cmCPackGenericGenerator::InstallProjectViaInstalledDirectories(bool movable, const char* tempInstallDirectory)
+{
+ std::vector<cmsys::RegularExpression> ignoreFilesRegex;
+ const char* cpackIgnoreFiles = this->GetOption("CPACK_IGNORE_FILES");
+ if ( cpackIgnoreFiles )
+ {
+ std::vector<std::string> ignoreFilesRegexString;
+ cmSystemTools::ExpandListArgument(cpackIgnoreFiles,
+ ignoreFilesRegexString);
+ std::vector<std::string>::iterator it;
+ for ( it = ignoreFilesRegexString.begin();
+ it != ignoreFilesRegexString.end();
+ ++it )
+ {
+ cmCPackLogger(cmCPackLog::LOG_VERBOSE,
+ "Create ignore files regex for: " << it->c_str() << std::endl);
+ ignoreFilesRegex.push_back(it->c_str());
+ }
+ }
const char* installDirectories
= this->GetOption("CPACK_INSTALLED_DIRECTORIES");
if ( installDirectories && *installDirectories )
@@ -304,9 +378,12 @@ int cmCPackGenericGenerator::InstallProject()
}
}
}
+ return 1;
+}
- // If the project is a CMAKE project then run pre-install
- // and then read the cmake_install script to run it
+//----------------------------------------------------------------------
+int cmCPackGenericGenerator::InstallProjectViaInstallCMakeProjects(bool movable, const char* tempInstallDirectory)
+{
const char* cmakeProjects
= this->GetOption("CPACK_INSTALL_CMAKE_PROJECTS");
const char* cmakeGenerator
@@ -434,96 +511,14 @@ int cmCPackGenericGenerator::InstallProject()
installComponent.c_str());
}
- res = mf->ReadListFile(0, installFile.c_str());
- if ( cmSystemTools::GetErrorOccuredFlag() )
- {
- res = 0;
- }
- }
- }
-
- // ?????
- const char* binaryDirectories = this->GetOption("CPACK_BINARY_DIR");
- if ( binaryDirectories && !cmakeProjects )
- {
- std::vector<std::string> binaryDirectoriesVector;
- cmSystemTools::ExpandListArgument(binaryDirectories,
- binaryDirectoriesVector);
- std::vector<std::string>::iterator it;
- for ( it = binaryDirectoriesVector.begin();
- it != binaryDirectoriesVector.end();
- ++it )
- {
- std::string installFile = it->c_str();
- installFile += "/cmake_install.cmake";
- cmake cm;
- cmGlobalGenerator gg;
- gg.SetCMakeInstance(&cm);
- std::auto_ptr<cmLocalGenerator> lg(gg.CreateLocalGenerator());
- lg->SetGlobalGenerator(&gg);
- cmMakefile *mf = lg->GetMakefile();
- if ( movable )
- {
- mf->AddDefinition("CMAKE_INSTALL_PREFIX", tempInstallDirectory);
- }
- const char* buildConfig = this->GetOption("CPACK_BUILD_CONFIG");
- if ( buildConfig && *buildConfig )
- {
- mf->AddDefinition("BUILD_TYPE", buildConfig);
- }
-
- res = mf->ReadListFile(0, installFile.c_str());
- if ( cmSystemTools::GetErrorOccuredFlag() )
+ int res = mf->ReadListFile(0, installFile.c_str());
+ if ( cmSystemTools::GetErrorOccuredFlag() || !res )
{
- res = 0;
- }
- }
- }
- if ( !movable )
- {
- cmSystemTools::PutEnv("DESTDIR=");
- }
-
- const char* stripExecutable = this->GetOption("CPACK_STRIP_COMMAND");
- const char* stripFiles
- = this->GetOption("CPACK_STRIP_FILES");
- if ( stripFiles && *stripFiles && stripExecutable && *stripExecutable )
- {
- cmCPackLogger(cmCPackLog::LOG_OUTPUT, "- Strip files" << std::endl);
- std::vector<std::string> stripFilesVector;
- cmSystemTools::ExpandListArgument(stripFiles,
- stripFilesVector);
- std::vector<std::string>::iterator it;
- for ( it = stripFilesVector.begin();
- it != stripFilesVector.end();
- ++it )
- {
- std::string fileName = tempInstallDirectory;
- fileName += "/" + *it;
- cmCPackLogger(cmCPackLog::LOG_VERBOSE,
- " Strip file: " << fileName.c_str()
- << std::endl);
- std::string stripCommand = stripExecutable;
- stripCommand += " \"";
- stripCommand += fileName + "\"";
- int retVal = 1;
- std::string output;
- bool resB =
- cmSystemTools::RunSingleCommand(stripCommand.c_str(), &output,
- &retVal, 0,
- this->GeneratorVerbose, 0);
- if ( !resB || retVal )
- {
- cmCPackLogger(cmCPackLog::LOG_ERROR,
- "Problem running install command: " << stripCommand.c_str()
- << std::endl
- << "Error was: \"" << output.c_str() << "\""
- << std::endl);
return 0;
}
}
}
- return res;
+ return 1;
}
//----------------------------------------------------------------------
@@ -557,10 +552,30 @@ void cmCPackGenericGenerator::SetOption(const char* op, const char* value)
//----------------------------------------------------------------------
int cmCPackGenericGenerator::ProcessGenerator()
{
+ cmCPackLogger(cmCPackLog::LOG_OUTPUT,
+ "Create package using " << this->Name.c_str() << std::endl);
+
if ( !this->PrepareNames() )
{
return 0;
}
+ if ( cmSystemTools::IsOn(this->GetOption("CPACK_REMOVE_TOPLEVEL_DIRECTORY")) )
+ {
+ const char* toplevelDirectory = this->GetOption("CPACK_TOPLEVEL_DIRECTORY");
+ if ( cmSystemTools::FileExists(toplevelDirectory) )
+ {
+ cmCPackLogger(cmCPackLog::LOG_VERBOSE, "Remove toplevel directory: "
+ << toplevelDirectory << std::endl);
+ if ( !cmSystemTools::RemoveADirectory(toplevelDirectory) )
+ {
+ cmCPackLogger(cmCPackLog::LOG_ERROR,
+ "Problem removing toplevel directory: "
+ << toplevelDirectory
+ << std::endl);
+ return 0;
+ }
+ }
+ }
if ( !this->InstallProject() )
{
return 0;
@@ -668,7 +683,7 @@ int cmCPackGenericGenerator::FindRunningCMake(const char* arg0)
{
failures.push_back(this->CPackSelf);
cmOStringStream msg;
- msg << "CTEST can not find the command line program ctest.\n";
+ msg << "CPack can not find the command line program ctest.\n";
msg << " argv[0] = \"" << arg0 << "\"\n";
msg << " Attempted paths:\n";
std::vector<cmStdString>::iterator i;
@@ -676,7 +691,9 @@ int cmCPackGenericGenerator::FindRunningCMake(const char* arg0)
{
msg << " \"" << i->c_str() << "\"\n";
}
- cmSystemTools::Error(msg.str().c_str());
+ cmCPackLogger(cmCPackLog::LOG_ERROR, msg.str().c_str()
+ << std::endl);
+ return 0;
}
std::string dir;
std::string file;
@@ -708,7 +725,7 @@ int cmCPackGenericGenerator::FindRunningCMake(const char* arg0)
{
failures.push_back(this->CMakeSelf);
cmOStringStream msg;
- msg << "CTEST can not find the command line program cmake.\n";
+ msg << "CPack can not find the command line program cmake.\n";
msg << " argv[0] = \"" << arg0 << "\"\n";
msg << " Attempted paths:\n";
std::vector<cmStdString>::iterator i;
@@ -716,7 +733,9 @@ int cmCPackGenericGenerator::FindRunningCMake(const char* arg0)
{
msg << " \"" << i->c_str() << "\"\n";
}
- cmSystemTools::Error(msg.str().c_str());
+ cmCPackLogger(cmCPackLog::LOG_ERROR, msg.str().c_str()
+ << std::endl);
+ return 0;
}
}
// do CMAKE_ROOT, look for the environment variable first
@@ -792,10 +811,12 @@ int cmCPackGenericGenerator::FindRunningCMake(const char* arg0)
if (!cmSystemTools::FileExists(modules.c_str()))
{
// couldn't find modules
- cmSystemTools::Error("Could not find CMAKE_ROOT !!!\n"
- "CMake has most likely not been installed correctly.\n"
- "Modules directory not found in\n",
- cMakeRoot.c_str());
+ cmCPackLogger(cmCPackLog::LOG_ERROR,
+ "Could not find CMAKE_ROOT !!!" << std::endl
+ << "CMake has most likely not been installed correctly." << std::endl
+ <<"Modules directory not found in" << std::endl
+ << cMakeRoot.c_str()
+ << std::endl);
return 0;
}
this->CMakeRoot = cMakeRoot;
diff --git a/Source/CPack/cmCPackGenericGenerator.h b/Source/CPack/cmCPackGenericGenerator.h
index 87c486d..a5a0ef7 100644
--- a/Source/CPack/cmCPackGenericGenerator.h
+++ b/Source/CPack/cmCPackGenericGenerator.h
@@ -106,6 +106,15 @@ protected:
virtual bool ConfigureString(const std::string& input, std::string& output);
virtual int InitializeInternal();
+
+ //! Run install commands if specified
+ virtual int InstallProjectViaInstallCommands(
+ bool movable, const char* tempInstallDirectory);
+ virtual int InstallProjectViaInstalledDirectories(
+ bool movable, const char* tempInstallDirectory);
+ virtual int InstallProjectViaInstallCMakeProjects(
+ bool movable, const char* tempInstallDirectory);
+
bool GeneratorVerbose;
std::string Name;
diff --git a/Source/CPack/cpack.cxx b/Source/CPack/cpack.cxx
index ddd5252..3d338dc 100644
--- a/Source/CPack/cpack.cxx
+++ b/Source/CPack/cpack.cxx
@@ -221,7 +221,7 @@ int main (int argc, char *argv[])
cmGlobalGenerator cmgg;
cmgg.SetCMakeInstance(&cminst);
cmLocalGenerator* cmlg = cmgg.CreateLocalGenerator();
- cmMakefile* mf = cmlg->GetMakefile();
+ cmMakefile* globalMF = cmlg->GetMakefile();
bool cpackConfigFileSpecified = true;
if ( cpackConfigFile.empty() )
@@ -247,7 +247,10 @@ int main (int argc, char *argv[])
{
cpackConfigFile =
cmSystemTools::CollapseFullPath(cpackConfigFile.c_str());
- if ( !mf->ReadListFile(0, cpackConfigFile.c_str()) )
+ cmCPack_Log(&log, cmCPackLog::LOG_VERBOSE,
+ "Read CPack configuration file: " << cpackConfigFile.c_str()
+ << std::endl);
+ if ( !globalMF->ReadListFile(0, cpackConfigFile.c_str()) )
{
cmCPack_Log(&log, cmCPackLog::LOG_ERROR,
"Problem reding CPack config file: \""
@@ -265,157 +268,173 @@ int main (int argc, char *argv[])
if ( !generator.empty() )
{
- mf->AddDefinition("CPACK_GENERATOR", generator.c_str());
+ globalMF->AddDefinition("CPACK_GENERATOR", generator.c_str());
}
if ( !cpackProjectName.empty() )
{
- mf->AddDefinition("CPACK_PACKAGE_NAME", cpackProjectName.c_str());
+ globalMF->AddDefinition("CPACK_PACKAGE_NAME", cpackProjectName.c_str());
}
if ( !cpackProjectVersion.empty() )
{
- mf->AddDefinition("CPACK_PACKAGE_VERSION", cpackProjectVersion.c_str());
+ globalMF->AddDefinition("CPACK_PACKAGE_VERSION", cpackProjectVersion.c_str());
}
if ( !cpackProjectVendor.empty() )
{
- mf->AddDefinition("CPACK_PACKAGE_VENDOR", cpackProjectVendor.c_str());
+ globalMF->AddDefinition("CPACK_PACKAGE_VENDOR", cpackProjectVendor.c_str());
}
if ( !cpackProjectDirectory.empty() )
{
- mf->AddDefinition("CPACK_PACKAGE_DIRECTORY",
+ globalMF->AddDefinition("CPACK_PACKAGE_DIRECTORY",
cpackProjectDirectory.c_str());
}
if ( !cpackBuildConfig.empty() )
{
- mf->AddDefinition("CPACK_BUILD_CONFIG", cpackBuildConfig.c_str());
+ globalMF->AddDefinition("CPACK_BUILD_CONFIG", cpackBuildConfig.c_str());
}
cpackDefinitions::MapType::iterator cdit;
for ( cdit = definitions.Map.begin();
cdit != definitions.Map.end();
++cdit )
{
- mf->AddDefinition(cdit->first.c_str(), cdit->second.c_str());
+ globalMF->AddDefinition(cdit->first.c_str(), cdit->second.c_str());
}
- const char* gen = mf->GetDefinition("CPACK_GENERATOR");
- if ( !gen )
+ const char* genList = globalMF->GetDefinition("CPACK_GENERATOR");
+ if ( !genList )
{
cmCPack_Log(&log, cmCPackLog::LOG_ERROR,
"CPack generator not specified" << std::endl);
parsed = 0;
}
- if ( parsed && !mf->GetDefinition("CPACK_PACKAGE_NAME") )
- {
- cmCPack_Log(&log, cmCPackLog::LOG_ERROR,
- "CPack project name not specified" << std::endl);
- parsed = 0;
- }
- if ( parsed && !(mf->GetDefinition("CPACK_PACKAGE_VERSION")
- || mf->GetDefinition("CPACK_PACKAGE_VERSION_MAJOR") &&
- mf->GetDefinition("CPACK_PACKAGE_VERSION_MINOR")
- && mf->GetDefinition("CPACK_PACKAGE_VERSION_PATCH")) )
- {
- cmCPack_Log(&log, cmCPackLog::LOG_ERROR,
- "CPack project version not specified" << std::endl
- << "Specify CPACK_PACKAGE_VERSION, or CPACK_PACKAGE_VERSION_MAJOR, "
- "CPACK_PACKAGE_VERSION_MINOR, and CPACK_PACKAGE_VERSION_PATCH."
- << std::endl);
- parsed = 0;
- }
- if ( parsed )
+ std::vector<std::string> generatorsVector;
+ cmSystemTools::ExpandListArgument(genList,
+ generatorsVector);
+ std::vector<std::string>::iterator it;
+ for ( it = generatorsVector.begin();
+ it != generatorsVector.end();
+ ++it )
{
- cpackGenerator = generators.NewGenerator(gen);
- if ( !cpackGenerator )
+ const char* gen = it->c_str();
+ cmMakefile newMF(*globalMF);
+ cmMakefile* mf = &newMF;
{
- cmCPack_Log(&log, cmCPackLog::LOG_ERROR,
- "Cannot initialize CPack generator: "
- << generator.c_str() << std::endl);
- parsed = 0;
- }
- if ( parsed && !cpackGenerator->Initialize(gen, mf, argv[0]) )
- {
- cmCPack_Log(&log, cmCPackLog::LOG_ERROR,
- "Cannot initialize the generator" << std::endl);
- parsed = 0;
+ cmCPack_Log(&log, cmCPackLog::LOG_VERBOSE,
+ "Specified generator: " << gen << std::endl);
+ if ( parsed && !mf->GetDefinition("CPACK_PACKAGE_NAME") )
+ {
+ cmCPack_Log(&log, cmCPackLog::LOG_ERROR,
+ "CPack project name not specified" << std::endl);
+ parsed = 0;
+ }
+ if ( parsed && !(mf->GetDefinition("CPACK_PACKAGE_VERSION")
+ || mf->GetDefinition("CPACK_PACKAGE_VERSION_MAJOR") &&
+ mf->GetDefinition("CPACK_PACKAGE_VERSION_MINOR")
+ && mf->GetDefinition("CPACK_PACKAGE_VERSION_PATCH")) )
+ {
+ cmCPack_Log(&log, cmCPackLog::LOG_ERROR,
+ "CPack project version not specified" << std::endl
+ << "Specify CPACK_PACKAGE_VERSION, or CPACK_PACKAGE_VERSION_MAJOR, "
+ "CPACK_PACKAGE_VERSION_MINOR, and CPACK_PACKAGE_VERSION_PATCH."
+ << std::endl);
+ parsed = 0;
+ }
+ if ( parsed )
+ {
+ cpackGenerator = generators.NewGenerator(gen);
+ if ( !cpackGenerator )
+ {
+ cmCPack_Log(&log, cmCPackLog::LOG_ERROR,
+ "Cannot initialize CPack generator: "
+ << generator.c_str() << std::endl);
+ parsed = 0;
+ }
+ if ( parsed && !cpackGenerator->Initialize(gen, mf, argv[0]) )
+ {
+ cmCPack_Log(&log, cmCPackLog::LOG_ERROR,
+ "Cannot initialize the generator" << std::endl);
+ parsed = 0;
+ }
+
+ if ( !mf->GetDefinition("CPACK_INSTALL_COMMANDS") &&
+ !mf->GetDefinition("CPACK_INSTALLED_DIRECTORIES") &&
+ !mf->GetDefinition("CPACK_INSTALL_CMAKE_PROJECTS") )
+ {
+ cmCPack_Log(&log, cmCPackLog::LOG_ERROR,
+ "Please specify build tree of the project that uses CMake using "
+ " CPACK_INSTALL_CMAKE_PROJECTS, specify CPACK_INSTALL_COMMANDS, or "
+ "specify CPACK_INSTALLED_DIRECTORIES."
+ << std::endl);
+ parsed = 0;
+ }
+ }
}
- if ( !mf->GetDefinition("CPACK_INSTALL_COMMANDS") &&
- !mf->GetDefinition("CPACK_INSTALLED_DIRECTORIES") &&
- !mf->GetDefinition("CPACK_INSTALL_CMAKE_PROJECTS") )
+ if ( !parsed || help )
{
- cmCPack_Log(&log, cmCPackLog::LOG_ERROR,
- "Please specify build tree of the project that uses CMake using "
- " CPACK_INSTALL_CMAKE_PROJECTS, specify CPACK_INSTALL_COMMANDS, or "
- "specify CPACK_INSTALLED_DIRECTORIES."
- << std::endl);
- parsed = 0;
- }
- }
- }
-
- if ( !parsed || help )
- {
- doc.CheckOptions(argc, argv);
- // Construct and print requested documentation.
- doc.SetName("cpack");
- doc.SetNameSection(cmDocumentationName);
- doc.SetUsageSection(cmDocumentationUsage);
- doc.SetDescriptionSection(cmDocumentationDescription);
- doc.SetOptionsSection(cmDocumentationOptions);
-
- std::vector<cmDocumentationEntry> v;
- cmCPackGenerators::DescriptionsMap::const_iterator generatorIt;
- for( generatorIt = generators.GetGeneratorsList().begin();
- generatorIt != generators.GetGeneratorsList().end();
- ++ generatorIt )
- {
- cmDocumentationEntry e;
- e.name = generatorIt->first.c_str();
- e.brief = generatorIt->second.c_str();
- e.full = "";
- v.push_back(e);
- }
- cmDocumentationEntry empty = {0,0,0};
- v.push_back(empty);
- doc.SetGeneratorsSection(&v[0]);
-
- doc.SetSeeAlsoList(cmDocumentationSeeAlso);
+ doc.CheckOptions(argc, argv);
+ // Construct and print requested documentation.
+ doc.SetName("cpack");
+ doc.SetNameSection(cmDocumentationName);
+ doc.SetUsageSection(cmDocumentationUsage);
+ doc.SetDescriptionSection(cmDocumentationDescription);
+ doc.SetOptionsSection(cmDocumentationOptions);
+
+ std::vector<cmDocumentationEntry> v;
+ cmCPackGenerators::DescriptionsMap::const_iterator generatorIt;
+ for( generatorIt = generators.GetGeneratorsList().begin();
+ generatorIt != generators.GetGeneratorsList().end();
+ ++ generatorIt )
+ {
+ cmDocumentationEntry e;
+ e.name = generatorIt->first.c_str();
+ e.brief = generatorIt->second.c_str();
+ e.full = "";
+ v.push_back(e);
+ }
+ cmDocumentationEntry empty = {0,0,0};
+ v.push_back(empty);
+ doc.SetGeneratorsSection(&v[0]);
+
+ doc.SetSeeAlsoList(cmDocumentationSeeAlso);
#undef cout
- return doc.PrintRequestedDocumentation(std::cout)? 0:1;
+ return doc.PrintRequestedDocumentation(std::cout)? 0:1;
#define cout no_cout_use_cmCPack_Log
- }
+ }
#ifdef _WIN32
- std::string comspec = "cmw9xcom.exe";
- cmSystemTools::SetWindows9xComspecSubstitute(comspec.c_str());
+ std::string comspec = "cmw9xcom.exe";
+ cmSystemTools::SetWindows9xComspecSubstitute(comspec.c_str());
#endif
- const char* projName = mf->GetDefinition("CPACK_PACKAGE_NAME");
- cmCPack_Log(&log, cmCPackLog::LOG_VERBOSE, "Use generator: "
- << cpackGenerator->GetNameOfClass() << std::endl);
- cmCPack_Log(&log, cmCPackLog::LOG_VERBOSE, "For project: "
- << projName << std::endl);
+ const char* projName = mf->GetDefinition("CPACK_PACKAGE_NAME");
+ cmCPack_Log(&log, cmCPackLog::LOG_VERBOSE, "Use generator: "
+ << cpackGenerator->GetNameOfClass() << std::endl);
+ cmCPack_Log(&log, cmCPackLog::LOG_VERBOSE, "For project: "
+ << projName << std::endl);
- const char* projVersion = mf->GetDefinition("CPACK_PACKAGE_VERSION");
- if ( !projVersion )
- {
- const char* projVersionMajor
- = mf->GetDefinition("CPACK_PACKAGE_VERSION_MAJOR");
- const char* projVersionMinor
- = mf->GetDefinition("CPACK_PACKAGE_VERSION_MINOR");
- const char* projVersionPatch
- = mf->GetDefinition("CPACK_PACKAGE_VERSION_PATCH");
- cmOStringStream ostr;
- ostr << projVersionMajor << "." << projVersionMinor << "."
- << projVersionPatch;
- mf->AddDefinition("CPACK_PACKAGE_VERSION", ostr.str().c_str());
- }
+ const char* projVersion = mf->GetDefinition("CPACK_PACKAGE_VERSION");
+ if ( !projVersion )
+ {
+ const char* projVersionMajor
+ = mf->GetDefinition("CPACK_PACKAGE_VERSION_MAJOR");
+ const char* projVersionMinor
+ = mf->GetDefinition("CPACK_PACKAGE_VERSION_MINOR");
+ const char* projVersionPatch
+ = mf->GetDefinition("CPACK_PACKAGE_VERSION_PATCH");
+ cmOStringStream ostr;
+ ostr << projVersionMajor << "." << projVersionMinor << "."
+ << projVersionPatch;
+ mf->AddDefinition("CPACK_PACKAGE_VERSION", ostr.str().c_str());
+ }
- int res = cpackGenerator->ProcessGenerator();
- if ( !res )
- {
- cmCPack_Log(&log, cmCPackLog::LOG_ERROR,
- "Error when generating package: " << projName << std::endl);
- return 1;
+ int res = cpackGenerator->ProcessGenerator();
+ if ( !res )
+ {
+ cmCPack_Log(&log, cmCPackLog::LOG_ERROR,
+ "Error when generating package: " << projName << std::endl);
+ return 1;
+ }
+ }
}
return 0;