summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIñigo Martínez <inigomartinez@gmail.com>2021-09-10 00:30:46 +0200
committerIñigo Martínez <inigomartinez@gmail.com>2021-09-13 11:05:44 +0200
commit187f86c17fab8dcd7e816e425f366f298f3a8917 (patch)
tree11e63c3a9769928592163e76f5f2dd64cbc80a56
parent1c9ca122087a6ae805258c38ef632c510de55267 (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
-rw-r--r--.gitlab-ci.yml20
-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, 34 insertions, 48 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 44541c3..002a4ca 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -54,11 +54,11 @@ build-meson-default:
- ninja -C build
- ninja -C build install
- popd
- - meson setup _debug_build --prefix=/usr -Dwerror=true -Dgtk_doc=false -Dintrospection=true -Dmbim_qmux=true -Dqrtr=true -Drmnet=true
+ - meson setup _debug_build --prefix=/usr -Dwerror=true -Dgtk_doc=false -Dintrospection=enabled -Dmbim_qmux=enabled -Dqrtr=enabled -Drmnet=enabled
- ninja -C _debug_build
- ninja -C _debug_build install
- ninja -C _debug_build uninstall
- - meson setup _release_build --prefix=/usr --buildtype=release -Dwerror=true -Dgtk_doc=false -Dintrospection=true -Dmbim_qmux=true -Dqrtr=true -Drmnet=true
+ - meson setup _release_build --prefix=/usr --buildtype=release -Dwerror=true -Dgtk_doc=false -Dintrospection=enabled -Dmbim_qmux=enabled -Dqrtr=enabled -Drmnet=enabled
- ninja -C _release_build
- ninja -C _release_build install
@@ -73,7 +73,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
@@ -100,7 +100,7 @@ build-meson-no-rmnet:
- ninja -C build
- ninja -C build 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
@@ -121,7 +121,7 @@ build-meson-no-qrtr:
- ninja -C build
- ninja -C build 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
@@ -142,7 +142,7 @@ build-meson-no-qrtr-no-introspection:
- ninja -C build
- ninja -C build 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
@@ -163,7 +163,7 @@ build-meson-no-mbim:
- ninja -C build
- ninja -C build 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
@@ -184,7 +184,7 @@ build-meson-no-mbim-no-introspection:
- ninja -C build
- ninja -C build 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
@@ -199,7 +199,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
@@ -214,6 +214,6 @@ 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
diff --git a/meson.build b/meson.build
index 7615589..8b957f8 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 c1d80b2..48044d5 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',