summaryrefslogtreecommitdiff
path: root/mesonbuild/backend
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2025-04-03 08:52:59 +0200
committerDylan Baker <dylan@pnwbakers.com>2025-04-04 11:56:17 -0700
commit9b0a178a27be75f7b53ada4bacde2a7de418281e (patch)
treed1b018fccba18b2057dd44b940326380d84483ff /mesonbuild/backend
parent4a3d60e2020753d1ad891fbb0ac52534784715f2 (diff)
downloadmeson-9b0a178a27be75f7b53ada4bacde2a7de418281e.tar.gz
backends: extract get_fortran_order_deps()
Allow reusing it for Rust targets. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'mesonbuild/backend')
-rw-r--r--mesonbuild/backend/ninjabackend.py20
1 files changed, 12 insertions, 8 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index 8cf459f7f..da144016f 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -1027,19 +1027,13 @@ class NinjaBackend(backends.Backend):
pch_objects = []
o, od = self.flatten_object_list(target)
- obj_targets = [t for t in od if t.uses_fortran()]
obj_list.extend(o)
+ fortran_order_deps = self.get_fortran_order_deps(od)
- # We don't need this order dep if we're using dyndeps, as the
- # depscanner will handle this for us, which produces a better dependency
- # graph
- fortran_order_deps: T.List[File] = []
- if not self.use_dyndeps_for_fortran():
- fortran_order_deps = [File(True, *os.path.split(self.get_target_filename(t))) for t in obj_targets]
fortran_inc_args: T.List[str] = []
if target.uses_fortran():
fortran_inc_args = mesonlib.listify([target.compilers['fortran'].get_include_args(
- self.get_target_private_dir(t), is_system=False) for t in obj_targets])
+ self.get_target_private_dir(t), is_system=False) for t in od if t.uses_fortran()])
# add the private directories of all transitive dependencies, which
# are needed for their mod files
@@ -2519,6 +2513,16 @@ class NinjaBackend(backends.Backend):
minimum version is bumped to 1.10.'''
return self.ninja_has_dyndeps
+ def get_fortran_order_deps(self, deps: T.List[build.BuildTarget]) -> T.List[File]:
+ # We don't need this order dep if we're using dyndeps, as the
+ # depscanner will handle this for us, which produces a better dependency
+ # graph
+ if self.use_dyndeps_for_fortran():
+ return []
+
+ return [File(True, *os.path.split(self.get_target_filename(t))) for t in deps
+ if t.uses_fortran()]
+
def generate_fortran_dep_hack(self, crstr: str) -> None:
if self.use_dyndeps_for_fortran():
return