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], [\
194 "-Wformat=2 -Wformat-security -Wformat-nonliteral" \
196 -Wmissing-include-dirs \
197 -Wold-style-definition \
200 -Wdeclaration-after-statement \
202 -Wsuggest-attribute=noreturn \
203 -Werror=missing-prototypes \
204 -Werror=implicit-function-declaration \
205 -Werror=missing-declarations \
206 -Werror=return-type \
207 -Wstrict-prototypes \
212 -Wstrict-aliasing=2 \
214 -Wno-unused-parameter \
215 -Wno-missing-field-initializers \
217 -Wno-format-signedness \
223 -fdiagnostics-show-option \
224 -fno-strict-aliasing \
225 -fvisibility=hidden \
227 -fstack-protector-strong \
229 --param=ssp-buffer-size=4])
231 CC_CHECK_FLAG_APPEND([with_cflags], [CFLAGS], [-Werror=shadow], [
233 #include <inttypes.h>
234 typedef uint64_t usec_t;
235 usec_t now(clockid_t clock);
242 AS_CASE([$CC], [*clang*],
243 [CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\
244 -Wno-typedef-redefinition \
245 -Wno-gnu-variable-sized-type-not-at-end \
248 AC_ARG_ENABLE([lto], [AS_HELP_STRING([--disable-lto], [disable -flto])],
249 [], [enable_lto=yes])
250 AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
251 [AS_IF([test "x$enable_lto" = "xyes"],
252 [CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [-flto])],
253 [AC_MSG_RESULT([disabling -flto as requested])])],
254 [AC_MSG_RESULT([skipping -flto, optimization not enabled])])
255 AC_SUBST([OUR_CFLAGS], "$with_cflags $sanitizer_cflags")
257 # ------------------------------------------------------------------------------
258 AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
259 [CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\
260 -Wp,-D_FORTIFY_SOURCE=2])],
261 [AC_MSG_RESULT([skipping -D_FORTIFY_SOURCE, optimization not enabled])])
262 AC_SUBST([OUR_CPPFLAGS], "$with_cppflags $sanitizer_cppflags")
264 AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
265 [CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [\
266 -Wl,--gc-sections])],
267 [AC_MSG_RESULT([skipping --gc-sections, optimization not enabled])])
268 AC_SUBST([OUR_CFLAGS], "$with_ldflags $sanitizer_cflags")
270 AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
271 [CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
272 -ffunction-sections -fdata-sections])],
273 [AC_MSG_RESULT([skipping -ffunction/data-section, optimization not enabled])])
274 AC_SUBST([OUR_CFLAGS], "$with_cflags $sanitizer_cflags")
276 CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [\
283 AC_SUBST([OUR_LDFLAGS], "$with_ldflags $sanitizer_ldflags")
285 AC_CHECK_SIZEOF(pid_t)
286 AC_CHECK_SIZEOF(uid_t)
287 AC_CHECK_SIZEOF(gid_t)
288 AC_CHECK_SIZEOF(time_t)
289 AC_CHECK_SIZEOF(dev_t)
290 AC_CHECK_SIZEOF(ino_t)
291 AC_CHECK_SIZEOF(rlim_t,,[
292 #include <sys/time.h>
293 #include <sys/resource.h>
296 GPERF_TEST="$(echo foo,bar | ${GPERF} -L ANSI-C)"
297 save_CFLAGS="$CFLAGS"
298 CFLAGS="$CFLAGS -Wno-error"
302 const char * in_word_set(const char *, size_t);
305 [GPERF_LEN_TYPE=size_t],
309 const char * in_word_set(const char *, unsigned);
312 [GPERF_LEN_TYPE=unsigned],
313 [AC_MSG_ERROR([** unable to determine gperf len type])]
316 CFLAGS="$save_CFLAGS"
318 AC_DEFINE_UNQUOTED([GPERF_LEN_TYPE], [$GPERF_LEN_TYPE], [gperf len type])
320 # ------------------------------------------------------------------------------
321 # we use python to build the man page index
323 AC_ARG_WITH([python],
324 [AS_HELP_STRING([--without-python], [Disable building the man page index and systemd-python (default: test)])])
327 AS_IF([test "x$with_python" != "xno"], [
328 AM_PATH_PYTHON(,, [:])
329 AS_IF([test "x$PYTHON" != "x:"], [
330 AC_MSG_CHECKING([for python lxml module])
331 AS_IF(["$PYTHON" -c 'import lxml' 2>/dev/null], [have_lxml=yes])
332 AC_MSG_RESULT([$have_lxml])
333 AS_IF([test "x$have_lxml" = "xyes"], [have_python=yes],
334 [AC_MSG_WARN([*** python support requires python-lxml module installed])])
337 AS_IF([test "$have_python" != "yes"], [
338 AS_IF([test "$with_python" = "yes"],
339 [AC_MSG_ERROR([*** python support requested but python support not found])])
340 AS_IF([test "$with_python" != "no"],
341 [AC_MSG_WARN([*** python support not found, some documentation cannot be built])])
343 AM_CONDITIONAL([HAVE_PYTHON], [test "x$have_python" = "xyes"])
345 # ------------------------------------------------------------------------------
347 AC_CHECK_HEADERS([sys/capability.h], [], [AC_MSG_ERROR([*** POSIX caps headers not found])])
348 AC_CHECK_HEADERS([linux/memfd.h], [], [])
350 AC_CHECK_HEADERS([printf.h], [have_printf_h=yes], [have_printf_h=no])
351 AS_IF([test x$have_printf_h = xyes], [
352 AC_DEFINE(HAVE_PRINTF_H, 1, [Define if printf.h was found])
357 # unconditionally pull-in librt with old glibc versions
358 dnl AC_SEARCH_LIBS([clock_gettime], [rt], [], [])
359 dnl AC_SEARCH_LIBS([mq_unlink], [rt], [], [])
363 AC_SEARCH_LIBS([cap_init], [cap], [], [AC_MSG_ERROR([*** POSIX caps library not found])])
367 AC_CHECK_FUNCS([__secure_getenv secure_getenv])
381 #include <sys/types.h>
383 #include <sys/mount.h>
386 #include <linux/loop.h>
387 #include <linux/random.h>
390 AC_CHECK_TYPES([char16_t, char32_t, key_serial_t],
395 AC_CHECK_DECLS([IFLA_INET6_ADDR_GEN_MODE,
396 IN6_ADDR_GEN_MODE_STABLE_PRIVACY,
404 IFLA_VXLAN_REMCSUM_NOPARTIAL,
405 IFLA_IPTUN_ENCAP_DPORT,
406 IFLA_GRE_ENCAP_DPORT,
407 IFLA_BRIDGE_VLAN_INFO,
408 IFLA_BRPORT_PROXYARP,
409 IFLA_BRPORT_LEARNING_SYNC,
410 IFLA_BR_VLAN_DEFAULT_PVID,
414 #include <inttypes.h>
415 #include <netinet/in.h>
416 #include <netinet/ether.h>
417 #include <linux/rtnetlink.h>
419 #include <linux/ip.h>
420 #include <linux/if_tunnel.h>
421 #include <linux/if_link.h>
422 #include <linux/if_bridge.h>
423 #include <linux/if_addr.h>
424 #include <linux/neighbour.h>
427 # This makes sure pkg.m4 is available.
428 m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-config])
431 # ------------------------------------------------------------------------------
432 PKG_CHECK_MODULES(UDEV, [libudev])
434 AC_ARG_WITH([udevrulesdir],
435 AS_HELP_STRING([--with-udevrulesdir=DIR], [Directory for udev rules files]),
437 [with_udevrulesdir=$($PKG_CONFIG --variable=udevdir udev)/rules.d])
438 AC_SUBST([udevrulesdir], [$with_udevrulesdir])
440 AC_ARG_WITH([udevbindir],
441 AS_HELP_STRING([--with-udevbindir=DIR], [Directory for udev binary files]),
443 [with_udevbindir=$($PKG_CONFIG --variable=udevdir udev)])
444 AC_SUBST([udevbindir], [$with_udevbindir])
446 # ------------------------------------------------------------------------------
448 AC_ARG_ENABLE([utmp], AS_HELP_STRING([--disable-utmp], [disable utmp/wtmp log handling]),
449 AS_CASE("x${enableval}",
450 [xyes], [have_utmp=yes],
451 [xno], [have_utmp=no],
452 AC_MSG_ERROR(bad value ${enableval} for --enable-utmp)))
453 AS_IF([test "x$have_utmp" = "xyes"], [AC_DEFINE(HAVE_UTMP, 1, [Define if utmp/wtmp support is enabled])])
454 AM_CONDITIONAL([HAVE_UTMP], [test "x$have_utmp" = "xyes"])
456 # ------------------------------------------------------------------------------
458 AC_ARG_ENABLE(coverage, AS_HELP_STRING([--enable-coverage], [enable test coverage]))
459 if test "x$enable_coverage" = "xyes" ; then
460 AC_CHECK_PROG(lcov_found, [lcov], [yes], [no])
461 if test "x$lcov_found" = xno ; then
462 AC_MSG_ERROR([*** lcov support requested but the program was not found])
464 lcov_version_major="`lcov --version | cut -d ' ' -f 4 | cut -d '.' -f 1`"
465 lcov_version_minor="`lcov --version | cut -d ' ' -f 4 | cut -d '.' -f 2`"
466 if test "$lcov_version_major" -eq 1 -a "$lcov_version_minor" -lt 10; then
467 AC_MSG_ERROR([*** lcov version is too old. 1.10 required])
470 CC_CHECK_FLAGS_APPEND([with_coverage_cflags], [CFLAGS], [\
473 AC_SUBST([OUR_CFLAGS], "$with_cflags $with_coverage_cflags")
477 AM_CONDITIONAL(ENABLE_COVERAGE, [test "$have_coverage" = "yes"])
479 # ------------------------------------------------------------------------------
481 AC_ARG_ENABLE(selinux, AS_HELP_STRING([--disable-selinux], [Disable optional SELINUX support]))
482 if test "x$enable_selinux" != "xno"; then
483 PKG_CHECK_MODULES([SELINUX], [libselinux >= 2.1.9],
484 [AC_DEFINE(HAVE_SELINUX, 1, [Define if SELinux is available])
486 M4_DEFINES="$M4_DEFINES -DHAVE_SELINUX"],
488 if test "x$have_selinux" = xno -a "x$enable_selinux" = xyes; then
489 AC_MSG_ERROR([*** SELinux support requested but libraries not found])
492 AM_CONDITIONAL(HAVE_SELINUX, [test "$have_selinux" = "yes"])
494 # ------------------------------------------------------------------------------
495 AC_ARG_WITH([kill-user-processes],
496 [AS_HELP_STRING([--without-kill-user-processes], [Set elogind's KillUserProcesses=no by default])])
497 AS_IF([test "$with_kill_user_processes" != "no"],
498 [kill_user_processes=true
499 KILL_USER_PROCESSES=yes],
500 [kill_user_processes=false
501 KILL_USER_PROCESSES=no])
502 AC_DEFINE_UNQUOTED(KILL_USER_PROCESSES, [$kill_user_processes], [Default KillUserProcesses setting])
503 AC_SUBST(KILL_USER_PROCESSES)
505 # ------------------------------------------------------------------------------
507 AS_HELP_STRING([--disable-pam],[Disable optional PAM support]),
508 [case "${enableval}" in
511 *) AC_MSG_ERROR(bad value ${enableval} for --disable-pam) ;;
515 if test "x${have_pam}" != xno ; then
517 [security/pam_modules.h security/pam_modutil.h security/pam_ext.h],
519 [if test "x$have_pam" = xyes ; then
520 AC_MSG_ERROR([*** PAM headers not found.])
527 [if test "x$have_pam" = xyes ; then
528 AC_MSG_ERROR([*** libpam not found.])
531 if test "x$have_pam" = xyes ; then
532 PAM_LIBS="-lpam -lpam_misc"
533 AC_DEFINE(HAVE_PAM, 1, [PAM available])
534 M4_DEFINES="$M4_DEFINES -DHAVE_PAM"
542 AM_CONDITIONAL([HAVE_PAM], [test "x$have_pam" != xno])
544 # ------------------------------------------------------------------------------
546 AS_HELP_STRING([--disable-acl],[Disable optional ACL support]),
547 [case "${enableval}" in
550 *) AC_MSG_ERROR(bad value ${enableval} for --disable-acl) ;;
554 if test "x${have_acl}" != xno ; then
556 [sys/acl.h acl/libacl.h],
558 [if test "x$have_acl" = xyes ; then
559 AC_MSG_ERROR([*** ACL headers not found.])
566 [if test "x$have_acl" = xyes ; then
567 AC_MSG_ERROR([*** libacl not found.])
570 if test "x$have_acl" = xyes ; then
572 AC_DEFINE(HAVE_ACL, 1, [ACL available])
573 M4_DEFINES="$M4_DEFINES -DHAVE_ACL"
581 AM_CONDITIONAL([HAVE_ACL], [test "x$have_acl" != xno])
583 # ------------------------------------------------------------------------------
584 AC_ARG_ENABLE([smack], AS_HELP_STRING([--disable-smack],[Disable optional SMACK support]),
585 [case "${enableval}" in
586 yes) have_smack=yes ;;
588 *) AC_MSG_ERROR(bad value ${enableval} for --disable-smack) ;;
592 if test "x${have_smack}" != xno; then
593 AC_DEFINE(HAVE_SMACK, 1, [Define if SMACK is available])
594 M4_DEFINES="$M4_DEFINES -DHAVE_SMACK"
598 AM_CONDITIONAL([HAVE_SMACK], [test "x$have_smack" = "xyes"])
600 have_smack_run_label=no
601 AC_ARG_WITH(smack-run-label,
602 AS_HELP_STRING([--with-smack-run-label=STRING],
603 [run systemd --system itself with a specific SMACK label]),
604 [AC_DEFINE_UNQUOTED(SMACK_RUN_LABEL, ["$withval"], [Run systemd itself with SMACK label]) have_smack_run_label=yes],
607 if test "x${have_smack_run_label}" = xyes; then
608 M4_DEFINES="$M4_DEFINES -DHAVE_SMACK_RUN_LABEL"
611 AC_ARG_WITH(smack-default-process-label,
612 AS_HELP_STRING([--with-smack-default-process-label=STRING],
613 [default SMACK label for executed processes]),
614 [AC_DEFINE_UNQUOTED(SMACK_DEFAULT_PROCESS_LABEL, ["$withval"], [Default SMACK label for executed processes])],
617 # ------------------------------------------------------------------------------
618 AC_ARG_WITH(system-uid-max,
619 AS_HELP_STRING([--with-system-uid-max=UID]
620 [Maximum UID for system users]),
621 [SYSTEM_UID_MAX="$withval"],
622 [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`"])
624 AC_DEFINE_UNQUOTED(SYSTEM_UID_MAX, [$SYSTEM_UID_MAX], [Maximum System UID])
625 AC_SUBST(SYSTEM_UID_MAX)
627 # ------------------------------------------------------------------------------
628 AC_ARG_WITH(system-gid-max,
629 AS_HELP_STRING([--with-system-gid-max=GID]
630 [Maximum GID for system groups]),
631 [SYSTEM_GID_MAX="$withval"],
632 [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`"])
634 AC_DEFINE_UNQUOTED(SYSTEM_GID_MAX, [$SYSTEM_GID_MAX], [Maximum System GID])
635 AC_SUBST(SYSTEM_GID_MAX)
637 # ------------------------------------------------------------------------------
639 AC_ARG_ENABLE(polkit, AS_HELP_STRING([--disable-polkit], [disable PolicyKit support]))
640 if test "x$enable_polkit" != "xno"; then
641 AC_DEFINE(ENABLE_POLKIT, 1, [Define if PolicyKit support is to be enabled])
644 AM_CONDITIONAL(ENABLE_POLKIT, [test "x$have_polkit" = "xyes"])
646 # ------------------------------------------------------------------------------
647 AC_CHECK_HEADERS_ONCE([valgrind/memcheck.h valgrind/valgrind.h])
649 # ------------------------------------------------------------------------------
651 AC_ARG_ENABLE(manpages, AS_HELP_STRING([--disable-manpages], [disable manpages]))
652 AC_PATH_PROG([XSLTPROC], [xsltproc])
653 AS_IF([test "x$enable_manpages" != xno], [have_manpages=yes])
654 AM_CONDITIONAL(ENABLE_MANPAGES, [test "x$have_manpages" = "xyes"])
656 # ------------------------------------------------------------------------------
659 AC_ARG_WITH([dbuspolicydir],
660 AS_HELP_STRING([--with-dbuspolicydir=DIR], [D-Bus policy directory]),
662 [with_dbuspolicydir=${sysconfdir}/dbus-1/system.d])
663 AX_NORMALIZE_PATH([with_dbuspolicydir])
665 AC_ARG_WITH([dbussystemservicedir],
666 AS_HELP_STRING([--with-dbussystemservicedir=DIR], [D-Bus system service directory]),
668 [with_dbussystemservicedir=${datadir}/dbus-1/system-services])
669 AX_NORMALIZE_PATH([with_dbussystemservicedir])
671 AC_ARG_WITH([bashcompletiondir],
672 AS_HELP_STRING([--with-bashcompletiondir=DIR], [Bash completions directory]),
674 [AS_IF([$($PKG_CONFIG --exists bash-completion)], [
675 with_bashcompletiondir=$($PKG_CONFIG --variable=completionsdir bash-completion)
677 with_bashcompletiondir=${datadir}/bash-completion/completions
679 AM_CONDITIONAL(ENABLE_BASH_COMPLETION, [test "$with_bashcompletiondir" != "no"])
680 AX_NORMALIZE_PATH([with_bashcompletiondir])
682 AC_ARG_WITH([zshcompletiondir],
683 AS_HELP_STRING([--with-zshcompletiondir=DIR], [Zsh completions directory]),
684 [], [with_zshcompletiondir=${datadir}/zsh/site-functions])
685 AM_CONDITIONAL(ENABLE_ZSH_COMPLETION, [test "$with_zshcompletiondir" != "no"])
686 AX_NORMALIZE_PATH([with_zshcompletiondir])
688 AC_ARG_WITH([rootprefix],
689 AS_HELP_STRING([--with-rootprefix=DIR], [rootfs directory prefix for config files and kernel modules]),
690 [], [with_rootprefix=${ac_default_prefix}])
691 # --with-rootprefix= (empty) should default to "/" but AX_NORMALIZE_PATH
692 # defaults those to ".", solve that here for now until we can find a suitable
693 # fix for AX_NORMALIZE_PATH upstream at autoconf-archive.
694 # See: https://github.com/systemd/systemd/issues/54
695 if test "x${with_rootprefix}" = "x"; then
698 AX_NORMALIZE_PATH([with_rootprefix])
700 AC_ARG_WITH([rootlibdir],
701 AS_HELP_STRING([--with-rootlibdir=DIR], [Root directory for libraries necessary for boot]),
703 [with_rootlibdir=${libdir}])
704 AX_NORMALIZE_PATH([with_rootlibdir])
706 AC_ARG_WITH([pamlibdir],
707 AS_HELP_STRING([--with-pamlibdir=DIR], [Directory for PAM modules]),
709 [with_pamlibdir=${with_rootlibdir}/security])
710 AX_NORMALIZE_PATH([with_pamlibdir])
712 AC_ARG_WITH([pamconfdir],
713 AS_HELP_STRING([--with-pamconfdir=DIR], [Directory for PAM configuration (pass no to disable installing)]),
715 [with_pamconfdir=${sysconfdir}/pam.d])
716 AM_CONDITIONAL(ENABLE_PAM_CONFIG, [test "$with_pamconfdir" != "no"])
717 AX_NORMALIZE_PATH([with_pamconfdir])
719 AC_ARG_ENABLE([split-usr],
720 AS_HELP_STRING([--enable-split-usr], [Assume that /bin, /sbin aren\'t symlinks into /usr]),
722 [AS_IF([test "x${ac_default_prefix}" != "x${with_rootprefix}"], [
728 AS_IF([test "x${enable_split_usr}" = "xyes"], [
729 AC_DEFINE(HAVE_SPLIT_USR, 1, [Define if /bin, /sbin aren't symlinks into /usr])
731 AM_CONDITIONAL(ENABLE_SPLIT_USR, [test "x${enable_split_usr}" = "xyes"])
733 # work around intltool-update issues during 'make distcheck'
734 AS_IF([test "x$0" != "x./configure"], [
735 AC_SUBST([INTLTOOL_UPDATE], [/usr/bin/env true])
739 [AC_HELP_STRING([--disable-tests], [disable tests])],
740 enable_tests=$enableval, enable_tests=yes)
741 AM_CONDITIONAL(ENABLE_TESTS, [test x$enable_tests = xyes])
744 [AC_HELP_STRING([--enable-debug@<:@=LIST@:>@], [enable extra debugging (elogind,hashmap,mmap-cache)])],
745 [if test "x$enableval" = "xyes"; then
746 enableval="elogind,hashmap,mmap-cache"
749 IFS="$IFS$PATH_SEPARATOR,"
750 for name in $enableval; do
753 enable_debug_elogind=yes
756 enable_debug_hashmap=yes
759 enable_debug_mmap_cache=yes
763 IFS="$saved_ifs"],[])
766 AS_IF([test x$enable_debug_elogind = xyes], [
767 AC_DEFINE(ENABLE_DEBUG_ELOGIND, 1, [Define if elogind debugging is to be enabled])
768 enable_debug="elogind $enable_debug"
770 AS_IF([test x$enable_debug_hashmap = xyes], [
771 AC_DEFINE(ENABLE_DEBUG_HASHMAP, 1, [Define if hashmap debugging is to be enabled])
772 enable_debug="hashmap $enable_debug"
774 AS_IF([test x$enable_debug_mmap_cache = xyes], [
775 AC_DEFINE(ENABLE_DEBUG_MMAP_CACHE, 1, [Define if mmap cache debugging is to be enabled])
776 enable_debug="mmap-cache $enable_debug"
778 test -z "$enable_debug" && enable_debug="none"
780 AC_SUBST([dbuspolicydir], [$with_dbuspolicydir])
781 AC_SUBST([dbussystemservicedir], [$with_dbussystemservicedir])
782 AC_SUBST([bashcompletiondir], [$with_bashcompletiondir])
783 AC_SUBST([zshcompletiondir], [$with_zshcompletiondir])
784 AC_SUBST([pamlibdir], [$with_pamlibdir])
785 AC_SUBST([pamconfdir], [$with_pamconfdir])
786 AC_SUBST([rootprefix], [$with_rootprefix])
787 AC_SUBST([rootlibdir], [$with_rootlibdir])
788 AC_SUBST([cgroup_controller], [$with_cgroupctrl])
797 $PACKAGE_NAME $VERSION
800 SELinux: ${have_selinux}
803 KillUserProcesses default: ${KILL_USER_PROCESSES}
804 polkit: ${have_polkit}
805 Python: ${have_python}
806 man pages: ${have_manpages}
807 test coverage: ${have_coverage}
808 Split /usr: ${enable_split_usr}
809 utmp/wtmp support: ${have_utmp}
810 extra debugging: ${enable_debug}
811 cgroup controller: ${with_cgroupctrl}
814 rootprefix: ${with_rootprefix}
815 sysconf dir: ${sysconfdir}
816 datarootdir: ${datarootdir}
817 includedir: ${includedir}
819 rootlib dir: ${with_rootlibdir}
820 PAM modules dir: ${with_pamlibdir}
821 PAM configuration dir: ${with_pamconfdir}
822 D-Bus policy dir: ${with_dbuspolicydir}
823 D-Bus system dir: ${with_dbussystemservicedir}
824 Bash completions dir: ${with_bashcompletiondir}
825 Zsh completions dir: ${with_zshcompletiondir}
826 Maximum System UID: ${SYSTEM_UID_MAX}
827 Maximum System GID: ${SYSTEM_GID_MAX}
829 CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
830 CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
831 LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}