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])
389 #include <sys/types.h>
391 #include <sys/mount.h>
395 #include <linux/loop.h>
396 #include <linux/random.h>
399 AC_CHECK_TYPES([char16_t, char32_t, key_serial_t],
404 AC_CHECK_DECLS([IFLA_INET6_ADDR_GEN_MODE,
405 IN6_ADDR_GEN_MODE_STABLE_PRIVACY,
413 IFLA_VXLAN_REMCSUM_NOPARTIAL,
414 IFLA_IPTUN_ENCAP_DPORT,
415 IFLA_GRE_ENCAP_DPORT,
416 IFLA_BRIDGE_VLAN_INFO,
417 IFLA_BRPORT_PROXYARP,
418 IFLA_BRPORT_LEARNING_SYNC,
419 IFLA_BR_VLAN_DEFAULT_PVID,
423 #include <inttypes.h>
424 #include <netinet/in.h>
425 #include <netinet/ether.h>
426 #include <linux/rtnetlink.h>
428 #include <linux/ip.h>
429 #include <linux/if_tunnel.h>
430 #include <linux/if_link.h>
431 #include <linux/if_bridge.h>
432 #include <linux/if_addr.h>
433 #include <linux/neighbour.h>
436 # This makes sure pkg.m4 is available.
437 m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-config])
440 # ------------------------------------------------------------------------------
441 PKG_CHECK_MODULES(UDEV, [libudev])
443 AC_ARG_WITH([udevrulesdir],
444 AS_HELP_STRING([--with-udevrulesdir=DIR], [Directory for udev rules files]),
446 [with_udevrulesdir=$($PKG_CONFIG --variable=udevdir udev)/rules.d])
447 AC_SUBST([udevrulesdir], [$with_udevrulesdir])
449 AC_ARG_WITH([udevbindir],
450 AS_HELP_STRING([--with-udevbindir=DIR], [Directory for udev binary files]),
452 [with_udevbindir=$($PKG_CONFIG --variable=udevdir udev)])
453 AC_SUBST([udevbindir], [$with_udevbindir])
455 # ------------------------------------------------------------------------------
457 AC_ARG_ENABLE([utmp], AS_HELP_STRING([--disable-utmp], [disable utmp/wtmp log handling]),
458 AS_CASE("x${enableval}",
459 [xyes], [have_utmp=yes],
460 [xno], [have_utmp=no],
461 AC_MSG_ERROR(bad value ${enableval} for --enable-utmp)))
462 AS_IF([test "x$have_utmp" = "xyes"], [AC_DEFINE(HAVE_UTMP, 1, [Define if utmp/wtmp support is enabled])])
463 AM_CONDITIONAL([HAVE_UTMP], [test "x$have_utmp" = "xyes"])
465 # ------------------------------------------------------------------------------
467 AC_ARG_ENABLE(coverage, AS_HELP_STRING([--enable-coverage], [enable test coverage]))
468 if test "x$enable_coverage" = "xyes" ; then
469 AC_CHECK_PROG(lcov_found, [lcov], [yes], [no])
470 if test "x$lcov_found" = xno ; then
471 AC_MSG_ERROR([*** lcov support requested but the program was not found])
473 lcov_version_major="`lcov --version | cut -d ' ' -f 4 | cut -d '.' -f 1`"
474 lcov_version_minor="`lcov --version | cut -d ' ' -f 4 | cut -d '.' -f 2`"
475 if test "$lcov_version_major" -eq 1 -a "$lcov_version_minor" -lt 10; then
476 AC_MSG_ERROR([*** lcov version is too old. 1.10 required])
479 CC_CHECK_FLAGS_APPEND([with_coverage_cflags], [CFLAGS], [\
482 AC_SUBST([OUR_CFLAGS], "$with_cflags $with_coverage_cflags")
486 AM_CONDITIONAL(ENABLE_COVERAGE, [test "$have_coverage" = "yes"])
488 # ------------------------------------------------------------------------------
490 AC_ARG_ENABLE(selinux, AS_HELP_STRING([--disable-selinux], [disable optional SELINUX support]))
491 if test "x$enable_selinux" != "xno"; then
492 PKG_CHECK_MODULES([SELINUX], [libselinux >= 2.1.9],
493 [AC_DEFINE(HAVE_SELINUX, 1, [Define if SELinux is available])
495 M4_DEFINES="$M4_DEFINES -DHAVE_SELINUX"],
497 if test "x$have_selinux" = xno -a "x$enable_selinux" = xyes; then
498 AC_MSG_ERROR([*** SELinux support requested but libraries not found])
501 AM_CONDITIONAL(HAVE_SELINUX, [test "$have_selinux" = "yes"])
503 # ------------------------------------------------------------------------------
504 AC_ARG_WITH([kill-user-processes],
505 [AS_HELP_STRING([--without-kill-user-processes], [Set elogind's KillUserProcesses=no by default])])
506 AS_IF([test "$with_kill_user_processes" != "no"],
507 [kill_user_processes=true
508 KILL_USER_PROCESSES=yes],
509 [kill_user_processes=false
510 KILL_USER_PROCESSES=no])
511 AC_DEFINE_UNQUOTED(KILL_USER_PROCESSES, [$kill_user_processes], [Default KillUserProcesses setting])
512 AC_SUBST(KILL_USER_PROCESSES)
514 # ------------------------------------------------------------------------------
515 # We do not really support systemd hybrid or unified mode, but set the default
516 # to 'legacy' here. That is currently the only cgroup mode supported by elogind.
517 #AC_ARG_WITH(default-hierarchy,
518 # AS_HELP_STRING([--with-default-hierarchy=MODE],
519 # [default cgroup hierarchy, defaults to "hybrid"]),
520 # [DEFAULT_HIERARCHY="$withval"],
521 # [DEFAULT_HIERARCHY="hybrid"])
522 DEFAULT_HIERARCHY=legacy
524 AS_CASE("$DEFAULT_HIERARCHY",
525 [legacy], [mode=CGROUP_UNIFIED_NONE],
526 [hybrid], [mode=CGROUP_UNIFIED_SYSTEMD],
527 [unified], [mode=CGROUP_UNIFIED_ALL],
528 AC_MSG_ERROR(Bad default hierarchy mode ${DEFAULT_HIERARCHY}))
529 AC_DEFINE_UNQUOTED(DEFAULT_HIERARCHY, [$mode], [Default cgroup hierarchy])
530 AC_DEFINE_UNQUOTED(DEFAULT_HIERARCHY_NAME, ["$DEFAULT_HIERARCHY"],
531 [Default cgroup hierarchy as string])
533 # ------------------------------------------------------------------------------
535 AS_HELP_STRING([--disable-pam],[disable optional PAM support]),
536 [case "${enableval}" in
539 *) AC_MSG_ERROR(bad value ${enableval} for --disable-pam) ;;
543 if test "x${have_pam}" != xno ; then
545 [security/pam_modules.h security/pam_modutil.h security/pam_ext.h],
547 [if test "x$have_pam" = xyes ; then
548 AC_MSG_ERROR([*** PAM headers not found.])
555 [if test "x$have_pam" = xyes ; then
556 AC_MSG_ERROR([*** libpam not found.])
559 if test "x$have_pam" = xyes ; then
560 PAM_LIBS="-lpam -lpam_misc"
561 AC_DEFINE(HAVE_PAM, 1, [PAM available])
562 M4_DEFINES="$M4_DEFINES -DHAVE_PAM"
570 AM_CONDITIONAL([HAVE_PAM], [test "x$have_pam" != xno])
572 # ------------------------------------------------------------------------------
574 AS_HELP_STRING([--disable-acl],[disable optional ACL support]),
575 [case "${enableval}" in
578 *) AC_MSG_ERROR(bad value ${enableval} for --disable-acl) ;;
582 if test "x${have_acl}" != xno ; then
584 [sys/acl.h acl/libacl.h],
586 [if test "x$have_acl" = xyes ; then
587 AC_MSG_ERROR([*** ACL headers not found.])
594 [if test "x$have_acl" = xyes ; then
595 AC_MSG_ERROR([*** libacl not found.])
598 if test "x$have_acl" = xyes ; then
600 AC_DEFINE(HAVE_ACL, 1, [ACL available])
601 M4_DEFINES="$M4_DEFINES -DHAVE_ACL"
609 AM_CONDITIONAL([HAVE_ACL], [test "x$have_acl" != xno])
611 # ------------------------------------------------------------------------------
612 AC_ARG_ENABLE([smack], AS_HELP_STRING([--disable-smack],[disable optional SMACK support]),
613 [case "${enableval}" in
614 yes) have_smack=yes ;;
616 *) AC_MSG_ERROR(bad value ${enableval} for --disable-smack) ;;
620 if test "x${have_smack}" != xno; then
621 AC_DEFINE(HAVE_SMACK, 1, [Define if SMACK is available])
622 M4_DEFINES="$M4_DEFINES -DHAVE_SMACK"
626 AM_CONDITIONAL([HAVE_SMACK], [test "x$have_smack" = "xyes"])
628 have_smack_run_label=no
629 AC_ARG_WITH(smack-run-label,
630 AS_HELP_STRING([--with-smack-run-label=STRING],
631 [run systemd --system itself with a specific SMACK label]),
632 [AC_DEFINE_UNQUOTED(SMACK_RUN_LABEL, ["$withval"], [Run systemd itself with SMACK label]) have_smack_run_label=yes],
635 if test "x${have_smack_run_label}" = xyes; then
636 M4_DEFINES="$M4_DEFINES -DHAVE_SMACK_RUN_LABEL"
639 AC_ARG_WITH(smack-default-process-label,
640 AS_HELP_STRING([--with-smack-default-process-label=STRING],
641 [default SMACK label for executed processes]),
642 [AC_DEFINE_UNQUOTED(SMACK_DEFAULT_PROCESS_LABEL, ["$withval"], [Default SMACK label for executed processes])],
645 # ------------------------------------------------------------------------------
646 AC_ARG_WITH(system-uid-max,
647 AS_HELP_STRING([--with-system-uid-max=UID]
648 [Maximum UID for system users]),
649 [SYSTEM_UID_MAX="$withval"],
650 [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`"])
652 AC_DEFINE_UNQUOTED(SYSTEM_UID_MAX, [$SYSTEM_UID_MAX], [Maximum System UID])
653 AC_SUBST(SYSTEM_UID_MAX)
655 # ------------------------------------------------------------------------------
656 AC_ARG_WITH(system-gid-max,
657 AS_HELP_STRING([--with-system-gid-max=GID]
658 [Maximum GID for system groups]),
659 [SYSTEM_GID_MAX="$withval"],
660 [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`"])
662 AC_DEFINE_UNQUOTED(SYSTEM_GID_MAX, [$SYSTEM_GID_MAX], [Maximum System GID])
663 AC_SUBST(SYSTEM_GID_MAX)
665 # ------------------------------------------------------------------------------
667 AC_ARG_ENABLE(polkit, AS_HELP_STRING([--disable-polkit], [disable PolicyKit support]))
668 if test "x$enable_polkit" != "xno"; then
669 AC_DEFINE(ENABLE_POLKIT, 1, [Define if PolicyKit support is to be enabled])
672 AM_CONDITIONAL(ENABLE_POLKIT, [test "x$have_polkit" = "xyes"])
674 # ------------------------------------------------------------------------------
675 AC_CHECK_HEADERS_ONCE([valgrind/memcheck.h valgrind/valgrind.h])
677 # ------------------------------------------------------------------------------
679 AC_ARG_ENABLE(manpages, AS_HELP_STRING([--disable-manpages], [disable manpages]))
680 AC_PATH_PROG([XSLTPROC], [xsltproc])
681 AS_IF([test "x$enable_manpages" != xno], [have_manpages=yes])
682 AM_CONDITIONAL(ENABLE_MANPAGES, [test "x$have_manpages" = "xyes"])
684 # ------------------------------------------------------------------------------
687 AC_ARG_WITH([dbuspolicydir],
688 AS_HELP_STRING([--with-dbuspolicydir=DIR], [D-Bus policy directory]),
690 [with_dbuspolicydir=${datadir}/dbus-1/system.d])
691 AX_NORMALIZE_PATH([with_dbuspolicydir])
693 AC_ARG_WITH([dbussystemservicedir],
694 AS_HELP_STRING([--with-dbussystemservicedir=DIR], [D-Bus system service directory]),
696 [with_dbussystemservicedir=${datadir}/dbus-1/system-services])
697 AX_NORMALIZE_PATH([with_dbussystemservicedir])
699 AC_ARG_WITH([bashcompletiondir],
700 AS_HELP_STRING([--with-bashcompletiondir=DIR], [bash completions directory]),
702 [AS_IF([$($PKG_CONFIG --exists bash-completion)], [
703 with_bashcompletiondir=$($PKG_CONFIG --variable=completionsdir bash-completion)
705 with_bashcompletiondir=${datadir}/bash-completion/completions
707 AM_CONDITIONAL(ENABLE_BASH_COMPLETION, [test "$with_bashcompletiondir" != "no"])
708 AX_NORMALIZE_PATH([with_bashcompletiondir])
710 AC_ARG_WITH([zshcompletiondir],
711 AS_HELP_STRING([--with-zshcompletiondir=DIR], [zsh completions directory]),
712 [], [with_zshcompletiondir=${datadir}/zsh/site-functions])
713 AM_CONDITIONAL(ENABLE_ZSH_COMPLETION, [test "$with_zshcompletiondir" != "no"])
714 AX_NORMALIZE_PATH([with_zshcompletiondir])
716 AC_ARG_WITH([rootprefix],
717 AS_HELP_STRING([--with-rootprefix=DIR], [rootfs directory prefix for config files and kernel modules]),
718 [], [with_rootprefix=${ac_default_prefix}])
719 # --with-rootprefix= (empty) should default to "/" but AX_NORMALIZE_PATH
720 # defaults those to ".", solve that here for now until we can find a suitable
721 # fix for AX_NORMALIZE_PATH upstream at autoconf-archive.
722 # See: https://github.com/systemd/systemd/issues/54
723 if test "x${with_rootprefix}" = "x"; then
726 AX_NORMALIZE_PATH([with_rootprefix])
728 AC_ARG_WITH([rootlibdir],
729 AS_HELP_STRING([--with-rootlibdir=DIR], [root directory for libraries necessary for boot]),
731 [with_rootlibdir=${libdir}])
732 AX_NORMALIZE_PATH([with_rootlibdir])
734 AC_ARG_WITH([pamlibdir],
735 AS_HELP_STRING([--with-pamlibdir=DIR], [directory for PAM modules]),
737 [with_pamlibdir=${with_rootlibdir}/security])
738 AX_NORMALIZE_PATH([with_pamlibdir])
740 AC_ARG_WITH([pamconfdir],
741 AS_HELP_STRING([--with-pamconfdir=DIR], [directory for PAM configuration (pass no to disable installing)]),
743 [with_pamconfdir=${sysconfdir}/pam.d])
744 AM_CONDITIONAL(ENABLE_PAM_CONFIG, [test "$with_pamconfdir" != "no"])
745 AX_NORMALIZE_PATH([with_pamconfdir])
747 AC_ARG_ENABLE([split-usr],
748 AS_HELP_STRING([--enable-split-usr], [assume that /bin, /sbin aren\'t symlinks into /usr]),
750 [AS_IF([test "x${ac_default_prefix}" != "x${with_rootprefix}"], [
756 AS_IF([test "x${enable_split_usr}" = "xyes"], [
757 AC_DEFINE(HAVE_SPLIT_USR, 1, [Define if /bin, /sbin aren't symlinks into /usr])
759 AM_CONDITIONAL(ENABLE_SPLIT_USR, [test "x${enable_split_usr}" = "xyes"])
761 # work around intltool-update issues during 'make distcheck'
762 AS_IF([test "x$0" != "x./configure"], [
763 AC_SUBST([INTLTOOL_UPDATE], [/usr/bin/env true])
767 [AC_HELP_STRING([--disable-tests], [disable tests, or enable extra tests with =unsafe])],
768 enable_tests=$enableval, enable_tests=yes)
769 AM_CONDITIONAL(ENABLE_TESTS, [test x$enable_tests = xyes -o x$enable_tests = xunsafe])
770 AM_CONDITIONAL(ENABLE_UNSAFE_TESTS, [test x$enable_tests = xunsafe])
773 [AC_HELP_STRING([--enable-debug@<:@=LIST@:>@], [enable extra debugging (elogind,hashmap,mmap-cache)])],
774 [if test "x$enableval" = "xyes"; then
775 enableval="elogind,hashmap,mmap-cache"
778 IFS="$IFS$PATH_SEPARATOR,"
779 for name in $enableval; do
782 enable_debug_elogind=yes
785 enable_debug_hashmap=yes
788 enable_debug_mmap_cache=yes
792 IFS="$saved_ifs"],[])
795 AS_IF([test x$enable_debug_elogind = xyes], [
796 AC_DEFINE(ENABLE_DEBUG_ELOGIND, 1, [Define if elogind debugging is to be enabled])
797 enable_debug="elogind $enable_debug"
799 AS_IF([test x$enable_debug_hashmap = xyes], [
800 AC_DEFINE(ENABLE_DEBUG_HASHMAP, 1, [Define if hashmap debugging is to be enabled])
801 enable_debug="hashmap $enable_debug"
803 AS_IF([test x$enable_debug_mmap_cache = xyes], [
804 AC_DEFINE(ENABLE_DEBUG_MMAP_CACHE, 1, [Define if mmap cache debugging is to be enabled])
805 enable_debug="mmap-cache $enable_debug"
807 test -z "$enable_debug" && enable_debug="none"
809 AC_SUBST([dbuspolicydir], [$with_dbuspolicydir])
810 AC_SUBST([dbussystemservicedir], [$with_dbussystemservicedir])
811 AC_SUBST([bashcompletiondir], [$with_bashcompletiondir])
812 AC_SUBST([zshcompletiondir], [$with_zshcompletiondir])
813 AC_SUBST([pamlibdir], [$with_pamlibdir])
814 AC_SUBST([pamconfdir], [$with_pamconfdir])
815 AC_SUBST([rootprefix], [$with_rootprefix])
816 AC_SUBST([rootlibdir], [$with_rootlibdir])
817 AC_SUBST([cgroup_controller], [$with_cgroupctrl])
826 $PACKAGE_NAME $VERSION
828 PAM: . . . . . . . . . . . . . . . ${have_pam}
829 SELinux: . . . . . . . . . . . . . ${have_selinux}
830 SMACK: . . . . . . . . . . . . . . ${have_smack}
831 ACL: . . . . . . . . . . . . . . . ${have_acl}
832 default cgroup hierarchy: . . . . ${DEFAULT_HIERARCHY}
833 default KillUserProcesses setting: ${KILL_USER_PROCESSES}
834 polkit: . . . . . . . . . . . . . ${have_polkit}
835 Python: . . . . . . . . . . . . . ${have_python}
836 man pages: . . . . . . . . . . . . ${have_manpages}
837 test coverage: . . . . . . . . . . ${have_coverage}
838 Split /usr: . . . . . . . . . . . ${enable_split_usr}
839 utmp/wtmp support: . . . . . . . . ${have_utmp}
840 extra debugging: . . . . . . . . . ${enable_debug}
841 cgroup controller: . . . . . . . . ${with_cgroupctrl}
843 prefix: . . . . . . . . . . . . . ${prefix}
844 rootprefix: . . . . . . . . . . . ${with_rootprefix}
845 sysconf dir: . . . . . . . . . . . ${sysconfdir}
846 datarootdir: . . . . . . . . . . . ${datarootdir}
847 includedir: . . . . . . . . . . . ${includedir}
848 lib dir: . . . . . . . . . . . . . ${libdir}
849 rootlib dir: . . . . . . . . . . . ${with_rootlibdir}
850 PAM modules dir: . . . . . . . . . ${with_pamlibdir}
851 PAM configuration dir: . . . . . . ${with_pamconfdir}
852 D-Bus policy dir: . . . . . . . . ${with_dbuspolicydir}
853 D-Bus system dir: . . . . . . . . ${with_dbussystemservicedir}
854 bash completions dir: . . . . . . ${with_bashcompletiondir}
855 zsh completions dir: . . . . . . . ${with_zshcompletiondir}
856 maximum system UID: . . . . . . . ${SYSTEM_UID_MAX}
857 maximum system GID: . . . . . . . ${SYSTEM_GID_MAX}
859 CFLAGS: . . . . . . . . . . . . . ${OUR_CFLAGS} ${CFLAGS}
860 CPPFLAGS: . . . . . . . . . . . . ${OUR_CPPFLAGS} ${CPPFLAGS}
861 LDFLAGS: . . . . . . . . . . . . . ${OUR_LDFLAGS} ${LDFLAGS}