diff options
author | Brad King <brad.king@kitware.com> | 2017-08-22 12:27:01 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2017-08-22 12:27:04 (GMT) |
commit | 8a0ed37f617347a6c7c37c50a5321f05d678fa76 (patch) | |
tree | b6061c6e169419d407e7c1e9d882b4cca7943dce | |
parent | 6b37d69cdb815772983265a210400caa1cb615a8 (diff) | |
parent | 52527468dc9e1e35617565f1736b6ee945c4a23b (diff) | |
download | CMake-8a0ed37f617347a6c7c37c50a5321f05d678fa76.zip CMake-8a0ed37f617347a6c7c37c50a5321f05d678fa76.tar.gz CMake-8a0ed37f617347a6c7c37c50a5321f05d678fa76.tar.bz2 |
Merge topic 'ccg-no-mutable'
52527468 cmCustomCommandGenerator: Avoid mutable state
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1145
-rw-r--r-- | Source/cmCustomCommandGenerator.cxx | 35 | ||||
-rw-r--r-- | Source/cmCustomCommandGenerator.h | 3 |
2 files changed, 17 insertions, 21 deletions
diff --git a/Source/cmCustomCommandGenerator.cxx b/Source/cmCustomCommandGenerator.cxx index 67213ec..ef46b17 100644 --- a/Source/cmCustomCommandGenerator.cxx +++ b/Source/cmCustomCommandGenerator.cxx @@ -24,7 +24,6 @@ cmCustomCommandGenerator::cmCustomCommandGenerator(cmCustomCommand const& cc, , OldStyle(cc.GetEscapeOldStyle()) , MakeVars(cc.GetEscapeAllowMakeVars()) , GE(new cmGeneratorExpression(cc.GetBacktrace())) - , DependsDone(false) { const cmCustomCommandLines& cmdlines = this->CC.GetCommandLines(); for (cmCustomCommandLines::const_iterator cmdline = cmdlines.begin(); @@ -44,6 +43,22 @@ cmCustomCommandGenerator::cmCustomCommandGenerator(cmCustomCommand const& cc, } this->CommandLines.push_back(argv); } + + std::vector<std::string> depends = this->CC.GetDepends(); + for (std::vector<std::string>::const_iterator i = depends.begin(); + i != depends.end(); ++i) { + CM_AUTO_PTR<cmCompiledGeneratorExpression> cge = this->GE->Parse(*i); + std::vector<std::string> result; + cmSystemTools::ExpandListArgument(cge->Evaluate(this->LG, this->Config), + result); + for (std::vector<std::string>::iterator it = result.begin(); + it != result.end(); ++it) { + if (cmSystemTools::FileIsFullPath(it->c_str())) { + *it = cmSystemTools::CollapseFullPath(*it); + } + } + this->Depends.insert(this->Depends.end(), result.begin(), result.end()); + } } cmCustomCommandGenerator::~cmCustomCommandGenerator() @@ -171,23 +186,5 @@ std::vector<std::string> const& cmCustomCommandGenerator::GetByproducts() const std::vector<std::string> const& cmCustomCommandGenerator::GetDepends() const { - if (!this->DependsDone) { - this->DependsDone = true; - std::vector<std::string> depends = this->CC.GetDepends(); - for (std::vector<std::string>::const_iterator i = depends.begin(); - i != depends.end(); ++i) { - CM_AUTO_PTR<cmCompiledGeneratorExpression> cge = this->GE->Parse(*i); - std::vector<std::string> result; - cmSystemTools::ExpandListArgument(cge->Evaluate(this->LG, this->Config), - result); - for (std::vector<std::string>::iterator it = result.begin(); - it != result.end(); ++it) { - if (cmSystemTools::FileIsFullPath(it->c_str())) { - *it = cmSystemTools::CollapseFullPath(*it); - } - } - this->Depends.insert(this->Depends.end(), result.begin(), result.end()); - } - } return this->Depends; } diff --git a/Source/cmCustomCommandGenerator.h b/Source/cmCustomCommandGenerator.h index 0a2adb5..ea33b51 100644 --- a/Source/cmCustomCommandGenerator.h +++ b/Source/cmCustomCommandGenerator.h @@ -21,9 +21,8 @@ class cmCustomCommandGenerator bool OldStyle; bool MakeVars; cmGeneratorExpression* GE; - mutable bool DependsDone; - mutable std::vector<std::string> Depends; cmCustomCommandLines CommandLines; + std::vector<std::string> Depends; const char* GetCrossCompilingEmulator(unsigned int c) const; const char* GetArgv0Location(unsigned int c) const; |