From 1116698a89e4057300481bac8f38bfd95f4e9ce5 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 21 Feb 2015 11:00:14 +0100 Subject: [PATCH 1/4] cmTarget: Don't needlessly clear vectors in the destructor. This will be done anyway for us. --- Source/cmTarget.cxx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 1ad0d486a..1e47294d3 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -6875,11 +6875,11 @@ cmTargetInternalPointer //---------------------------------------------------------------------------- cmTargetInternalPointer::~cmTargetInternalPointer() { - deleteAndClear(this->Pointer->IncludeDirectoriesEntries); - deleteAndClear(this->Pointer->CompileOptionsEntries); - deleteAndClear(this->Pointer->CompileFeaturesEntries); - deleteAndClear(this->Pointer->CompileDefinitionsEntries); - deleteAndClear(this->Pointer->SourceEntries); + cmDeleteAll(this->Pointer->IncludeDirectoriesEntries); + cmDeleteAll(this->Pointer->CompileOptionsEntries); + cmDeleteAll(this->Pointer->CompileFeaturesEntries); + cmDeleteAll(this->Pointer->CompileDefinitionsEntries); + cmDeleteAll(this->Pointer->SourceEntries); delete this->Pointer; } From f19692342ba41ddb2638e118e2864bceca77af59 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 21 Feb 2015 11:01:21 +0100 Subject: [PATCH 2/4] cmFunctionCommand: Remove ineffectual code. The name variable is never used. --- Source/cmFunctionCommand.cxx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Source/cmFunctionCommand.cxx b/Source/cmFunctionCommand.cxx index a4d93579e..9297688c5 100644 --- a/Source/cmFunctionCommand.cxx +++ b/Source/cmFunctionCommand.cxx @@ -175,11 +175,6 @@ IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, // if this is the endfunction for this function then execute if (!this->Depth) { - std::string name = this->Args[0]; - name += "( "; - name += cmJoin(this->Args, " "); - name += " )"; - // create a new command and add it to cmake cmFunctionHelperCommand *f = new cmFunctionHelperCommand(); f->Args = this->Args; From 2d130896a05ef14f2ef53ed472c6926a85cc5399 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 21 Feb 2015 11:24:24 +0100 Subject: [PATCH 3/4] cmMakefile: Fix list of macros generation. It was broken by commit 7ee56f03 (Convert loops into the commonly used pattern., 2015-01-17). --- Source/cmMakefile.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index ac5fec9c3..ab0d60ac3 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -3757,7 +3757,7 @@ void cmMakefile::GetListOfMacros(std::string& macros) const { macros += sep; macros += it->first; - sep = ""; + sep = ";"; } } From c021f59c1f2f3d892b621a9ba163b069f2a2f0a9 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 21 Feb 2015 11:25:47 +0100 Subject: [PATCH 4/4] cmMakefile: Store macro list in a vector not in a map. The signature was computed (incorrectly) and stored as the map value, but never used. Remove it now. --- Source/cmGetCMakePropertyCommand.cxx | 1 + Source/cmMacroCommand.cxx | 10 +--------- Source/cmMakefile.cxx | 22 ++++++---------------- Source/cmMakefile.h | 5 ++--- 4 files changed, 10 insertions(+), 28 deletions(-) diff --git a/Source/cmGetCMakePropertyCommand.cxx b/Source/cmGetCMakePropertyCommand.cxx index 84c00bac4..fd1859692 100644 --- a/Source/cmGetCMakePropertyCommand.cxx +++ b/Source/cmGetCMakePropertyCommand.cxx @@ -39,6 +39,7 @@ bool cmGetCMakePropertyCommand } else if ( args[1] == "MACROS" ) { + output.clear(); this->Makefile->GetListOfMacros(output); } else if ( args[1] == "COMPONENTS" ) diff --git a/Source/cmMacroCommand.cxx b/Source/cmMacroCommand.cxx index 29e8cb1f9..12c8576fd 100644 --- a/Source/cmMacroCommand.cxx +++ b/Source/cmMacroCommand.cxx @@ -224,15 +224,7 @@ IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, // if this is the endmacro for this macro then execute if (!this->Depth) { - std::string name = this->Args[0]; - name += "("; - if (!this->Args.empty()) - { - name += " "; - name += cmJoin(this->Args, " "); - } - name += " )"; - mf.AddMacro(this->Args[0].c_str(), name.c_str()); + mf.AddMacro(this->Args[0].c_str()); // create a new command and add it to cmake cmMacroHelperCommand *f = new cmMacroHelperCommand(); f->Args = this->Args; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index ab0d60ac3..93b2ce61c 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -143,7 +143,7 @@ cmMakefile::cmMakefile(const cmMakefile& mf): Internal(new Internals) this->LocalGenerator = mf.LocalGenerator; this->FunctionBlockers = mf.FunctionBlockers; - this->MacrosMap = mf.MacrosMap; + this->MacrosList = mf.MacrosList; this->SubDirectoryOrder = mf.SubDirectoryOrder; this->Properties = mf.Properties; this->PreOrder = mf.PreOrder; @@ -3739,26 +3739,16 @@ cmVariableWatch *cmMakefile::GetVariableWatch() const } #endif -void cmMakefile::AddMacro(const char* name, const char* signature) +void cmMakefile::AddMacro(const char* name) { - if ( !name || !signature ) - { - return; - } - this->MacrosMap[name] = signature; + assert(name); + this->MacrosList.push_back(name); } void cmMakefile::GetListOfMacros(std::string& macros) const { - StringStringMap::const_iterator it; - macros = ""; - const char* sep = ""; - for ( it = this->MacrosMap.begin(); it != this->MacrosMap.end(); ++it ) - { - macros += sep; - macros += it->first; - sep = ";"; - } + assert(macros.empty()); + macros = cmJoin(this->MacrosList, ";"); } cmCacheManager *cmMakefile::GetCacheManager() const diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 895a2fc21..e98f1d9ce 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -841,7 +841,7 @@ public: * Add a macro to the list of macros. The arguments should be name of the * macro and a documentation signature of it */ - void AddMacro(const char* name, const char* signature); + void AddMacro(const char* name); ///! Add a new cmTest to the list of tests for this makefile. cmTest* CreateTest(const std::string& testName); @@ -1065,8 +1065,7 @@ private: std::stack LoopBlockCounter; - typedef std::map StringStringMap; - StringStringMap MacrosMap; + std::vector MacrosList; std::map SubDirectoryOrder;