--- a/configure.ac 2016-06-09 16:17:02.000000000 +0200 +++ b/configure.ac 2016-11-08 09:19:59.322358415 +0100 @@ -259,6 +259,55 @@ dnl --------------------------------------------------------------------------- AC_PATH_PROG([XSLTPROC], [xsltproc]) +# elogind + +AC_ARG_ENABLE([elogind], + AS_HELP_STRING([--enable-elogind], [Use elogind]), + [enable_elogind=$enableval], + [enable_elogind=auto]) + +if test x$enable_elogind != xno; then + PKG_CHECK_MODULES(ELOGIND, [libelogind >= 219], + [have_elogind=yes], [have_elogind=no]) +else + have_elogind=no +fi + +AC_MSG_CHECKING([whether to use elogind]) + +if test x$enable_elogind = xauto ; then + if test x$have_elogind = xno ; then + enable_elogind=no + else + enable_elogind=yes + fi +fi + +AC_MSG_RESULT($enable_elogind) + +if test x$enable_elogind = xyes; then + if test x$have_elogind = xno; then + AC_MSG_ERROR([elogind support explicitly required, but libelogind not found]) + fi + # Use HAVE_SYSTEMD here, too, so data/Makefile.am does + # not need to duplicate code + AC_DEFINE(HAVE_SYSTEMD, 1, [Define if elogind is used]) +fi +AC_SUBST(ELOGIND_CFLAGS) +AC_SUBST(ELOGIND_LIBS) + +LIBACCOUNTSSERVICE_LIBS="$LIBACCOUNTSSERVICE_LIBS $ELOGIND_LIBS" +LIBACCOUNTSSERVICE_CFLAGS="$LIBACCOUNTSSERVICE_CFLAGS $ELOGIND_CFLAGS" + +if test "x$have_elogind" != "xno" ; then + AC_DEFINE(WITH_ELOGIND, 1, [Define to enable elogind support]) + # Re-use WITH_SYSTEMD to not flood + # src/libaccountsservice/act-user-manager.c + # with a plethora of "if defined() || defined()" lines + AC_DEFINE(WITH_SYSTEMD, 1, [Define to enable systemd support]) +fi + + # systemd AC_ARG_ENABLE([systemd], @@ -267,8 +316,14 @@ [enable_systemd=auto]) if test x$enable_systemd != xno; then - PKG_CHECK_MODULES(SYSTEMD, [libsystemd >= 186], + if test x$enable_elogind = yes; then + AC_MSG_NOTICE([Systemd support requested, but elogind found]) + have_systemd=no + enable_systemd=no + else + PKG_CHECK_MODULES(SYSTEMD, [libsystemd >= 186], [have_systemd=yes], [have_systemd=no]) + fi else have_systemd=no fi --- a/src/libaccountsservice/act-user-manager.c 2016-11-08 09:11:28.489353842 +0100 +++ b/src/libaccountsservice/act-user-manager.c 2016-11-08 09:18:47.768357775 +0100 @@ -42,7 +42,11 @@ #include #ifdef WITH_SYSTEMD +#ifdef WITH_ELOGIND +#include +#else #include +#endif /* check against elogind substitution /* check if logind is running */ #define LOGIND_RUNNING() (access("/run/systemd/seats/", F_OK) >= 0)