2 # This file is part of elogind.
4 # Copyright 2010-2012 Lennart Poettering
5 # Copyright 2010-2012 Kay Sievers
7 # elogind is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU Lesser General Public License as published by
9 # the Free Software Foundation; either version 2.1 of the License, or
10 # (at your option) any later version.
12 # elogind is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 # Lesser General Public License for more details.
17 # You should have received a copy of the GNU Lesser General Public License
18 # along with systemd; If not, see <http://www.gnu.org/licenses/>.
24 [https://github.com/elogind/elogind/issues],
26 [https://github.com/elogind/elogind])
28 AC_CONFIG_SRCDIR([src/login/logind.c])
29 AC_CONFIG_MACRO_DIR([m4])
30 AC_CONFIG_HEADERS([config.h])
31 AC_CONFIG_AUX_DIR([build-aux])
33 AC_USE_SYSTEM_EXTENSIONS
35 AC_PREFIX_DEFAULT([/usr])
36 AM_MAINTAINER_MODE([enable])
37 AM_INIT_AUTOMAKE([foreign 1.11 -Wall -Wno-portability silent-rules tar-pax no-dist-gzip dist-xz subdir-objects parallel-tests])
38 AM_SILENT_RULES([yes])
40 AC_DEFINE_UNQUOTED([CANONICAL_HOST], "$host", [Canonical host string.])
45 AS_IF([test "x$ax_cv_c_compiler_vendor" = "xgnu"], [
46 AC_CHECK_TOOLS([AR], [gcc-ar ar], [:])
47 AC_CHECK_TOOLS([NM], [gcc-nm nm], [:])
48 AC_CHECK_TOOLS([RANLIB], [gcc-ranlib ranlib], [:])
52 LT_INIT([disable-static])
54 AS_IF([test "x$enable_static" = "xyes"], [AC_MSG_ERROR([--enable-static is not supported by elogind])])
55 AS_IF([test "x$enable_largefile" = "xno"], [AC_MSG_ERROR([--disable-largefile is not supported by elogind])])
57 SET_ARCH(X86_64, x86_64*)
60 SET_ARCH(AARCH64, aarch64*)
62 # i18n stuff for the PolicyKit policy files, check whether intltool can be found, disable NLS otherwise
63 AC_CHECK_PROG(intltool_found, [intltool-merge], [yes], [no])
64 AS_IF([test x"$intltool_found" != xyes],
65 [AS_IF([test x"$enable_nls" = xyes],
66 [AC_MSG_ERROR([--enable-nls requested but intltool not found])],
67 [AS_IF([test x"$enable_nls" != xno],
68 [AC_MSG_WARN([*** Disabling NLS support because intltool was not found])
74 AS_IF([test x"$enable_nls" != xno -o "x$enable_polkit" != xno], [
75 # intltoolize greps for '^(AC|IT)_PROG_INTLTOOL', so it needs to be on its own line
76 IT_PROG_INTLTOOL([0.40.0])
79 AS_IF([test -z "$INTLTOOL_POLICY_RULE"], [
80 # If intltool is not available, provide a dummy rule to fail generation of %.policy files with a meaningful error message
81 INTLTOOL_POLICY_RULE='%.policy: %.policy.in ; @echo " ITMRG " $@ && echo "*** intltool support required to build target $@" && false'
82 AC_SUBST(INTLTOOL_POLICY_RULE)
85 GETTEXT_PACKAGE=elogind
86 AC_SUBST(GETTEXT_PACKAGE)
87 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [elogind])
95 AC_PATH_PROG([M4], [m4])
96 AC_PATH_PROG([XSLTPROC], [xsltproc])
98 AC_PATH_PROG([HALT], [halt], [halt])
99 AC_PATH_PROG([REBOOT], [reboot], [reboot])
100 AC_PATH_PROG([KEXEC], [kexec], [/usr/sbin/kexec], [$PATH:/usr/sbin:/sbin])
102 AS_IF([! ln --relative --help > /dev/null 2>&1], [AC_MSG_ERROR([*** ln doesn't support --relative ***])])
106 AC_CHECK_TOOL(OBJCOPY, objcopy)
107 AC_CHECK_TOOL(GPERF, gperf)
108 if test -z "$GPERF" ; then
109 AC_MSG_ERROR([*** gperf not found])
113 # ------------------------------------------------------------------------------
114 # Let users set the cgroup controller to use, in case the target controller
115 # isn't currently running the show.
116 # Example: Gentoo Linux, user wants to switch from systemd to openrc+elogind,
117 # and emerges elogind before having booted the machine with openrc.
118 # See: https://github.com/elogind/elogind/issues/18
120 AC_ARG_WITH([cgroup-controller],
121 AS_HELP_STRING([--with-cgroup-controller=name],
122 [Set the name of the cgroup controller to use.
123 Use this when the autodetection fails, or you plan to use your system with a different controller than the one in place now.
124 The value 'auto' (default) detects the running controller.
125 The values 'none' and 'elogind' will cause elogind to be its own (very limited) controller.
126 When elogind shall be its own controller, there *MUST NOT* be any other controller running!
127 Another popular controller would be 'openrc'.]),
128 [with_cgroupctrl=$withval],
129 [with_cgroupctrl=auto])
131 # ------------------------------------------------------------------------------
132 # Find running cgroup controller, if none was set
133 AS_IF( [test "x$with_cgroupctrl" = "xauto"], [
134 AS_IF([test -f /proc/self/cgroup], [
135 # If the init system is a cgroup controler, it will be position 1.
136 # Secondary controllers, like cgmanager, do not work.
137 with_cgroupctrl=`grep "^1:name=" /proc/self/cgroup | \
138 sed -n 's/.*=//p' | sed -e 's/:.*$//'`
139 AS_IF( [test -z "$with_cgroupctrl"], [
140 # Try to be our own cgroup controller
141 with_cgroupctrl="elogind"
144 # 'auto' but no cgroup fs is a problem.
149 # If the user specified 'none', switch to 'elogind'.
150 # 'none' is allowed, as this means "there is no controller now"
151 AS_IF( [test "x$with_cgroupctrl" = "xnone"], [with_cgroupctrl=elogind])
153 # If this was not possible, /proc/self/cgroup not mounted yet, and 'auto'
155 AS_IF( [test -z "$with_cgroupctrl"],
156 AC_MSG_ERROR([No running cgroup controller found]))
158 # ------------------------------------------------------------------------------
159 address_sanitizer_cflags=
160 address_sanitizer_cppflags=
161 address_sanitizer_ldflags=
162 AC_ARG_ENABLE(address-sanitizer, AS_HELP_STRING([--enable-address-sanitizer], [enable -fsanitize=address]))
163 AS_IF([test "x$enable_address_sanitizer" = "xyes"], [
164 CC_CHECK_FLAG_APPEND([with_as_cflags], [CFLAGS], [-fsanitize=address])
165 AS_IF([test -z "$with_as_cflags"],
166 [AC_MSG_ERROR([*** -fsanitize=address is not supported])])
167 address_sanitizer_cflags="$with_as_cflags -fno-omit-frame-pointer -DVALGRIND=1"
168 address_sanitizer_cppflags="-DVALGRIND=1"
169 address_sanitizer_ldflags="-Wc,-fsanitize=address"
172 undefined_sanitizer_cflags=
173 undefined_sanitizer_cppflags=
174 undefined_sanitizer_ldflags=
175 AC_ARG_ENABLE(undefined-sanitizer, AS_HELP_STRING([--enable-undefined-sanitizer], [enable -fsanitize=undefined]))
176 AS_IF([test "x$enable_undefined_sanitizer" = "xyes"], [
177 CC_CHECK_FLAG_APPEND([with_us_cflags], [CFLAGS], [-fsanitize=undefined])
178 AS_IF([test -z "$with_us_cflags"],
179 [AC_MSG_ERROR([*** -fsanitize=undefined is not supported])])
180 undefined_sanitizer_cflags="$with_us_cflags -fno-omit-frame-pointer -DVALGRIND=1"
181 undefined_sanitizer_cppflags="-DVALGRIND=1"
182 undefined_sanitizer_ldflags="-Wc,-fsanitize=undefined"
185 sanitizer_cflags="$address_sanitizer_cflags $undefined_sanitizer_cflags"
186 sanitizer_cppflags="$address_sanitizer_cppflags $undefined_sanitizer_cppflags"
187 sanitizer_ldflags="$address_sanitizer_ldflags $undefined_sanitizer_ldflags"
189 CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
195 -Wmissing-include-dirs \
196 -Wold-style-definition \
199 -Wdeclaration-after-statement \
201 -Wsuggest-attribute=noreturn \
202 -Werror=missing-prototypes \
203 -Werror=implicit-function-declaration \
204 -Werror=missing-declarations \
205 -Werror=return-type \
206 -Werror=incompatible-pointer-types \
208 -Wstrict-prototypes \
213 -Wstrict-aliasing=2 \
215 -Wno-unused-parameter \
216 -Wno-missing-field-initializers \
218 -Wno-format-signedness \
224 -fdiagnostics-show-option \
225 -fno-strict-aliasing \
226 -fvisibility=hidden \
228 -fstack-protector-strong \
230 --param=ssp-buffer-size=4])
232 CC_CHECK_FLAG_APPEND([with_cflags], [CFLAGS], [-Werror=shadow], [
234 #include <inttypes.h>
235 typedef uint64_t usec_t;
236 usec_t now(clockid_t clock);
243 AS_CASE([$CC], [*clang*],
244 [CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\
245 -Wno-typedef-redefinition \
246 -Wno-gnu-variable-sized-type-not-at-end \
249 # ------------------------------------------------------------------------------
250 AC_ARG_ENABLE([lto], [AS_HELP_STRING([--disable-lto], [disable -flto])],
251 [], [enable_lto=yes])
252 AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
253 [AS_IF([test "x$enable_lto" = "xyes"],
254 [CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [-flto])],
255 [AC_MSG_RESULT([disabling -flto as requested])])],
256 [AC_MSG_RESULT([skipping -flto, optimization not enabled])])
258 # ------------------------------------------------------------------------------
259 AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
260 [CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\
261 -Wp,-D_FORTIFY_SOURCE=2])],
262 [AC_MSG_RESULT([skipping -D_FORTIFY_SOURCE, optimization not enabled])])
264 # ------------------------------------------------------------------------------
265 AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
266 [CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [\
267 -Wl,--gc-sections])],
268 [AC_MSG_RESULT([skipping --gc-sections, optimization not enabled])])
270 # ------------------------------------------------------------------------------
271 AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
272 [CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
273 -ffunction-sections -fdata-sections])],
274 [AC_MSG_RESULT([skipping -ffunction/data-section, optimization not enabled])])
276 # ------------------------------------------------------------------------------
277 CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [\
285 # ------------------------------------------------------------------------------
286 AC_SUBST([OUR_CPPFLAGS], "$with_cppflags $sanitizer_cppflags")
287 AC_SUBST([OUR_CFLAGS], "-D__SANE_USERSPACE_TYPES__ $with_cflags $sanitizer_cflags")
288 AC_SUBST([OUR_LDFLAGS], "$with_ldflags $sanitizer_ldflags")
290 # ------------------------------------------------------------------------------
291 AC_CHECK_SIZEOF(pid_t)
292 AC_CHECK_SIZEOF(uid_t)
293 AC_CHECK_SIZEOF(gid_t)
294 AC_CHECK_SIZEOF(time_t)
295 AC_CHECK_SIZEOF(dev_t)
296 AC_CHECK_SIZEOF(ino_t)
297 AC_CHECK_SIZEOF(rlim_t,,[
298 #include <sys/time.h>
299 #include <sys/resource.h>
302 GPERF_TEST="$(echo foo,bar | ${GPERF} -L ANSI-C)"
303 save_CFLAGS="$CFLAGS"
304 CFLAGS="$CFLAGS -Wno-error"
308 const char * in_word_set(const char *, size_t);
311 [GPERF_LEN_TYPE=size_t],
315 const char * in_word_set(const char *, unsigned);
318 [GPERF_LEN_TYPE=unsigned],
319 [AC_MSG_ERROR([** unable to determine gperf len type])]
322 CFLAGS="$save_CFLAGS"
324 AC_DEFINE_UNQUOTED([GPERF_LEN_TYPE], [$GPERF_LEN_TYPE], [gperf len type])
326 # ------------------------------------------------------------------------------
327 # we use python to build the man page index
329 AC_ARG_WITH([python],
330 [AS_HELP_STRING([--without-python], [disable building the man page index and systemd-python (default: test)])])
333 AS_IF([test "x$with_python" != "xno"], [
334 AM_PATH_PYTHON([3],, [:])
335 AS_IF([test "x$PYTHON" != "x:"], [
336 AC_MSG_CHECKING([for python lxml module])
337 AS_IF(["$PYTHON" -c 'import lxml' 2>/dev/null], [have_lxml=yes])
338 AC_MSG_RESULT([$have_lxml])
339 AS_IF([test "x$have_lxml" = "xyes"], [have_python=yes],
340 [AC_MSG_WARN([*** python support requires python-lxml module installed])])
343 AS_IF([test "$have_python" != "yes"], [
344 AS_IF([test "$with_python" = "yes"],
345 [AC_MSG_ERROR([*** python support requested but python support not found])])
346 AS_IF([test "$with_python" != "no"],
347 [AC_MSG_WARN([*** python support not found, some documentation cannot be built])])
349 AM_CONDITIONAL([HAVE_PYTHON], [test "x$have_python" = "xyes"])
351 # ------------------------------------------------------------------------------
353 AC_CHECK_HEADERS([sys/capability.h], [], [AC_MSG_ERROR([*** POSIX caps headers not found])])
354 AC_CHECK_HEADERS([linux/memfd.h], [], [])
355 AC_CHECK_HEADERS([linux/vm_sockets.h], [], [], [#include <sys/socket.h>])
357 AC_CHECK_HEADERS([printf.h], [have_printf_h=yes], [have_printf_h=no])
358 AS_IF([test x$have_printf_h = xyes], [
359 AC_DEFINE(HAVE_PRINTF_H, 1, [Define if printf.h was found])
364 # unconditionally pull-in librt with old glibc versions
365 dnl AC_SEARCH_LIBS([clock_gettime], [rt], [], [])
366 dnl AC_SEARCH_LIBS([mq_unlink], [rt], [], [])
370 AC_SEARCH_LIBS([cap_init], [cap], [], [AC_MSG_ERROR([*** POSIX caps library not found])])
374 AC_CHECK_FUNCS([__secure_getenv secure_getenv])
388 #include <sys/types.h>
390 #include <sys/mount.h>
394 #include <linux/loop.h>
397 AC_CHECK_DECLS([getrandom],
398 [AC_DEFINE([USE_SYS_RANDOM_H], [], [sys/random.h is usable])],
399 [AC_CHECK_DECLS([getrandom], [], [], [[
400 #include <sys/random.h>
402 #include <linux/random.h>
405 AC_CHECK_TYPES([char16_t, char32_t, key_serial_t],
410 AC_CHECK_DECLS([IFLA_INET6_ADDR_GEN_MODE,
411 IN6_ADDR_GEN_MODE_STABLE_PRIVACY,
421 IFLA_IPTUN_ENCAP_DPORT,
422 IFLA_GRE_ENCAP_DPORT,
423 IFLA_BRIDGE_VLAN_INFO,
424 IFLA_BRPORT_PROXYARP,
425 IFLA_BRPORT_LEARNING_SYNC,
426 IFLA_BR_VLAN_DEFAULT_PVID,
430 #include <inttypes.h>
431 #include <netinet/in.h>
432 #include <netinet/ether.h>
433 #include <linux/rtnetlink.h>
435 #include <linux/ip.h>
436 #include <linux/if_tunnel.h>
437 #include <linux/if_link.h>
438 #include <linux/if_bridge.h>
439 #include <linux/if_addr.h>
440 #include <linux/neighbour.h>
443 # This makes sure pkg.m4 is available.
444 m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-config])
447 # ------------------------------------------------------------------------------
448 PKG_CHECK_MODULES(UDEV, [libudev])
450 AC_ARG_WITH([udevrulesdir],
451 AS_HELP_STRING([--with-udevrulesdir=DIR], [Directory for udev rules files]),
453 [with_udevrulesdir=$($PKG_CONFIG --variable=udevdir udev)/rules.d])
454 AC_SUBST([udevrulesdir], [$with_udevrulesdir])
456 AC_ARG_WITH([udevbindir],
457 AS_HELP_STRING([--with-udevbindir=DIR], [Directory for udev binary files]),
459 [with_udevbindir=$($PKG_CONFIG --variable=udevdir udev)])
460 AC_SUBST([udevbindir], [$with_udevbindir])
462 # ------------------------------------------------------------------------------
464 AC_ARG_ENABLE(glib, AS_HELP_STRING([--disable-glib], [disable usage of glib,gobject,gio in tests]))
465 AS_IF([test "x$enable_glib" != "xno"], [
466 PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.22.0 gobject-2.0 >= 2.22.0 gio-2.0],
467 [AC_DEFINE(HAVE_GLIB, 1, [Define if glib,gobject,gio are available]) have_glib=yes],
469 AS_IF([test "x$have_glib" = "xno" -a "x$enable_glib" = "xyes"],
470 [AC_MSG_ERROR([*** glib support requested but libraries not found])])])
472 # ------------------------------------------------------------------------------
474 AC_ARG_ENABLE([utmp], AS_HELP_STRING([--disable-utmp], [disable utmp/wtmp log handling]),
475 AS_CASE("x${enableval}",
476 [xyes], [have_utmp=yes],
477 [xno], [have_utmp=no],
478 AC_MSG_ERROR(bad value ${enableval} for --enable-utmp)))
479 AS_IF([test "x$have_utmp" = "xyes"], [
480 AC_DEFINE(HAVE_UTMP, 1, [Define if utmp/wtmp support is enabled])
482 M4_DEFINES="$M4_DEFINES -DHAVE_UTMP"],
484 AM_CONDITIONAL([HAVE_UTMP], [test "x$have_utmp" = "xyes"])
486 # ------------------------------------------------------------------------------
488 AC_ARG_ENABLE(coverage, AS_HELP_STRING([--enable-coverage], [enable test coverage]))
489 if test "x$enable_coverage" = "xyes" ; then
490 AC_CHECK_PROG(lcov_found, [lcov], [yes], [no])
491 if test "x$lcov_found" = xno ; then
492 AC_MSG_ERROR([*** lcov support requested but the program was not found])
494 lcov_version_major="`lcov --version | cut -d ' ' -f 4 | cut -d '.' -f 1`"
495 lcov_version_minor="`lcov --version | cut -d ' ' -f 4 | cut -d '.' -f 2`"
496 if test "$lcov_version_major" -eq 1 -a "$lcov_version_minor" -lt 10; then
497 AC_MSG_ERROR([*** lcov version is too old. 1.10 required])
500 CC_CHECK_FLAGS_APPEND([with_coverage_cflags], [CFLAGS], [\
503 AC_SUBST([OUR_CFLAGS], "$with_cflags $with_coverage_cflags")
507 AM_CONDITIONAL(ENABLE_COVERAGE, [test "$have_coverage" = "yes"])
509 # ------------------------------------------------------------------------------
511 AC_ARG_ENABLE(selinux, AS_HELP_STRING([--disable-selinux], [disable optional SELINUX support]))
512 if test "x$enable_selinux" != "xno"; then
513 PKG_CHECK_MODULES([SELINUX], [libselinux >= 2.1.9],
514 [AC_DEFINE(HAVE_SELINUX, 1, [Define if SELinux is available])
516 M4_DEFINES="$M4_DEFINES -DHAVE_SELINUX"],
518 if test "x$have_selinux" = xno -a "x$enable_selinux" = xyes; then
519 AC_MSG_ERROR([*** SELinux support requested but libraries not found])
522 AM_CONDITIONAL(HAVE_SELINUX, [test "$have_selinux" = "yes"])
524 # ------------------------------------------------------------------------------
525 AC_ARG_WITH([kill-user-processes],
526 [AS_HELP_STRING([--without-kill-user-processes], [Set elogind's KillUserProcesses=no by default])])
527 AS_IF([test "$with_kill_user_processes" != "no"],
528 [kill_user_processes=true
529 KILL_USER_PROCESSES=yes],
530 [kill_user_processes=false
531 KILL_USER_PROCESSES=no])
532 AC_DEFINE_UNQUOTED(KILL_USER_PROCESSES, [$kill_user_processes], [Default KillUserProcesses setting])
533 AC_SUBST(KILL_USER_PROCESSES)
535 # ------------------------------------------------------------------------------
536 # We do not really support systemd hybrid or unified mode, but set the default
537 # to 'legacy' here. That is currently the only cgroup mode supported by elogind.
538 #AC_ARG_WITH(default-hierarchy,
539 # AS_HELP_STRING([--with-default-hierarchy=MODE],
540 # [default cgroup hierarchy, defaults to "hybrid"]),
541 # [DEFAULT_HIERARCHY="$withval"],
542 # [DEFAULT_HIERARCHY="hybrid"])
543 DEFAULT_HIERARCHY=legacy
545 AS_CASE("$DEFAULT_HIERARCHY",
546 [legacy], [mode=CGROUP_UNIFIED_NONE],
547 [hybrid], [mode=CGROUP_UNIFIED_SYSTEMD],
548 [unified], [mode=CGROUP_UNIFIED_ALL],
549 AC_MSG_ERROR(Bad default hierarchy mode ${DEFAULT_HIERARCHY}))
550 AC_DEFINE_UNQUOTED(DEFAULT_HIERARCHY, [$mode], [Default cgroup hierarchy])
551 AC_DEFINE_UNQUOTED(DEFAULT_HIERARCHY_NAME, ["$DEFAULT_HIERARCHY"],
552 [Default cgroup hierarchy as string])
554 # ------------------------------------------------------------------------------
556 AS_HELP_STRING([--disable-pam],[disable optional PAM support]),
557 [case "${enableval}" in
560 *) AC_MSG_ERROR(bad value ${enableval} for --disable-pam) ;;
564 if test "x${have_pam}" != xno ; then
566 [security/pam_modules.h security/pam_modutil.h security/pam_ext.h],
568 [if test "x$have_pam" = xyes ; then
569 AC_MSG_ERROR([*** PAM headers not found.])
576 [if test "x$have_pam" = xyes ; then
577 AC_MSG_ERROR([*** libpam not found.])
580 if test "x$have_pam" = xyes ; then
581 PAM_LIBS="-lpam -lpam_misc"
582 AC_DEFINE(HAVE_PAM, 1, [PAM available])
583 M4_DEFINES="$M4_DEFINES -DHAVE_PAM"
591 AM_CONDITIONAL([HAVE_PAM], [test "x$have_pam" != xno])
593 # ------------------------------------------------------------------------------
595 AS_HELP_STRING([--disable-acl],[disable optional ACL support]),
596 [case "${enableval}" in
599 *) AC_MSG_ERROR(bad value ${enableval} for --disable-acl) ;;
603 if test "x${have_acl}" != xno ; then
605 [sys/acl.h acl/libacl.h],
607 [if test "x$have_acl" = xyes ; then
608 AC_MSG_ERROR([*** ACL headers not found.])
615 [if test "x$have_acl" = xyes ; then
616 AC_MSG_ERROR([*** libacl not found.])
619 if test "x$have_acl" = xyes ; then
621 AC_DEFINE(HAVE_ACL, 1, [ACL available])
622 M4_DEFINES="$M4_DEFINES -DHAVE_ACL"
630 AM_CONDITIONAL([HAVE_ACL], [test "x$have_acl" != xno])
632 # ------------------------------------------------------------------------------
633 AC_ARG_ENABLE([smack], AS_HELP_STRING([--disable-smack],[disable optional SMACK support]),
634 [case "${enableval}" in
635 yes) have_smack=yes ;;
637 *) AC_MSG_ERROR(bad value ${enableval} for --disable-smack) ;;
641 if test "x${have_smack}" != xno; then
642 AC_DEFINE(HAVE_SMACK, 1, [Define if SMACK is available])
643 M4_DEFINES="$M4_DEFINES -DHAVE_SMACK"
647 AM_CONDITIONAL([HAVE_SMACK], [test "x$have_smack" = "xyes"])
649 have_smack_run_label=no
650 AC_ARG_WITH(smack-run-label,
651 AS_HELP_STRING([--with-smack-run-label=STRING],
652 [run systemd --system itself with a specific SMACK label]),
653 [AC_DEFINE_UNQUOTED(SMACK_RUN_LABEL, ["$withval"], [Run systemd itself with SMACK label]) have_smack_run_label=yes],
656 if test "x${have_smack_run_label}" = xyes; then
657 M4_DEFINES="$M4_DEFINES -DHAVE_SMACK_RUN_LABEL"
660 AC_ARG_WITH(smack-default-process-label,
661 AS_HELP_STRING([--with-smack-default-process-label=STRING],
662 [default SMACK label for executed processes]),
663 [AC_DEFINE_UNQUOTED(SMACK_DEFAULT_PROCESS_LABEL, ["$withval"], [Default SMACK label for executed processes])],
666 # ------------------------------------------------------------------------------
667 AC_ARG_WITH(system-uid-max,
668 AS_HELP_STRING([--with-system-uid-max=UID]
669 [Maximum UID for system users]),
670 [SYSTEM_UID_MAX="$withval"],
671 [SYSTEM_UID_MAX="`awk 'BEGIN { uid=999 } /^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }' /etc/login.defs 2>/dev/null || echo 999`"])
673 AC_DEFINE_UNQUOTED(SYSTEM_UID_MAX, [$SYSTEM_UID_MAX], [Maximum System UID])
674 AC_SUBST(SYSTEM_UID_MAX)
676 # ------------------------------------------------------------------------------
677 AC_ARG_WITH(system-gid-max,
678 AS_HELP_STRING([--with-system-gid-max=GID]
679 [Maximum GID for system groups]),
680 [SYSTEM_GID_MAX="$withval"],
681 [SYSTEM_GID_MAX="`awk 'BEGIN { gid=999 } /^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }' /etc/login.defs 2>/dev/null || echo 999`"])
683 AC_DEFINE_UNQUOTED(SYSTEM_GID_MAX, [$SYSTEM_GID_MAX], [Maximum System GID])
684 AC_SUBST(SYSTEM_GID_MAX)
686 # ------------------------------------------------------------------------------
688 AC_ARG_ENABLE(polkit, AS_HELP_STRING([--disable-polkit], [disable PolicyKit support]))
689 if test "x$enable_polkit" != "xno"; then
690 AC_DEFINE(ENABLE_POLKIT, 1, [Define if PolicyKit support is to be enabled])
693 # also enable support for *.pkla files on old polkit
694 PKG_CHECK_MODULES(POLKIT, [ polkit-gobject-1 < 0.106 ],
698 AM_CONDITIONAL(ENABLE_POLKIT, [test "x$have_polkit" = "xyes"])
699 AM_CONDITIONAL(ENABLE_POLKIT_PKLA, [test "x$polkit_pkla" = "xyes"])
701 # ------------------------------------------------------------------------------
702 AC_CHECK_HEADERS_ONCE([valgrind/memcheck.h valgrind/valgrind.h])
704 # ------------------------------------------------------------------------------
706 AC_ARG_ENABLE(manpages, AS_HELP_STRING([--disable-manpages], [disable manpages]))
707 AC_PATH_PROG([XSLTPROC], [xsltproc])
708 AS_IF([test "x$enable_manpages" != xno], [have_manpages=yes])
709 AM_CONDITIONAL(ENABLE_MANPAGES, [test "x$have_manpages" = "xyes"])
711 # ------------------------------------------------------------------------------
714 AC_ARG_WITH([dbuspolicydir],
715 AS_HELP_STRING([--with-dbuspolicydir=DIR], [D-Bus policy directory]),
717 [with_dbuspolicydir=${datadir}/dbus-1/system.d])
718 AX_NORMALIZE_PATH([with_dbuspolicydir])
720 AC_ARG_WITH([dbussystemservicedir],
721 AS_HELP_STRING([--with-dbussystemservicedir=DIR], [D-Bus system service directory]),
723 [with_dbussystemservicedir=${datadir}/dbus-1/system-services])
724 AX_NORMALIZE_PATH([with_dbussystemservicedir])
726 AC_ARG_WITH([bashcompletiondir],
727 AS_HELP_STRING([--with-bashcompletiondir=DIR], [bash completions directory]),
729 [AS_IF([$($PKG_CONFIG --exists bash-completion)], [
730 with_bashcompletiondir=$($PKG_CONFIG --variable=completionsdir bash-completion)
732 with_bashcompletiondir=${datadir}/bash-completion/completions
734 AM_CONDITIONAL(ENABLE_BASH_COMPLETION, [test "$with_bashcompletiondir" != "no"])
735 AX_NORMALIZE_PATH([with_bashcompletiondir])
737 AC_ARG_WITH([zshcompletiondir],
738 AS_HELP_STRING([--with-zshcompletiondir=DIR], [zsh completions directory]),
739 [], [with_zshcompletiondir=${datadir}/zsh/site-functions])
740 AM_CONDITIONAL(ENABLE_ZSH_COMPLETION, [test "$with_zshcompletiondir" != "no"])
741 AX_NORMALIZE_PATH([with_zshcompletiondir])
743 AC_ARG_WITH([rootprefix],
744 AS_HELP_STRING([--with-rootprefix=DIR], [rootfs directory prefix for config files and kernel modules]),
745 [], [with_rootprefix=${ac_default_prefix}])
746 # --with-rootprefix= (empty) should default to "/" but AX_NORMALIZE_PATH
747 # defaults those to ".", solve that here for now until we can find a suitable
748 # fix for AX_NORMALIZE_PATH upstream at autoconf-archive.
749 # See: https://github.com/systemd/systemd/issues/54
750 if test "x${with_rootprefix}" = "x"; then
753 AX_NORMALIZE_PATH([with_rootprefix])
755 AC_ARG_WITH([rootlibdir],
756 AS_HELP_STRING([--with-rootlibdir=DIR], [root directory for libraries necessary for boot]),
758 [with_rootlibdir=${libdir}])
759 AX_NORMALIZE_PATH([with_rootlibdir])
761 AC_ARG_WITH([pamlibdir],
762 AS_HELP_STRING([--with-pamlibdir=DIR], [directory for PAM modules]),
764 [with_pamlibdir=${with_rootlibdir}/security])
765 AX_NORMALIZE_PATH([with_pamlibdir])
767 AC_ARG_WITH([pamconfdir],
768 AS_HELP_STRING([--with-pamconfdir=DIR], [directory for PAM configuration (pass no to disable installing)]),
770 [with_pamconfdir=${sysconfdir}/pam.d])
771 AM_CONDITIONAL(ENABLE_PAM_CONFIG, [test "$with_pamconfdir" != "no"])
772 AX_NORMALIZE_PATH([with_pamconfdir])
774 AC_ARG_ENABLE([split-usr],
775 AS_HELP_STRING([--enable-split-usr], [assume that /bin, /sbin aren\'t symlinks into /usr]),
777 [AS_IF([test "x${ac_default_prefix}" != "x${with_rootprefix}"], [
783 AS_IF([test "x${enable_split_usr}" = "xyes"], [
784 AC_DEFINE(HAVE_SPLIT_USR, 1, [Define if /bin, /sbin aren't symlinks into /usr])
786 AM_CONDITIONAL(ENABLE_SPLIT_USR, [test "x${enable_split_usr}" = "xyes"])
788 # work around intltool-update issues during 'make distcheck'
789 AS_IF([test "x$0" != "x./configure"], [
790 AC_SUBST([INTLTOOL_UPDATE], [/usr/bin/env true])
794 [AC_HELP_STRING([--disable-tests], [disable tests, or enable extra tests with =unsafe])],
795 enable_tests=$enableval, enable_tests=yes)
796 AM_CONDITIONAL(ENABLE_TESTS, [test x$enable_tests = xyes -o x$enable_tests = xunsafe])
797 AM_CONDITIONAL(ENABLE_UNSAFE_TESTS, [test x$enable_tests = xunsafe])
800 [AC_HELP_STRING([--enable-debug@<:@=LIST@:>@], [enable extra debugging (elogind,hashmap,mmap-cache)])],
801 [if test "x$enableval" = "xyes"; then
802 enableval="elogind,hashmap,mmap-cache"
805 IFS="$IFS$PATH_SEPARATOR,"
806 for name in $enableval; do
809 enable_debug_elogind=yes
812 enable_debug_hashmap=yes
815 enable_debug_mmap_cache=yes
819 IFS="$saved_ifs"],[])
822 AS_IF([test x$enable_debug_elogind = xyes], [
823 AC_DEFINE(ENABLE_DEBUG_ELOGIND, 1, [Define if elogind debugging is to be enabled])
824 enable_debug="elogind $enable_debug"
826 AS_IF([test x$enable_debug_hashmap = xyes], [
827 AC_DEFINE(ENABLE_DEBUG_HASHMAP, 1, [Define if hashmap debugging is to be enabled])
828 enable_debug="hashmap $enable_debug"
830 AS_IF([test x$enable_debug_mmap_cache = xyes], [
831 AC_DEFINE(ENABLE_DEBUG_MMAP_CACHE, 1, [Define if mmap cache debugging is to be enabled])
832 enable_debug="mmap-cache $enable_debug"
834 test -z "$enable_debug" && enable_debug="none"
836 AC_SUBST([dbuspolicydir], [$with_dbuspolicydir])
837 AC_SUBST([dbussystemservicedir], [$with_dbussystemservicedir])
838 AC_SUBST([bashcompletiondir], [$with_bashcompletiondir])
839 AC_SUBST([zshcompletiondir], [$with_zshcompletiondir])
840 AC_SUBST([pamlibdir], [$with_pamlibdir])
841 AC_SUBST([pamconfdir], [$with_pamconfdir])
842 AC_SUBST([rootprefix], [$with_rootprefix])
843 AC_SUBST([rootlibdir], [$with_rootlibdir])
844 AC_SUBST([cgroup_controller], [$with_cgroupctrl])
853 $PACKAGE_NAME $PACKAGE_VERSION
855 PAM: . . . . . . . . . . . . . . . ${have_pam}
856 SELinux: . . . . . . . . . . . . . ${have_selinux}
857 SMACK: . . . . . . . . . . . . . . ${have_smack}
858 ACL: . . . . . . . . . . . . . . . ${have_acl}
859 default cgroup hierarchy: . . . . ${DEFAULT_HIERARCHY}
860 default KillUserProcesses setting: ${KILL_USER_PROCESSES}
861 polkit: . . . . . . . . . . . . . ${have_polkit} (legacy pkla support: ${polkit_pkla})
862 glib: . . . . . . . . . . . . . . ${have_glib}
863 Python: . . . . . . . . . . . . . ${have_python}
864 man pages: . . . . . . . . . . . . ${have_manpages}
865 test coverage: . . . . . . . . . . ${have_coverage}
866 Split /usr: . . . . . . . . . . . ${enable_split_usr}
867 utmp/wtmp support: . . . . . . . . ${have_utmp}
868 extra debugging: . . . . . . . . . ${enable_debug}
869 cgroup controller: . . . . . . . . ${with_cgroupctrl}
871 prefix: . . . . . . . . . . . . . ${prefix}
872 rootprefix: . . . . . . . . . . . ${with_rootprefix}
873 sysconf dir: . . . . . . . . . . . ${sysconfdir}
874 datarootdir: . . . . . . . . . . . ${datarootdir}
875 includedir: . . . . . . . . . . . ${includedir}
876 lib dir: . . . . . . . . . . . . . ${libdir}
877 rootlib dir: . . . . . . . . . . . ${with_rootlibdir}
878 PAM modules dir: . . . . . . . . . ${with_pamlibdir}
879 PAM configuration dir: . . . . . . ${with_pamconfdir}
880 D-Bus policy dir: . . . . . . . . ${with_dbuspolicydir}
881 D-Bus system dir: . . . . . . . . ${with_dbussystemservicedir}
882 bash completions dir: . . . . . . ${with_bashcompletiondir}
883 zsh completions dir: . . . . . . . ${with_zshcompletiondir}
884 maximum system UID: . . . . . . . ${SYSTEM_UID_MAX}
885 maximum system GID: . . . . . . . ${SYSTEM_GID_MAX}
887 CFLAGS: . . . . . . . . . . . . . ${OUR_CFLAGS} ${CFLAGS}
888 CPPFLAGS: . . . . . . . . . . . . ${OUR_CPPFLAGS} ${CPPFLAGS}
889 LDFLAGS: . . . . . . . . . . . . . ${OUR_LDFLAGS} ${LDFLAGS}