diff options
Diffstat (limited to 'Source/cmGeneratorExpression.cxx')
-rw-r--r-- | Source/cmGeneratorExpression.cxx | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/Source/cmGeneratorExpression.cxx b/Source/cmGeneratorExpression.cxx index 0a27016..a4990dc 100644 --- a/Source/cmGeneratorExpression.cxx +++ b/Source/cmGeneratorExpression.cxx @@ -72,18 +72,6 @@ const char *cmCompiledGeneratorExpression::Evaluate( cmGeneratorExpressionDAGChecker *dagChecker, std::string const& language) const { - if (!this->NeedsEvaluation) - { - return this->Input.c_str(); - } - - this->Output = ""; - - std::vector<cmGeneratorExpressionEvaluator*>::const_iterator it - = this->Evaluators.begin(); - const std::vector<cmGeneratorExpressionEvaluator*>::const_iterator end - = this->Evaluators.end(); - cmGeneratorExpressionContext context; context.Makefile = mf; context.Config = config; @@ -98,6 +86,26 @@ const char *cmCompiledGeneratorExpression::Evaluate( context.Backtrace = this->Backtrace; context.Language = language; + return this->EvaluateWithContext(context, dagChecker); +} + +//---------------------------------------------------------------------------- +const char* cmCompiledGeneratorExpression::EvaluateWithContext( + cmGeneratorExpressionContext& context, + cmGeneratorExpressionDAGChecker *dagChecker) const +{ + if (!this->NeedsEvaluation) + { + return this->Input.c_str(); + } + + this->Output = ""; + + std::vector<cmGeneratorExpressionEvaluator*>::const_iterator it + = this->Evaluators.begin(); + const std::vector<cmGeneratorExpressionEvaluator*>::const_iterator end + = this->Evaluators.end(); + for ( ; it != end; ++it) { this->Output += (*it)->Evaluate(&context, dagChecker); |