summaryrefslogtreecommitdiff
path: root/mesonbuild/modules/_qt.py
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 /mesonbuild/modules/_qt.py
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.
Diffstat (limited to 'mesonbuild/modules/_qt.py')
-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))