summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÍñigo Huguet <ihuguet@redhat.com>2024-03-27 13:04:20 +0100
committerÍñigo Huguet <inigohuguet@hotmail.com>2024-04-02 12:58:26 +0000
commitf57513097ffc8672dabba54550b1b960947dd99c (patch)
tree591472afa525c17cbbd5d2350379f28b7d5fdd08
parentd534f984f7033d3a77f51baee01dccb50f55800a (diff)
meson: autodetect Qt dependencies
Configuring the build directory with meson often fails if you don't have the right Qt dependencies. As they are used only to build some examples, it is better to autodetect them and, if present, then build the examples but skip them otherwise. Still accept forcing qt=true or qt=false as before. Note that there is a option type called "feature" whose purpose is to support exactly this: features with enable/disable/auto possible values: https://mesonbuild.com/Build-options.html#features. However, they don't accept true/false values so scripts using qt=true/false would start failing. Since meson 0.60 the "deprecated" argument can be used for options (https://mesonbuild.com/Build-options.html#deprecated-options), but that's a too new version of meson. Also, this fixes some Gitlab-CI failures that happen when generating the tarball with make distcheck or meson dist. This is because it tries to check that the tarball content can be configured and built, but it uses the default configurations so it was using qt=yes. Now it will use qt=auto, avoiding the failure. Fixes: 61f0531509e5 ('gitlab-ci: test re-buildability of distribution tarballs')
-rw-r--r--meson.build19
-rw-r--r--meson_options.txt2
2 files changed, 12 insertions, 9 deletions
diff --git a/meson.build b/meson.build
index d01adea11e..b39b4cf453 100644
--- a/meson.build
+++ b/meson.build
@@ -961,14 +961,17 @@ test(
subdir('examples/C/glib')
enable_qt = get_option('qt')
-if enable_qt
- add_languages('cpp')
-
- qt_core_dep = dependency('QtCore', version: '>= 4')
- qt_dbus_dep = dependency('QtDBus')
- qt_network_dep = dependency('QtNetwork')
-
- subdir('examples/C/qt')
+if enable_qt != 'false'
+ qt_core_dep = dependency('QtCore', version: '>= 4', required: enable_qt == 'yes')
+ qt_dbus_dep = dependency('QtDBus', required: enable_qt == 'yes')
+ qt_network_dep = dependency('QtNetwork', required: enable_qt == 'yes')
+
+ # If enable_qt=='yes' we have all the dependencies. If it's 'auto', skip
+ # building the Qt examples if any dependency is missing.
+ if qt_core_dep.found() and qt_dbus_dep.found() and qt_network_dep.found()
+ add_languages('cpp')
+ subdir('examples/C/qt')
+ endif
endif
if enable_docs
diff --git a/meson_options.txt b/meson_options.txt
index 4f796615b3..92439ac539 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -74,5 +74,5 @@ option('valgrind_suppressions', type: 'string', value: '', description: 'Use spe
option('ld_gc', type: 'boolean', value: true, description: 'Enable garbage collection of unused symbols on linking')
option('libpsl', type: 'boolean', value: true, description: 'Link against libpsl')
option('crypto', type: 'combo', choices: ['nss', 'gnutls', 'null'], value: 'nss', description: 'Cryptography library to use for certificate and key operations')
-option('qt', type: 'boolean', value: true, description: 'enable Qt examples')
+option('qt', type: 'combo', choices: ['auto', 'true', 'false'], value: 'auto', description: 'enable Qt examples')
option('readline', type: 'combo', choices: ['auto', 'libreadline', 'libedit', 'none'], description: 'Using readline (auto) or libedit)')