summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/modules/qt.py7
-rw-r--r--test cases/frameworks/4 qt/manualinclude.cpp1
-rw-r--r--test cases/frameworks/4 qt/meson.build13
-rw-r--r--test cases/frameworks/4 qt/mocdep/meson.build3
-rw-r--r--test cases/frameworks/4 qt/mocdep/mocdep.h1
5 files changed, 20 insertions, 5 deletions
diff --git a/mesonbuild/modules/qt.py b/mesonbuild/modules/qt.py
index d5c327368..83dcf31bd 100644
--- a/mesonbuild/modules/qt.py
+++ b/mesonbuild/modules/qt.py
@@ -23,7 +23,7 @@ from . import ModuleReturnValue, ExtensionModule
from .. import build
from .. import coredata
from .. import mlog
-from ..dependencies import find_external_dependency, Dependency, ExternalLibrary
+from ..dependencies import find_external_dependency, Dependency, ExternalLibrary, InternalDependency
from ..mesonlib import MesonException, File, version_compare, Popen_safe
from ..interpreter import extract_required_kwarg
from ..interpreter.type_checking import INSTALL_DIR_KW, INSTALL_KW, NoneType
@@ -457,7 +457,10 @@ class QtBaseModule(ExtensionModule):
inc = state.get_include_args(include_dirs=kwargs['include_directories'])
compile_args: T.List[str] = []
for dep in kwargs['dependencies']:
- compile_args.extend([a for a in dep.get_all_compile_args() if a.startswith(('-I', '-D'))])
+ 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))
output: T.List[build.GeneratedList] = []
diff --git a/test cases/frameworks/4 qt/manualinclude.cpp b/test cases/frameworks/4 qt/manualinclude.cpp
index 60b94e510..ef151a44a 100644
--- a/test cases/frameworks/4 qt/manualinclude.cpp
+++ b/test cases/frameworks/4 qt/manualinclude.cpp
@@ -1,4 +1,5 @@
#include"manualinclude.h"
+#include <mocdep.h>
#include<QCoreApplication>
#include<QObject>
diff --git a/test cases/frameworks/4 qt/meson.build b/test cases/frameworks/4 qt/meson.build
index 825cd5766..04a5288bf 100644
--- a/test cases/frameworks/4 qt/meson.build
+++ b/test cases/frameworks/4 qt/meson.build
@@ -2,6 +2,9 @@ project('qt4, qt5, and qt6 build test', 'cpp',
# Qt6 requires C++ 17 support
default_options : ['cpp_std=c++17'])
+# Visit the subdir before entering the loop
+subdir('mocdep')
+
qt5_modules = ['Widgets']
qt6_modules = ['Widgets']
foreach qt : ['qt4', 'qt5', 'qt6']
@@ -114,17 +117,21 @@ foreach qt : ['qt4', 'qt5', 'qt6']
moc_extra_arguments : ['-DMOC_EXTRA_FLAG'], # This is just a random macro to test `extra_arguments`
moc_sources : 'manualinclude.cpp',
moc_headers : 'manualinclude.h',
- method : get_option('method'))
+ method : get_option('method'),
+ dependencies: mocdep,
+ )
manpreprocessed = qtmodule.compile_moc(
extra_args : ['-DMOC_EXTRA_FLAG'], # This is just a random macro to test `extra_arguments`
sources : 'manualinclude.cpp',
headers : 'manualinclude.h',
- method : get_option('method'))
+ method : get_option('method'),
+ dependencies: mocdep,
+ )
qtmaninclude = executable(qt + 'maninclude',
sources : ['manualinclude.cpp', manpreprocessed],
- dependencies : qtcore)
+ dependencies : [qtcore, mocdep])
test(qt + 'maninclude', qtmaninclude)
diff --git a/test cases/frameworks/4 qt/mocdep/meson.build b/test cases/frameworks/4 qt/mocdep/meson.build
new file mode 100644
index 000000000..174b42679
--- /dev/null
+++ b/test cases/frameworks/4 qt/mocdep/meson.build
@@ -0,0 +1,3 @@
+mocdep = declare_dependency(
+ include_directories: include_directories('.'),
+)
diff --git a/test cases/frameworks/4 qt/mocdep/mocdep.h b/test cases/frameworks/4 qt/mocdep/mocdep.h
new file mode 100644
index 000000000..357a52c3d
--- /dev/null
+++ b/test cases/frameworks/4 qt/mocdep/mocdep.h
@@ -0,0 +1 @@
+#define MOC_DEP 1