diff options
author | Brad King <brad.king@kitware.com> | 2014-05-07 19:59:46 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2014-05-07 19:59:46 (GMT) |
commit | 45f338e3d9fa73150348abc54f136cfdb001e654 (patch) | |
tree | afcf2880123cfa3813817e542a11e211c1bafbd2 /Source | |
parent | 4777e82a0a47fcaa46e4e61b91273b9a993f88de (diff) | |
parent | 325599caa2974f30d35f9ad0dbe1fc0760290b3e (diff) | |
download | CMake-45f338e3d9fa73150348abc54f136cfdb001e654.zip CMake-45f338e3d9fa73150348abc54f136cfdb001e654.tar.gz CMake-45f338e3d9fa73150348abc54f136cfdb001e654.tar.bz2 |
Merge topic 'dev/hashmap-for-targets'
325599ca cmGlobalGenerator: Store targets in hash maps
ac4106c6 cmMakefile: Use a hashmap for imported targets
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmGlobalGenerator.cxx | 8 | ||||
-rw-r--r-- | Source/cmGlobalGenerator.h | 15 | ||||
-rw-r--r-- | Source/cmGlobalVisualStudio8Generator.cxx | 2 | ||||
-rw-r--r-- | Source/cmGlobalXCodeGenerator.cxx | 2 | ||||
-rw-r--r-- | Source/cmMakefile.cxx | 5 | ||||
-rw-r--r-- | Source/cmMakefile.h | 9 |
6 files changed, 26 insertions, 15 deletions
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 1c48d39..2a30593 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -2085,15 +2085,13 @@ cmGlobalGenerator::FindTarget(const std::string& name, { if (!excludeAliases) { - std::map<std::string, cmTarget*>::const_iterator ai - = this->AliasTargets.find(name); + TargetMap::const_iterator ai = this->AliasTargets.find(name); if (ai != this->AliasTargets.end()) { return ai->second; } } - std::map<std::string,cmTarget *>::const_iterator i = - this->TotalTargets.find ( name ); + TargetMap::const_iterator i = this->TotalTargets.find ( name ); if ( i != this->TotalTargets.end() ) { return i->second; @@ -2874,7 +2872,7 @@ void cmGlobalGenerator::WriteSummary() cmGeneratedFileStream fout(fname.c_str()); // Generate summary information files for each target. - for(std::map<std::string,cmTarget *>::const_iterator ti = + for(TargetMap::const_iterator ti = this->TotalTargets.begin(); ti != this->TotalTargets.end(); ++ti) { if ((ti->second)->GetType() == cmTarget::INTERFACE_LIBRARY) diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 82fb1e5..14ec99a 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -22,6 +22,10 @@ #include "cmGeneratorTarget.h" #include "cmGeneratorExpression.h" +#if defined(CMAKE_BUILD_WITH_CMAKE) +# include <cmsys/hash_map.hxx> +#endif + class cmake; class cmGeneratorTarget; class cmGeneratorExpressionEvaluationFile; @@ -389,9 +393,14 @@ protected: cmTargetManifest TargetManifest; // All targets in the entire project. - std::map<std::string,cmTarget *> TotalTargets; - std::map<std::string,cmTarget *> AliasTargets; - std::map<std::string,cmTarget *> ImportedTargets; +#if defined(CMAKE_BUILD_WITH_CMAKE) + typedef cmsys::hash_map<std::string, cmTarget*> TargetMap; +#else + typedef std::map<std::string,cmTarget *> TargetMap; +#endif + TargetMap TotalTargets; + TargetMap AliasTargets; + TargetMap ImportedTargets; std::vector<cmGeneratorExpressionEvaluationFile*> EvaluationFiles; virtual const char* GetPredefinedTargetsFolder(); diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx index e80df84..e6672a8 100644 --- a/Source/cmGlobalVisualStudio8Generator.cxx +++ b/Source/cmGlobalVisualStudio8Generator.cxx @@ -341,7 +341,7 @@ void cmGlobalVisualStudio8Generator::Generate() if(this->AddCheckTarget()) { // All targets depend on the build-system check target. - for(std::map<std::string,cmTarget *>::const_iterator + for(TargetMap::const_iterator ti = this->TotalTargets.begin(); ti != this->TotalTargets.end(); ++ti) { diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index b3975b4..d44da37 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -1219,7 +1219,7 @@ cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen, void cmGlobalXCodeGenerator::ForceLinkerLanguages() { // This makes sure all targets link using the proper language. - for(std::map<std::string, cmTarget*>::const_iterator + for(TargetMap::const_iterator ti = this->TotalTargets.begin(); ti != this->TotalTargets.end(); ++ti) { this->ForceLinkerLanguage(*ti->second); diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 9ad637a..801627a 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -3858,8 +3858,7 @@ cmTarget* cmMakefile::FindTarget(const std::string& name, { if (!excludeAliases) { - std::map<std::string, cmTarget*>::const_iterator i - = this->AliasTargets.find(name); + TargetMap::const_iterator i = this->AliasTargets.find(name); if (i != this->AliasTargets.end()) { return i->second; @@ -4081,7 +4080,7 @@ cmTarget* cmMakefile::FindTargetToUse(const std::string& name, { // Look for an imported target. These take priority because they // are more local in scope and do not have to be globally unique. - std::map<std::string, cmTarget*>::const_iterator + TargetMap::const_iterator imported = this->ImportedTargets.find(name); if(imported != this->ImportedTargets.end()) { diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 3bccb63..b4ee3b8 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -909,7 +909,12 @@ protected: // libraries, classes, and executables mutable cmTargets Targets; - std::map<std::string, cmTarget*> AliasTargets; +#if defined(CMAKE_BUILD_WITH_CMAKE) + typedef cmsys::hash_map<std::string, cmTarget*> TargetMap; +#else + typedef std::map<std::string, cmTarget*> TargetMap; +#endif + TargetMap AliasTargets; cmGeneratorTargetsType GeneratorTargets; std::vector<cmSourceFile*> SourceFiles; @@ -1010,7 +1015,7 @@ private: friend class cmMakefileCall; std::vector<cmTarget*> ImportedTargetsOwned; - std::map<std::string, cmTarget*> ImportedTargets; + TargetMap ImportedTargets; // Internal policy stack management. void PushPolicy(bool weak = false, |