]> git.proxmox.com Git - mirror_lxc.git/blame - configure.ac
setup_mount_entries: ignore mount failure if 'optional'
[mirror_lxc.git] / configure.ac
CommitLineData
5e97c3fc 1# -*- Autoconf -*-
2# Process this file with autoconf to produce a configure script.
3
56655134 4AC_INIT([lxc], [0.9.0.alpha2])
5e97c3fc 5
f8dafdbb 6AC_CONFIG_SRCDIR([configure.ac])
5e97c3fc 7AC_CONFIG_AUX_DIR([config])
8AM_CONFIG_HEADER([src/config.h])
ad563aea 9AM_INIT_AUTOMAKE([-Wall -Werror -Wno-portability])
5e97c3fc 10AC_CANONICAL_HOST
5e97c3fc 11AM_PROG_CC_C_O
12AC_GNU_SOURCE
5c8f9bd8 13
8aa4885c
SG
14# Detect the distribution. This is used for the default configuration and
15# for some distro-specific build options.
6f75ba0b 16AC_MSG_CHECKING([host distribution])
8aa4885c 17AC_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.]))
6f75ba0b
DE
18if test "z$with_distro" = "z"; then
19 with_distro=`lsb_release -is`
be2e4e54 20fi
6f75ba0b
DE
21if 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")
34fi
35with_distro=`echo ${with_distro} | tr '[[:upper:]]' '[[:lower:]]'`
36
37if test "z$with_distro" = "z"; then
38 with_distro="unknown"
39fi
40case $with_distro in
41 ubuntu)
42 conffile=lxc.conf.ubuntu
43 ;;
44 redhat|fedora|oracle|oracleserver)
45 conffile=lxc.conf.libvirt
46 ;;
47 *)
48 echo -n "Linux distribution network config unknown, defaulting to lxc.network.type = empty"
49 conffile=lxc.conf.unknown
50 ;;
51esac
52AC_MSG_RESULT([$with_distro])
6f75ba0b 53AM_CONDITIONAL([HAVE_DEBIAN], [test x"$with_distro" = "xdebian" -o x"$with_distro" = "xubuntu"])
be2e4e54 54
8aa4885c 55# Allow disabling rpath
1c41ddcb
GK
56AC_ARG_ENABLE([rpath],
57 [AC_HELP_STRING([--disable-rpath], [do not set rpath in executables])],
58 [], [enable_rpath=yes])
1c41ddcb
GK
59AM_CONDITIONAL([ENABLE_RPATH], [test "x$enable_rpath" = "xyes"])
60
8aa4885c 61# Documentation (manpages)
5c8f9bd8 62AC_ARG_ENABLE([doc],
7822022c 63 [AC_HELP_STRING([--enable-doc], [make mans (require docbook2x-man installed) [default=auto]])],
5c8f9bd8
AN
64 [], [enable_doc=auto])
65
66if test "x$enable_doc" = "xyes" -o "x$enable_doc" = "xauto"; then
7822022c
SG
67 db2xman=""
68
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
72 db2xman="$name"
73 break;
74 fi
75 done
76
77 if test -n "${db2xman}"; then
8aa4885c 78 AC_MSG_RESULT([${db2xman}])
7822022c 79 else
8aa4885c 80 AC_MSG_RESULT([no])
7822022c
SG
81 if test "x$enable_doc" = "xyes"; then
82 AC_MSG_ERROR([docbook2x-man required by man request, but not found])
83 fi
84 fi
85
86 AC_SUBST(db2xman)
5c8f9bd8 87fi
8aa4885c 88AM_CONDITIONAL([ENABLE_DOCBOOK], [test "x$db2xman" != "x"])
5c8f9bd8 89
8aa4885c 90# Apparmor
e767dd55
SH
91AC_ARG_ENABLE([apparmor],
92 [AC_HELP_STRING([--enable-apparmor], [enable apparmor])],
93 [], [enable_apparmor=check])
94
95if test "$enable_apparmor" = "check" ; then
96 AC_CHECK_LIB([apparmor],[aa_change_profile],[enable_apparmor=yes], [enable_apparmor=no])
97fi
e767dd55
SH
98AM_CONDITIONAL([ENABLE_APPARMOR], [test "x$enable_apparmor" = "xyes"])
99
e075f5d9 100AM_COND_IF([ENABLE_APPARMOR],
8aa4885c
SG
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])])
e075f5d9 104
8aa4885c 105# Seccomp syscall filter
e767dd55
SH
106AC_ARG_ENABLE([seccomp],
107 [AC_HELP_STRING([--enable-seccomp], [enable seccomp])],
108 [], [enable_seccomp=check])
109
110if test "$enable_seccomp" = "check" ; then
111 AC_CHECK_LIB([seccomp],[seccomp_init],[enable_seccomp=yes],[enable_seccomp=no])
112fi
e767dd55
SH
113AM_CONDITIONAL([ENABLE_SECCOMP], [test "x$enable_seccomp" = "xyes"])
114
8f2c3a70 115AM_COND_IF([ENABLE_SECCOMP],
8aa4885c
SG
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])])
8f2c3a70 119
769872f9
SH
120# HAVE_SCMP_FILTER_CTX=1 will tell us we have libseccomp api >= 1.0.0
121AC_CHECK_TYPES([scmp_filter_ctx], [], [], [#include <seccomp.h>])
122
8aa4885c 123# Configuration examples
3fb0a9bb
AN
124AC_ARG_ENABLE([examples],
125 [AC_HELP_STRING([--disable-examples], [do not install configuration examples])],
126 [], [enable_examples=yes])
3fb0a9bb
AN
127AM_CONDITIONAL([ENABLE_EXAMPLES], [test "x$enable_examples" = "xyes"])
128
8aa4885c 129# Python3 module and scripts
be2e4e54
SG
130AC_ARG_ENABLE([python],
131 [AC_HELP_STRING([--enable-python], [enable python binding])],
132 [enable_python=yes], [enable_python=no])
be2e4e54
SG
133AM_CONDITIONAL([ENABLE_PYTHON], [test "x$enable_python" = "xyes"])
134
135AM_COND_IF([ENABLE_PYTHON],
8aa4885c 136 [AM_PATH_PYTHON([3.2], [], [AC_MSG_ERROR([You must install python3])])
59ec0a36 137 PKG_CHECK_MODULES([PYTHONDEV], [python3 >= 3.2],[],[AC_MSG_ERROR([You must install python3-dev])])
8aa4885c 138 AC_DEFINE_UNQUOTED([ENABLE_PYTHON], 1, [Python3 is available])])
be2e4e54 139
8aa4885c 140# Optional test binaries
525421c9
SG
141AC_ARG_ENABLE([tests],
142 [AC_HELP_STRING([--enable-tests], [build test/example binaries])],
143 [enable_tests=yes], [enable_tests=no])
525421c9
SG
144AM_CONDITIONAL([ENABLE_TESTS], [test "x$enable_tests" = "xyes"])
145
8aa4885c 146# LXC container path, where the containers are actually stored
aef4ebcf
AN
147AC_ARG_WITH([config-path],
148 [AC_HELP_STRING(
149 [--with-config-path=dir],
e892973e 150 [lxc configuration repository path]
1c41ddcb 151 )], [], [with_config_path=['${localstatedir}/lib/lxc']])
aef4ebcf 152
8aa4885c 153# Rootfs path, where the container mount structure is assembled
196db713
DL
154AC_ARG_WITH([rootfs-path],
155 [AC_HELP_STRING(
156 [--with-rootfs-path=dir],
157 [lxc rootfs mount point]
1c41ddcb 158 )], [], [with_rootfs_path=['${libdir}/lxc/rootfs']])
196db713 159
5e1e7aaf
SH
160# Container log path. By default, use $lxcpath.
161AC_MSG_CHECKING([Whether to place logfiles in container config path])
162AC_ARG_ENABLE([configpath-log],
163 [AC_HELP_STRING([--enable-configpath-log], [use logfiles in config path])],
164 [use_configpath_logs=yes], [use_configpath_logs=no])
165AC_MSG_RESULT([$use_configpath_logs])
166AM_CONDITIONAL([USE_CONFIGPATH_LOGS], [test "$use_configpath_logs" = "yes"])
167
168if test "$use_configpath_logs" = "yes"; then
169 default_log_path="${with_config_path}"
170else
171 default_log_path="/var/log/lxc"
172fi
173
174AC_ARG_WITH([log-path],
175 [AC_HELP_STRING(
176 [--with-log-path=dir],
177 [per container log path]
178 )], [], [with_log_path=['${default_log_path}']])
179
8aa4885c
SG
180# Expand some useful variables
181AS_AC_EXPAND(PREFIX, "$prefix")
182AS_AC_EXPAND(LIBDIR, "$libdir")
183AS_AC_EXPAND(BINDIR, "$bindir")
184AS_AC_EXPAND(LIBEXECDIR, "$libexecdir")
185AS_AC_EXPAND(INCLUDEDIR, "$includedir")
186AS_AC_EXPAND(SYSCONFDIR, "$sysconfdir")
187AS_AC_EXPAND(DATADIR, "$datadir")
188AS_AC_EXPAND(LOCALSTATEDIR, "$localstatedir")
189AS_AC_EXPAND(DOCDIR, "$docdir")
190AS_AC_EXPAND(LXC_CONFFILE, "$conffile")
aef4ebcf 191AS_AC_EXPAND(LXC_GENERATE_DATE, "$(date)")
8aa4885c
SG
192AS_AC_EXPAND(LXCPATH, "$with_config_path")
193AS_AC_EXPAND(LXCROOTFSMOUNT, "$with_rootfs_path")
194AS_AC_EXPAND(LXCTEMPLATEDIR, "$datadir/lxc/templates")
195AS_AC_EXPAND(LXCINITDIR, "$libexecdir")
5e1e7aaf 196AS_AC_EXPAND(LOGPATH, "$with_log_path")
881450bb 197
8aa4885c 198# Check for some standard kernel headers
910bb4fa 199AC_CHECK_HEADERS([linux/unistd.h linux/netlink.h linux/genetlink.h],
8aa4885c
SG
200 [],
201 AC_MSG_ERROR([Please install the Linux kernel headers.]),
202 [#include <sys/socket.h>])
35f549fe 203
495d2046
SG
204# Allow disabling libcap support
205AC_ARG_ENABLE([capabilities],
206 [AC_HELP_STRING([--disable-capabilities], [disable kernel capabilities])],
207 [], [enable_capabilities=yes])
208
8aa4885c 209# Check for libcap support
495d2046
SG
210if test "x$enable_capabilities" = "xyes"; then
211 AC_CHECK_LIB(cap,cap_set_proc,caplib=yes,caplib=no)
212 AC_MSG_CHECKING([linux capabilities])
213 if test "x$caplib" = "xyes" ; then
214 CAP_LIBS="-lcap"
215 AC_MSG_RESULT([$CAP_LIBS])
216 else
217 AC_MSG_RESULT([no])
218 AC_MSG_ERROR([You are missing libcap support. If you really want to build without kernel capabilities, use --disable-capabilities])
219 fi
0af683cf 220else
495d2046 221 CAP_LIBS=""
0af683cf 222fi
223AC_SUBST([CAP_LIBS])
35f549fe 224
a6168a17
SG
225# Check for alternate C libraries
226AC_MSG_CHECKING(for bionic libc)
227AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
8aa4885c 228 [[#ifndef __ANDROID__
a6168a17
SG
229error: Not bionic!
230#endif]])],
8aa4885c
SG
231 [is_bionic=yes],
232 [is_bionic=no])
a6168a17 233if test "x$is_bionic" = "xyes"; then
8aa4885c
SG
234 AC_DEFINE([IS_BIONIC], 1, [bionic libc])
235 AC_MSG_RESULT([yes])
a6168a17 236else
8aa4885c 237 AC_MSG_RESULT([no])
a6168a17
SG
238fi
239AM_CONDITIONAL([IS_BIONIC], [test "x$is_bionic" = "xyes"])
240
656994bb
MH
241# Some systems lack PR_CAPBSET_DROP definition => HAVE_DECL_PR_CAPBSET_DROP
242AC_CHECK_DECLS([PR_CAPBSET_DROP], [], [], [#include <sys/prctl.h>])
243
e827ff7e 244# Check for some headers
9be380b0 245AC_CHECK_HEADERS([sys/signalfd.h pty.h sys/capability.h sys/personality.h utmpx.h sys/timerfd.h])
ff218c25 246
2d76d1d7
SG
247# Check for some syscalls functions
248AC_CHECK_FUNCS([setns pivot_root sethostname unshare])
249
e827ff7e 250# Check for some functions
740ee8c7 251AC_CHECK_LIB(util, openpty)
edaf8b1b 252AC_CHECK_FUNCS([openpty hasmntopt setmntent endmntent])
1ba0013f
SG
253AC_CHECK_FUNCS([getline],
254 AM_CONDITIONAL(HAVE_GETLINE, true)
255 AC_DEFINE(HAVE_GETLINE,1,[Have getline]),
256 AM_CONDITIONAL(HAVE_GETLINE, false))
257AC_CHECK_FUNCS([fgetln],
258 AM_CONDITIONAL(HAVE_FGETLN, true)
259 AC_DEFINE(HAVE_FGETLN,1,[Have fgetln]),
260 AM_CONDITIONAL(HAVE_FGETLN, false))
261
8aa4885c 262# Check for some standard binaries
5e97c3fc 263AC_PROG_GCC_TRADITIONAL
95a717e9 264AC_PROG_SED
5e97c3fc 265
266if test "x$GCC" = "xyes"; then
8aa4885c 267 CFLAGS="$CFLAGS -Wall -Werror"
5e97c3fc 268fi
269
8aa4885c 270# Files requiring some variable expansion
5e97c3fc 271AC_CONFIG_FILES([
288063bd 272 Makefile
b6345ba1 273 lxc.pc
5e97c3fc 274 lxc.spec
288063bd 275 config/Makefile
d823d5b9 276
288063bd 277 doc/Makefile
d823d5b9 278 doc/lxc-create.sgml
279 doc/lxc-destroy.sgml
280 doc/lxc-execute.sgml
281 doc/lxc-start.sgml
396639d4
DL
282 doc/lxc-checkpoint.sgml
283 doc/lxc-restart.sgml
d823d5b9 284 doc/lxc-stop.sgml
b0a33c1e 285 doc/lxc-console.sgml
d823d5b9 286 doc/lxc-freeze.sgml
287 doc/lxc-unfreeze.sgml
288 doc/lxc-monitor.sgml
289 doc/lxc-wait.sgml
290 doc/lxc-ls.sgml
291 doc/lxc-ps.sgml
b0e505c9 292 doc/lxc-cgroup.sgml
e4b3fe58 293 doc/lxc-kill.sgml
49ee6cdc 294 doc/lxc-attach.sgml
8a67a2b2 295 doc/lxc.conf.sgml
8b8b04f8 296 doc/lxc.sgml
10fba81b 297 doc/common_options.sgml
99e4008c 298 doc/see_also.sgml
6a85cf91 299 doc/legacy/lxc-ls.sgml
d823d5b9 300
baf6671f
DL
301 doc/rootfs/Makefile
302
0f71d073
DL
303 doc/examples/Makefile
304 doc/examples/lxc-macvlan.conf
26c39028 305 doc/examples/lxc-vlan.conf
0f71d073
DL
306 doc/examples/lxc-no-netns.conf
307 doc/examples/lxc-empty-netns.conf
308 doc/examples/lxc-phys.conf
309 doc/examples/lxc-veth.conf
c553a9c2 310 doc/examples/lxc-complex.conf
0f71d073 311
c01d62f2 312 templates/Makefile
03d56dff 313 templates/lxc-lenny
c01d62f2 314 templates/lxc-debian
7c382572 315 templates/lxc-ubuntu
d1458ac8 316 templates/lxc-ubuntu-cloud
c840b37d 317 templates/lxc-opensuse
c01d62f2
DL
318 templates/lxc-busybox
319 templates/lxc-fedora
708f4a80 320 templates/lxc-oracle
262f4e48 321 templates/lxc-altlinux
c01d62f2 322 templates/lxc-sshd
f6267d90 323 templates/lxc-archlinux
2a9a0a08 324 templates/lxc-alpine
c9844b87 325
288063bd 326 src/Makefile
5e97c3fc 327 src/lxc/Makefile
328 src/lxc/lxc-ps
9d0195cb 329 src/lxc/lxc-netstat
237315ff
DL
330 src/lxc/lxc-checkconfig
331 src/lxc/lxc-setcap
7a82e923 332 src/lxc/lxc-setuid
bcd952a1 333 src/lxc/lxc-version
ab2d32f8 334 src/lxc/lxc-create
be8b5972 335 src/lxc/lxc-clone
72be4f89 336 src/lxc/lxc-shutdown
5b12984b 337 src/lxc/lxc-start-ephemeral
ab2d32f8 338 src/lxc/lxc-destroy
6a85cf91 339 src/lxc/legacy/lxc-ls
c9844b87 340
be2e4e54 341 src/python-lxc/Makefile
2495cc91
SG
342 src/python-lxc/lxc/__init__.py
343 src/python-lxc/examples/api_test.py
be2e4e54 344
72d0e1cb 345 src/tests/Makefile
5e97c3fc 346])
347AC_CONFIG_COMMANDS([default],[[]],[[]])
348AC_OUTPUT
805415fc 349
8aa4885c
SG
350
351# Detect missing setcap binary
352AC_CHECK_PROG(SETCAP, setcap, yes, no, $PATH$PATH_SEPARATOR/sbin)
805415fc 353if test "x$SETCAP" = "xno"; then
8aa4885c 354 AC_MSG_NOTICE([
805415fc 355
356Warning:
357--------
358
87476557
FG
359The setcap binary was not found. This means the tools to set the
360privilege for the lxc commands are not available, that's ok, but you
361will need to run these commands as root or install libcap-2.
805415fc 362
363])
364
365else
366
f8dafdbb 367 AC_MSG_NOTICE([
805415fc 368
369Advice:
370-------
371
87476557 372If you wish to have a non root user to use the lxc tools,
237315ff
DL
373you can add the needed capabilities to the tools by invoking
374the 'lxc-setcap' script. To remove the capabilities, use
87476557 375'lxc-setcap -d'.
805415fc 376])
805415fc 377fi