meson: Autodetect whether autosuspend rules are provided by udev

Upstream systemd/udev is pulling our autosuspend hwdb, so if udev is new
enough, then there is no need to install the file. As such, add
auto-detection logic for the scenario.

This also changes the name of the option and the type to "feature".
This commit is contained in:
Benjamin Berg 2021-01-21 19:55:26 +01:00 committed by Benjamin Berg
parent 52d0409241
commit e7eaecedc6
3 changed files with 19 additions and 7 deletions

View File

@ -1,4 +1,4 @@
if get_option('udev_rules')
if udev_hwdb_dir != ''
# This file has to be updated using
# ninja -C <builddir> libfprint/sync-udev-hwdb
# Note that the unsupported device list needs to be manually synced from

View File

@ -212,15 +212,27 @@ drivers_type_func += '}'
root_inc = include_directories('.')
if get_option('udev_rules')
udev_hwdb = get_option('udev_hwdb')
if not udev_hwdb.disabled()
# systemd v248 includes our autosuspend rules
udev_versioned_dep = dependency('udev', version: '>= 248', required: false)
udev_hwdb_dir = get_option('udev_hwdb_dir')
if udev_hwdb.auto()
if udev_versioned_dep.found()
udev_hwdb_dir = ''
endif
else
if udev_versioned_dep.found()
warning('udev hwdb will be installed by both systemd and libfprint')
endif
endif
if udev_hwdb_dir == 'auto'
udev_dep = dependency('udev')
udev_hwdb_dir = udev_dep.get_pkgconfig_variable('udevdir') + '/hwdb.d'
endif
else
udev_hwdb_dir = false
udev_hwdb_dir = ''
endif
if get_option('gtk-examples')

View File

@ -6,10 +6,10 @@ option('introspection',
description: 'Build GObject Introspection repository',
type: 'boolean',
value: true)
option('udev_rules',
description: 'Whether to create a udev rules file',
type: 'boolean',
value: true)
option('udev_hwdb',
description: 'Whether to create a udev hwdb',
type: 'feature',
value: 'auto')
option('udev_hwdb_dir',
description: 'Installation path for udev hwdb',
type: 'string',