diff options
author | Iñigo Martínez <inigomartinez@gmail.com> | 2021-09-10 00:30:46 +0200 |
---|---|---|
committer | Iñigo Martínez <inigomartinez@gmail.com> | 2021-09-13 11:05:44 +0200 |
commit | 187f86c17fab8dcd7e816e425f366f298f3a8917 (patch) | |
tree | 11e63c3a9769928592163e76f5f2dd64cbc80a56 | |
parent | 1c9ca122087a6ae805258c38ef632c510de55267 (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.yml | 20 | ||||
-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, 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', |