X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=configure.ac;h=8c93ea011ad6eeee25161c6cf90047e1460a55dc;hp=563340653ec1a4b039eab02dcbd38285b0a2c311;hb=f5eb2a086bc5d5d36bc2e4755a1d6b508e202250;hpb=e194a8049eaf9a86c16d1d3d31a3331255b39bc7 diff --git a/configure.ac b/configure.ac index 563340653..8c93ea011 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ AC_PREREQ([2.64]) AC_INIT([elogind], - [231.2], + [232.2], [https://github.com/elogind/elogind/issues], [elogind], [https://github.com/elogind/elogind]) @@ -111,20 +111,52 @@ 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="" ]) ]) -AS_IF( [test -z "$with_cgroupctrl"], - AC_MSG_ERROR([No running cgroup controller found])) +# 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]), [ + # Otherwise add the 'name=' prefix + with_cgroupctrl="name=$with_cgroupctrl" +]) # ------------------------------------------------------------------------------ address_sanitizer_cflags= @@ -216,23 +248,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\ ]]*], @@ -690,9 +713,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], @@ -786,7 +810,6 @@ AC_MSG_RESULT([ 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}