From 27ff400bc2aec8e8d36fb6e98c23be4e4d177d56 Mon Sep 17 00:00:00 2001 From: Jan Beich Date: Wed, 17 May 2023 14:29:08 +0000 Subject: [PATCH] meson: allow selecting sd-bus library via option Roughly based on https://github.com/swaywm/sway/commit/fdbe98512a71 Co-authored-by: Peter Hutterer --- meson.build | 26 +++++++++++++++++++++++++- meson_options.txt | 1 + src/liboeffis.c | 6 +++--- src/meson.build | 4 ++-- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/meson.build b/meson.build index 48c68b4..7edd125 100644 --- a/meson.build +++ b/meson.build @@ -83,7 +83,31 @@ dep_libxkbcommon = dependency('xkbcommon', required: false) config_h.set10('HAVE_LIBXKBCOMMON', dep_libxkbcommon.found()) dep_libevdev = dependency('libevdev', required: false) config_h.set10('HAVE_LIBEVDEV', dep_libevdev.found()) -dep_systemd = dependency(['libsystemd', 'libelogind', 'basu'], required: get_option('liboeffis')) + +if not get_option('liboeffis').disabled() + sd_bus_provider = get_option('sd-bus-provider') + if sd_bus_provider == 'auto' + message('Trying to find an sd-bus provider...') + providers = ['libsystemd', 'libelogind', 'basu'] + foreach provider: providers + if dependency(provider, required: false).found() + message('Using sd-bus provider "@0@"'.format(provider)) + sd_bus_provider = provider + break + endif + endforeach + if sd_bus_provider == 'auto' + error('Failed to find an sd-bus provider, tried @0@'.format(', '.join(providers))) + endif + summary({'sd-bus-provider': sd_bus_provider}, section: 'Conditional Features') + endif + dep_sdbus = dependency(sd_bus_provider, required: get_option('liboeffis')) +else + dep_sdbus = dependency('', required: false) +endif +config_h.set10('HAVE_LIBSYSTEMD', dep_sdbus.found() and dep_sdbus.name() == 'libsystemd') +config_h.set10('HAVE_LIBELOGIND', dep_sdbus.found() and dep_sdbus.name() == 'libelogind') +config_h.set10('HAVE_BASU', dep_sdbus.found() and dep_sdbus.name() == 'basu') configure_file(output: 'config.h', configuration: config_h) diff --git a/meson_options.txt b/meson_options.txt index 025f9ad..d93ee0f 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -1,3 +1,4 @@ option('documentation', type: 'array', value: [], choices: ['api', 'protocol'], description: 'Enable documentation builds') +option('sd-bus-provider', type: 'combo', choices: ['auto', 'libsystemd', 'libelogind', 'basu'], value: 'auto', description: 'Provider of the sd-bus library') option('tests', type: 'feature', value: 'auto', description: 'Enable/disable tests') option('liboeffis', type: 'feature', value: 'auto', description: 'Build liboeffis.so') diff --git a/src/liboeffis.c b/src/liboeffis.c index dc0fcff..1ef4a43 100644 --- a/src/liboeffis.c +++ b/src/liboeffis.c @@ -24,11 +24,11 @@ #include "config.h" -#if __has_include() +#if HAVE_LIBSYSTEMD #include -#elif __has_include() +#elif HAVE_LIBELOGIND #include -#else +#elif HAVE_BASU #include #endif diff --git a/src/meson.build b/src/meson.build index 0dd204e..bd63a4d 100644 --- a/src/meson.build +++ b/src/meson.build @@ -142,11 +142,11 @@ pkgconfig.generate(lib_libeis, libraries: lib_libeis, ) -build_oeffis = dep_systemd.found() +build_oeffis = dep_sdbus.found() summary({'liboeffis': build_oeffis}, section: 'Conditional Features') if build_oeffis src_liboeffis = files('liboeffis.c') - deps_liboeffis = [dep_libutil, dep_systemd] + deps_liboeffis = [dep_libutil, dep_sdbus] lib_liboeffis = library('oeffis', src_liboeffis,