mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-31 02:39:48 -06:00
Profiling: Profile genex evaluation
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
#include "cmLocalGenerator.h"
|
||||
#include "cmStringAlgorithms.h"
|
||||
#include "cmSystemTools.h"
|
||||
#include "cmake.h"
|
||||
|
||||
cmGeneratorExpression::cmGeneratorExpression(cmake& cmakeInstance,
|
||||
cmListFileBacktrace backtrace)
|
||||
@@ -43,6 +44,11 @@ std::string cmGeneratorExpression::Evaluate(
|
||||
cmGeneratorTarget const* currentTarget, std::string const& language)
|
||||
{
|
||||
if (Find(input) != std::string::npos) {
|
||||
#ifndef CMAKE_BOOTSTRAP
|
||||
auto profilingRAII = lg->GetCMakeInstance()->CreateProfilingEntry(
|
||||
"genex_compile_eval", input);
|
||||
#endif
|
||||
|
||||
cmCompiledGeneratorExpression cge(*lg->GetCMakeInstance(),
|
||||
cmListFileBacktrace(), std::move(input));
|
||||
return cge.Evaluate(lg, config, headTarget, dagChecker, currentTarget,
|
||||
@@ -102,10 +108,15 @@ const std::string& cmCompiledGeneratorExpression::EvaluateWithContext(
|
||||
}
|
||||
|
||||
cmCompiledGeneratorExpression::cmCompiledGeneratorExpression(
|
||||
cmake& /*cmakeInstance*/, cmListFileBacktrace backtrace, std::string input)
|
||||
cmake& cmakeInstance, cmListFileBacktrace backtrace, std::string input)
|
||||
: Backtrace(std::move(backtrace))
|
||||
, Input(std::move(input))
|
||||
{
|
||||
#ifndef CMAKE_BOOTSTRAP
|
||||
auto profilingRAII =
|
||||
cmakeInstance.CreateProfilingEntry("genex_compile", this->Input);
|
||||
#endif
|
||||
|
||||
cmGeneratorExpressionLexer l;
|
||||
std::vector<cmGeneratorExpressionToken> tokens = l.Tokenize(this->Input);
|
||||
this->NeedsEvaluation = l.GetSawGeneratorExpression();
|
||||
|
||||
@@ -4,8 +4,14 @@
|
||||
|
||||
#include <sstream>
|
||||
|
||||
#ifndef CMAKE_BOOTSTRAP
|
||||
# include <cm3p/json/value.h>
|
||||
#endif
|
||||
|
||||
#include "cmGeneratorExpressionContext.h"
|
||||
#include "cmGeneratorExpressionNode.h"
|
||||
#include "cmLocalGenerator.h"
|
||||
#include "cmake.h"
|
||||
|
||||
GeneratorExpressionContent::GeneratorExpressionContent(
|
||||
const char* startContent, size_t length)
|
||||
@@ -61,6 +67,12 @@ std::string GeneratorExpressionContent::Evaluate(
|
||||
cmGeneratorExpressionContext* context,
|
||||
cmGeneratorExpressionDAGChecker* dagChecker) const
|
||||
{
|
||||
#ifndef CMAKE_BOOTSTRAP
|
||||
auto evalProfilingRAII =
|
||||
context->LG->GetCMakeInstance()->CreateProfilingEntry(
|
||||
"genex_eval", this->GetOriginalExpression());
|
||||
#endif
|
||||
|
||||
std::string identifier;
|
||||
{
|
||||
for (const auto& pExprEval : this->IdentifierChildren) {
|
||||
@@ -101,7 +113,24 @@ std::string GeneratorExpressionContent::Evaluate(
|
||||
return std::string();
|
||||
}
|
||||
|
||||
return node->Evaluate(parameters, context, this, dagChecker);
|
||||
{
|
||||
#ifndef CMAKE_BOOTSTRAP
|
||||
auto execProfilingRAII =
|
||||
context->LG->GetCMakeInstance()->CreateProfilingEntry(
|
||||
"genex_exec", identifier, [¶meters]() -> Json::Value {
|
||||
Json::Value args = Json::objectValue;
|
||||
if (!parameters.empty()) {
|
||||
args["genexArgs"] = Json::arrayValue;
|
||||
for (auto const& parameter : parameters) {
|
||||
args["genexArgs"].append(parameter);
|
||||
}
|
||||
}
|
||||
return args;
|
||||
});
|
||||
#endif
|
||||
|
||||
return node->Evaluate(parameters, context, this, dagChecker);
|
||||
}
|
||||
}
|
||||
|
||||
std::string GeneratorExpressionContent::EvaluateParameters(
|
||||
|
||||
Reference in New Issue
Block a user