summaryrefslogtreecommitdiffstats
path: root/Source/cmGeneratorExpression.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmGeneratorExpression.cxx')
-rw-r--r--Source/cmGeneratorExpression.cxx32
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);