diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-03-21 16:49:22 +0100 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-03-22 18:57:13 +0100 |
commit | f2b0013d10859c19a774f52f740e6d36b84cfbdf (patch) | |
tree | e5225c4f5572287f0c188797839b4a0661b68482 /src/buildtool/build_engine/target_map/export.cpp | |
parent | cf3650799e0cc280e985b3c7ec45fab4ee0d2153 (diff) | |
download | justbuild-f2b0013d10859c19a774f52f740e6d36b84cfbdf.tar.gz |
Avoid unnecessary analysis of export targets
For export targets, we know ahead of time the effective configuration;
so, if the current configuration is not the effective anyway, we
can simply analyse the effective configuration and take that result.
As a side effect, we also count the number of observed export
targets correctly.
Diffstat (limited to 'src/buildtool/build_engine/target_map/export.cpp')
-rw-r--r-- | src/buildtool/build_engine/target_map/export.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/buildtool/build_engine/target_map/export.cpp b/src/buildtool/build_engine/target_map/export.cpp index b8b5b1db..e8825f67 100644 --- a/src/buildtool/build_engine/target_map/export.cpp +++ b/src/buildtool/build_engine/target_map/export.cpp @@ -106,7 +106,6 @@ void ExportRule( const BuildMaps::Target::TargetMap::SetterPtr& setter, const BuildMaps::Target::TargetMap::LoggerPtr& logger, const gsl::not_null<BuildMaps::Target::ResultTargetMap*> result_map) { - stats->IncrementExportsFoundCounter(); auto desc = BuildMaps::Base::FieldReader::CreatePtr( desc_json, key.target, "export target", logger); auto flexible_vars = desc->ReadStringList("flexible_config"); @@ -114,6 +113,18 @@ void ExportRule( return; } auto effective_config = key.config.Prune(*flexible_vars); + if (key.config != effective_config) { + (*subcaller)( + {BuildMaps::Target::ConfiguredTarget{.target = key.target, + .config = effective_config}}, + [setter](auto const& values) { + AnalysedTargetPtr result = *(values[0]); + (*setter)(std::move(result)); + }, + logger); + return; + } + stats->IncrementExportsFoundCounter(); auto const& target_name = key.target.GetNamedTarget(); auto repo_key = repo_config->RepositoryKey(target_name.repository); auto target_cache_key = |