You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
906 lines
35 KiB
906 lines
35 KiB
#
|
|
# This file is part of elogind.
|
|
#
|
|
# Copyright 2010-2012 Lennart Poettering
|
|
# Copyright 2010-2012 Kay Sievers
|
|
#
|
|
# elogind is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU Lesser General Public License as published by
|
|
# the Free Software Foundation; either version 2.1 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# elogind is distributed in the hope that it will be useful, but
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
# Lesser General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Lesser General Public License
|
|
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
AC_PREREQ([2.64])
|
|
|
|
AC_INIT([elogind],
|
|
[234.4],
|
|
[https://github.com/elogind/elogind/issues],
|
|
[elogind],
|
|
[https://github.com/elogind/elogind])
|
|
|
|
AC_CONFIG_SRCDIR([src/login/logind.c])
|
|
AC_CONFIG_MACRO_DIR([m4])
|
|
AC_CONFIG_HEADERS([config.h])
|
|
AC_CONFIG_AUX_DIR([build-aux])
|
|
|
|
AC_USE_SYSTEM_EXTENSIONS
|
|
AC_SYS_LARGEFILE
|
|
AC_PREFIX_DEFAULT([/usr])
|
|
AM_MAINTAINER_MODE([enable])
|
|
AM_INIT_AUTOMAKE([foreign 1.11 -Wall -Wno-portability silent-rules tar-pax no-dist-gzip dist-xz subdir-objects parallel-tests])
|
|
AM_SILENT_RULES([yes])
|
|
AC_CANONICAL_HOST
|
|
AC_DEFINE_UNQUOTED([CANONICAL_HOST], "$host", [Canonical host string.])
|
|
|
|
AC_PROG_CC_C99
|
|
|
|
AX_COMPILER_VENDOR
|
|
AS_IF([test "x$ax_cv_c_compiler_vendor" = "xgnu"], [
|
|
AC_CHECK_TOOLS([AR], [gcc-ar ar], [:])
|
|
AC_CHECK_TOOLS([NM], [gcc-nm nm], [:])
|
|
AC_CHECK_TOOLS([RANLIB], [gcc-ranlib ranlib], [:])
|
|
])
|
|
|
|
LT_PREREQ(2.2)
|
|
LT_INIT([disable-static])
|
|
|
|
AS_IF([test "x$enable_static" = "xyes"], [AC_MSG_ERROR([--enable-static is not supported by elogind])])
|
|
AS_IF([test "x$enable_largefile" = "xno"], [AC_MSG_ERROR([--disable-largefile is not supported by elogind])])
|
|
|
|
SET_ARCH(X86_64, x86_64*)
|
|
SET_ARCH(IA32, i*86*)
|
|
SET_ARCH(MIPS, mips*)
|
|
SET_ARCH(AARCH64, aarch64*)
|
|
|
|
# i18n stuff for the PolicyKit policy files, check whether intltool can be found, disable NLS otherwise
|
|
AC_CHECK_PROG(intltool_found, [intltool-merge], [yes], [no])
|
|
AS_IF([test x"$intltool_found" != xyes],
|
|
[AS_IF([test x"$enable_nls" = xyes],
|
|
[AC_MSG_ERROR([--enable-nls requested but intltool not found])],
|
|
[AS_IF([test x"$enable_nls" != xno],
|
|
[AC_MSG_WARN([*** Disabling NLS support because intltool was not found])
|
|
enable_nls=no])
|
|
])
|
|
])
|
|
|
|
AM_NLS
|
|
AS_IF([test x"$enable_nls" != xno -o "x$enable_polkit" != xno], [
|
|
# intltoolize greps for '^(AC|IT)_PROG_INTLTOOL', so it needs to be on its own line
|
|
IT_PROG_INTLTOOL([0.40.0])
|
|
])
|
|
|
|
AS_IF([test -z "$INTLTOOL_POLICY_RULE"], [
|
|
# If intltool is not available, provide a dummy rule to fail generation of %.policy files with a meaningful error message
|
|
INTLTOOL_POLICY_RULE='%.policy: %.policy.in ; @echo " ITMRG " $@ && echo "*** intltool support required to build target $@" && false'
|
|
AC_SUBST(INTLTOOL_POLICY_RULE)
|
|
])
|
|
|
|
GETTEXT_PACKAGE=elogind
|
|
AC_SUBST(GETTEXT_PACKAGE)
|
|
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [elogind])
|
|
|
|
AC_PROG_MKDIR_P
|
|
AC_PROG_LN_S
|
|
AC_PROG_SED
|
|
AC_PROG_GREP
|
|
AC_PROG_AWK
|
|
|
|
AC_PATH_PROG([M4], [m4])
|
|
AC_PATH_PROG([XSLTPROC], [xsltproc])
|
|
|
|
AC_PATH_PROG([HALT], [halt], [halt])
|
|
AC_PATH_PROG([REBOOT], [reboot], [reboot])
|
|
AC_PATH_PROG([KEXEC], [kexec], [/usr/sbin/kexec], [$PATH:/usr/sbin:/sbin])
|
|
|
|
AS_IF([! ln --relative --help > /dev/null 2>&1], [AC_MSG_ERROR([*** ln doesn't support --relative ***])])
|
|
|
|
M4_DEFINES=
|
|
|
|
AC_CHECK_TOOL(OBJCOPY, objcopy)
|
|
AC_CHECK_TOOL(GPERF, gperf)
|
|
if test -z "$GPERF" ; then
|
|
AC_MSG_ERROR([*** gperf not found])
|
|
fi
|
|
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# 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=
|
|
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=
|
|
address_sanitizer_ldflags=
|
|
AC_ARG_ENABLE(address-sanitizer, AS_HELP_STRING([--enable-address-sanitizer], [enable -fsanitize=address]))
|
|
AS_IF([test "x$enable_address_sanitizer" = "xyes"], [
|
|
CC_CHECK_FLAG_APPEND([with_as_cflags], [CFLAGS], [-fsanitize=address])
|
|
AS_IF([test -z "$with_as_cflags"],
|
|
[AC_MSG_ERROR([*** -fsanitize=address is not supported])])
|
|
address_sanitizer_cflags="$with_as_cflags -fno-omit-frame-pointer -DVALGRIND=1"
|
|
address_sanitizer_cppflags="-DVALGRIND=1"
|
|
address_sanitizer_ldflags="-Wc,-fsanitize=address"
|
|
])
|
|
|
|
undefined_sanitizer_cflags=
|
|
undefined_sanitizer_cppflags=
|
|
undefined_sanitizer_ldflags=
|
|
AC_ARG_ENABLE(undefined-sanitizer, AS_HELP_STRING([--enable-undefined-sanitizer], [enable -fsanitize=undefined]))
|
|
AS_IF([test "x$enable_undefined_sanitizer" = "xyes"], [
|
|
CC_CHECK_FLAG_APPEND([with_us_cflags], [CFLAGS], [-fsanitize=undefined])
|
|
AS_IF([test -z "$with_us_cflags"],
|
|
[AC_MSG_ERROR([*** -fsanitize=undefined is not supported])])
|
|
undefined_sanitizer_cflags="$with_us_cflags -fno-omit-frame-pointer -DVALGRIND=1"
|
|
undefined_sanitizer_cppflags="-DVALGRIND=1"
|
|
undefined_sanitizer_ldflags="-Wc,-fsanitize=undefined"
|
|
])
|
|
|
|
sanitizer_cflags="$address_sanitizer_cflags $undefined_sanitizer_cflags"
|
|
sanitizer_cppflags="$address_sanitizer_cppflags $undefined_sanitizer_cppflags"
|
|
sanitizer_ldflags="$address_sanitizer_ldflags $undefined_sanitizer_ldflags"
|
|
|
|
CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
|
|
-pipe \
|
|
-Wall \
|
|
-Wextra \
|
|
-Wundef \
|
|
-Wlogical-op \
|
|
-Wmissing-include-dirs \
|
|
-Wold-style-definition \
|
|
-Wpointer-arith \
|
|
-Winit-self \
|
|
-Wdeclaration-after-statement \
|
|
-Wfloat-equal \
|
|
-Wsuggest-attribute=noreturn \
|
|
-Werror=missing-prototypes \
|
|
-Werror=implicit-function-declaration \
|
|
-Werror=missing-declarations \
|
|
-Werror=return-type \
|
|
-Werror=incompatible-pointer-types \
|
|
-Werror=format=2 \
|
|
-Wstrict-prototypes \
|
|
-Wredundant-decls \
|
|
-Wmissing-noreturn \
|
|
-Wshadow \
|
|
-Wendif-labels \
|
|
-Wstrict-aliasing=2 \
|
|
-Wwrite-strings \
|
|
-Wno-unused-parameter \
|
|
-Wno-missing-field-initializers \
|
|
-Wno-unused-result \
|
|
-Wno-format-signedness \
|
|
-Werror=overflow \
|
|
-Wdate-time \
|
|
-Wnested-externs \
|
|
-ffast-math \
|
|
-fno-common \
|
|
-fdiagnostics-show-option \
|
|
-fno-strict-aliasing \
|
|
-fvisibility=hidden \
|
|
-fstack-protector \
|
|
-fstack-protector-strong \
|
|
-fPIE \
|
|
--param=ssp-buffer-size=4])
|
|
|
|
CC_CHECK_FLAG_APPEND([with_cflags], [CFLAGS], [-Werror=shadow], [
|
|
#include <time.h>
|
|
#include <inttypes.h>
|
|
typedef uint64_t usec_t;
|
|
usec_t now(clockid_t clock);
|
|
int main(void) {
|
|
struct timespec now;
|
|
return 0;
|
|
}
|
|
])
|
|
|
|
AS_CASE([$CC], [*clang*],
|
|
[CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\
|
|
-Wno-typedef-redefinition \
|
|
-Wno-gnu-variable-sized-type-not-at-end \
|
|
])])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
have_lto=no
|
|
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"], [have_lto=yes],
|
|
[AC_MSG_RESULT([disabling -flto as requested])])],
|
|
[AC_MSG_RESULT([skipping -flto, optimization not enabled])])
|
|
|
|
AS_IF([test "x$have_lto" = "xyes"],
|
|
[CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS],
|
|
[-flto -fuse-linker-plugin])])
|
|
|
|
AS_CASE([$with_cflags], [*-flto*], [], [have_lto=no])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
|
|
[CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\
|
|
-Wp,-D_FORTIFY_SOURCE=2])],
|
|
[AC_MSG_RESULT([skipping -D_FORTIFY_SOURCE, optimization not enabled])])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
|
|
[CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [\
|
|
-Wl,--gc-sections])],
|
|
[AC_MSG_RESULT([skipping --gc-sections, optimization not enabled])])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
|
|
[CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
|
|
-ffunction-sections -fdata-sections])],
|
|
[AC_MSG_RESULT([skipping -ffunction/data-section, optimization not enabled])])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [\
|
|
-Wl,--as-needed \
|
|
-Wl,--no-undefined \
|
|
-Wl,-z,relro \
|
|
-Wl,-z,now \
|
|
-pie])
|
|
AS_IF([test "x$have_lto" = "xyes"],
|
|
[CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [-Wl,-fuse-ld=gold])])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
AC_SUBST([OUR_CPPFLAGS], "$with_cppflags $sanitizer_cppflags")
|
|
AC_SUBST([OUR_CFLAGS], "-D__SANE_USERSPACE_TYPES__ $with_cflags $sanitizer_cflags")
|
|
AC_SUBST([OUR_LDFLAGS], "$with_ldflags $sanitizer_ldflags")
|
|
|
|
# ------------------------------------------------------------------------------
|
|
AC_CHECK_SIZEOF(pid_t)
|
|
AC_CHECK_SIZEOF(uid_t)
|
|
AC_CHECK_SIZEOF(gid_t)
|
|
AC_CHECK_SIZEOF(time_t)
|
|
AC_CHECK_SIZEOF(dev_t)
|
|
AC_CHECK_SIZEOF(ino_t)
|
|
AC_CHECK_SIZEOF(rlim_t,,[
|
|
#include <sys/time.h>
|
|
#include <sys/resource.h>
|
|
])
|
|
|
|
GPERF_TEST="$(echo foo,bar | ${GPERF} -L ANSI-C)"
|
|
save_CFLAGS="$CFLAGS"
|
|
CFLAGS="$CFLAGS -Wno-error"
|
|
AC_COMPILE_IFELSE(
|
|
[AC_LANG_PROGRAM([
|
|
#include <string.h>
|
|
const char * in_word_set(const char *, size_t);
|
|
$GPERF_TEST]
|
|
)],
|
|
[GPERF_LEN_TYPE=size_t],
|
|
[AC_COMPILE_IFELSE(
|
|
[AC_LANG_PROGRAM([
|
|
#include <string.h>
|
|
const char * in_word_set(const char *, unsigned);
|
|
$GPERF_TEST]
|
|
)],
|
|
[GPERF_LEN_TYPE=unsigned],
|
|
[AC_MSG_ERROR([** unable to determine gperf len type])]
|
|
)]
|
|
)
|
|
CFLAGS="$save_CFLAGS"
|
|
|
|
AC_DEFINE_UNQUOTED([GPERF_LEN_TYPE], [$GPERF_LEN_TYPE], [gperf len type])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# we use python to build the man page index
|
|
have_python=no
|
|
AC_ARG_WITH([python],
|
|
[AS_HELP_STRING([--without-python], [disable building the man page index and systemd-python (default: test)])])
|
|
|
|
have_lxml=no
|
|
AS_IF([test "x$with_python" != "xno"], [
|
|
AM_PATH_PYTHON([3],, [:])
|
|
AS_IF([test "x$PYTHON" != "x:"], [
|
|
AC_MSG_CHECKING([for python lxml module])
|
|
AS_IF(["$PYTHON" -c 'import lxml' 2>/dev/null], [have_lxml=yes])
|
|
AC_MSG_RESULT([$have_lxml])
|
|
AS_IF([test "x$have_lxml" = "xyes"], [have_python=yes],
|
|
[AC_MSG_WARN([*** python support requires python-lxml module installed])])
|
|
])
|
|
])
|
|
AS_IF([test "$have_python" != "yes"], [
|
|
AS_IF([test "$with_python" = "yes"],
|
|
[AC_MSG_ERROR([*** python support requested but python support not found])])
|
|
AS_IF([test "$with_python" != "no"],
|
|
[AC_MSG_WARN([*** python support not found, some documentation cannot be built])])
|
|
])
|
|
AM_CONDITIONAL([HAVE_PYTHON], [test "x$have_python" = "xyes"])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
AC_CHECK_HEADERS([sys/capability.h], [], [AC_MSG_ERROR([*** POSIX caps headers not found])])
|
|
AC_CHECK_HEADERS([linux/memfd.h], [], [])
|
|
AC_CHECK_HEADERS([linux/vm_sockets.h], [], [], [#include <sys/socket.h>])
|
|
|
|
AC_CHECK_HEADERS([printf.h], [have_printf_h=yes], [have_printf_h=no])
|
|
AS_IF([test x$have_printf_h = xyes], [
|
|
AC_DEFINE(HAVE_PRINTF_H, 1, [Define if printf.h was found])
|
|
])
|
|
|
|
|
|
|
|
# unconditionally pull-in librt with old glibc versions
|
|
dnl AC_SEARCH_LIBS([clock_gettime], [rt], [], [])
|
|
dnl AC_SEARCH_LIBS([mq_unlink], [rt], [], [])
|
|
|
|
save_LIBS="$LIBS"
|
|
LIBS=
|
|
AC_SEARCH_LIBS([cap_init], [cap], [], [AC_MSG_ERROR([*** POSIX caps library not found])])
|
|
CAP_LIBS="$LIBS"
|
|
AC_SUBST(CAP_LIBS)
|
|
|
|
AC_CHECK_FUNCS([__secure_getenv secure_getenv])
|
|
AC_CHECK_DECLS([
|
|
memfd_create,
|
|
gettid,
|
|
pivot_root,
|
|
name_to_handle_at,
|
|
setns,
|
|
renameat2,
|
|
kcmp,
|
|
keyctl,
|
|
LO_FLAGS_PARTSCAN,
|
|
copy_file_range,
|
|
explicit_bzero],
|
|
[], [], [[
|
|
#include <sys/types.h>
|
|
#include <unistd.h>
|
|
#include <sys/mount.h>
|
|
#include <fcntl.h>
|
|
#include <sched.h>
|
|
#include <string.h>
|
|
#include <linux/loop.h>
|
|
]])
|
|
|
|
AC_CHECK_DECLS([getrandom],
|
|
[AC_DEFINE([USE_SYS_RANDOM_H], [], [sys/random.h is usable])],
|
|
[AC_CHECK_DECLS([getrandom], [], [], [[
|
|
#include <sys/random.h>
|
|
]])], [[
|
|
#include <linux/random.h>
|
|
]])
|
|
|
|
AC_CHECK_TYPES([char16_t, char32_t, key_serial_t],
|
|
[], [], [[
|
|
#include <uchar.h>
|
|
]])
|
|
|
|
AC_CHECK_DECLS([IFLA_INET6_ADDR_GEN_MODE,
|
|
IN6_ADDR_GEN_MODE_STABLE_PRIVACY,
|
|
IFLA_VRF_TABLE,
|
|
IFLA_MACVLAN_FLAGS,
|
|
IFLA_IPVLAN_MODE,
|
|
IFLA_VTI_REMOTE,
|
|
IFLA_PHYS_PORT_ID,
|
|
IFLA_BOND_AD_INFO,
|
|
IFLA_VLAN_PROTOCOL,
|
|
IFLA_VXLAN_GPE,
|
|
IFLA_GENEVE_LABEL,
|
|
IFLA_IPTUN_ENCAP_DPORT,
|
|
IFLA_GRE_ENCAP_DPORT,
|
|
IFLA_BRIDGE_VLAN_INFO,
|
|
IFLA_BRPORT_PROXYARP,
|
|
IFLA_BRPORT_LEARNING_SYNC,
|
|
IFLA_BR_VLAN_DEFAULT_PVID,
|
|
NDA_IFINDEX,
|
|
IFA_FLAGS],
|
|
[], [], [[
|
|
#include <inttypes.h>
|
|
#include <netinet/in.h>
|
|
#include <netinet/ether.h>
|
|
#include <linux/rtnetlink.h>
|
|
#include <net/if.h>
|
|
#include <linux/ip.h>
|
|
#include <linux/if_tunnel.h>
|
|
#include <linux/if_link.h>
|
|
#include <linux/if_bridge.h>
|
|
#include <linux/if_addr.h>
|
|
#include <linux/neighbour.h>
|
|
]])
|
|
|
|
# This makes sure pkg.m4 is available.
|
|
m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-config])
|
|
|
|
|
|
# ------------------------------------------------------------------------------
|
|
PKG_CHECK_MODULES(UDEV, [libudev])
|
|
dnl
|
|
AC_ARG_WITH([udevrulesdir],
|
|
AS_HELP_STRING([--with-udevrulesdir=DIR], [Directory for udev rules files]),
|
|
[],
|
|
[with_udevrulesdir=$($PKG_CONFIG --variable=udevdir udev)/rules.d])
|
|
AC_SUBST([udevrulesdir], [$with_udevrulesdir])
|
|
|
|
AC_ARG_WITH([udevbindir],
|
|
AS_HELP_STRING([--with-udevbindir=DIR], [Directory for udev binary files]),
|
|
[],
|
|
[with_udevbindir=$($PKG_CONFIG --variable=udevdir udev)])
|
|
AC_SUBST([udevbindir], [$with_udevbindir])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
have_glib=no
|
|
AC_ARG_ENABLE(glib, AS_HELP_STRING([--disable-glib], [disable usage of glib,gobject,gio in tests]))
|
|
AS_IF([test "x$enable_glib" != "xno"], [
|
|
PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.22.0 gobject-2.0 >= 2.22.0 gio-2.0],
|
|
[AC_DEFINE(HAVE_GLIB, 1, [Define if glib,gobject,gio are available]) have_glib=yes],
|
|
[have_glib=no])
|
|
AS_IF([test "x$have_glib" = "xno" -a "x$enable_glib" = "xyes"],
|
|
[AC_MSG_ERROR([*** glib support requested but libraries not found])])])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
have_utmp=yes
|
|
AC_ARG_ENABLE([utmp], AS_HELP_STRING([--disable-utmp], [disable utmp/wtmp log handling]),
|
|
AS_CASE("x${enableval}",
|
|
[xyes], [have_utmp=yes],
|
|
[xno], [have_utmp=no],
|
|
AC_MSG_ERROR(bad value ${enableval} for --enable-utmp)))
|
|
AS_IF([test "x$have_utmp" = "xyes"], [
|
|
AC_DEFINE(HAVE_UTMP, 1, [Define if utmp/wtmp support is enabled])
|
|
have_utmp=yes
|
|
M4_DEFINES="$M4_DEFINES -DHAVE_UTMP"],
|
|
[have_utmp=no])
|
|
AM_CONDITIONAL([HAVE_UTMP], [test "x$have_utmp" = "xyes"])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
have_coverage=no
|
|
AC_ARG_ENABLE(coverage, AS_HELP_STRING([--enable-coverage], [enable test coverage]))
|
|
if test "x$enable_coverage" = "xyes" ; then
|
|
AC_CHECK_PROG(lcov_found, [lcov], [yes], [no])
|
|
if test "x$lcov_found" = xno ; then
|
|
AC_MSG_ERROR([*** lcov support requested but the program was not found])
|
|
else
|
|
lcov_version_major="`lcov --version | cut -d ' ' -f 4 | cut -d '.' -f 1`"
|
|
lcov_version_minor="`lcov --version | cut -d ' ' -f 4 | cut -d '.' -f 2`"
|
|
if test "$lcov_version_major" -eq 1 -a "$lcov_version_minor" -lt 10; then
|
|
AC_MSG_ERROR([*** lcov version is too old. 1.10 required])
|
|
else
|
|
have_coverage=yes
|
|
CC_CHECK_FLAGS_APPEND([with_coverage_cflags], [CFLAGS], [\
|
|
-fprofile-arcs \
|
|
-ftest-coverage])
|
|
AC_SUBST([OUR_CFLAGS], "$with_cflags $with_coverage_cflags")
|
|
fi
|
|
fi
|
|
fi
|
|
AM_CONDITIONAL(ENABLE_COVERAGE, [test "$have_coverage" = "yes"])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
have_selinux=no
|
|
AC_ARG_ENABLE(selinux, AS_HELP_STRING([--disable-selinux], [disable optional SELINUX support]))
|
|
if test "x$enable_selinux" != "xno"; then
|
|
PKG_CHECK_MODULES([SELINUX], [libselinux >= 2.1.9],
|
|
[AC_DEFINE(HAVE_SELINUX, 1, [Define if SELinux is available])
|
|
have_selinux=yes
|
|
M4_DEFINES="$M4_DEFINES -DHAVE_SELINUX"],
|
|
[have_selinux=no])
|
|
if test "x$have_selinux" = xno -a "x$enable_selinux" = xyes; then
|
|
AC_MSG_ERROR([*** SELinux support requested but libraries not found])
|
|
fi
|
|
fi
|
|
AM_CONDITIONAL(HAVE_SELINUX, [test "$have_selinux" = "yes"])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
AC_ARG_WITH([kill-user-processes],
|
|
[AS_HELP_STRING([--without-kill-user-processes], [Set elogind's KillUserProcesses=no by default])])
|
|
AS_IF([test "$with_kill_user_processes" != "no"],
|
|
[kill_user_processes=true
|
|
KILL_USER_PROCESSES=yes],
|
|
[kill_user_processes=false
|
|
KILL_USER_PROCESSES=no])
|
|
AC_DEFINE_UNQUOTED(KILL_USER_PROCESSES, [$kill_user_processes], [Default KillUserProcesses setting])
|
|
AC_SUBST(KILL_USER_PROCESSES)
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# We do not really support systemd hybrid or unified mode, but set the default
|
|
# to 'legacy' here. That is currently the only cgroup mode supported by elogind.
|
|
#AC_ARG_WITH(default-hierarchy,
|
|
# AS_HELP_STRING([--with-default-hierarchy=MODE],
|
|
# [default cgroup hierarchy, defaults to "hybrid"]),
|
|
# [DEFAULT_HIERARCHY="$withval"],
|
|
# [DEFAULT_HIERARCHY="hybrid"])
|
|
DEFAULT_HIERARCHY=legacy
|
|
|
|
AS_CASE("$DEFAULT_HIERARCHY",
|
|
[legacy], [mode=CGROUP_UNIFIED_NONE],
|
|
[hybrid], [mode=CGROUP_UNIFIED_SYSTEMD],
|
|
[unified], [mode=CGROUP_UNIFIED_ALL],
|
|
AC_MSG_ERROR(Bad default hierarchy mode ${DEFAULT_HIERARCHY}))
|
|
AC_DEFINE_UNQUOTED(DEFAULT_HIERARCHY, [$mode], [Default cgroup hierarchy])
|
|
AC_DEFINE_UNQUOTED(DEFAULT_HIERARCHY_NAME, ["$DEFAULT_HIERARCHY"],
|
|
[Default cgroup hierarchy as string])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
AC_ARG_ENABLE([pam],
|
|
AS_HELP_STRING([--disable-pam],[disable optional PAM support]),
|
|
[case "${enableval}" in
|
|
yes) have_pam=yes ;;
|
|
no) have_pam=no ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for --disable-pam) ;;
|
|
esac],
|
|
[have_pam=auto])
|
|
|
|
if test "x${have_pam}" != xno ; then
|
|
AC_CHECK_HEADERS(
|
|
[security/pam_modules.h security/pam_modutil.h security/pam_ext.h],
|
|
[have_pam=yes],
|
|
[if test "x$have_pam" = xyes ; then
|
|
AC_MSG_ERROR([*** PAM headers not found.])
|
|
fi])
|
|
|
|
AC_CHECK_LIB(
|
|
[pam],
|
|
[pam_syslog],
|
|
[have_pam=yes],
|
|
[if test "x$have_pam" = xyes ; then
|
|
AC_MSG_ERROR([*** libpam not found.])
|
|
fi])
|
|
|
|
if test "x$have_pam" = xyes ; then
|
|
PAM_LIBS="-lpam -lpam_misc"
|
|
AC_DEFINE(HAVE_PAM, 1, [PAM available])
|
|
M4_DEFINES="$M4_DEFINES -DHAVE_PAM"
|
|
else
|
|
have_pam=no
|
|
fi
|
|
else
|
|
PAM_LIBS=
|
|
fi
|
|
AC_SUBST(PAM_LIBS)
|
|
AM_CONDITIONAL([HAVE_PAM], [test "x$have_pam" != xno])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
AC_ARG_ENABLE([acl],
|
|
AS_HELP_STRING([--disable-acl],[disable optional ACL support]),
|
|
[case "${enableval}" in
|
|
yes) have_acl=yes ;;
|
|
no) have_acl=no ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for --disable-acl) ;;
|
|
esac],
|
|
[have_acl=auto])
|
|
|
|
if test "x${have_acl}" != xno ; then
|
|
AC_CHECK_HEADERS(
|
|
[sys/acl.h acl/libacl.h],
|
|
[have_acl=yes],
|
|
[if test "x$have_acl" = xyes ; then
|
|
AC_MSG_ERROR([*** ACL headers not found.])
|
|
fi])
|
|
|
|
AC_CHECK_LIB(
|
|
[acl],
|
|
[acl_get_file],
|
|
[have_acl=yes],
|
|
[if test "x$have_acl" = xyes ; then
|
|
AC_MSG_ERROR([*** libacl not found.])
|
|
fi])
|
|
|
|
if test "x$have_acl" = xyes ; then
|
|
ACL_LIBS="-lacl"
|
|
AC_DEFINE(HAVE_ACL, 1, [ACL available])
|
|
M4_DEFINES="$M4_DEFINES -DHAVE_ACL"
|
|
else
|
|
have_acl=no
|
|
fi
|
|
else
|
|
ACL_LIBS=
|
|
fi
|
|
AC_SUBST(ACL_LIBS)
|
|
AM_CONDITIONAL([HAVE_ACL], [test "x$have_acl" != xno])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
AC_ARG_ENABLE([smack], AS_HELP_STRING([--disable-smack],[disable optional SMACK support]),
|
|
[case "${enableval}" in
|
|
yes) have_smack=yes ;;
|
|
no) have_smack=no ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for --disable-smack) ;;
|
|
esac],
|
|
[have_smack=auto])
|
|
|
|
if test "x${have_smack}" != xno; then
|
|
AC_DEFINE(HAVE_SMACK, 1, [Define if SMACK is available])
|
|
M4_DEFINES="$M4_DEFINES -DHAVE_SMACK"
|
|
have_smack=yes
|
|
fi
|
|
|
|
AM_CONDITIONAL([HAVE_SMACK], [test "x$have_smack" = "xyes"])
|
|
|
|
have_smack_run_label=no
|
|
AC_ARG_WITH(smack-run-label,
|
|
AS_HELP_STRING([--with-smack-run-label=STRING],
|
|
[run systemd --system itself with a specific SMACK label]),
|
|
[AC_DEFINE_UNQUOTED(SMACK_RUN_LABEL, ["$withval"], [Run systemd itself with SMACK label]) have_smack_run_label=yes],
|
|
[])
|
|
|
|
if test "x${have_smack_run_label}" = xyes; then
|
|
M4_DEFINES="$M4_DEFINES -DHAVE_SMACK_RUN_LABEL"
|
|
fi
|
|
|
|
AC_ARG_WITH(smack-default-process-label,
|
|
AS_HELP_STRING([--with-smack-default-process-label=STRING],
|
|
[default SMACK label for executed processes]),
|
|
[AC_DEFINE_UNQUOTED(SMACK_DEFAULT_PROCESS_LABEL, ["$withval"], [Default SMACK label for executed processes])],
|
|
[])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
AC_ARG_WITH(system-uid-max,
|
|
AS_HELP_STRING([--with-system-uid-max=UID]
|
|
[Maximum UID for system users]),
|
|
[SYSTEM_UID_MAX="$withval"],
|
|
[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`"])
|
|
|
|
AC_DEFINE_UNQUOTED(SYSTEM_UID_MAX, [$SYSTEM_UID_MAX], [Maximum System UID])
|
|
AC_SUBST(SYSTEM_UID_MAX)
|
|
|
|
# ------------------------------------------------------------------------------
|
|
AC_ARG_WITH(system-gid-max,
|
|
AS_HELP_STRING([--with-system-gid-max=GID]
|
|
[Maximum GID for system groups]),
|
|
[SYSTEM_GID_MAX="$withval"],
|
|
[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`"])
|
|
|
|
AC_DEFINE_UNQUOTED(SYSTEM_GID_MAX, [$SYSTEM_GID_MAX], [Maximum System GID])
|
|
AC_SUBST(SYSTEM_GID_MAX)
|
|
|
|
# ------------------------------------------------------------------------------
|
|
have_polkit=no
|
|
AC_ARG_ENABLE(polkit, AS_HELP_STRING([--disable-polkit], [disable PolicyKit support]))
|
|
if test "x$enable_polkit" != "xno"; then
|
|
AC_DEFINE(ENABLE_POLKIT, 1, [Define if PolicyKit support is to be enabled])
|
|
have_polkit=yes
|
|
|
|
# also enable support for *.pkla files on old polkit
|
|
PKG_CHECK_MODULES(POLKIT, [ polkit-gobject-1 < 0.106 ],
|
|
[polkit_pkla=yes],
|
|
[polkit_pkla=no])
|
|
fi
|
|
AM_CONDITIONAL(ENABLE_POLKIT, [test "x$have_polkit" = "xyes"])
|
|
AM_CONDITIONAL(ENABLE_POLKIT_PKLA, [test "x$polkit_pkla" = "xyes"])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
AC_CHECK_HEADERS_ONCE([valgrind/memcheck.h valgrind/valgrind.h])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
have_manpages=no
|
|
AC_ARG_ENABLE(manpages, AS_HELP_STRING([--disable-manpages], [disable manpages]))
|
|
AC_PATH_PROG([XSLTPROC], [xsltproc])
|
|
AS_IF([test "x$enable_manpages" != xno], [have_manpages=yes])
|
|
AM_CONDITIONAL(ENABLE_MANPAGES, [test "x$have_manpages" = "xyes"])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
AC_SUBST(M4_DEFINES)
|
|
|
|
AC_ARG_WITH([dbuspolicydir],
|
|
AS_HELP_STRING([--with-dbuspolicydir=DIR], [D-Bus policy directory]),
|
|
[],
|
|
[with_dbuspolicydir=${datadir}/dbus-1/system.d])
|
|
AX_NORMALIZE_PATH([with_dbuspolicydir])
|
|
|
|
AC_ARG_WITH([dbussystemservicedir],
|
|
AS_HELP_STRING([--with-dbussystemservicedir=DIR], [D-Bus system service directory]),
|
|
[],
|
|
[with_dbussystemservicedir=${datadir}/dbus-1/system-services])
|
|
AX_NORMALIZE_PATH([with_dbussystemservicedir])
|
|
|
|
AC_ARG_WITH([bashcompletiondir],
|
|
AS_HELP_STRING([--with-bashcompletiondir=DIR], [bash completions directory]),
|
|
[],
|
|
[AS_IF([$($PKG_CONFIG --exists bash-completion)], [
|
|
with_bashcompletiondir=$($PKG_CONFIG --variable=completionsdir bash-completion)
|
|
] , [
|
|
with_bashcompletiondir=${datadir}/bash-completion/completions
|
|
])])
|
|
AM_CONDITIONAL(ENABLE_BASH_COMPLETION, [test "$with_bashcompletiondir" != "no"])
|
|
AX_NORMALIZE_PATH([with_bashcompletiondir])
|
|
|
|
AC_ARG_WITH([zshcompletiondir],
|
|
AS_HELP_STRING([--with-zshcompletiondir=DIR], [zsh completions directory]),
|
|
[], [with_zshcompletiondir=${datadir}/zsh/site-functions])
|
|
AM_CONDITIONAL(ENABLE_ZSH_COMPLETION, [test "$with_zshcompletiondir" != "no"])
|
|
AX_NORMALIZE_PATH([with_zshcompletiondir])
|
|
|
|
AC_ARG_WITH([rootprefix],
|
|
AS_HELP_STRING([--with-rootprefix=DIR], [rootfs directory prefix for config files and kernel modules]),
|
|
[], [with_rootprefix=${ac_default_prefix}])
|
|
# --with-rootprefix= (empty) should default to "/" but AX_NORMALIZE_PATH
|
|
# defaults those to ".", solve that here for now until we can find a suitable
|
|
# fix for AX_NORMALIZE_PATH upstream at autoconf-archive.
|
|
# See: https://github.com/systemd/systemd/issues/54
|
|
if test "x${with_rootprefix}" = "x"; then
|
|
with_rootprefix="/"
|
|
fi
|
|
AX_NORMALIZE_PATH([with_rootprefix])
|
|
|
|
AC_ARG_WITH([rootlibdir],
|
|
AS_HELP_STRING([--with-rootlibdir=DIR], [root directory for libraries necessary for boot]),
|
|
[],
|
|
[with_rootlibdir=${libdir}])
|
|
AX_NORMALIZE_PATH([with_rootlibdir])
|
|
|
|
AC_ARG_WITH([rootlibexecdir],
|
|
AS_HELP_STRING([--with-rootlibexecdir=DIR], [Root directory for executables necessary for boot]),
|
|
[],
|
|
[with_rootlibexecdir=${with_rootprefix}/lib/elogind])
|
|
AX_NORMALIZE_PATH([with_rootlibexecdir])
|
|
|
|
AC_ARG_WITH([pamlibdir],
|
|
AS_HELP_STRING([--with-pamlibdir=DIR], [directory for PAM modules]),
|
|
[],
|
|
[with_pamlibdir=${with_rootlibdir}/security])
|
|
AX_NORMALIZE_PATH([with_pamlibdir])
|
|
|
|
AC_ARG_WITH([pamconfdir],
|
|
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],
|
|
AS_HELP_STRING([--enable-split-usr], [assume that /bin, /sbin aren\'t symlinks into /usr]),
|
|
[],
|
|
[AS_IF([test "x${ac_default_prefix}" != "x${with_rootprefix}"], [
|
|
enable_split_usr=yes
|
|
], [
|
|
enable_split_usr=no
|
|
])])
|
|
|
|
AS_IF([test "x${enable_split_usr}" = "xyes"], [
|
|
AC_DEFINE(HAVE_SPLIT_USR, 1, [Define if /bin, /sbin aren't symlinks into /usr])
|
|
])
|
|
AM_CONDITIONAL(ENABLE_SPLIT_USR, [test "x${enable_split_usr}" = "xyes"])
|
|
|
|
# work around intltool-update issues during 'make distcheck'
|
|
AS_IF([test "x$0" != "x./configure"], [
|
|
AC_SUBST([INTLTOOL_UPDATE], [/usr/bin/env true])
|
|
])
|
|
|
|
AC_ARG_ENABLE(tests,
|
|
[AC_HELP_STRING([--disable-tests], [disable tests, or enable extra tests with =unsafe])],
|
|
enable_tests=$enableval, enable_tests=yes)
|
|
AM_CONDITIONAL(ENABLE_TESTS, [test x$enable_tests = xyes -o x$enable_tests = xunsafe])
|
|
AM_CONDITIONAL(ENABLE_UNSAFE_TESTS, [test x$enable_tests = xunsafe])
|
|
|
|
AC_ARG_ENABLE(debug,
|
|
[AC_HELP_STRING([--enable-debug@<:@=LIST@:>@], [enable extra debugging (elogind,hashmap,mmap-cache)])],
|
|
[if test "x$enableval" = "xyes"; then
|
|
enableval="elogind,hashmap,mmap-cache"
|
|
fi
|
|
saved_ifs="$IFS"
|
|
IFS="$IFS$PATH_SEPARATOR,"
|
|
for name in $enableval; do
|
|
case $name in
|
|
elogind)
|
|
enable_debug_elogind=yes
|
|
;;
|
|
hashmap)
|
|
enable_debug_hashmap=yes
|
|
;;
|
|
mmap-cache)
|
|
enable_debug_mmap_cache=yes
|
|
;;
|
|
esac
|
|
done
|
|
IFS="$saved_ifs"],[])
|
|
|
|
enable_debug=""
|
|
AS_IF([test x$enable_debug_elogind = xyes], [
|
|
AC_DEFINE(ENABLE_DEBUG_ELOGIND, 1, [Define if elogind debugging is to be enabled])
|
|
enable_debug="elogind $enable_debug"
|
|
])
|
|
AS_IF([test x$enable_debug_hashmap = xyes], [
|
|
AC_DEFINE(ENABLE_DEBUG_HASHMAP, 1, [Define if hashmap debugging is to be enabled])
|
|
enable_debug="hashmap $enable_debug"
|
|
])
|
|
AS_IF([test x$enable_debug_mmap_cache = xyes], [
|
|
AC_DEFINE(ENABLE_DEBUG_MMAP_CACHE, 1, [Define if mmap cache debugging is to be enabled])
|
|
enable_debug="mmap-cache $enable_debug"
|
|
])
|
|
test -z "$enable_debug" && enable_debug="none"
|
|
|
|
AC_SUBST([dbuspolicydir], [$with_dbuspolicydir])
|
|
AC_SUBST([dbussystemservicedir], [$with_dbussystemservicedir])
|
|
AC_SUBST([bashcompletiondir], [$with_bashcompletiondir])
|
|
AC_SUBST([zshcompletiondir], [$with_zshcompletiondir])
|
|
AC_SUBST([pamlibdir], [$with_pamlibdir])
|
|
AC_SUBST([pamconfdir], [$with_pamconfdir])
|
|
AC_SUBST([rootprefix], [$with_rootprefix])
|
|
AC_SUBST([rootlibdir], [$with_rootlibdir])
|
|
AC_SUBST([rootlibexecdir], [$with_rootlibexecdir])
|
|
AC_SUBST([cgroup_controller], [$with_cgroupctrl])
|
|
|
|
AC_CONFIG_FILES([
|
|
Makefile
|
|
po/Makefile.in
|
|
])
|
|
|
|
AC_OUTPUT
|
|
AC_MSG_RESULT([
|
|
$PACKAGE_NAME $PACKAGE_VERSION
|
|
|
|
PAM: . . . . . . . . . . . . . . . ${have_pam}
|
|
SELinux: . . . . . . . . . . . . . ${have_selinux}
|
|
SMACK: . . . . . . . . . . . . . . ${have_smack}
|
|
ACL: . . . . . . . . . . . . . . . ${have_acl}
|
|
default cgroup hierarchy: . . . . ${DEFAULT_HIERARCHY}
|
|
default KillUserProcesses setting: ${KILL_USER_PROCESSES}
|
|
polkit: . . . . . . . . . . . . . ${have_polkit} (legacy pkla support: ${polkit_pkla})
|
|
glib: . . . . . . . . . . . . . . ${have_glib}
|
|
Python: . . . . . . . . . . . . . ${have_python}
|
|
man pages: . . . . . . . . . . . . ${have_manpages}
|
|
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}
|
|
|
|
prefix: . . . . . . . . . . . . . ${prefix}
|
|
rootprefix: . . . . . . . . . . . ${with_rootprefix}
|
|
sysconf dir: . . . . . . . . . . . ${sysconfdir}
|
|
datarootdir: . . . . . . . . . . . ${datarootdir}
|
|
includedir: . . . . . . . . . . . ${includedir}
|
|
lib dir: . . . . . . . . . . . . . ${libdir}
|
|
rootlib dir: . . . . . . . . . . . ${with_rootlibdir}
|
|
rootlibexec dir: . . . . . . . . . ${with_rootlibexecdir}
|
|
PAM modules dir: . . . . . . . . . ${with_pamlibdir}
|
|
PAM configuration dir: . . . . . . ${with_pamconfdir}
|
|
D-Bus policy dir: . . . . . . . . ${with_dbuspolicydir}
|
|
D-Bus system dir: . . . . . . . . ${with_dbussystemservicedir}
|
|
bash completions dir: . . . . . . ${with_bashcompletiondir}
|
|
zsh completions dir: . . . . . . . ${with_zshcompletiondir}
|
|
maximum system UID: . . . . . . . ${SYSTEM_UID_MAX}
|
|
maximum system GID: . . . . . . . ${SYSTEM_GID_MAX}
|
|
|
|
CFLAGS: . . . . . . . . . . . . . ${OUR_CFLAGS} ${CFLAGS}
|
|
CPPFLAGS: . . . . . . . . . . . . ${OUR_CPPFLAGS} ${CPPFLAGS}
|
|
LDFLAGS: . . . . . . . . . . . . . ${OUR_LDFLAGS} ${LDFLAGS}
|
|
])
|
|
|