summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Véron <david.veron@rubycat.eu>2025-07-24 14:38:48 +0200
committerDylan Baker <dylan@pnwbakers.com>2025-12-08 10:12:21 -0800
commitc8a7fd7ff641ad664803bcbf06ada494e0db91aa (patch)
tree78932b51e6416b0a31d3816895d86f6a7182ea5c
parent7cbde1ff43410a7953456609059461058fcbf66e (diff)
downloadmeson-c8a7fd7ff641ad664803bcbf06ada494e0db91aa.tar.gz
qt.compile_moc: look for targets in dependencies
If qt.compile_moc dependencies contain targets. The generated build does not exibit this dependency ie it is possible that the dependency build is run concurrently with MOC. Tell the generator that the MOC calls depends on targets in dependencies to be generated.
-rw-r--r--mesonbuild/modules/_qt.py5
1 files changed, 5 insertions, 0 deletions
diff --git a/mesonbuild/modules/_qt.py b/mesonbuild/modules/_qt.py
index b75169e4b..ae6e2d477 100644
--- a/mesonbuild/modules/_qt.py
+++ b/mesonbuild/modules/_qt.py
@@ -568,11 +568,15 @@ class QtBaseModule(ExtensionModule):
inc = state.get_include_args(include_dirs=kwargs['include_directories'])
compile_args: T.List[str] = []
+ sources: T.List[T.Union[build.BuildTarget, build.CustomTarget, build.CustomTargetIndex]] = []
for dep in kwargs['dependencies']:
compile_args.extend(a for a in dep.get_all_compile_args() if a.startswith(('-I', '-D')))
if isinstance(dep, InternalDependency):
for incl in dep.include_directories:
compile_args.extend(f'-I{i}' for i in incl.to_string_list(self.interpreter.source_root, self.interpreter.environment.build_dir))
+ for src in dep.sources:
+ if isinstance(src, (build.CustomTarget, build.BuildTarget, build.CustomTargetIndex)):
+ sources.append(src)
output: T.List[build.GeneratedList] = []
@@ -593,6 +597,7 @@ class QtBaseModule(ExtensionModule):
moc_gen = build.Generator(
state.environment,
self.tools['moc'], arguments, header_gen_output,
+ depends=sources,
depfile='moc_@BASENAME@.cpp.d',
name=f'Qt{self.qt_version} moc header')
output.append(moc_gen.process_files(kwargs['headers'], state.subdir, preserve_path_from))