AC_PREREQ([2.64])
AC_INIT([elogind],
- [231.2],
+ [232.2],
[https://github.com/elogind/elogind/issues],
[elogind],
[https://github.com/elogind/elogind])
# ------------------------------------------------------------------------------
-# 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=
-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\ ]]*],
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],
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}