github.com/Lephar/snapd@v0.0.0-20210825215435-c7fba9cef4d2/cmd/configure.ac (about) 1 AC_PREREQ([2.69]) 2 AC_INIT([snap-confine], m4_esyscmd_s([cat VERSION]), [snapcraft@lists.ubuntu.com]) 3 AC_CONFIG_SRCDIR([snap-confine/snap-confine.c]) 4 AC_CONFIG_HEADERS([config.h]) 5 AC_USE_SYSTEM_EXTENSIONS 6 AM_INIT_AUTOMAKE([foreign subdir-objects]) 7 AM_MAINTAINER_MODE([enable]) 8 9 # Checks for programs. 10 AC_PROG_CC_C99 11 AC_PROG_CPP 12 AC_PROG_INSTALL 13 AC_PROG_MAKE_SET 14 AC_PROG_RANLIB 15 16 AC_LANG([C]) 17 # Checks for libraries. 18 19 # check for large file support 20 AC_SYS_LARGEFILE 21 22 # Checks for header files. 23 AC_CHECK_HEADERS([fcntl.h limits.h stdlib.h string.h sys/mount.h unistd.h]) 24 AC_CHECK_HEADERS([sys/quota.h], [], [AC_MSG_ERROR(sys/quota.h unavailable)]) 25 AC_CHECK_HEADERS([xfs/xqm.h], [], [AC_MSG_ERROR(xfs/xqm.h unavailable)], 26 [[#define _GNU_SOURCE 27 #define _FILE_OFFSET_BITS 64 28 #include <xfs/xqm.h> 29 ]]) 30 31 # Checks for typedefs, structures, and compiler characteristics. 32 AC_CHECK_HEADER_STDBOOL 33 AC_TYPE_UID_T 34 AC_TYPE_MODE_T 35 AC_TYPE_PID_T 36 AC_TYPE_SIZE_T 37 38 # Checks for library functions. 39 AC_FUNC_CHOWN 40 AC_FUNC_ERROR_AT_LINE 41 AC_FUNC_FORK 42 AC_FUNC_STRNLEN 43 AC_CHECK_FUNCS([mkdir regcomp setenv strdup strerror secure_getenv]) 44 45 AC_ARG_WITH([unit-tests], 46 AC_HELP_STRING([--without-unit-tests], [do not build unit test programs]), 47 [case "${withval}" in 48 yes) with_unit_tests=yes ;; 49 no) with_unit_tests=no ;; 50 *) AC_MSG_ERROR([bad value ${withval} for --without-unit-tests]) 51 esac], [with_unit_tests=yes]) 52 AM_CONDITIONAL([WITH_UNIT_TESTS], [test "x$with_unit_tests" = "xyes"]) 53 54 # Allow to build without apparmor support by calling: 55 # ./configure --disable-apparmor 56 # This makes it possible to run snaps in devmode on almost any host, 57 # regardless of the kernel version. 58 AC_ARG_ENABLE([apparmor], 59 AS_HELP_STRING([--disable-apparmor], [Disable apparmor support]), 60 [case "${enableval}" in 61 yes) enable_apparmor=yes ;; 62 no) enable_apparmor=no ;; 63 *) AC_MSG_ERROR([bad value ${enableval} for --disable-apparmor]) 64 esac], [enable_apparmor=yes]) 65 AM_CONDITIONAL([APPARMOR], [test "x$enable_apparmor" = "xyes"]) 66 67 # Allow to build with SELinux support by calling: 68 # ./configure --enable-selinux 69 AC_ARG_ENABLE([selinux], 70 AS_HELP_STRING([--enable-selinux], [Enable SELinux support]), 71 [case "${enableval}" in 72 yes) enable_selinux=yes ;; 73 no) enable_selinux=no ;; 74 *) AC_MSG_ERROR([bad value ${enableval} for --enable-selinux]) 75 esac], [enable_selinux=no]) 76 AM_CONDITIONAL([SELINUX], [test "x$enable_selinux" = "xyes"]) 77 78 # Enable older tests only when confinement is enabled and we're building for PC 79 # The tests are of smaller value as we port more and more tests to spread. 80 AM_CONDITIONAL([CONFINEMENT_TESTS], [test "x$enable_apparmor" = "xyes" && ((test "x$host_cpu" = "xx86_64" && test "x$build_cpu" = "xx86_64") || (test "x$host_cpu" = "xi686" && test "x$build_cpu" = "xi686"))]) 81 82 # Check for glib that we use for unit testing 83 AS_IF([test "x$with_unit_tests" = "xyes"], [ 84 PKG_CHECK_MODULES([GLIB], [glib-2.0]) 85 ]) 86 87 # Check if apparmor userspace library is available. 88 AS_IF([test "x$enable_apparmor" = "xyes"], [ 89 PKG_CHECK_MODULES([APPARMOR], [libapparmor], [ 90 AC_DEFINE([HAVE_APPARMOR], [1], [Build with apparmor support])]) 91 ], [ 92 AC_MSG_WARN([ 93 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 94 X X 95 X Apparmor is disabled, all snaps will run in devmode X 96 X X 97 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX]) 98 ]) 99 100 # Check if SELinux userspace library is available. 101 AS_IF([test "x$enable_selinux" = "xyes"], [ 102 PKG_CHECK_MODULES([SELINUX], [libselinux], [ 103 AC_DEFINE([HAVE_SELINUX], [1], [Build with SELinux support])]) 104 ]) 105 106 # Check if udev and libudev are available. 107 # Those are now used unconditionally even if apparmor is disabled. 108 PKG_CHECK_MODULES([LIBUDEV], [libudev]) 109 PKG_CHECK_MODULES([UDEV], [udev]) 110 111 # Check if libcap is available. 112 # PKG_CHECK_MODULES([LIBCAP], [libcap]) 113 114 # Enable special support for hosts with proprietary nvidia drivers on Ubuntu. 115 AC_ARG_ENABLE([nvidia-multiarch], 116 AS_HELP_STRING([--enable-nvidia-multiarch], [Support for proprietary nvidia drivers (Ubuntu/Debian)]), 117 [case "${enableval}" in 118 yes) enable_nvidia_multiarch=yes ;; 119 no) enable_nvidia_multiarch=no ;; 120 *) AC_MSG_ERROR([bad value ${enableval} for --enable-nvidia-multiarch]) 121 esac], [enable_nvidia_multiarch=no]) 122 AM_CONDITIONAL([NVIDIA_MULTIARCH], [test "x$enable_nvidia_multiarch" = "xyes"]) 123 124 AS_IF([test "x$enable_nvidia_multiarch" = "xyes"], [ 125 AC_DEFINE([NVIDIA_MULTIARCH], [1], 126 [Support for proprietary nvidia drivers (Ubuntu/Debian)])]) 127 128 # Enable special support for hosts with proprietary nvidia drivers on Arch. 129 AC_ARG_ENABLE([nvidia-biarch], 130 AS_HELP_STRING([--enable-nvidia-biarch], [Support for proprietary nvidia drivers (bi-arch distributions)]), 131 [case "${enableval}" in 132 yes) enable_nvidia_biarch=yes ;; 133 no) enable_nvidia_biarch=no ;; 134 *) AC_MSG_ERROR([bad value ${enableval} for --enable-nvidia-biarch]) 135 esac], [enable_nvidia_biarch=no]) 136 AM_CONDITIONAL([NVIDIA_BIARCH], [test "x$enable_nvidia_biarch" = "xyes"]) 137 138 AS_IF([test "x$enable_nvidia_biarch" = "xyes"], [ 139 AC_DEFINE([NVIDIA_BIARCH], [1], 140 [Support for proprietary nvidia drivers (bi-arch distributions)])]) 141 142 AC_ARG_ENABLE([merged-usr], 143 AS_HELP_STRING([--enable-merged-usr], [Enable support for merged /usr directory]), 144 [case "${enableval}" in 145 yes) enable_merged_usr=yes ;; 146 no) enable_merged_usr=no ;; 147 *) AC_MSG_ERROR([bad value ${enableval} for --enable-merged-usr]) 148 esac], [enable_merged_usr=no]) 149 AM_CONDITIONAL([MERGED_USR], [test "x$enable_merged_usr" = "xyes"]) 150 151 AS_IF([test "x$enable_merged_usr" = "xyes"], [ 152 AC_DEFINE([MERGED_USR], [1], 153 [Support for merged /usr directory])]) 154 155 SNAP_MOUNT_DIR="/snap" 156 AC_ARG_WITH([snap-mount-dir], 157 AS_HELP_STRING([--with-snap-mount-dir=DIR], [Use an alternate snap mount directory]), 158 [SNAP_MOUNT_DIR="$withval"]) 159 AC_SUBST(SNAP_MOUNT_DIR) 160 AC_DEFINE_UNQUOTED([SNAP_MOUNT_DIR], "${SNAP_MOUNT_DIR}", [Location of the snap mount points]) 161 162 SNAP_MOUNT_DIR_SYSTEMD_UNIT="$(systemd-escape -p "$SNAP_MOUNT_DIR")" 163 AC_SUBST([SNAP_MOUNT_DIR_SYSTEMD_UNIT]) 164 AC_DEFINE_UNQUOTED([SNAP_MOUNT_DIR_SYSTEMD_UNIT], "${SNAP_MOUNT_DIR_SYSTEMD_UNIT}", [Systemd unit name for snap mount points location]) 165 166 AC_PATH_PROGS([HAVE_RST2MAN],[rst2man rst2man.py]) 167 AS_IF([test "x$HAVE_RST2MAN" = "x"], [AC_MSG_WARN(["cannot find the rst2man tool, install python-docutils or similar"])]) 168 AM_CONDITIONAL([HAVE_RST2MAN], [test "x${HAVE_RST2MAN}" != "x"]) 169 170 AC_PATH_PROG([HAVE_VALGRIND],[valgrind]) 171 AM_CONDITIONAL([HAVE_VALGRIND], [test "x${HAVE_VALGRIND}" != "x"]) 172 AS_IF([test "x$HAVE_VALGRIND" = "x"], [AC_MSG_WARN(["cannot find the valgrind tool, will not run unit tests through valgrind"])]) 173 174 # Allow linking selected libraries statically for reexec. 175 AC_ARG_ENABLE([static-libcap], 176 AS_HELP_STRING([--enable-static-libcap], [Link libcap statically]), 177 [case "${enableval}" in 178 yes) enable_static_libcap=yes ;; 179 no) enable_static_libcap=no ;; 180 *) AC_MSG_ERROR([bad value ${enableval} for --enable-static-libcap]) 181 esac], [enable_static_libcap=no]) 182 AM_CONDITIONAL([STATIC_LIBCAP], [test "x$enable_static_libcap" = "xyes"]) 183 184 AC_ARG_ENABLE([static-libapparmor], 185 AS_HELP_STRING([--enable-static-libapparmor], [Link libapparmor statically]), 186 [case "${enableval}" in 187 yes) enable_static_libapparmor=yes ;; 188 no) enable_static_libapparmor=no ;; 189 *) AC_MSG_ERROR([bad value ${enableval} for --enable-static-libapparmor]) 190 esac], [enable_static_libapparmor=no]) 191 AM_CONDITIONAL([STATIC_LIBAPPARMOR], [test "x$enable_static_libapparmor" = "xyes"]) 192 193 AC_ARG_ENABLE([static-libselinux], 194 AS_HELP_STRING([--enable-static-libselinux], [Link libselinux statically]), 195 [case "${enableval}" in 196 yes) enable_static_libselinux=yes ;; 197 no) enable_static_libselinux=no ;; 198 *) AC_MSG_ERROR([bad value ${enableval} for --enable-static-libselinux]) 199 esac], [enable_static_libselinux=no]) 200 AM_CONDITIONAL([STATIC_LIBSELINUX], [test "x$enable_static_libselinux" = "xyes"]) 201 202 LIB32_DIR="${prefix}/lib32" 203 AC_ARG_WITH([32bit-libdir], 204 AS_HELP_STRING([--with-32bit-libdir=DIR], [Use an alternate lib32 directory]), 205 [LIB32_DIR="$withval"]) 206 AC_SUBST(LIB32_DIR) 207 AC_DEFINE_UNQUOTED([LIB32_DIR], "${LIB32_DIR}", [Location of the lib32 directory]) 208 209 AC_ARG_WITH([host-arch-triplet], 210 AS_HELP_STRING([--with-host-arch-triplet=triplet], [Arch triplet for host libraries]), 211 [HOST_ARCH_TRIPLET="$withval"]) 212 AC_SUBST(HOST_ARCH_TRIPLET) 213 AC_DEFINE_UNQUOTED([HOST_ARCH_TRIPLET], "${HOST_ARCH_TRIPLET}", [Arch triplet for host libraries]) 214 215 AC_ARG_WITH([host-arch-32bit-triplet], 216 AS_HELP_STRING([--with-host-arch-32bit-triplet=triplet], [Arch triplet for 32bit libraries]), 217 [HOST_ARCH32_TRIPLET="$withval"]) 218 AC_SUBST(HOST_ARCH32_TRIPLET) 219 AC_DEFINE_UNQUOTED([HOST_ARCH32_TRIPLET], "${HOST_ARCH32_TRIPLET}", [Arch triplet for 32bit libraries]) 220 221 SYSTEMD_SYSTEM_GENERATOR_DIR="$($PKG_CONFIG --variable=systemdsystemgeneratordir systemd)" 222 AS_IF([test "x$SYSTEMD_SYSTEM_GENERATOR_DIR" = "x"], [SYSTEMD_SYSTEM_GENERATOR_DIR=/lib/systemd/system-generators]) 223 AC_SUBST(SYSTEMD_SYSTEM_GENERATOR_DIR) 224 225 # FIXME: get this via something like pkgconf once it is defined there 226 SYSTEMD_SYSTEM_ENV_GENERATOR_DIR="${prefix}/lib/systemd/system-environment-generators" 227 AC_SUBST(SYSTEMD_SYSTEM_ENV_GENERATOR_DIR) 228 229 AC_MSG_CHECKING([whether host BPF headers are usable]) 230 AC_COMPILE_IFELSE([ 231 #include <linux/bpf.h> 232 void foo(enum bpf_attach_type type) {} 233 void bar() { struct bpf_cgroup_dev_ctx ctx = {0}; } 234 ], [host_bpf_headers_usable=yes], [host_bpf_headers_usable=no]) 235 if test "x$host_bpf_headers_usable" = "xyes"; then 236 AC_MSG_RESULT([yes]) 237 else 238 AC_MSG_RESULT([no, using vendored BPF headers]) 239 fi 240 AM_CONDITIONAL([USE_INTERNAL_BPF_HEADERS], [test "x$host_bpf_headers_usable" = "xno"]) 241 242 AC_CONFIG_FILES([Makefile]) 243 AC_OUTPUT