From fe558062847ed89868fda2a0c72b9401813b3261 Mon Sep 17 00:00:00 2001 From: Mike Gilbert Date: Fri, 12 Jan 2024 15:59:25 -0500 Subject: [PATCH] meson: fix tristate behavior for systemd_notify option The old logic was broken for the 'auto' case in that HAVE_SYSTEMD_DAEMON was only defined when systemd_notify was 'true'. --- include/meson.build | 2 +- meson.build | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/include/meson.build b/include/meson.build index 236b95363..a2665a823 100644 --- a/include/meson.build +++ b/include/meson.build @@ -91,7 +91,7 @@ endif conf_data.set('HAVE_LIBBSD', libbsd_dep.found() ? '1' : false) # Note: this symbol is used by libXtrans. -conf_data.set('HAVE_SYSTEMD_DAEMON', build_systemd ? '1' : false) +conf_data.set('HAVE_SYSTEMD_DAEMON', libsystemd_daemon_dep.found() ? '1' : false) conf_data.set('CONFIG_UDEV', build_udev ? '1' : false) conf_data.set('CONFIG_UDEV_KMS', build_udev_kms ? '1' : false) conf_data.set('HAVE_DBUS', build_dbus ? '1' : false) diff --git a/meson.build b/meson.build index 1de3e2a4f..5b72d1a5e 100644 --- a/meson.build +++ b/meson.build @@ -107,11 +107,21 @@ xfont2_dep = dependency('xfont2', version: '>= 2.0') dbus_required = get_option('systemd_logind') == 'true' dbus_dep = dependency('dbus-1', version: '>= 1.0', required: dbus_required) -build_systemd = get_option('systemd_notify') == 'true' -# libsystemd-daemon was moved into libsystemd in version 209 -libsystemd_daemon_dep = dependency('libsystemd', version: '>= 209', required: false) -if not libsystemd_daemon_dep.found() - libsystemd_daemon_dep = dependency('libsystemd-daemon', required: false) +systemd_notify = get_option('systemd_notify') +libsystemd_required = systemd_notify == 'true' +libsystemd_wanted = systemd_notify in ['auto','true'] + +if libsystemd_wanted + # libsystemd-daemon was moved into libsystemd in version 209 + libsystemd_daemon_dep = dependency('libsystemd', version: '>= 209', required: false) + if not libsystemd_daemon_dep.found() + libsystemd_daemon_dep = dependency('libsystemd-daemon', required: false) + endif + if libsystemd_required and not libsystemd_daemon_dep.found() + error('libsystemd required but not found') + endif +else + libsystemd_daemon_dep = disabler() endif build_hashtable = false