]> git.proxmox.com Git - mirror_lxc.git/blame - configure.ac
Build lxcutmp.c without timerfd.h or utmpx.h
[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
8aa4885c
SG
160# Expand some useful variables
161AS_AC_EXPAND(PREFIX, "$prefix")
162AS_AC_EXPAND(LIBDIR, "$libdir")
163AS_AC_EXPAND(BINDIR, "$bindir")
164AS_AC_EXPAND(LIBEXECDIR, "$libexecdir")
165AS_AC_EXPAND(INCLUDEDIR, "$includedir")
166AS_AC_EXPAND(SYSCONFDIR, "$sysconfdir")
167AS_AC_EXPAND(DATADIR, "$datadir")
168AS_AC_EXPAND(LOCALSTATEDIR, "$localstatedir")
169AS_AC_EXPAND(DOCDIR, "$docdir")
170AS_AC_EXPAND(LXC_CONFFILE, "$conffile")
aef4ebcf 171AS_AC_EXPAND(LXC_GENERATE_DATE, "$(date)")
8aa4885c
SG
172AS_AC_EXPAND(LXCPATH, "$with_config_path")
173AS_AC_EXPAND(LXCROOTFSMOUNT, "$with_rootfs_path")
174AS_AC_EXPAND(LXCTEMPLATEDIR, "$datadir/lxc/templates")
175AS_AC_EXPAND(LXCINITDIR, "$libexecdir")
881450bb 176
8aa4885c 177# Check for some standard kernel headers
910bb4fa 178AC_CHECK_HEADERS([linux/unistd.h linux/netlink.h linux/genetlink.h],
8aa4885c
SG
179 [],
180 AC_MSG_ERROR([Please install the Linux kernel headers.]),
181 [#include <sys/socket.h>])
35f549fe 182
495d2046
SG
183# Allow disabling libcap support
184AC_ARG_ENABLE([capabilities],
185 [AC_HELP_STRING([--disable-capabilities], [disable kernel capabilities])],
186 [], [enable_capabilities=yes])
187
8aa4885c 188# Check for libcap support
495d2046
SG
189if 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
193 CAP_LIBS="-lcap"
194 AC_MSG_RESULT([$CAP_LIBS])
195 else
196 AC_MSG_RESULT([no])
197 AC_MSG_ERROR([You are missing libcap support. If you really want to build without kernel capabilities, use --disable-capabilities])
198 fi
0af683cf 199else
495d2046 200 CAP_LIBS=""
0af683cf 201fi
202AC_SUBST([CAP_LIBS])
35f549fe 203
a6168a17
SG
204# Check for alternate C libraries
205AC_MSG_CHECKING(for bionic libc)
206AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
8aa4885c 207 [[#ifndef __ANDROID__
a6168a17
SG
208error: Not bionic!
209#endif]])],
8aa4885c
SG
210 [is_bionic=yes],
211 [is_bionic=no])
a6168a17 212if test "x$is_bionic" = "xyes"; then
8aa4885c
SG
213 AC_DEFINE([IS_BIONIC], 1, [bionic libc])
214 AC_MSG_RESULT([yes])
a6168a17 215else
8aa4885c 216 AC_MSG_RESULT([no])
a6168a17
SG
217fi
218AM_CONDITIONAL([IS_BIONIC], [test "x$is_bionic" = "xyes"])
219
656994bb
MH
220# Some systems lack PR_CAPBSET_DROP definition => HAVE_DECL_PR_CAPBSET_DROP
221AC_CHECK_DECLS([PR_CAPBSET_DROP], [], [], [#include <sys/prctl.h>])
222
e827ff7e 223# Check for some headers
9be380b0 224AC_CHECK_HEADERS([sys/signalfd.h pty.h sys/capability.h sys/personality.h utmpx.h sys/timerfd.h])
ff218c25 225
2d76d1d7
SG
226# Check for some syscalls functions
227AC_CHECK_FUNCS([setns pivot_root sethostname unshare])
228
e827ff7e 229# Check for some functions
edaf8b1b 230AC_CHECK_FUNCS([openpty hasmntopt setmntent endmntent])
1ba0013f
SG
231AC_CHECK_FUNCS([getline],
232 AM_CONDITIONAL(HAVE_GETLINE, true)
233 AC_DEFINE(HAVE_GETLINE,1,[Have getline]),
234 AM_CONDITIONAL(HAVE_GETLINE, false))
235AC_CHECK_FUNCS([fgetln],
236 AM_CONDITIONAL(HAVE_FGETLN, true)
237 AC_DEFINE(HAVE_FGETLN,1,[Have fgetln]),
238 AM_CONDITIONAL(HAVE_FGETLN, false))
239
8aa4885c 240# Check for some standard binaries
5e97c3fc 241AC_PROG_GCC_TRADITIONAL
95a717e9 242AC_PROG_SED
5e97c3fc 243
244if test "x$GCC" = "xyes"; then
8aa4885c 245 CFLAGS="$CFLAGS -Wall -Werror"
5e97c3fc 246fi
247
8aa4885c 248# Files requiring some variable expansion
5e97c3fc 249AC_CONFIG_FILES([
288063bd 250 Makefile
b6345ba1 251 lxc.pc
5e97c3fc 252 lxc.spec
288063bd 253 config/Makefile
d823d5b9 254
288063bd 255 doc/Makefile
d823d5b9 256 doc/lxc-create.sgml
257 doc/lxc-destroy.sgml
258 doc/lxc-execute.sgml
259 doc/lxc-start.sgml
396639d4
DL
260 doc/lxc-checkpoint.sgml
261 doc/lxc-restart.sgml
d823d5b9 262 doc/lxc-stop.sgml
b0a33c1e 263 doc/lxc-console.sgml
d823d5b9 264 doc/lxc-freeze.sgml
265 doc/lxc-unfreeze.sgml
266 doc/lxc-monitor.sgml
267 doc/lxc-wait.sgml
268 doc/lxc-ls.sgml
269 doc/lxc-ps.sgml
b0e505c9 270 doc/lxc-cgroup.sgml
e4b3fe58 271 doc/lxc-kill.sgml
49ee6cdc 272 doc/lxc-attach.sgml
8a67a2b2 273 doc/lxc.conf.sgml
8b8b04f8 274 doc/lxc.sgml
10fba81b 275 doc/common_options.sgml
99e4008c 276 doc/see_also.sgml
6a85cf91 277 doc/legacy/lxc-ls.sgml
d823d5b9 278
baf6671f
DL
279 doc/rootfs/Makefile
280
0f71d073
DL
281 doc/examples/Makefile
282 doc/examples/lxc-macvlan.conf
26c39028 283 doc/examples/lxc-vlan.conf
0f71d073
DL
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
c553a9c2 288 doc/examples/lxc-complex.conf
0f71d073 289
c01d62f2 290 templates/Makefile
03d56dff 291 templates/lxc-lenny
c01d62f2 292 templates/lxc-debian
7c382572 293 templates/lxc-ubuntu
d1458ac8 294 templates/lxc-ubuntu-cloud
c840b37d 295 templates/lxc-opensuse
c01d62f2
DL
296 templates/lxc-busybox
297 templates/lxc-fedora
708f4a80 298 templates/lxc-oracle
262f4e48 299 templates/lxc-altlinux
c01d62f2 300 templates/lxc-sshd
f6267d90 301 templates/lxc-archlinux
2a9a0a08 302 templates/lxc-alpine
c9844b87 303
288063bd 304 src/Makefile
5e97c3fc 305 src/lxc/Makefile
306 src/lxc/lxc-ps
9d0195cb 307 src/lxc/lxc-netstat
237315ff
DL
308 src/lxc/lxc-checkconfig
309 src/lxc/lxc-setcap
7a82e923 310 src/lxc/lxc-setuid
bcd952a1 311 src/lxc/lxc-version
ab2d32f8 312 src/lxc/lxc-create
be8b5972 313 src/lxc/lxc-clone
72be4f89 314 src/lxc/lxc-shutdown
5b12984b 315 src/lxc/lxc-start-ephemeral
ab2d32f8 316 src/lxc/lxc-destroy
6a85cf91 317 src/lxc/legacy/lxc-ls
c9844b87 318
be2e4e54 319 src/python-lxc/Makefile
2495cc91
SG
320 src/python-lxc/lxc/__init__.py
321 src/python-lxc/examples/api_test.py
be2e4e54 322
72d0e1cb 323 src/tests/Makefile
5e97c3fc 324])
325AC_CONFIG_COMMANDS([default],[[]],[[]])
326AC_OUTPUT
805415fc 327
8aa4885c
SG
328
329# Detect missing setcap binary
330AC_CHECK_PROG(SETCAP, setcap, yes, no, $PATH$PATH_SEPARATOR/sbin)
805415fc 331if test "x$SETCAP" = "xno"; then
8aa4885c 332 AC_MSG_NOTICE([
805415fc 333
334Warning:
335--------
336
87476557
FG
337The setcap binary was not found. This means the tools to set the
338privilege for the lxc commands are not available, that's ok, but you
339will need to run these commands as root or install libcap-2.
805415fc 340
341])
342
343else
344
f8dafdbb 345 AC_MSG_NOTICE([
805415fc 346
347Advice:
348-------
349
87476557 350If you wish to have a non root user to use the lxc tools,
237315ff
DL
351you can add the needed capabilities to the tools by invoking
352the 'lxc-setcap' script. To remove the capabilities, use
87476557 353'lxc-setcap -d'.
805415fc 354])
805415fc 355fi