diff options
| author | RobotLeopard86 <63123751+RobotLeopard86@users.noreply.github.com> | 2025-11-21 19:34:20 -0800 |
|---|---|---|
| committer | Eli Schwartz <eschwartz93@gmail.com> | 2025-12-08 16:16:45 -0500 |
| commit | 1d2430ef8be88d73db68f4b96c767fd915696bb1 (patch) | |
| tree | 01996f6803a792f85df22afd62c7d5f64aa215b8 | |
| parent | 5412f614a5391f146c3fb8fa878b0a3903836ee6 (diff) | |
| download | meson-1d2430ef8be88d73db68f4b96c767fd915696bb1.tar.gz | |
build: Add de-duplication for non-result targets in get_all_link_deps
| -rw-r--r-- | mesonbuild/build.py | 9 |
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) |
