blob: 1651cdbce0431ba422ba88e4b7675bdde856d654 [file] [log] [blame]
##*****************************************************************************
# AUTHOR:
# Tim Wickberg <tim@schedmd.com>
#
# SYNOPSIS:
# X_AC_CGROUP
#
# DESCRIPTION:
# Test if we should build cgroup plugins.
#
##*****************************************************************************
AC_DEFUN([X_AC_CGROUP],
[
AC_ARG_ENABLE(
[cgroupv2],
AS_HELP_STRING([--enable-cgroupv2],
[enable cgroupv2 support [default=auto]]),
[ case "$enableval" in
yes) x_ac_cgroupv2=yes ;;
no) x_ac_cgroupv2=no ;;
*) AC_MSG_ERROR([bad value "$enableval" for --enable-cgroupv2])
esac
])
case ${host_os} in
darwin* | freebsd* | netbsd* )
with_cgroup=no
;;
*)
with_cgroup=yes
;;
esac
AM_CONDITIONAL(LINUX_BUILD, test x$with_cgroup = xyes)
AM_CONDITIONAL(WITH_CGROUP, test x$with_cgroup = xyes)
if test x$with_cgroup = xyes; then
AC_DEFINE(WITH_CGROUP, 1, [Building with Linux cgroup support])
else
if test x$x_ac_cgroupv2 = xyes; then
AC_MSG_ERROR([Cgroupv2 not supported in this system])
fi
x_ac_cgroupv2=no
fi
])
AC_DEFUN([X_AC_BPF], [
_x_ac_bpf_dirs="/usr"
AC_ARG_WITH(
[bpf],
AS_HELP_STRING(--with-bpf=PATH,Specify path to bpf header),
[AS_IF([test "x$with_bpf" != xno && test "x$with_bpf" != xyes],
[_x_ac_bpf_dirs="$with_bpf"])])
if [test "x$with_bpf" = xno] || [test "x$x_ac_cgroupv2" = xno]; then
if [test "x$x_ac_cgroupv2" = "xyes"]; then
AC_MSG_ERROR([support for bpf disabled])
else
AC_MSG_NOTICE([support for bpf disabled])
fi
else
AC_CACHE_CHECK(
[for bpf installation],
[x_ac_cv_bpf_dir],
[
for d in $_x_ac_bpf_dirs; do
test -d "$d" || continue
test -d "$d/include" || continue
test -d "$d/include/linux" || continue
test -f "$d/include/linux/bpf.h" || continue
AS_VAR_SET(x_ac_cv_bpf_dir,$d)
test -n "$x_ac_cv_bpf_dir" && break
done
])
if test -z "$x_ac_cv_bpf_dir"; then
if [test -z "$with_bpf"] && [test "x$x_ac_cgroupv2" != "xyes"]; then
AC_MSG_WARN([unable to locate bpf header])
else
AC_MSG_ERROR([unable to locate bpf header])
fi
else
#Check for bpf defines existence added in kernel 5.7
AC_LINK_IFELSE(
[AC_LANG_PROGRAM([[#include <linux/bpf.h>]],
[[int def_test;
def_test = BPF_DEVCG_DEV_BLOCK;
def_test = BPF_DEVCG_DEV_CHAR;
def_test = BPF_F_ALLOW_OVERRIDE;
def_test = BPF_OBJ_NAME_LEN;
def_test = BPF_PROG_TYPE_CGROUP_DEVICE;
def_test = BPF_PROG_ATTACH;]])],
[ac_bpf_define_presence=yes],
[ac_bpf_define_presence=no])
if test "x$ac_bpf_define_presence" = "xyes"; then
AC_DEFINE([HAVE_BPF], [1], [Define if you are compiling with bpf.])
BPF_CPPFLAGS="-I$x_ac_cv_bpf_dir/include"
else
if test "x$x_ac_cgroupv2" = "xyes"; then
AC_MSG_ERROR([unable to link against a bpf.h from kernel-headers, version >= 5.7 required for cgroup/v2])
else
AC_MSG_WARN([unable to link against a bpf.h from kernel-headers, version >= 5.7 required for cgroup/v2])
fi
BPF_CPPFLAGS=""
fi
fi
AC_SUBST(BPF_CPPFLAGS)
fi
AM_CONDITIONAL(WITH_BPF, test -n "$x_ac_cv_bpf_dir" && test "$ac_bpf_define_presence" = "yes")
])
AC_DEFUN([X_AC_DBUS],
[
if test "x$x_ac_cgroupv2" != "xno"; then
PKG_CHECK_MODULES([dbus], [dbus-1 >= 1.11.16],
[x_ac_have_dbus="yes"],
[x_ac_have_dbus="no"])
AM_CONDITIONAL(WITH_DBUS, test "x$x_ac_have_dbus" = "xyes")
if test "x$x_ac_have_dbus" = "xno"; then
if test "x$x_ac_cgroupv2" = "xdefault"; then
AC_MSG_WARN([unable to locate dbus-1 development headers >= 1.11.16])
elif test "x$x_ac_cgroupv2" = "xyes"; then
AC_MSG_ERROR([unable to locate dbus-1 development headers >= 1.11.16])
fi
fi
else
AC_MSG_NOTICE([Skipping dbus check as cgroupv2 is disabled])
x_ac_have_dbus="no"
AM_CONDITIONAL(WITH_DBUS, test "x$x_ac_have_dbus" = "xyes")
fi
])