diff options
author | Brad King <brad.king@kitware.com> | 2009-03-09 16:19:27 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2009-03-09 16:19:27 (GMT) |
commit | a86e81c3589d64a2a777b1b90490cb80b951d983 (patch) | |
tree | d704564ea129aa9b121bb1cd7c99b184700099d4 /Source | |
parent | b9323d2dd6fd96505cca5132529e0e6b854bdf10 (diff) | |
download | CMake-a86e81c3589d64a2a777b1b90490cb80b951d983.zip CMake-a86e81c3589d64a2a777b1b90490cb80b951d983.tar.gz CMake-a86e81c3589d64a2a777b1b90490cb80b951d983.tar.bz2 |
ENH: Generate a central list of target directories
This generalizes the previous CMakeFiles/LabelFiles.txt created at the
top of the build tree to a CMakeFiles/TargetDirectories.txt file. It
lists the target support directories for all targets in the project.
Labels can still be loaded by looking for Labels.txt files in each
target directory.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/CTest/cmCTestCoverageHandler.cxx | 15 | ||||
-rw-r--r-- | Source/CTest/cmCTestCoverageHandler.h | 4 | ||||
-rw-r--r-- | Source/cmGlobalGenerator.cxx | 36 | ||||
-rw-r--r-- | Source/cmGlobalGenerator.h | 4 |
4 files changed, 26 insertions, 33 deletions
diff --git a/Source/CTest/cmCTestCoverageHandler.cxx b/Source/CTest/cmCTestCoverageHandler.cxx index 1faf05a..fa9a220 100644 --- a/Source/CTest/cmCTestCoverageHandler.cxx +++ b/Source/CTest/cmCTestCoverageHandler.cxx @@ -1749,9 +1749,9 @@ void cmCTestCoverageHandler::LoadLabels() { std::string fileList = this->CTest->GetBinaryDir(); fileList += cmake::GetCMakeFilesDirectory(); - fileList += "/LabelFiles.txt"; + fileList += "/TargetDirectories.txt"; cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, - " label file list [" << fileList << "]\n"); + " target directory list [" << fileList << "]\n"); std::ifstream finList(fileList.c_str()); std::string line; while(cmSystemTools::GetLineFromStream(finList, line)) @@ -1761,11 +1761,18 @@ void cmCTestCoverageHandler::LoadLabels() } //---------------------------------------------------------------------- -void cmCTestCoverageHandler::LoadLabels(const char* fname) +void cmCTestCoverageHandler::LoadLabels(const char* dir) { + std::string fname = dir; + fname += "/Labels.txt"; + std::ifstream fin(fname.c_str()); + if(!fin) + { + return; + } + cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, " loading labels from [" << fname << "]\n"); - std::ifstream fin(fname); bool inTarget = true; std::string source; std::string line; diff --git a/Source/CTest/cmCTestCoverageHandler.h b/Source/CTest/cmCTestCoverageHandler.h index 48894fb..46bcec1 100644 --- a/Source/CTest/cmCTestCoverageHandler.h +++ b/Source/CTest/cmCTestCoverageHandler.h @@ -152,9 +152,9 @@ private: std::vector<std::string> Labels; int GetLabelId(std::string const& label); - // Load reading and writing methods. + // Label reading and writing methods. void LoadLabels(); - void LoadLabels(const char* fname); + void LoadLabels(const char* dir); void WriteXMLLabels(std::ofstream& os, std::string const& source); // Label-based filtering. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 23bb1a2..8a184e0 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -901,7 +901,7 @@ void cmGlobalGenerator::Generate() // Update rule hashes. this->CheckRuleHashes(); - this->WriteTargetLabels(); + this->WriteSummary(); if (this->ExtraGenerator != 0) { @@ -2137,44 +2137,32 @@ void cmGlobalGenerator::CheckRuleHashes() } //---------------------------------------------------------------------------- -void cmGlobalGenerator::WriteTargetLabels() +void cmGlobalGenerator::WriteSummary() { cmMakefile* mf = this->LocalGenerators[0]->GetMakefile(); - // Record generated per-target label files in a central location. + // Record all target directories in a central location. std::string fname = mf->GetHomeOutputDirectory(); fname += cmake::GetCMakeFilesDirectory(); - fname += "/LabelFiles.txt"; - bool opened = false; - cmGeneratedFileStream fout; + fname += "/TargetDirectories.txt"; + cmGeneratedFileStream fout(fname.c_str()); - // Generate a label file for each target. - std::string file; + // Generate summary information files for each target. + std::string dir; for(std::map<cmStdString,cmTarget *>::const_iterator ti = this->TotalTargets.begin(); ti != this->TotalTargets.end(); ++ti) { - if(this->WriteTargetLabels(ti->second, file)) - { - if(!opened) - { - fout.Open(fname.c_str()); - opened = true; - } - fout << file << "\n"; - } - } - if(!opened) - { - cmSystemTools::RemoveFile(fname.c_str()); + this->WriteSummary(ti->second); + fout << ti->second->GetSupportDirectory() << "\n"; } } //---------------------------------------------------------------------------- -bool cmGlobalGenerator::WriteTargetLabels(cmTarget* target, std::string& file) +void cmGlobalGenerator::WriteSummary(cmTarget* target) { // Place the labels file in a per-target support directory. std::string dir = target->GetSupportDirectory(); - file = dir; + std::string file = dir; file += "/Labels.txt"; // Check whether labels are enabled for this target. @@ -2216,11 +2204,9 @@ bool cmGlobalGenerator::WriteTargetLabels(cmTarget* target, std::string& file) } } } - return true; } else { cmSystemTools::RemoveFile(file.c_str()); - return false; } } diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index c3c2ef5..0eb27e4 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -336,8 +336,8 @@ private: std::map<cmStdString, RuleHash> RuleHashes; void CheckRuleHashes(); - void WriteTargetLabels(); - bool WriteTargetLabels(cmTarget* target, std::string& file); + void WriteSummary(); + void WriteSummary(cmTarget* target); cmExternalMakefileProjectGenerator* ExtraGenerator; |