diff --git a/mesonbuild/dependencies/qt.py b/mesonbuild/dependencies/qt.py index 8bb269e83d3f..11cf0f400cba 100644 --- a/mesonbuild/dependencies/qt.py +++ b/mesonbuild/dependencies/qt.py @@ -166,6 +166,9 @@ def get_exe_args(self, compiler: 'Compiler') -> T.List[str]: def log_details(self) -> str: return f'modules: {", ".join(sorted(self.requested_modules))}' + def _get_common_defines(self) -> T.List[str]: + is_debug = self.env.coredata.optstore.get_value_for('debug') + return ['-DQT_DEBUG' if is_debug else '-DQT_NO_DEBUG'] class QtPkgConfigDependency(_QtBase, PkgConfigDependency, metaclass=abc.ABCMeta): @@ -225,6 +228,8 @@ def __init__(self, name: str, env: 'Environment', kwargs: T.Dict[str, T.Any]): self.libexecdir = self.get_pkgconfig_host_libexecs(self) + self.compile_args += self._get_common_defines() + @staticmethod @abc.abstractmethod def get_pkgconfig_host_bins(core: PkgConfigDependency) -> T.Optional[str]: @@ -268,6 +273,8 @@ def __init__(self, name: str, env: 'Environment', kwargs: T.Dict[str, T.Any]): if not self.found(): return + self.compile_args += self._get_common_defines() + # Query library path, header path, and binary path stdo = self.get_config_value(['-query'], 'args') qvars: T.Dict[str, str] = {} diff --git a/test cases/frameworks/4 qt/assert_qt_debug.cpp b/test cases/frameworks/4 qt/assert_qt_debug.cpp new file mode 100644 index 000000000000..004d22e3856b --- /dev/null +++ b/test cases/frameworks/4 qt/assert_qt_debug.cpp @@ -0,0 +1,5 @@ +#ifndef QT_DEBUG +#error QT_DEBUG is not defined +#endif + +int main() { return 0; } diff --git a/test cases/frameworks/4 qt/assert_qt_no_debug.cpp b/test cases/frameworks/4 qt/assert_qt_no_debug.cpp new file mode 100644 index 000000000000..cb4015b4f3e7 --- /dev/null +++ b/test cases/frameworks/4 qt/assert_qt_no_debug.cpp @@ -0,0 +1,5 @@ +#ifndef QT_NO_DEBUG +#error QT_NO_DEBUG is not defined +#endif + +int main() { return 0; } diff --git a/test cases/frameworks/4 qt/meson.build b/test cases/frameworks/4 qt/meson.build index 58ec4d16f786..584319368ee7 100644 --- a/test cases/frameworks/4 qt/meson.build +++ b/test cases/frameworks/4 qt/meson.build @@ -177,5 +177,12 @@ foreach qt : ['qt4', 'qt5', 'qt6'] accept_versions = ['>=@0@'.format(qtdep.version()), '<@0@'.format(qtdep.version()[0].to_int() + 1)] dependency(qt, modules: qt_modules, version: accept_versions, method : get_option('method')) + # check that QT_DEBUG is correctly defined depending on whether this is a debug build + if get_option('debug') + assert_source = 'assert_qt_debug.cpp' + else + assert_source = 'assert_qt_no_debug.cpp' + endif + executable(qt + 'assert_debug', sources: [ assert_source ], dependencies: [ qtdep ]) endif endforeach diff --git a/test cases/frameworks/4 qt/test.json b/test cases/frameworks/4 qt/test.json index 34de94101414..9ca9a124e7dd 100644 --- a/test cases/frameworks/4 qt/test.json +++ b/test cases/frameworks/4 qt/test.json @@ -5,6 +5,10 @@ { "val": "config-tool" }, { "val": "qmake" }, { "val": "pkg-config" } + ], + "debug": [ + { "val": "true" }, + { "val": "false" } ] } },