From 9fdd1d95ec094a0df6d8d3dd9c8f04fa8499b845 Mon Sep 17 00:00:00 2001
From: Sven Eden <sven.eden@gmx.de>
Date: Tue, 6 Jun 2017 10:17:33 -0400
Subject: configure: elogind on non-systemd systems

This commit adds some configure goo to make accountsservice use
elogind if explicitly requested for systems that don't have
systemd.

diff --git a/configure.ac b/configure.ac
index b255e72..4b21477 100644
--- a/configure.ac
+++ b/configure.ac
@@ -264,22 +264,24 @@ dnl Check for xsltproc
 dnl ---------------------------------------------------------------------------
 AC_PATH_PROG([XSLTPROC], [xsltproc])
 
-# systemd
+# systemd or elogind
+
+have_systemd=no
+
+AC_MSG_CHECKING([whether to use systemd])
 
 AC_ARG_ENABLE([systemd],
               AS_HELP_STRING([--enable-systemd], [Use systemd]),
               [enable_systemd=$enableval],
               [enable_systemd=auto])
 
+AC_MSG_RESULT($enable_systemd)
+
 if test x$enable_systemd != xno; then
-   PKG_CHECK_MODULES(SYSTEMD, [libsystemd >= 186],
-			                     [have_systemd=yes], [have_systemd=no])
-else
-   have_systemd=no
+        PKG_CHECK_MODULES(SYSTEMD, [libsystemd >= 186],
+                                   [have_systemd=yes])
 fi
 
-AC_MSG_CHECKING([whether to use systemd])
-
 if test x$enable_systemd = xauto ; then
         if test x$have_systemd = xno ; then
                 enable_systemd=no
@@ -288,21 +290,54 @@ if test x$enable_systemd = xauto ; then
         fi
 fi
 
-AC_MSG_RESULT($enable_systemd)
+have_elogind=no
+
+AC_MSG_CHECKING([whether to use elogind])
+
+AC_ARG_ENABLE([elogind],
+              AS_HELP_STRING([--enable-elogind], [Use elogind]),
+              [enable_elogind=$enableval],
+              [enable_elogind=no])
+
+AC_MSG_RESULT($enable_elogind)
 
 if test x$enable_systemd = xyes; then
         if test x$have_systemd = xno; then
-                AC_MSG_ERROR([Systemd support explicitly required, but systemd not found])
+                AC_MSG_ERROR([Systemd support explicitly requested, but libsystemd not found])
+        fi
+
+        dnl Requesting to use the elogind session tracker makes no sense where
+        dnl systemd-login is (or might be) running.
+        if test x$enable_elogind = xyes; then
+                AC_MSG_WARN([elogind support requested, but systemd was found.])
+                AC_MSG_ERROR([Disable either elogind or systemd support.])
         fi
+
+        AC_SUBST(SYSTEMD_CFLAGS)
+        AC_SUBST(SYSTEMD_LIBS)
+
+        LIBACCOUNTSSERVICE_LIBS="$LIBACCOUNTSSERVICE_LIBS $SYSTEMD_LIBS"
+        LIBACCOUNTSSERVICE_CFLAGS="$LIBACCOUNTSSERVICE_CFLAGS $SYSTEMD_CFLAGS"
+
         AC_DEFINE(HAVE_SYSTEMD, 1, [Define if systemd is used])
 fi
-AC_SUBST(SYSTEMD_CFLAGS)
-AC_SUBST(SYSTEMD_LIBS)
 
-LIBACCOUNTSSERVICE_LIBS="$LIBACCOUNTSSERVICE_LIBS $SYSTEMD_LIBS"
-LIBACCOUNTSSERVICE_CFLAGS="$LIBACCOUNTSSERVICE_CFLAGS $SYSTEMD_CFLAGS"
+if test "x$enable_elogind" != "xno"; then
+        PKG_CHECK_MODULES(ELOGIND, [libelogind >= 229.4],
+                                   [have_elogind=yes])
+
+        if test "x$have_elogind" != "xyes"; then
+                AC_MSG_ERROR([elogind support requested, but libelogind not found])
+        else
+                AC_SUBST(ELOGIND_CFLAGS)
+                AC_SUBST(ELOGIND_LIBS)
+
+                LIBACCOUNTSSERVICE_LIBS="$LIBACCOUNTSSERVICE_LIBS $ELOGIND_LIBS"
+                LIBACCOUNTSSERVICE_CFLAGS="$LIBACCOUNTSSERVICE_CFLAGS $ELOGIND_CFLAGS"
+        fi
+fi
 
-if test "x$have_systemd" != "xno" ; then
+if test "x${have_systemd}" != "xno" -o "x${have_elogind}" != "xno" ; then
         AC_DEFINE(WITH_SYSTEMD, 1, [Define to enable systemd support])
 fi
 
-- 
cgit v0.10.2

