diff options
-rw-r--r-- | Source/CMakeVersion.cmake | 2 | ||||
-rw-r--r-- | Source/cmExportInstallFileGenerator.cxx | 4 | ||||
-rw-r--r-- | Source/cmGlobalGenerator.cxx | 47 | ||||
-rw-r--r-- | Source/cmGlobalGenerator.h | 4 | ||||
-rw-r--r-- | Source/cmGlobalUnixMakefileGenerator3.cxx | 45 | ||||
-rw-r--r-- | Source/cmGlobalUnixMakefileGenerator3.h | 5 | ||||
-rw-r--r-- | Source/cmInstallCommand.cxx | 4 | ||||
-rw-r--r-- | Source/cmInstallExportGenerator.cxx | 13 | ||||
-rw-r--r-- | Source/cmInstallExportGenerator.h | 8 | ||||
-rw-r--r-- | Source/cmInstallFilesCommand.cxx | 2 | ||||
-rw-r--r-- | Source/cmInstallFilesGenerator.cxx | 15 | ||||
-rw-r--r-- | Source/cmInstallFilesGenerator.h | 9 | ||||
-rw-r--r-- | Source/cmInstallProgramsCommand.cxx | 2 | ||||
-rw-r--r-- | Source/cmLinkedTree.h | 7 | ||||
-rw-r--r-- | Source/cmLocalGenerator.cxx | 1 | ||||
-rw-r--r-- | Source/cmState.cxx | 17 | ||||
-rw-r--r-- | Source/cmState.h | 7 | ||||
-rw-r--r-- | Source/cmTestGenerator.cxx | 19 | ||||
-rw-r--r-- | Source/cmTestGenerator.h | 4 | ||||
-rw-r--r-- | Tests/RunCMake/include_directories/DirectoryBefore-stdout.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/include_directories/DirectoryBefore.cmake | 4 | ||||
-rw-r--r-- | Tests/RunCMake/include_directories/RunCMakeTest.cmake | 1 |
22 files changed, 136 insertions, 85 deletions
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 34f4282..cfbeab3 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150822) +set(CMake_VERSION_PATCH 20150824) #set(CMake_VERSION_RC 1) diff --git a/Source/cmExportInstallFileGenerator.cxx b/Source/cmExportInstallFileGenerator.cxx index d55be11..7ffab0c 100644 --- a/Source/cmExportInstallFileGenerator.cxx +++ b/Source/cmExportInstallFileGenerator.cxx @@ -72,8 +72,8 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os) // Set an _IMPORT_PREFIX variable for import location properties // to reference if they are relative to the install prefix. - std::string installPrefix = - this->IEGen->GetMakefile()->GetSafeDefinition("CMAKE_INSTALL_PREFIX"); + std::string installPrefix = this->IEGen->GetLocalGenerator() + ->GetMakefile()->GetSafeDefinition("CMAKE_INSTALL_PREFIX"); std::string const& expDest = this->IEGen->GetDestination(); if(cmSystemTools::FileIsFullPath(expDest)) { diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index cda26cd..503c455 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1340,7 +1340,7 @@ void cmGlobalGenerator::Generate() // Create a map from local generator to the complete set of targets // it builds by default. - this->FillLocalGeneratorToTargetMap(); + this->InitializeProgressMarks(); for (i = 0; i < this->LocalGenerators.size(); ++i) { @@ -1610,7 +1610,6 @@ void cmGlobalGenerator::ClearGeneratorMembers() this->TargetDependencies.clear(); this->TotalTargets.clear(); this->ImportedTargets.clear(); - this->LocalGeneratorToTargetMap.clear(); this->ProjectMap.clear(); this->RuleHashes.clear(); this->DirectoryContentMap.clear(); @@ -2118,50 +2117,6 @@ void cmGlobalGenerator::FillProjectMap() } } - -// Build a map that contains a the set of targets used by each local -// generator directory level. -void cmGlobalGenerator::FillLocalGeneratorToTargetMap() -{ - this->LocalGeneratorToTargetMap.clear(); - // Loop over all targets in all local generators. - for(std::vector<cmLocalGenerator*>::const_iterator - lgi = this->LocalGenerators.begin(); - lgi != this->LocalGenerators.end(); ++lgi) - { - cmLocalGenerator* lg = *lgi; - cmMakefile* mf = lg->GetMakefile(); - cmTargets const& targets = mf->GetTargets(); - for(cmTargets::const_iterator t = targets.begin(); t != targets.end(); ++t) - { - cmTarget const& target = t->second; - - cmGeneratorTarget* gt = this->GetGeneratorTarget(&target); - - // Consider the directory containing the target and all its - // parents until something excludes the target. - for(cmLocalGenerator* clg = lg; clg && !this->IsExcluded(clg, gt); - clg = clg->GetParent()) - { - // This local generator includes the target. - std::set<cmGeneratorTarget const*>& targetSet = - this->LocalGeneratorToTargetMap[clg]; - targetSet.insert(gt); - - // Add dependencies of the included target. An excluded - // target may still be included if it is a dependency of a - // non-excluded target. - TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(gt); - for(TargetDependSet::const_iterator ti = tgtdeps.begin(); - ti != tgtdeps.end(); ++ti) - { - targetSet.insert(*ti); - } - } - } - } -} - cmMakefile* cmGlobalGenerator::FindMakefile(const std::string& start_dir) const { diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index a13bede..fe710f1 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -398,7 +398,7 @@ protected: void CheckLocalGenerators(); bool IsExcluded(cmLocalGenerator* root, cmLocalGenerator* gen) const; bool IsExcluded(cmLocalGenerator* root, cmGeneratorTarget* target) const; - void FillLocalGeneratorToTargetMap(); + virtual void InitializeProgressMarks() {} void CreateDefaultGlobalTargets(cmTargets* targets); cmTarget CreateGlobalTarget(const std::string& name, const char* message, const cmCustomCommandLines* commandLines, @@ -413,8 +413,6 @@ protected: cmMakefile* CurrentMakefile; // map from project name to vector of local generators in that project std::map<std::string, std::vector<cmLocalGenerator*> > ProjectMap; - std::map<cmLocalGenerator*, std::set<cmGeneratorTarget const*> > - LocalGeneratorToTargetMap; // Set of named installation components requested by the project. std::set<std::string> InstallComponents; diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index 76d059ee..b240924 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -917,6 +917,49 @@ cmGlobalUnixMakefileGenerator3 } } +// Build a map that contains a the set of targets used by each local +// generator directory level. +void cmGlobalUnixMakefileGenerator3::InitializeProgressMarks() +{ + this->DirectoryTargetsMap.clear(); + // Loop over all targets in all local generators. + for(std::vector<cmLocalGenerator*>::const_iterator + lgi = this->LocalGenerators.begin(); + lgi != this->LocalGenerators.end(); ++lgi) + { + cmLocalGenerator* lg = *lgi; + cmMakefile* mf = lg->GetMakefile(); + cmTargets const& targets = mf->GetTargets(); + for(cmTargets::const_iterator t = targets.begin(); t != targets.end(); ++t) + { + cmTarget const& target = t->second; + + cmGeneratorTarget* gt = this->GetGeneratorTarget(&target); + + // Consider the directory containing the target and all its + // parents until something excludes the target. + for(cmLocalGenerator* clg = lg; clg && !this->IsExcluded(clg, gt); + clg = clg->GetParent()) + { + // This local generator includes the target. + std::set<cmGeneratorTarget const*>& targetSet = + this->DirectoryTargetsMap[clg->GetStateSnapshot()]; + targetSet.insert(gt); + + // Add dependencies of the included target. An excluded + // target may still be included if it is a dependency of a + // non-excluded target. + TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(gt); + for(TargetDependSet::const_iterator ti = tgtdeps.begin(); + ti != tgtdeps.end(); ++ti) + { + targetSet.insert(*ti); + } + } + } + } +} + //---------------------------------------------------------------------------- size_t cmGlobalUnixMakefileGenerator3 @@ -949,7 +992,7 @@ cmGlobalUnixMakefileGenerator3 size_t count = 0; std::set<cmGeneratorTarget const*> emitted; std::set<cmGeneratorTarget const*> const& targets - = this->LocalGeneratorToTargetMap[lg]; + = this->DirectoryTargetsMap[lg->GetStateSnapshot()]; for(std::set<cmGeneratorTarget const*>::const_iterator t = targets.begin(); t != targets.end(); ++t) { diff --git a/Source/cmGlobalUnixMakefileGenerator3.h b/Source/cmGlobalUnixMakefileGenerator3.h index fc53fa8..c738c16 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.h +++ b/Source/cmGlobalUnixMakefileGenerator3.h @@ -206,6 +206,11 @@ protected: private: virtual const char* GetBuildIgnoreErrorsFlag() const { return "-i"; } virtual std::string GetEditCacheCommand() const; + + std::map<cmState::Snapshot, + std::set<cmGeneratorTarget const*>, + cmState::Snapshot::StrictWeakOrder> DirectoryTargetsMap; + virtual void InitializeProgressMarks(); }; #endif diff --git a/Source/cmInstallCommand.cxx b/Source/cmInstallCommand.cxx index f548f5d..333c2ff 100644 --- a/Source/cmInstallCommand.cxx +++ b/Source/cmInstallCommand.cxx @@ -42,7 +42,7 @@ static cmInstallFilesGenerator* CreateInstallFilesGenerator( { cmInstallGenerator::MessageLevel message = cmInstallGenerator::SelectMessageLevel(mf); - return new cmInstallFilesGenerator(mf, + return new cmInstallFilesGenerator( absFiles, args.GetDestination().c_str(), programs, args.GetPermissions().c_str(), args.GetConfigurations(), args.GetComponent().c_str(), @@ -1406,7 +1406,7 @@ bool cmInstallCommand::HandleExportMode(std::vector<std::string> const& args) ica.GetDestination().c_str(), ica.GetPermissions().c_str(), ica.GetConfigurations(), ica.GetComponent().c_str(), message, fname.c_str(), - name_space.GetCString(), exportOld.IsEnabled(), this->Makefile); + name_space.GetCString(), exportOld.IsEnabled()); this->Makefile->AddInstallGenerator(exportGenerator); return true; diff --git a/Source/cmInstallExportGenerator.cxx b/Source/cmInstallExportGenerator.cxx index 7f6aa4d..97b9405 100644 --- a/Source/cmInstallExportGenerator.cxx +++ b/Source/cmInstallExportGenerator.cxx @@ -34,15 +34,14 @@ cmInstallExportGenerator::cmInstallExportGenerator( const char* component, MessageLevel message, const char* filename, const char* name_space, - bool exportOld, - cmMakefile* mf) + bool exportOld) :cmInstallGenerator(destination, configurations, component, message) ,ExportSet(exportSet) ,FilePermissions(file_permissions) ,FileName(filename) ,Namespace(name_space) ,ExportOld(exportOld) - ,Makefile(mf) + ,LocalGenerator(0) { this->EFGen = new cmExportInstallFileGenerator(this); exportSet->AddInstallation(this); @@ -54,12 +53,18 @@ cmInstallExportGenerator::~cmInstallExportGenerator() delete this->EFGen; } +void cmInstallExportGenerator::Compute(cmLocalGenerator* lg) +{ + this->LocalGenerator = lg; +} + //---------------------------------------------------------------------------- void cmInstallExportGenerator::ComputeTempDir() { // Choose a temporary directory in which to generate the import // files to be installed. - this->TempDir = this->Makefile->GetCurrentBinaryDirectory(); + this->TempDir = + this->LocalGenerator->GetMakefile()->GetCurrentBinaryDirectory(); this->TempDir += cmake::GetCMakeFilesDirectory(); this->TempDir += "/Export"; if(this->Destination.empty()) diff --git a/Source/cmInstallExportGenerator.h b/Source/cmInstallExportGenerator.h index 3e078f2..885ed05 100644 --- a/Source/cmInstallExportGenerator.h +++ b/Source/cmInstallExportGenerator.h @@ -32,12 +32,14 @@ public: const char* component, MessageLevel message, const char* filename, const char* name_space, - bool exportOld, cmMakefile* mf); + bool exportOld); ~cmInstallExportGenerator(); cmExportSet* GetExportSet() {return this->ExportSet;} - cmMakefile* GetMakefile() const { return this->Makefile; } + void Compute(cmLocalGenerator* lg); + + cmLocalGenerator* GetLocalGenerator() const { return this->LocalGenerator; } const std::string& GetNamespace() const { return this->Namespace; } @@ -57,7 +59,7 @@ protected: std::string FileName; std::string Namespace; bool ExportOld; - cmMakefile* Makefile; + cmLocalGenerator* LocalGenerator; std::string TempDir; std::string MainImportFile; diff --git a/Source/cmInstallFilesCommand.cxx b/Source/cmInstallFilesCommand.cxx index 508c373..68557bd 100644 --- a/Source/cmInstallFilesCommand.cxx +++ b/Source/cmInstallFilesCommand.cxx @@ -128,7 +128,7 @@ void cmInstallFilesCommand::CreateInstallGenerator() const cmInstallGenerator::MessageLevel message = cmInstallGenerator::SelectMessageLevel(this->Makefile); this->Makefile->AddInstallGenerator( - new cmInstallFilesGenerator(this->Makefile, this->Files, + new cmInstallFilesGenerator(this->Files, destination.c_str(), false, no_permissions, no_configurations, no_component.c_str(), message, no_rename)); diff --git a/Source/cmInstallFilesGenerator.cxx b/Source/cmInstallFilesGenerator.cxx index ff2c6e5..c18b174 100644 --- a/Source/cmInstallFilesGenerator.cxx +++ b/Source/cmInstallFilesGenerator.cxx @@ -14,11 +14,11 @@ #include "cmGeneratorExpression.h" #include "cmMakefile.h" #include "cmSystemTools.h" +#include "cmLocalGenerator.h" //---------------------------------------------------------------------------- cmInstallFilesGenerator -::cmInstallFilesGenerator(cmMakefile* mf, - std::vector<std::string> const& files, +::cmInstallFilesGenerator(std::vector<std::string> const& files, const char* dest, bool programs, const char* file_permissions, std::vector<std::string> const& configurations, @@ -27,7 +27,7 @@ cmInstallFilesGenerator const char* rename, bool optional): cmInstallGenerator(dest, configurations, component, message), - Makefile(mf), + LocalGenerator(0), Files(files), FilePermissions(file_permissions), Rename(rename), @@ -51,6 +51,11 @@ cmInstallFilesGenerator { } +void cmInstallFilesGenerator::Compute(cmLocalGenerator* lg) +{ + this->LocalGenerator = lg; +} + //---------------------------------------------------------------------------- void cmInstallFilesGenerator::AddFilesInstallRule( std::ostream& os, Indent const& indent, @@ -94,8 +99,8 @@ void cmInstallFilesGenerator::GenerateScriptForConfig(std::ostream& os, i != this->Files.end(); ++i) { cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(*i); - cmSystemTools::ExpandListArgument(cge->Evaluate(this->Makefile, config), - files); + cmSystemTools::ExpandListArgument(cge->Evaluate( + this->LocalGenerator->GetMakefile(), config), files); } this->AddFilesInstallRule(os, indent, files); } diff --git a/Source/cmInstallFilesGenerator.h b/Source/cmInstallFilesGenerator.h index bf482d6..00b3a79 100644 --- a/Source/cmInstallFilesGenerator.h +++ b/Source/cmInstallFilesGenerator.h @@ -14,16 +14,13 @@ #include "cmInstallGenerator.h" -class cmMakefile; - /** \class cmInstallFilesGenerator * \brief Generate file installation rules. */ class cmInstallFilesGenerator: public cmInstallGenerator { public: - cmInstallFilesGenerator(cmMakefile* mf, - std::vector<std::string> const& files, + cmInstallFilesGenerator(std::vector<std::string> const& files, const char* dest, bool programs, const char* file_permissions, std::vector<std::string> const& configurations, @@ -33,6 +30,8 @@ public: bool optional = false); virtual ~cmInstallFilesGenerator(); + void Compute(cmLocalGenerator* lg); + protected: virtual void GenerateScriptActions(std::ostream& os, Indent const& indent); virtual void GenerateScriptForConfig(std::ostream& os, @@ -41,7 +40,7 @@ protected: void AddFilesInstallRule(std::ostream& os, Indent const& indent, std::vector<std::string> const& files); - cmMakefile* Makefile; + cmLocalGenerator* LocalGenerator; std::vector<std::string> Files; std::string FilePermissions; std::string Rename; diff --git a/Source/cmInstallProgramsCommand.cxx b/Source/cmInstallProgramsCommand.cxx index be8096c..e6fbe88 100644 --- a/Source/cmInstallProgramsCommand.cxx +++ b/Source/cmInstallProgramsCommand.cxx @@ -91,7 +91,7 @@ void cmInstallProgramsCommand::FinalPass() cmInstallGenerator::MessageLevel message = cmInstallGenerator::SelectMessageLevel(this->Makefile); this->Makefile->AddInstallGenerator( - new cmInstallFilesGenerator(this->Makefile, this->Files, + new cmInstallFilesGenerator(this->Files, destination.c_str(), true, no_permissions, no_configurations, no_component.c_str(), message, no_rename)); diff --git a/Source/cmLinkedTree.h b/Source/cmLinkedTree.h index 3bcb940..721a246 100644 --- a/Source/cmLinkedTree.h +++ b/Source/cmLinkedTree.h @@ -128,6 +128,13 @@ public: } return this->Position <= this->Tree->Data.size(); } + + bool StrictWeakOrdered(iterator other) const + { + assert(this->Tree); + assert(this->Tree == other.Tree); + return this->Position < other.Position; + } }; iterator Root() const diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index a831d88..edb644d 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -196,6 +196,7 @@ void cmLocalGenerator::GenerateTestFiles() for(std::vector<cmTestGenerator*>::const_iterator gi = testers.begin(); gi != testers.end(); ++gi) { + (*gi)->Compute(this); (*gi)->Generate(fout, config, configurationTypes); } if (!this->Children.empty()) diff --git a/Source/cmState.cxx b/Source/cmState.cxx index f425861..84d8783 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -1296,22 +1296,21 @@ void cmState::Directory::PrependIncludeDirectoriesEntry( this->DirectoryState->IncludeDirectories.begin() + this->Snapshot_.Position->IncludeDirectoryPosition; - std::vector<std::string>::const_reverse_iterator rend = + std::vector<std::string>::reverse_iterator rend = this->DirectoryState->IncludeDirectories.rend(); std::vector<std::string>::reverse_iterator rbegin = cmMakeReverseIterator(entryEnd); - std::vector<std::string>::const_reverse_iterator crbegin = rbegin; - crbegin = std::find(crbegin, rend, cmPropertySentinal); + rbegin = std::find(rbegin, rend, cmPropertySentinal); - std::vector<std::string>::const_iterator entryIt = crbegin.base(); - std::vector<std::string>::const_iterator entryBegin = + std::vector<std::string>::iterator entryIt = rbegin.base(); + std::vector<std::string>::iterator entryBegin = this->DirectoryState->IncludeDirectories.begin(); std::vector<cmListFileBacktrace>::iterator btIt = this->DirectoryState->IncludeDirectoryBacktraces.begin() + std::distance(entryBegin, entryIt); - this->DirectoryState->IncludeDirectories.insert(rbegin.base(), vec); + this->DirectoryState->IncludeDirectories.insert(entryIt, vec); this->DirectoryState->IncludeDirectoryBacktraces.insert(btIt, lfbt); this->Snapshot_.Position->IncludeDirectoryPosition = @@ -1411,3 +1410,9 @@ void cmState::Directory::ClearCompileOptions() this->DirectoryState->CompileOptionsBacktraces, this->Snapshot_.Position->CompileOptionsPosition); } + +bool cmState::Snapshot::StrictWeakOrder::operator()( + const cmState::Snapshot& lhs, const cmState::Snapshot& rhs) const +{ + return lhs.Position.StrictWeakOrdered(rhs.Position); +} diff --git a/Source/cmState.h b/Source/cmState.h index 07aa2a5..3132d1b 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -74,9 +74,16 @@ public: Directory GetDirectory() const; + struct StrictWeakOrder + { + bool operator()(const cmState::Snapshot& lhs, + const cmState::Snapshot& rhs) const; + }; + private: friend class cmState; friend class Directory; + friend struct StrictWeakOrder; cmState* State; cmState::PositionType Position; }; diff --git a/Source/cmTestGenerator.cxx b/Source/cmTestGenerator.cxx index 1815ade..9d85f5a 100644 --- a/Source/cmTestGenerator.cxx +++ b/Source/cmTestGenerator.cxx @@ -14,6 +14,7 @@ #include "cmGeneratorExpression.h" #include "cmOutputConverter.h" #include "cmMakefile.h" +#include "cmLocalGenerator.h" #include "cmSystemTools.h" #include "cmTarget.h" #include "cmTest.h" @@ -27,6 +28,7 @@ cmTestGenerator { this->ActionsPerConfig = !test->GetOldStyle(); this->TestGenerated = false; + this->LG = 0; } //---------------------------------------------------------------------------- @@ -35,6 +37,11 @@ cmTestGenerator { } +void cmTestGenerator::Compute(cmLocalGenerator* lg) +{ + this->LG = lg; +} + //---------------------------------------------------------------------------- void cmTestGenerator::GenerateScriptConfigs(std::ostream& os, Indent const& indent) @@ -81,8 +88,8 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, // Check whether the command executable is a target whose name is to // be translated. std::string exe = command[0]; - cmMakefile* mf = this->Test->GetMakefile(); - cmGeneratorTarget* target = mf->FindGeneratorTargetToUse(exe); + cmGeneratorTarget* target = + this->LG->GetMakefile()->FindGeneratorTargetToUse(exe); if(target && target->GetType() == cmTarget::EXECUTABLE) { // Use the target file on disk. @@ -110,7 +117,7 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, else { // Use the command name given. - exe = ge.Parse(exe.c_str())->Evaluate(mf, config); + exe = ge.Parse(exe.c_str())->Evaluate(this->LG->GetMakefile(), config); cmSystemTools::ConvertToUnixSlashes(exe); } @@ -120,7 +127,8 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, ci != command.end(); ++ci) { os << " " << cmOutputConverter::EscapeForCMake( - ge.Parse(*ci)->Evaluate(mf, config)); + ge.Parse(*ci)->Evaluate( + this->LG->GetMakefile(), config)); } // Finish the test command. @@ -137,7 +145,8 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, { os << " " << i->first << " " << cmOutputConverter::EscapeForCMake( - ge.Parse(i->second.GetValue())->Evaluate(mf, config)); + ge.Parse(i->second.GetValue())->Evaluate(this->LG->GetMakefile(), + config)); } os << ")" << std::endl; } diff --git a/Source/cmTestGenerator.h b/Source/cmTestGenerator.h index 5446553..de8ab78 100644 --- a/Source/cmTestGenerator.h +++ b/Source/cmTestGenerator.h @@ -15,6 +15,7 @@ #include "cmScriptGenerator.h" class cmTest; +class cmLocalGenerator; /** \class cmTestGenerator * \brief Support class for generating install scripts. @@ -28,6 +29,8 @@ public: configurations = std::vector<std::string>()); virtual ~cmTestGenerator(); + void Compute(cmLocalGenerator* lg); + protected: virtual void GenerateScriptConfigs(std::ostream& os, Indent const& indent); virtual void GenerateScriptActions(std::ostream& os, Indent const& indent); @@ -38,6 +41,7 @@ protected: virtual bool NeedsScriptNoConfig() const; void GenerateOldStyle(std::ostream& os, Indent const& indent); + cmLocalGenerator* LG; cmTest* Test; bool TestGenerated; }; diff --git a/Tests/RunCMake/include_directories/DirectoryBefore-stdout.txt b/Tests/RunCMake/include_directories/DirectoryBefore-stdout.txt new file mode 100644 index 0000000..e986082 --- /dev/null +++ b/Tests/RunCMake/include_directories/DirectoryBefore-stdout.txt @@ -0,0 +1 @@ +-- INCLUDE_DIRECTORIES: '[^;]*/Tests/RunCMake/include_directories/BeforeDir;[^;]*/Tests/RunCMake/include_directories/AfterDir' diff --git a/Tests/RunCMake/include_directories/DirectoryBefore.cmake b/Tests/RunCMake/include_directories/DirectoryBefore.cmake new file mode 100644 index 0000000..be3f663 --- /dev/null +++ b/Tests/RunCMake/include_directories/DirectoryBefore.cmake @@ -0,0 +1,4 @@ +include_directories(AfterDir) +include_directories(BEFORE BeforeDir) +get_property(dirs DIRECTORY PROPERTY INCLUDE_DIRECTORIES) +message(STATUS "INCLUDE_DIRECTORIES: '${dirs}'") diff --git a/Tests/RunCMake/include_directories/RunCMakeTest.cmake b/Tests/RunCMake/include_directories/RunCMakeTest.cmake index 54d5e97..57e8274 100644 --- a/Tests/RunCMake/include_directories/RunCMakeTest.cmake +++ b/Tests/RunCMake/include_directories/RunCMakeTest.cmake @@ -5,6 +5,7 @@ set(RunCMake_TEST_OPTIONS "-DCMAKE_INSTALL_PREFIX=${RunCMake_BINARY_DIR}/NotDefa run_cmake(NotFoundContent) run_cmake(DebugIncludes) +run_cmake(DirectoryBefore) run_cmake(TID-bad-target) run_cmake(ImportedTarget) run_cmake(CMP0021) |