diff options
| -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) |
