From fb365b17ca339a25688ff61918280a46d64943b9 Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Mon, 15 Jan 2024 10:06:48 +0100 Subject: Analysed target: keep track of implied export targets ... that are eligible for caching. In this way, we can accurately keep track of the dependencies between target-level cache entries. Note that it is enough to track the export targets eligible for caching, as no target depending on an ineligible export target can be eligible. --- src/buildtool/build_engine/target_map/target_map.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/buildtool/build_engine/target_map/target_map.cpp') diff --git a/src/buildtool/build_engine/target_map/target_map.cpp b/src/buildtool/build_engine/target_map/target_map.cpp index ebb07a91..5ca46c93 100644 --- a/src/buildtool/build_engine/target_map/target_map.cpp +++ b/src/buildtool/build_engine/target_map/target_map.cpp @@ -297,6 +297,13 @@ void withDependencies( } } + // Compute implied export targets + std::set implied_export{}; + for (auto const& dep : dependency_values) { + implied_export.insert((*dep)->ImpliedExport().begin(), + (*dep)->ImpliedExport().end()); + } + // Evaluate string parameters auto string_fields_fcts = FunctionMap::MakePtr(FunctionMap::underlying_map_t{ @@ -849,6 +856,7 @@ void withDependencies( std::move(trees), std::move(effective_vars), std::move(tainted), + std::move(implied_export), deps_info); analysis_result = result_map->Add(key.target, effective_conf, std::move(analysis_result)); @@ -1371,6 +1379,7 @@ void withTargetNode( {}, {}, {}, + {}, TargetGraphInformation::kSource})); } else { @@ -1472,6 +1481,7 @@ void TreeTarget( std::vector{}, std::unordered_set{}, std::set{}, + std::set{}, TargetGraphInformation::kSource); analysis_result = result_map->Add(key.target, {}, std::move(analysis_result)); @@ -1557,6 +1567,7 @@ void TreeTarget( std::vector{tree}, std::unordered_set{}, std::set{}, + std::set{}, TargetGraphInformation::kSource); analysis_result = result_map->Add( key.target, {}, std::move(analysis_result)); @@ -1590,6 +1601,7 @@ void GlobResult(const std::vector& values, std::vector{}, std::unordered_set{}, std::set{}, + std::set{}, TargetGraphInformation::kSource); (*setter)(std::move(target)); } -- cgit v1.2.3