X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=configure.ac;h=2b78dddcc88dbf8e9655c7e92977275c5bb60006;hp=1f7c3f426dbf7b86b61a5d4a9a8c68e9c313a710;hb=3fe1519ec24bf096c8389fa66352d97d7d269e12;hpb=16feea611eb2b7d919c241088f5c26ef6b4dc15b diff --git a/configure.ac b/configure.ac index 1f7c3f426..2b78dddcc 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ AC_PREREQ([2.64]) AC_INIT([elogind], - [231.1], + [232.2], [https://github.com/elogind/elogind/issues], [elogind], [https://github.com/elogind/elogind]) @@ -111,21 +111,50 @@ fi # ------------------------------------------------------------------------------ -# Find running cgroup controller +# Let users set the cgroup controller to use, in case the target controller +# isn't currently running the show. +# Example: Gentoo Linux, user wants to switch from systemd to openrc+elogind, +# and emerges elogind before having booted the machine with openrc. +# See: https://github.com/elogind/elogind/issues/18 with_cgroupctrl= -AS_IF( [test -f /proc/self/cgroup], [ - # If the init system is a cgroup controler, it will be position 1. - # Secondary controllers, like cgmanager, do not work. - with_cgroupctrl=`grep "^1:name=" /proc/self/cgroup | cut -d ':' -f 2` - AS_IF( [test -z "$with_cgroupctrl"], [ - # Try to be our own cgroup controller - with_cgroupctrl="name=elogind" +AC_ARG_WITH([cgroup-controller], + AS_HELP_STRING([--with-cgroup-controller=name], + [Set the name of the cgroup controller to use. + Use this when the autodetection fails, or you plan to use your system with a different controller than the one in place now. + The value 'auto' (default) detects the running controller. + The values 'none' and 'elogind' will cause elogind to be its own (very limited) controller. + When elogind shall be its own controller, there *MUST NOT* be any other controller running! + Another popular controller would be 'openrc'.]), + [with_cgroupctrl=$withval], + [with_cgroupctrl=auto]) + +# ------------------------------------------------------------------------------ +# Find running cgroup controller, if none was set +AS_IF( [test "x$with_cgroupctrl" = "xauto"], [ + AS_IF([test -f /proc/self/cgroup], [ + # If the init system is a cgroup controler, it will be position 1. + # Secondary controllers, like cgmanager, do not work. + with_cgroupctrl=`grep "^1:name=" /proc/self/cgroup | \ + sed -n 's/.*=//p' | sed -e 's/:.*$//'` + AS_IF( [test -z "$with_cgroupctrl"], [ + # Try to be our own cgroup controller + with_cgroupctrl="elogind" + ]) + ], [ + # 'auto' but no cgroup fs is a problem. + with_cgroupctrl="" ]) ]) + +# If the user specified 'none', switch to 'elogind'. +# 'none' is allowed, as this means "there is no controller now" +AS_IF( [test "x$with_cgroupctrl" = "xnone"], [with_cgroupctrl=elogind]) + +# If this was not possible, /proc/self/cgroup not mounted yet, and 'auto' +# chosen, error out. AS_IF( [test -z "$with_cgroupctrl"], AC_MSG_ERROR([No running cgroup controller found])) - # ------------------------------------------------------------------------------ address_sanitizer_cflags= address_sanitizer_cppflags= @@ -216,23 +245,14 @@ AS_CASE([$CC], [*clang*], -Wno-gnu-variable-sized-type-not-at-end \ ])]) - -# ------------------------------------------------------------------------------ -# On some distributions -flto, even if available, leads to linking errors. -# We therefore make it optional -have_lto=no -AC_ARG_ENABLE([lto], - [AS_HELP_STRING([--disable-lto], [Disable link time optimization (default: test)])]) - -AS_IF([test "x$enable_lto" != "xno"], [ - AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*], - [have_lto=yes], - [AC_MSG_RESULT([skipping -flto, optimization not enabled])]) - AS_IF([test "$have_lto" != "no"], - [CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [-flto])] - ) - AC_SUBST([OUR_CFLAGS], "$with_cflags $sanitizer_cflags") -]) +AC_ARG_ENABLE([lto], [AS_HELP_STRING([--disable-lto], [disable -flto])], + [], [enable_lto=yes]) +AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*], + [AS_IF([test "x$enable_lto" = "xyes"], + [CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [-flto])], + [AC_MSG_RESULT([disabling -flto as requested])])], + [AC_MSG_RESULT([skipping -flto, optimization not enabled])]) +AC_SUBST([OUR_CFLAGS], "$with_cflags $sanitizer_cflags") # ------------------------------------------------------------------------------ AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*], @@ -623,16 +643,6 @@ if test "x$enable_polkit" != "xno"; then fi AM_CONDITIONAL(ENABLE_POLKIT, [test "x$have_polkit" = "xyes"]) -# ------------------------------------------------------------------------------ -have_kdbus=no -AC_ARG_ENABLE(kdbus, AS_HELP_STRING([--disable-kdbus], [do not connect to kdbus by default])) -if test "x$enable_kdbus" != "xno"; then - AC_DEFINE(ENABLE_KDBUS, 1, [Define if kdbus is to be connected to by default]) - have_kdbus=yes - M4_DEFINES="$M4_DEFINES -DENABLE_KDBUS" -fi -AM_CONDITIONAL(ENABLE_KDBUS, [test "$have_kdbus" = "yes"]) - # ------------------------------------------------------------------------------ AC_CHECK_HEADERS_ONCE([valgrind/memcheck.h valgrind/valgrind.h]) @@ -700,9 +710,10 @@ AC_ARG_WITH([pamlibdir], AX_NORMALIZE_PATH([with_pamlibdir]) AC_ARG_WITH([pamconfdir], - AS_HELP_STRING([--with-pamconfdir=DIR], [Directory for PAM configuration]), + AS_HELP_STRING([--with-pamconfdir=DIR], [Directory for PAM configuration (pass no to disable installing)]), [], [with_pamconfdir=${sysconfdir}/pam.d]) +AM_CONDITIONAL(ENABLE_PAM_CONFIG, [test "$with_pamconfdir" != "no"]) AX_NORMALIZE_PATH([with_pamconfdir]) AC_ARG_ENABLE([split-usr], @@ -791,13 +802,11 @@ AC_MSG_RESULT([ ACL: ${have_acl} KillUserProcesses default: ${KILL_USER_PROCESSES} polkit: ${have_polkit} - kdbus: ${have_kdbus} Python: ${have_python} man pages: ${have_manpages} test coverage: ${have_coverage} Split /usr: ${enable_split_usr} utmp/wtmp support: ${have_utmp} - Link time optimization: ${have_lto} extra debugging: ${enable_debug} cgroup controller: ${with_cgroupctrl}