summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobotLeopard86 <63123751+RobotLeopard86@users.noreply.github.com>2025-11-21 19:34:20 -0800
committerEli Schwartz <eschwartz93@gmail.com>2025-12-08 16:16:45 -0500
commit1d2430ef8be88d73db68f4b96c767fd915696bb1 (patch)
tree01996f6803a792f85df22afd62c7d5f64aa215b8
parent5412f614a5391f146c3fb8fa878b0a3903836ee6 (diff)
downloadmeson-1d2430ef8be88d73db68f4b96c767fd915696bb1.tar.gz
build: Add de-duplication for non-result targets in get_all_link_deps
-rw-r--r--mesonbuild/build.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 4a1a8189c..906f55289 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -1174,20 +1174,23 @@ class BuildTarget(Target):
at link time, see get_dependencies() for that.
"""
result: OrderedSet[BuildTargetTypes] = OrderedSet()
+ nonresults: T.Set[BuildTargetTypes] = set()
stack: T.Deque[BuildTargetTypes] = deque()
stack.appendleft(self)
while stack:
t = stack.pop()
- if t in result:
+ if t in result or t in nonresults:
continue
if isinstance(t, CustomTargetIndex):
stack.appendleft(t.target)
continue
if isinstance(t, SharedLibrary):
result.add(t)
+ else:
+ nonresults.add(t)
if isinstance(t, BuildTarget):
- stack.extendleft(t.link_targets)
- stack.extendleft(t.link_whole_targets)
+ stack.extendleft((t2 for t2 in t.link_targets if t2 not in nonresults))
+ stack.extendleft((t2 for t2 in t.link_whole_targets if t2 not in nonresults))
return list(result)
@lru_cache(maxsize=None)