build-sys: Add support for newer systemd without compatibility libs

In newer versions of systemd some libraries were combined for the sake of
general simplicity.

This change checks against the newer name first and avoids separate pkgconfig
checks if it's found. We probably want to keep support for the older library
names for some time. systemd does allow for the shipping of compatibility
pkgconfig files to not break downstream code like ourselves which is why this
likely hasn't been "fixed" until now.

With this change we no longer rely on systemd having been built with those
compatibility pkgconfig files.
This commit is contained in:
Colin Guthrie 2014-10-17 13:51:25 +02:00
parent f7da58b73f
commit fb1ca6f0c1
2 changed files with 25 additions and 10 deletions

View file

@ -1178,13 +1178,31 @@ AM_CONDITIONAL([HAVE_GCOV], [test "x$HAVE_GCOV" = x1])
ORC_CHECK([0.4.11]) ORC_CHECK([0.4.11])
#### systemd login support (optional) #### #### systemd support (optional) ####
AC_ARG_ENABLE([systemd-login], AC_ARG_ENABLE([systemd-login],
AS_HELP_STRING([--disable-systemd-login],[Disable optional systemd login support])) AS_HELP_STRING([--disable-systemd-login],[Disable optional systemd login support]))
AC_ARG_ENABLE([systemd-journal],
AS_HELP_STRING([--disable-systemd-journal],[Disable optional systemd journal support]))
# Newer systemd's combine their subcomponent libraries into one
# If it exists, we should use it for the further checks
AS_IF([test "x$enable_systemd_login" != "xno" || test "x$enable_systemd_journal" != "xno"],
[PKG_CHECK_MODULES(SYSTEMD, [ libsystemd ], HAVE_SYSTEMD=1, HAVE_SYSTEMD=0)],
HAVE_SYSTEMD=0)
AS_IF([test "x$HAVE_SYSTEMD" = "x1"],
[
HAVE_SYSTEMD_LOGIN=1
HAVE_SYSTEMD_JOURNAL=1
])
#### systemd login support (optional) ####
AS_IF([test "x$enable_systemd_login" != "xno"], AS_IF([test "x$enable_systemd_login" != "xno"],
[PKG_CHECK_MODULES(SYSTEMDLOGIN, [ libsystemd-login ], HAVE_SYSTEMD_LOGIN=1, HAVE_SYSTEMD_LOGIN=0)], [AS_IF([test "x$HAVE_SYSTEMD_LOGIN" != "x1"], [PKG_CHECK_MODULES(SYSTEMDLOGIN, [ libsystemd-login ], HAVE_SYSTEMD_LOGIN=1, HAVE_SYSTEMD_LOGIN=0)])],
HAVE_SYSTEMD_LOGIN=0) HAVE_SYSTEMD_LOGIN=0)
AS_IF([test "x$enable_systemd_login" = "xyes" && test "x$HAVE_SYSTEMD_LOGIN" = "x0"], AS_IF([test "x$enable_systemd_login" = "xyes" && test "x$HAVE_SYSTEMD_LOGIN" = "x0"],
@ -1196,11 +1214,8 @@ AS_IF([test "x$HAVE_SYSTEMD_LOGIN" = "x1"], AC_DEFINE([HAVE_SYSTEMD_LOGIN], 1, [
#### systemd journal support (optional) #### #### systemd journal support (optional) ####
AC_ARG_ENABLE([systemd-journal],
AS_HELP_STRING([--disable-systemd-journal],[Disable optional systemd journal support]))
AS_IF([test "x$enable_systemd_journal" != "xno"], AS_IF([test "x$enable_systemd_journal" != "xno"],
[PKG_CHECK_MODULES(SYSTEMDJOURNAL, [ libsystemd-journal ], HAVE_SYSTEMD_JOURNAL=1, HAVE_SYSTEMD_JOURNAL=0)], [AS_IF([test "x$HAVE_SYSTEMD_JOURNAL" != "x1"], [PKG_CHECK_MODULES(SYSTEMDJOURNAL, [ libsystemd-journal ], HAVE_SYSTEMD_JOURNAL=1, HAVE_SYSTEMD_JOURNAL=0)])],
HAVE_SYSTEMD_JOURNAL=0) HAVE_SYSTEMD_JOURNAL=0)
AS_IF([test "x$enable_systemd_journal" = "xyes" && test "x$HAVE_SYSTEMD_JOURNAL" = "x0"], AS_IF([test "x$enable_systemd_journal" = "xyes" && test "x$HAVE_SYSTEMD_JOURNAL" = "x0"],

View file

@ -707,8 +707,8 @@ libpulsecommon_@PA_MAJORMINOR@_la_LDFLAGS += $(X11_LIBS)
endif endif
if HAVE_SYSTEMD_JOURNAL if HAVE_SYSTEMD_JOURNAL
libpulsecommon_@PA_MAJORMINOR@_la_CFLAGS += $(SYSTEMDJOURNAL_FLAGS) libpulsecommon_@PA_MAJORMINOR@_la_CFLAGS += $(SYSTEMD_FLAGS) $(SYSTEMDJOURNAL_FLAGS)
libpulsecommon_@PA_MAJORMINOR@_la_LDFLAGS += $(SYSTEMDJOURNAL_LIBS) libpulsecommon_@PA_MAJORMINOR@_la_LDFLAGS += $(SYSTEMD_LIBS) $(SYSTEMDJOURNAL_LIBS)
endif endif
# proplist-util.h uses these header files, but not the library itself! # proplist-util.h uses these header files, but not the library itself!
@ -2061,8 +2061,8 @@ module_console_kit_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
module_systemd_login_la_SOURCES = modules/module-systemd-login.c module_systemd_login_la_SOURCES = modules/module-systemd-login.c
module_systemd_login_la_LDFLAGS = $(MODULE_LDFLAGS) module_systemd_login_la_LDFLAGS = $(MODULE_LDFLAGS)
module_systemd_login_la_LIBADD = $(MODULE_LIBADD) $(SYSTEMDLOGIN_LIBS) module_systemd_login_la_LIBADD = $(MODULE_LIBADD) $(SYSTEMD_LIBS) $(SYSTEMDLOGIN_LIBS)
module_systemd_login_la_CFLAGS = $(AM_CFLAGS) $(SYSTEMDLOGIN_CFLAGS) module_systemd_login_la_CFLAGS = $(AM_CFLAGS) $(SYSTEMD_CFLAGS) $(SYSTEMDLOGIN_CFLAGS)
# GConf support # GConf support
module_gconf_la_SOURCES = modules/gconf/module-gconf.c module_gconf_la_SOURCES = modules/gconf/module-gconf.c