diff --git a/include/meson.build b/include/meson.build
index 2c139e6b065191ad72302ad3b6f8d79ee59be12f..9a7547c4708aaec677b6bfd0b52f10c96dcf62e2 100644
--- a/include/meson.build
+++ b/include/meson.build
@@ -72,7 +72,8 @@ elif cc.compiles('''
 endif
 
 conf_data.set('HAVE_LIBBSD', libbsd_dep.found())
-# XXX: HAVE_SYSTEMD_DAEMON
+# Note: this symbol is used by libXtrans.
+conf_data.set('HAVE_SYSTEMD_DAEMON', libsystemd_daemon_dep.found())
 conf_data.set('CONFIG_UDEV', build_udev)
 conf_data.set('CONFIG_UDEV_KMS', build_udev)
 conf_data.set('HAVE_DBUS', build_dbus)
diff --git a/meson.build b/meson.build
index ec79479d901bb5e10fcbb901f7badf021ae28354..e7ce68a502c3d8c8772246ac88151462553552c3 100644
--- a/meson.build
+++ b/meson.build
@@ -96,6 +96,12 @@ nettle_dep = dependency('nettle')
 dbus_required = get_option('systemd_logind') == 'true'
 dbus_dep = dependency('dbus-1', version: '>= 1.0', required: dbus_required)
 
+# 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
+
 build_hashtable = false
 
 # Resolve default values of some options
@@ -455,6 +461,7 @@ common_dep = [
     xcmiscproto_dep,
     bigreqsproto_dep,
     xtrans_dep,
+    libsystemd_daemon_dep,
 
     videoproto_dep,
     compositeproto_dep,