summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2006-10-30 20:59:54 (GMT)
committerAndy Cedilnik <andy.cedilnik@kitware.com>2006-10-30 20:59:54 (GMT)
commit7ded253013b60f7c36b65e0346c658b88f6cffd3 (patch)
treed650b5e0cc64a66ad872430d9550cd5e267d51c5
parentb2240ef6afae619545758ec4184c19c8fd0a2ae9 (diff)
downloadCMake-7ded253013b60f7c36b65e0346c658b88f6cffd3.zip
CMake-7ded253013b60f7c36b65e0346c658b88f6cffd3.tar.gz
CMake-7ded253013b60f7c36b65e0346c658b88f6cffd3.tar.bz2
ENH: Add support for displaying the list of components
-rw-r--r--Source/cmGlobalGenerator.cxx41
-rw-r--r--Source/cmInstallTargetGenerator.cxx1
-rw-r--r--Source/cmake.cxx12
-rw-r--r--Source/cmake.h8
4 files changed, 59 insertions, 3 deletions
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index 49000b4..40da2f61 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -1395,12 +1395,16 @@ void cmGlobalGenerator::CreateDefaultGlobalTargets(cmTargets* targets)
singleLine.erase(singleLine.begin(), singleLine.end());
depends.erase(depends.begin(), depends.end());
singleLine.push_back(this->GetCMakeInstance()->GetCTestCommand());
+ singleLine.push_back("--force-new-ctest-process");
if(cmakeCfgIntDir && *cmakeCfgIntDir && cmakeCfgIntDir[0] != '.')
{
singleLine.push_back("-C");
singleLine.push_back(mf->GetDefinition("CMAKE_CFG_INTDIR"));
}
- singleLine.push_back("--force-new-ctest-process");
+ else // TODO: This is a hack. Should be something to do with the generator
+ {
+ singleLine.push_back("$(ARGS)");
+ }
cpackCommandLines.push_back(singleLine);
(*targets)[this->GetTestTargetName()]
= this->CreateGlobalTarget(this->GetTestTargetName(),
@@ -1464,9 +1468,40 @@ void cmGlobalGenerator::CreateDefaultGlobalTargets(cmTargets* targets)
//Install
if(this->InstallTargetEnabled)
{
+ if(!cmakeCfgIntDir || !*cmakeCfgIntDir || cmakeCfgIntDir[0] == '.')
+ {
+ std::set<cmStdString>* componentsSet
+ = this->GetCMakeInstance()->GetInstallComponents();
+ cpackCommandLines.erase(cpackCommandLines.begin(),
+ cpackCommandLines.end());
+ depends.erase(depends.begin(), depends.end());
+ cmOStringStream ostr;
+ if ( componentsSet->size() > 0 )
+ {
+ ostr << "Available install components are:";
+ std::set<cmStdString>::iterator it;
+ for (
+ it = componentsSet->begin();
+ it != componentsSet->end();
+ ++ it )
+ {
+ ostr << " \"" << it->c_str() << "\"";
+ }
+ }
+ else
+ {
+ ostr << "Only default component available";
+ }
+ singleLine.push_back(ostr.str().c_str());
+ //cpackCommandLines.push_back(singleLine);
+ (*targets)["list_install_components"]
+ = this->CreateGlobalTarget("list_install_components",
+ ostr.str().c_str(),
+ &cpackCommandLines, depends);
+ }
std::string cmd;
cpackCommandLines.erase(cpackCommandLines.begin(),
- cpackCommandLines.end());
+ cpackCommandLines.end());
singleLine.erase(singleLine.begin(), singleLine.end());
depends.erase(depends.begin(), depends.end());
if ( this->GetPreinstallTargetName() )
@@ -1518,7 +1553,7 @@ void cmGlobalGenerator::CreateDefaultGlobalTargets(cmTargets* targets)
{
singleLine.insert(singleLine.begin()+1, "-DCMAKE_INSTALL_LOCAL_ONLY=1");
cpackCommandLines.erase(cpackCommandLines.begin(),
- cpackCommandLines.end());
+ cpackCommandLines.end());
cpackCommandLines.push_back(singleLine);
(*targets)[install_local] =
diff --git a/Source/cmInstallTargetGenerator.cxx b/Source/cmInstallTargetGenerator.cxx
index 61536c8..19a0fd2 100644
--- a/Source/cmInstallTargetGenerator.cxx
+++ b/Source/cmInstallTargetGenerator.cxx
@@ -33,6 +33,7 @@ cmInstallTargetGenerator
Component(component), Optional(optional)
{
this->Target->SetHaveInstallRule(true);
+ this->Target->GetMakefile()->GetCMakeInstance()->AddInstallComponent(component);
}
//----------------------------------------------------------------------------
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index 7929227..e5ebac7 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -1307,6 +1307,18 @@ int cmake::ExecuteCMakeCommand(std::vector<std::string>& args)
return 1;
}
+//----------------------------------------------------------------------------
+void cmake::AddInstallComponent(const char* component)
+{
+ if ( !component )
+ {
+ return;
+ }
+ this->InstallComponents.insert(component);
+}
+
+
+//----------------------------------------------------------------------------
void cmake::GetRegisteredGenerators(std::vector<std::string>& names)
{
for(RegisteredGeneratorsMap::const_iterator i = this->Generators.begin();
diff --git a/Source/cmake.h b/Source/cmake.h
index 643dfec..0bb467d 100644
--- a/Source/cmake.h
+++ b/Source/cmake.h
@@ -284,6 +284,12 @@ class cmake
// Do we want debug output during the cmake run.
bool GetDebugOutput() { return this->DebugOutput; }
void DebugOutputOn() { this->DebugOutput = true;}
+
+ //! Add or get installation components
+ void AddInstallComponent(const char* component);
+ std::set<cmStdString>* GetInstallComponents()
+ { return &this->InstallComponents; }
+
protected:
typedef cmGlobalGenerator* (*CreateGeneratorFunctionType)();
typedef std::map<cmStdString,
@@ -302,6 +308,8 @@ protected:
std::set<cmStdString> WrittenFiles;
+ std::set<cmStdString> InstallComponents;
+
///! return true if the same cmake was used to make the cache.
bool CacheVersionMatches();
///! read in a cmake list file to initialize the cache