--- a/configure.ac 2016-11-03 20:16:02.842071344 +0100 +++ b/configure.ac 2016-11-03 20:15:34.612071850 +0100 @@ -183,11 +183,12 @@ AM_CONDITIONAL(BUILD_TEST, [test "x$enable_test" = "xyes"]) -dnl --------------------------------------------------------------------------- -dnl - Select wether to use libsystemd-login or ConsoleKit for session tracking -dnl --------------------------------------------------------------------------- +dnl ----------------------------------------------------------------------------------- +dnl - Select wether to use libsystemd-login, elogind or ConsoleKit for session tracking +dnl ----------------------------------------------------------------------------------- have_libsystemd=no +have_elogind=no SESSION_TRACKING=ConsoleKit AC_ARG_ENABLE([libsystemd-login], @@ -220,6 +221,29 @@ fi fi fi + +AC_ARG_ENABLE([libelogind], + [AS_HELP_STRING([--enable-libelogind[=@<:@auto/yes/no@:>@]], [Use libelogind (auto/yes/no)])], + [enable_libelogind=$enableval], + [enable_libelogind=auto]) +if test "$enable_libelogind" != "no"; then + PKG_CHECK_MODULES([LIBELOGIND], + [libelogind], + [have_libelogind=yes], + [have_libelogind=no]) + if test "$have_libelogind" = "yes"; then + SESSION_TRACKING=libelogind + AC_DEFINE([HAVE_LIBELOGIND], 1, [Define to 1 if libelogind is available]) + save_LIBS=$LIBS + LIBS=$LIBELOGIND_LIBS + AC_CHECK_FUNCS(sd_uid_get_display) + LIBS=$save_LIBS + else + if test "$enable_libelogind" = "yes"; then + AC_MSG_ERROR([libelogind support requested but libelogind not found]) + fi + fi +fi AS_IF([test "x$cross_compiling" != "xyes" ], [ AS_IF([test "$have_libsystemd" = "yes"], [ @@ -245,6 +245,10 @@ AC_SUBST(LIBSYSTEMD_LIBS) AM_CONDITIONAL(HAVE_LIBSYSTEMD, [test "$have_libsystemd" = "yes"], [Using libsystemd]) +AC_SUBST(LIBELOGIND_CFLAGS) +AC_SUBST(LIBELOGIND_LIBS) +AM_CONDITIONAL(HAVE_LIBELOGIND, [test "$have_libelogind" = "yes"], [Using libelogind]) + dnl --------------------------------------------------------------------------- dnl - systemd unit / service files dnl --------------------------------------------------------------------------- diff --git a/src/polkit/Makefile.am b/src/polkit/Makefile.am index ca36355..b8090c4 100644 --- a/src/polkit/Makefile.am +++ b/src/polkit/Makefile.am @@ -86,19 +86,26 @@ if HAVE_LIBSYSTEMD libpolkit_gobject_1_la_SOURCES += \ polkitunixsession-systemd.c polkitunixsession.h else +if HAVE_LIBELOGIND +libpolkit_gobject_1_la_SOURCES += \ + polkitunixsession-systemd.c polkitunixsession.h +else libpolkit_gobject_1_la_SOURCES += \ polkitunixsession.c polkitunixsession.h endif +endif libpolkit_gobject_1_la_CFLAGS = \ -D_POLKIT_COMPILATION \ $(GLIB_CFLAGS) \ $(LIBSYSTEMD_CFLAGS) \ + $(LIBELOGIND_CFLAGS) \ $(NULL) libpolkit_gobject_1_la_LIBADD = \ $(GLIB_LIBS) \ $(LIBSYSTEMD_LIBS) \ + $(LIBELOGIND_LIBS) \ $(NULL) libpolkit_gobject_1_la_LDFLAGS = -export-symbols-regex '(^polkit_.*)' diff --git a/src/polkitbackend/Makefile.am b/src/polkitbackend/Makefile.am index e48b739..c2b1695 100644 --- a/src/polkitbackend/Makefile.am +++ b/src/polkitbackend/Makefile.am @@ -42,15 +42,21 @@ if HAVE_LIBSYSTEMD libpolkit_backend_1_la_SOURCES += \ polkitbackendsessionmonitor.h polkitbackendsessionmonitor-systemd.c else +if HAVE_LIBELOGIND +libpolkit_backend_1_la_SOURCES += \ + polkitbackendsessionmonitor.h polkitbackendsessionmonitor-systemd.c +else libpolkit_backend_1_la_SOURCES += \ polkitbackendsessionmonitor.h polkitbackendsessionmonitor.c endif +endif libpolkit_backend_1_la_CFLAGS = \ -D_POLKIT_COMPILATION \ -D_POLKIT_BACKEND_COMPILATION \ $(GLIB_CFLAGS) \ $(LIBSYSTEMD_CFLAGS) \ + $(LIBELOGIND_CFLAGS) \ $(LIBJS_CFLAGS) \ $(NULL) @@ -59,6 +65,7 @@ libpolkit_backend_1_la_CXXFLAGS = $(libpolkit_backend_1_la_CFLAGS) libpolkit_backend_1_la_LIBADD = \ $(GLIB_LIBS) \ $(LIBSYSTEMD_LIBS) \ + $(LIBELOGIND_LIBS) \ $(top_builddir)/src/polkit/libpolkit-gobject-1.la \ $(EXPAT_LIBS) \ $(LIBJS_LIBS) \ --- a/src/polkitbackend/polkitbackendsessionmonitor-systemd.c 2016-11-04 04:44:29.650112018 +0100 +++ b/src/polkitbackend/polkitbackendsessionmonitor-systemd.c 2016-11-04 04:46:52.718109455 +0100 @@ -25,7 +25,11 @@ #include #include #include +#ifdef HAVE_LIBSYSTEMD #include +#else +#include +#endif /* HAVE_LIBSYSTEMD versus HAVE_LIBELOGIND */ #include #include --- a/src/polkit/polkitunixsession-systemd.c 2016-11-04 04:44:29.651112017 +0100 +++ b/src/polkit/polkitunixsession-systemd.c 2016-11-04 04:47:07.160109197 +0100 @@ -30,7 +30,11 @@ #include "polkiterror.h" #include "polkitprivate.h" +#ifdef HAVE_LIBSYSTEMD #include +#else +#include +#endif /* HAVE_LIBSYSTEMD versus HAVE_ELOGIND */ /** * SECTION:polkitunixsession --- a/src/polkitbackend/polkitbackendjsauthority.cpp +++ b/src/polkitbackend/polkitbackendjsauthority.cpp @@ -43,6 +43,10 @@ #include #endif /* HAVE_LIBSYSTEMD */ +#ifdef HAVE_LIBELOGIND +#include +#endif /* HAVE_LIBELOGIND */ + #include #include "initjs.h" /* init.js */