diff options
author | Stephen Kelly <steveire@gmail.com> | 2013-02-03 06:33:15 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2013-02-03 22:04:03 (GMT) |
commit | e48d84209cde93b43fcfb305897b4f52cd18a55f (patch) | |
tree | 54d2722367a8d32055e20ebc23d8a8f3f5451ef2 /Source/cmGeneratorExpression.cxx | |
parent | 089fe1c13d8fa73be5182162a855c17351d1f918 (diff) | |
download | CMake-e48d84209cde93b43fcfb305897b4f52cd18a55f.zip CMake-e48d84209cde93b43fcfb305897b4f52cd18a55f.tar.gz CMake-e48d84209cde93b43fcfb305897b4f52cd18a55f.tar.bz2 |
Cache context-independent includes on evaluation.
Generator expressions whose output depends on the configuration
now record that fact. The GetIncludeDirectories method can use
that result to cache the include directories for later calls.
GetIncludeDirectories is called multiple times for a target
for each configuration, so this should restore performance for
multi-config generators.
Diffstat (limited to 'Source/cmGeneratorExpression.cxx')
-rw-r--r-- | Source/cmGeneratorExpression.cxx | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/Source/cmGeneratorExpression.cxx b/Source/cmGeneratorExpression.cxx index 78ae8f2..7add1bf 100644 --- a/Source/cmGeneratorExpression.cxx +++ b/Source/cmGeneratorExpression.cxx @@ -88,6 +88,7 @@ const char *cmCompiledGeneratorExpression::Evaluate( context.Config = config; context.Quiet = quiet; context.HadError = false; + context.HadContextSensitiveCondition = false; context.HeadTarget = headTarget; context.CurrentTarget = currentTarget ? currentTarget : headTarget; context.Backtrace = this->Backtrace; @@ -109,6 +110,10 @@ const char *cmCompiledGeneratorExpression::Evaluate( break; } } + if (!context.HadError) + { + this->HadContextSensitiveCondition = context.HadContextSensitiveCondition; + } this->Targets = context.Targets; // TODO: Return a std::string from here instead? @@ -118,7 +123,8 @@ const char *cmCompiledGeneratorExpression::Evaluate( cmCompiledGeneratorExpression::cmCompiledGeneratorExpression( cmListFileBacktrace const& backtrace, const char *input) - : Backtrace(backtrace), Input(input ? input : "") + : Backtrace(backtrace), Input(input ? input : ""), + HadContextSensitiveCondition(false) { cmGeneratorExpressionLexer l; std::vector<cmGeneratorExpressionToken> tokens = |