From 325599caa2974f30d35f9ad0dbe1fc0760290b3e Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Wed, 30 Apr 2014 15:40:39 -0400 Subject: [PATCH] cmGlobalGenerator: Store targets in hash maps --- Source/cmGlobalGenerator.cxx | 8 +++----- Source/cmGlobalGenerator.h | 15 ++++++++++++--- Source/cmGlobalVisualStudio8Generator.cxx | 2 +- Source/cmGlobalXCodeGenerator.cxx | 2 +- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index f09f7b3be..4bdec3fe0 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -2070,15 +2070,13 @@ cmGlobalGenerator::FindTarget(const std::string& name, { if (!excludeAliases) { - std::map::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::const_iterator i = - this->TotalTargets.find ( name ); + TargetMap::const_iterator i = this->TotalTargets.find ( name ); if ( i != this->TotalTargets.end() ) { return i->second; @@ -2859,7 +2857,7 @@ void cmGlobalGenerator::WriteSummary() cmGeneratedFileStream fout(fname.c_str()); // Generate summary information files for each target. - for(std::map::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 82fb1e597..14ec99a9f 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 +#endif + class cmake; class cmGeneratorTarget; class cmGeneratorExpressionEvaluationFile; @@ -389,9 +393,14 @@ protected: cmTargetManifest TargetManifest; // All targets in the entire project. - std::map TotalTargets; - std::map AliasTargets; - std::map ImportedTargets; +#if defined(CMAKE_BUILD_WITH_CMAKE) + typedef cmsys::hash_map TargetMap; +#else + typedef std::map TargetMap; +#endif + TargetMap TotalTargets; + TargetMap AliasTargets; + TargetMap ImportedTargets; std::vector EvaluationFiles; virtual const char* GetPredefinedTargetsFolder(); diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx index e80df845d..e6672a816 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::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 b3975b48a..d44da3794 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::const_iterator + for(TargetMap::const_iterator ti = this->TotalTargets.begin(); ti != this->TotalTargets.end(); ++ti) { this->ForceLinkerLanguage(*ti->second);