diff options
author | Iñigo Martínez <inigomartinez@gmail.com> | 2021-09-10 00:30:46 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-09-13 15:27:24 +0200 |
commit | c04cc0c45bacd740b3a0536b74353b0a95a70fb8 (patch) | |
tree | f79c73b703ada0f94b0a20a3531adeff2ac08e2a | |
parent | 08c24f7f987dd2c86eabe724c6c88bba5b9391f6 (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.yml | 18 | ||||
-rw-r--r-- | meson.build | 27 | ||||
-rw-r--r-- | meson_options.txt | 10 | ||||
-rw-r--r-- | src/libqmi-glib/generated/meson.build | 9 | ||||
-rw-r--r-- | src/libqmi-glib/meson.build | 2 | ||||
-rw-r--r-- | src/qmi-firmware-update/meson.build | 5 | ||||
-rw-r--r-- | src/qmicli/meson.build | 9 |
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', |