2 # Process this file with autoconf to produce a configure script.
4 AC_INIT([lxc], [0.9.0.alpha2])
6 AC_CONFIG_SRCDIR([configure.ac])
7 AC_CONFIG_AUX_DIR([config])
8 AM_CONFIG_HEADER([src/config.h])
9 AM_INIT_AUTOMAKE([-Wall -Werror -Wno-portability])
14 # Detect the distribution. This is used for the default configuration and
15 # for some distro-specific build options.
16 AC_MSG_CHECKING([host distribution])
17 AC_ARG_WITH(distro, AS_HELP_STRING([--with-distro=DISTRO], [Specify the Linux distribution to target: One of redhat, oracle, fedora, suse, gentoo, debian, arch, slackware, paldo, mandriva or pardus.]))
18 if test "z$with_distro" = "z"; then
19 with_distro=`lsb_release -is`
21 if test "z$with_distro" = "z"; then
22 AC_CHECK_FILE(/etc/redhat-release,with_distro="redhat")
23 AC_CHECK_FILE(/etc/oracle-release,with_distro="oracle")
24 AC_CHECK_FILE(/etc/fedora-release,with_distro="fedora")
25 AC_CHECK_FILE(/etc/SuSE-release,with_distro="suse")
26 AC_CHECK_FILE(/etc/gentoo-release,with_distro="gentoo")
27 AC_CHECK_FILE(/etc/debian_version,with_distro="debian")
28 AC_CHECK_FILE(/etc/arch-release,with_distro="arch")
29 AC_CHECK_FILE(/etc/slackware-version,with_distro="slackware")
30 AC_CHECK_FILE(/etc/frugalware-release,with_distro="frugalware")
31 AC_CHECK_FILE(/etc/mandrakelinux-release, with_distro="mandriva")
32 AC_CHECK_FILE(/etc/mandriva-release,with_distro="mandriva")
33 AC_CHECK_FILE(/etc/pardus-release,with_distro="pardus")
35 with_distro=`echo ${with_distro} | tr '[[:upper:]]' '[[:lower:]]'`
37 if test "z$with_distro" = "z"; then
42 conffile=lxc.conf.ubuntu
44 redhat|fedora|oracle|oracleserver)
45 conffile=lxc.conf.libvirt
48 echo -n "Linux distribution network config unknown, defaulting to lxc.network.type = empty"
49 conffile=lxc.conf.unknown
52 AC_MSG_RESULT([$with_distro])
53 AM_CONDITIONAL([HAVE_DEBIAN], [test x"$with_distro" = "xdebian" -o x"$with_distro" = "xubuntu"])
55 # Allow disabling rpath
56 AC_ARG_ENABLE([rpath],
57 [AC_HELP_STRING([--disable-rpath], [do not set rpath in executables])],
58 [], [enable_rpath=yes])
59 AM_CONDITIONAL([ENABLE_RPATH], [test "x$enable_rpath" = "xyes"])
61 # Documentation (manpages)
63 [AC_HELP_STRING([--enable-doc], [make mans (require docbook2x-man installed) [default=auto]])],
64 [], [enable_doc=auto])
66 if test "x$enable_doc" = "xyes" -o "x$enable_doc" = "xauto"; then
69 AC_MSG_CHECKING(for docbook2x-man)
70 for name in docbook2x-man db2x_docbook2man; do
71 if "$name" --help >/dev/null 2>&1; then
77 if test -n "${db2xman}"; then
78 AC_MSG_RESULT([${db2xman}])
81 if test "x$enable_doc" = "xyes"; then
82 AC_MSG_ERROR([docbook2x-man required by man request, but not found])
88 AM_CONDITIONAL([ENABLE_DOCBOOK], [test "x$db2xman" != "x"])
91 AC_ARG_ENABLE([apparmor],
92 [AC_HELP_STRING([--enable-apparmor], [enable apparmor])],
93 [], [enable_apparmor=check])
95 if test "$enable_apparmor" = "check" ; then
96 AC_CHECK_LIB([apparmor],[aa_change_profile],[enable_apparmor=yes], [enable_apparmor=no])
98 AM_CONDITIONAL([ENABLE_APPARMOR], [test "x$enable_apparmor" = "xyes"])
100 AM_COND_IF([ENABLE_APPARMOR],
101 [AC_CHECK_HEADER([sys/apparmor.h],[],[AC_MSG_ERROR([You must install the AppArmor development package in order to compile lxc])])
102 AC_CHECK_LIB([apparmor], [aa_change_profile],[],[AC_MSG_ERROR([You must install the AppArmor development package in order to compile lxc])])
103 AC_SUBST([APPARMOR_LIBS], [-lapparmor])])
105 # Seccomp syscall filter
106 AC_ARG_ENABLE([seccomp],
107 [AC_HELP_STRING([--enable-seccomp], [enable seccomp])],
108 [], [enable_seccomp=check])
110 if test "$enable_seccomp" = "check" ; then
111 AC_CHECK_LIB([seccomp],[seccomp_init],[enable_seccomp=yes],[enable_seccomp=no])
113 AM_CONDITIONAL([ENABLE_SECCOMP], [test "x$enable_seccomp" = "xyes"])
115 AM_COND_IF([ENABLE_SECCOMP],
116 [AC_CHECK_HEADER([seccomp.h],[],[AC_MSG_ERROR([You must install the seccomp development package in order to compile lxc])])
117 AC_CHECK_LIB([seccomp], [seccomp_init],[],[AC_MSG_ERROR([You must install the seccomp development package in order to compile lxc])])
118 AC_SUBST([SECCOMP_LIBS], [-lseccomp])])
120 # HAVE_SCMP_FILTER_CTX=1 will tell us we have libseccomp api >= 1.0.0
121 AC_CHECK_TYPES([scmp_filter_ctx], [], [], [#include <seccomp.h>])
123 # Configuration examples
124 AC_ARG_ENABLE([examples],
125 [AC_HELP_STRING([--disable-examples], [do not install configuration examples])],
126 [], [enable_examples=yes])
127 AM_CONDITIONAL([ENABLE_EXAMPLES], [test "x$enable_examples" = "xyes"])
129 # Python3 module and scripts
130 AC_ARG_ENABLE([python],
131 [AC_HELP_STRING([--enable-python], [enable python binding])],
132 [enable_python=yes], [enable_python=no])
133 AM_CONDITIONAL([ENABLE_PYTHON], [test "x$enable_python" = "xyes"])
135 AM_COND_IF([ENABLE_PYTHON],
136 [AM_PATH_PYTHON([3.2], [], [AC_MSG_ERROR([You must install python3])])
137 PKG_CHECK_MODULES([PYTHONDEV], [python3 >= 3.2],[],[AC_MSG_ERROR([You must install python3-dev])])
138 AC_DEFINE_UNQUOTED([ENABLE_PYTHON], 1, [Python3 is available])])
140 # Optional test binaries
141 AC_ARG_ENABLE([tests],
142 [AC_HELP_STRING([--enable-tests], [build test/example binaries])],
143 [enable_tests=yes], [enable_tests=no])
144 AM_CONDITIONAL([ENABLE_TESTS], [test "x$enable_tests" = "xyes"])
146 # LXC container path, where the containers are actually stored
147 AC_ARG_WITH([config-path],
149 [--with-config-path=dir],
150 [lxc configuration repository path]
151 )], [], [with_config_path=['${localstatedir}/lib/lxc']])
153 # Rootfs path, where the container mount structure is assembled
154 AC_ARG_WITH([rootfs-path],
156 [--with-rootfs-path=dir],
157 [lxc rootfs mount point]
158 )], [], [with_rootfs_path=['${libdir}/lxc/rootfs']])
160 # Expand some useful variables
161 AS_AC_EXPAND(PREFIX, "$prefix")
162 AS_AC_EXPAND(LIBDIR, "$libdir")
163 AS_AC_EXPAND(BINDIR, "$bindir")
164 AS_AC_EXPAND(LIBEXECDIR, "$libexecdir")
165 AS_AC_EXPAND(INCLUDEDIR, "$includedir")
166 AS_AC_EXPAND(SYSCONFDIR, "$sysconfdir")
167 AS_AC_EXPAND(DATADIR, "$datadir")
168 AS_AC_EXPAND(LOCALSTATEDIR, "$localstatedir")
169 AS_AC_EXPAND(DOCDIR, "$docdir")
170 AS_AC_EXPAND(LXC_CONFFILE, "$conffile")
171 AS_AC_EXPAND(LXC_GENERATE_DATE, "$(date)")
172 AS_AC_EXPAND(LXCPATH, "$with_config_path")
173 AS_AC_EXPAND(LXCROOTFSMOUNT, "$with_rootfs_path")
174 AS_AC_EXPAND(LXCTEMPLATEDIR, "$datadir/lxc/templates")
175 AS_AC_EXPAND(LXCINITDIR, "$libexecdir")
177 # Check for some standard kernel headers
178 AC_CHECK_HEADERS([linux/unistd.h linux/netlink.h linux/genetlink.h],
180 AC_MSG_ERROR([Please install the Linux kernel headers.]),
181 [#include <sys/socket.h>])
183 # Allow disabling libcap support
184 AC_ARG_ENABLE([capabilities],
185 [AC_HELP_STRING([--disable-capabilities], [disable kernel capabilities])],
186 [], [enable_capabilities=yes])
188 # Check for libcap support
189 if test "x$enable_capabilities" = "xyes"; then
190 AC_CHECK_LIB(cap,cap_set_proc,caplib=yes,caplib=no)
191 AC_MSG_CHECKING([linux capabilities])
192 if test "x$caplib" = "xyes" ; then
194 AC_MSG_RESULT([$CAP_LIBS])
197 AC_MSG_ERROR([You are missing libcap support. If you really want to build without kernel capabilities, use --disable-capabilities])
204 # Check for alternate C libraries
205 AC_MSG_CHECKING(for bionic libc)
206 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
207 [[#ifndef __ANDROID__
212 if test "x$is_bionic" = "xyes"; then
213 AC_DEFINE([IS_BIONIC], 1, [bionic libc])
218 AM_CONDITIONAL([IS_BIONIC], [test "x$is_bionic" = "xyes"])
220 # Some systems lack PR_CAPBSET_DROP definition => HAVE_DECL_PR_CAPBSET_DROP
221 AC_CHECK_DECLS([PR_CAPBSET_DROP], [], [], [#include <sys/prctl.h>])
223 # Check for some headers
224 AC_CHECK_HEADERS([sys/signalfd.h pty.h sys/capability.h sys/personality.h utmpx.h])
226 # Check for some syscalls functions
227 AC_CHECK_FUNCS([setns pivot_root sethostname unshare])
229 # Check for some functions
230 AC_CHECK_FUNCS([openpty hasmntopt setmntent endmntent])
231 AC_CHECK_FUNCS([getline],
232 AM_CONDITIONAL(HAVE_GETLINE, true)
233 AC_DEFINE(HAVE_GETLINE,1,[Have getline]),
234 AM_CONDITIONAL(HAVE_GETLINE, false))
235 AC_CHECK_FUNCS([fgetln],
236 AM_CONDITIONAL(HAVE_FGETLN, true)
237 AC_DEFINE(HAVE_FGETLN,1,[Have fgetln]),
238 AM_CONDITIONAL(HAVE_FGETLN, false))
240 # Check for some standard binaries
241 AC_PROG_GCC_TRADITIONAL
244 if test "x$GCC" = "xyes"; then
245 CFLAGS="$CFLAGS -Wall -Werror"
248 # Files requiring some variable expansion
260 doc/lxc-checkpoint.sgml
265 doc/lxc-unfreeze.sgml
275 doc/common_options.sgml
277 doc/legacy/lxc-ls.sgml
281 doc/examples/Makefile
282 doc/examples/lxc-macvlan.conf
283 doc/examples/lxc-vlan.conf
284 doc/examples/lxc-no-netns.conf
285 doc/examples/lxc-empty-netns.conf
286 doc/examples/lxc-phys.conf
287 doc/examples/lxc-veth.conf
288 doc/examples/lxc-complex.conf
294 templates/lxc-ubuntu-cloud
295 templates/lxc-opensuse
296 templates/lxc-busybox
299 templates/lxc-altlinux
301 templates/lxc-archlinux
308 src/lxc/lxc-checkconfig
315 src/lxc/lxc-start-ephemeral
317 src/lxc/legacy/lxc-ls
319 src/python-lxc/Makefile
320 src/python-lxc/lxc/__init__.py
321 src/python-lxc/examples/api_test.py
325 AC_CONFIG_COMMANDS([default],[[]],[[]])
329 # Detect missing setcap binary
330 AC_CHECK_PROG(SETCAP, setcap, yes, no, $PATH$PATH_SEPARATOR/sbin)
331 if test "x$SETCAP" = "xno"; then
337 The setcap binary was not found. This means the tools to set the
338 privilege for the lxc commands are not available, that's ok, but you
339 will need to run these commands as root or install libcap-2.
350 If you wish to have a non root user to use the lxc tools,
351 you can add the needed capabilities to the tools by invoking
352 the 'lxc-setcap' script. To remove the capabilities, use