summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValeri Ochinski <v19930312@gmail.com>2023-12-02 06:16:36 +0300
committerDylan Baker <dylan@pnwbakers.com>2025-11-13 08:28:46 -0800
commit3429a2b4262db109ca24d3440f71a08aeeceb6c9 (patch)
tree68105fc49094a0392428bf92ee77d3b36261c656
parentb207b2744ae90fb9c599b534e10ecf39f50c9b2c (diff)
downloadmeson-3429a2b4262db109ca24d3440f71a08aeeceb6c9.tar.gz
vala: utilize depfiles
-rw-r--r--mesonbuild/backend/ninjabackend.py16
-rw-r--r--mesonbuild/compilers/vala.py8
2 files changed, 22 insertions, 2 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index 02208ebc8..5fe753293 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -1807,6 +1807,8 @@ class NinjaBackend(backends.Backend):
self.compiler_to_rule_name(valac),
all_files + dependency_vapis)
element.add_item('ARGS', args)
+ depfile = valac.depfile_for_object(os.path.join(self.get_target_dir(target), target.name))
+ element.add_item('DEPFILE', depfile)
element.add_dep(extra_dep_files)
self.add_build(element)
self.create_target_source_introspection(target, valac, args, all_files, [])
@@ -2510,9 +2512,19 @@ class NinjaBackend(backends.Backend):
def generate_vala_compile_rules(self, compiler) -> None:
rule = self.compiler_to_rule_name(compiler)
- command = compiler.get_exelist() + ['$ARGS', '$in']
+ command = compiler.get_exelist()
description = 'Compiling Vala source $in'
- self.add_rule(NinjaRule(rule, command, [], description, extra='restat = 1'))
+
+ depargs = compiler.get_dependency_gen_args('$out', '$DEPFILE')
+ depfile = '$DEPFILE' if depargs else None
+ depstyle = 'gcc' if depargs else None
+
+ args = depargs + ['$ARGS', '$in']
+
+ self.add_rule(NinjaRule(rule, command + args, [], description,
+ depfile=depfile,
+ deps=depstyle,
+ extra='restat = 1'))
def generate_cython_compile_rules(self, compiler: 'Compiler') -> None:
rule = self.compiler_to_rule_name(compiler)
diff --git a/mesonbuild/compilers/vala.py b/mesonbuild/compilers/vala.py
index bbaefedb6..a3a196093 100644
--- a/mesonbuild/compilers/vala.py
+++ b/mesonbuild/compilers/vala.py
@@ -39,6 +39,14 @@ class ValaCompiler(Compiler):
def get_optimization_args(self, optimization_level: str) -> T.List[str]:
return []
+ def get_dependency_gen_args(self, outtarget: str, outfile: str) -> T.List[str]:
+ if version_compare(self.version, '>=0.47.2'):
+ return ['--depfile', outfile]
+ return []
+
+ def get_depfile_suffix(self) -> str:
+ return 'depfile'
+
def get_debug_args(self, is_debug: bool) -> T.List[str]:
return ['--debug'] if is_debug else []