summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIñigo Martínez <inigomartinez@gmail.com>2021-09-10 00:30:46 +0200
committerAleksander Morgado <aleksander@aleksander.es>2021-09-13 15:27:24 +0200
commitc04cc0c45bacd740b3a0536b74353b0a95a70fb8 (patch)
treef79c73b703ada0f94b0a20a3531adeff2ac08e2a
parent08c24f7f987dd2c86eabe724c6c88bba5b9391f6 (diff)
build: Make use of features build option
Since meson 0.47, there is support for features build options[0] that can be enabled automatically if the system has the required support. This feature has been used for some options that fit properly for their needs. The setup of the CI builds have also been apropiately updated. [0] https://mesonbuild.com/Release-notes-for-0-47-0.html#new-type-of-build-option-for-features (cherry picked from commit 187f86c17fab8dcd7e816e425f366f298f3a8917)
-rw-r--r--.gitlab-ci.yml18
-rw-r--r--meson.build27
-rw-r--r--meson_options.txt10
-rw-r--r--src/libqmi-glib/generated/meson.build9
-rw-r--r--src/libqmi-glib/meson.build2
-rw-r--r--src/qmi-firmware-update/meson.build5
-rw-r--r--src/qmicli/meson.build9
7 files changed, 33 insertions, 47 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e74cf50..bcb8204 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -44,7 +44,7 @@ build-meson-no-qrtr-no-mbim-no-rmnet-no-introspection:
- tags
- schedules
script:
- - meson setup build --prefix=/usr -Dwerror=true -Dgtk_doc=false -Dintrospection=false -Dmbim_qmux=false -Dqrtr=false -Drmnet=false
+ - meson setup build --prefix=/usr -Dwerror=true -Dgtk_doc=false -Dintrospection=disabled -Dmbim_qmux=disabled -Dqrtr=disabled -Drmnet=disabled
- ninja -C build
- ninja -C build install
@@ -73,7 +73,7 @@ build-meson-no-rmnet:
- make
- make install
- popd
- - meson setup build --prefix=/usr -Dwerror=true -Dgtk_doc=false -Dintrospection=true -Dmbim_qmux=true -Dqrtr=true -Drmnet=false
+ - meson setup build --prefix=/usr -Dwerror=true -Dgtk_doc=false -Dintrospection=enabled -Dmbim_qmux=enabled -Dqrtr=enabled -Drmnet=disabled
- ninja -C build
- ninja -C build install
@@ -95,7 +95,7 @@ build-meson-no-qrtr:
- make
- make install
- popd
- - meson setup build --prefix=/usr -Dwerror=true -Dgtk_doc=false -Dintrospection=true -Dmbim_qmux=true -Dqrtr=false -Drmnet=true
+ - meson setup build --prefix=/usr -Dwerror=true -Dgtk_doc=false -Dintrospection=enabled -Dmbim_qmux=enabled -Dqrtr=disabled -Drmnet=enabled
- ninja -C build
- ninja -C build install
@@ -117,7 +117,7 @@ build-meson-no-qrtr-no-introspection:
- make
- make install
- popd
- - meson setup build --prefix=/usr -Dwerror=true -Dgtk_doc=false -Dintrospection=false -Dmbim_qmux=true -Dqrtr=false -Drmnet=true
+ - meson setup build --prefix=/usr -Dwerror=true -Dgtk_doc=false -Dintrospection=disabled -Dmbim_qmux=enabled -Dqrtr=disabled -Drmnet=enabled
- ninja -C build
- ninja -C build install
@@ -139,7 +139,7 @@ build-meson-no-mbim:
- make
- make install
- popd
- - meson setup build --prefix=/usr -Dwerror=true -Dgtk_doc=false -Dintrospection=true -Dmbim_qmux=false -Dqrtr=true -Drmnet=true
+ - meson setup build --prefix=/usr -Dwerror=true -Dgtk_doc=false -Dintrospection=enabled -Dmbim_qmux=disabled -Dqrtr=enabled -Drmnet=enabled
- ninja -C build
- ninja -C build install
@@ -161,7 +161,7 @@ build-meson-no-mbim-no-introspection:
- make
- make install
- popd
- - meson setup build --prefix=/usr -Dwerror=true -Dgtk_doc=false -Dintrospection=false -Dmbim_qmux=false -Dqrtr=true -Drmnet=true
+ - meson setup build --prefix=/usr -Dwerror=true -Dgtk_doc=false -Dintrospection=disabled -Dmbim_qmux=disabled -Dqrtr=enabled -Drmnet=enabled
- ninja -C build
- ninja -C build install
@@ -176,7 +176,7 @@ build-meson-collection-minimal:
- tags
- schedules
script:
- - meson setup build --prefix=/usr -Dwerror=true -Dgtk_doc=false -Dintrospection=false -Dmbim_qmux=false -Dqrtr=false -Drmnet=false -Dcollection=minimal -Dfirmware_update=false
+ - meson setup build --prefix=/usr -Dwerror=true -Dgtk_doc=false -Dintrospection=disabled -Dmbim_qmux=disabled -Dqrtr=disabled -Drmnet=disabled -Dcollection=minimal -Dfirmware_update=false
- ninja -C build
- ninja -C build install
@@ -191,7 +191,7 @@ build-meson-collection-basic:
- tags
- schedules
script:
- - meson setup build --prefix=/usr -Dwerror=true -Dgtk_doc=false -Dintrospection=false -Dmbim_qmux=false -Dqrtr=false -Drmnet=false -Dcollection=basic
+ - meson setup build --prefix=/usr -Dwerror=true -Dgtk_doc=false -Dintrospection=disabled -Dmbim_qmux=disabled -Dqrtr=disabled -Drmnet=disabled -Dcollection=basic
- ninja -C build
- ninja -C build install
@@ -220,7 +220,7 @@ build-meson-release:
- make
- make install
- popd
- - meson setup build --buildtype=release --prefix=/usr -Dwerror=true -Dgtk_doc=false -Dintrospection=true -Dmbim_qmux=true -Dqrtr=true -Drmnet=true
+ - meson setup build --buildtype=release --prefix=/usr -Dwerror=true -Dgtk_doc=false -Dintrospection=enabled -Dmbim_qmux=enabled -Dqrtr=enabled -Drmnet=enabled
- ninja -C build
- ninja -C build install
- ninja -C build dist
diff --git a/meson.build b/meson.build
index 766bb6e..e7ac9f7 100644
--- a/meson.build
+++ b/meson.build
@@ -151,9 +151,7 @@ enable_firmware_update = get_option('firmware_update')
assert(not enable_firmware_update or qmi_collection_name != 'minimal', 'Cannot build qmi-firmware-update when \'minimal\' collection enabled, use at least the \'basic\' collection instead.')
# udev support is optional, enabled by default
-enable_udev = get_option('udev')
-
-gudev_dep = dependency('gudev-1.0', version: '>= 232', required: enable_udev and enable_firmware_update)
+gudev_dep = dependency((enable_firmware_update ? 'gudev-1.0' : ''), version: '>= 232', required: get_option('udev'))
config_h.set('WITH_UDEV', gudev_dep.found())
enable_bash_completion = get_option('bash_completion')
@@ -168,8 +166,10 @@ endif
# rmnet link management support
enable_rmnet = false
-if get_option('rmnet')
+rmnet = get_option('rmnet')
+if not rmnet.disabled()
enable_rmnet = cc.has_type('struct ifla_rmnet_flags', prefix: '#include<linux/if_link.h>')
+ assert(enable_rmnet or rmnet.auto(), 'There is no \'rmnet\' link management support, use \'auto\' or \'disabled\' instead')
endif
config_h.set('RMNET_SUPPORT_ENABLED', enable_rmnet)
@@ -194,19 +194,13 @@ endif
config_h.set('QMI_USERNAME_ENABLED', enable_qmi_username)
# MBIM QMUX service support
-enable_mbim_qmux = false
-if get_option('mbim_qmux')
- mbim_glib_dep = dependency('mbim-glib', version: '>= 1.18.0', required: false)
- enable_mbim_qmux = mbim_glib_dep.found()
-endif
+mbim_glib_dep = dependency('mbim-glib', version: '>= 1.18.0', required: get_option('mbim_qmux'))
+enable_mbim_qmux = mbim_glib_dep.found()
config_h.set('MBIM_QMUX_ENABLED', enable_mbim_qmux)
# QRTR support
-enable_qrtr = false
-if get_option('qrtr')
- qrtr_glib_dep = dependency('qrtr-glib', version: '>= 1.0.0', required: false)
- enable_qrtr = qrtr_glib_dep.found()
-endif
+qrtr_glib_dep = dependency('qrtr-glib', version: '>= 1.0.0', required: get_option('qrtr'))
+enable_qrtr = qrtr_glib_dep.found()
config_h.set10('QMI_QRTR_SUPPORTED', enable_qrtr)
version_conf = configuration_data()
@@ -219,10 +213,7 @@ version_conf.set10('QMI_QRTR_SUPPORTED', enable_qrtr)
version_conf.set10('QMI_RMNET_SUPPORTED', enable_rmnet)
# introspection support
-enable_gir = get_option('introspection')
-if enable_gir
- dependency('gobject-introspection-1.0', version: '>= 0.9.6')
-endif
+enable_gir = dependency('gobject-introspection-1.0', version: '>= 0.9.6', required: get_option('introspection')).found()
test_env = {
'G_DEBUG': 'gc-friendly',
diff --git a/meson_options.txt b/meson_options.txt
index 546a525..4d4f913 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -5,16 +5,16 @@ option('collection', type: 'combo', choices: ['minimal', 'basic', 'full'], value
option('firmware_update', type: 'boolean', value: true, description: 'enable compilation of `qmi-firmware-update')
-option('mbim_qmux', type: 'boolean', value: true, description: 'enable support for QMI over MBIM QMUX service')
+option('mbim_qmux', type: 'feature', value: 'auto', description: 'enable support for QMI over MBIM QMUX service')
option('mm_runtime_check', type: 'boolean', value: true, description: 'build ModemManager runtime check support')
option('qmi_username', type: 'string', value: '', description: 'user allowed to access QMI devices')
-option('qrtr', type: 'boolean', value: true, description: 'enable support for QRTR protocol')
-option('rmnet', type: 'boolean', value: true, description: 'enable support for RMNET link management')
+option('qrtr', type: 'feature', value: 'auto', description: 'enable support for QRTR protocol')
+option('rmnet', type: 'feature', value: 'auto', description: 'enable support for RMNET link management')
-option('udev', type: 'boolean', value: true, description: 'build udev support')
+option('udev', type: 'feature', value: 'auto', description: 'build udev support')
option('udevdir', type: 'string', value: '', description: 'where udev base directory is')
-option('introspection', type: 'boolean', value: 'true', description: 'build introspection support')
+option('introspection', type: 'feature', value: 'auto', description: 'build introspection support')
option('gtk_doc', type: 'boolean', value: false, description: 'use gtk-doc to build documentation')
option('bash_completion', type: 'boolean', value: true, description: 'install bash completion files')
diff --git a/src/libqmi-glib/generated/meson.build b/src/libqmi-glib/generated/meson.build
index 900bc40..d5fc186 100644
--- a/src/libqmi-glib/generated/meson.build
+++ b/src/libqmi-glib/generated/meson.build
@@ -227,11 +227,10 @@ c_flags = [
'-Wno-unused-function',
]
-deps = [glib_deps]
-
-if enable_qrtr
- deps += qrtr_glib_dep
-endif
+deps = [
+ glib_deps,
+ qrtr_glib_dep,
+]
libqmi_glib_generated = static_library(
'qmi-glib-generated',
diff --git a/src/libqmi-glib/meson.build b/src/libqmi-glib/meson.build
index c8c6221..c48fa76 100644
--- a/src/libqmi-glib/meson.build
+++ b/src/libqmi-glib/meson.build
@@ -95,11 +95,11 @@ sources = files(
deps = [
generated_dep,
gio_unix_dep,
+ mbim_glib_dep,
]
if enable_mbim_qmux
sources += files('qmi-endpoint-mbim.c')
- deps += mbim_glib_dep
endif
if enable_qrtr
diff --git a/src/qmi-firmware-update/meson.build b/src/qmi-firmware-update/meson.build
index 289b158..5fe7778 100644
--- a/src/qmi-firmware-update/meson.build
+++ b/src/qmi-firmware-update/meson.build
@@ -87,12 +87,9 @@ deps = [
gudev_dep,
libfirehose_dep,
libutils_dep,
+ mbim_glib_dep,
]
-if enable_mbim_qmux
- deps += mbim_glib_dep
-endif
-
qmi_firmware_update = executable(
'qmi-firmware-update',
sources: sources,
diff --git a/src/qmicli/meson.build b/src/qmicli/meson.build
index c2db52d..f5fe6fb 100644
--- a/src/qmicli/meson.build
+++ b/src/qmicli/meson.build
@@ -35,11 +35,10 @@ sources = files(
'qmicli-wms.c',
)
-deps = [libhelpers_dep]
-
-if enable_mbim_qmux
- deps += mbim_glib_dep
-endif
+deps = [
+ libhelpers_dep,
+ mbim_glib_dep,
+]
qmicli = executable(
'qmicli',