]> git.proxmox.com Git - mirror_lxc.git/blame - configure.ac
oracle template: improve compatibility with old ol4, 5
[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)
bb9702b5 42 defaultconf=default.conf.ubuntu
6f75ba0b
DE
43 ;;
44 redhat|fedora|oracle|oracleserver)
bb9702b5 45 defaultconf=default.conf.libvirt
6f75ba0b
DE
46 ;;
47 *)
48 echo -n "Linux distribution network config unknown, defaulting to lxc.network.type = empty"
bb9702b5 49 defaultconf=default.conf.unknown
6f75ba0b
DE
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
f080ffd7
DE
140# Lua module and scripts
141if test x"$with_distro" = "xdebian" -o x"$with_distro" = "xubuntu" ; then
142 LUAPKGCONFIG=lua5.1
143else
144 LUAPKGCONFIG=lua
145fi
146
147AC_ARG_ENABLE([lua],
148 [AC_HELP_STRING([--enable-lua], [enable lua binding])],
149 [enable_lua=yes], [enable_lua=no])
150
151AM_CONDITIONAL([ENABLE_LUA], [test "x$enable_lua" = "xyes"])
152
153AM_COND_IF([ENABLE_LUA],
154 [PKG_CHECK_MODULES([LUA], [$LUAPKGCONFIG >= 5.1],[],[AC_MSG_ERROR([You must install lua-devel for lua 5.1])])
155 AC_DEFINE_UNQUOTED([ENABLE_LUA], 1, [Lua is available])])
156
8aa4885c 157# Optional test binaries
525421c9
SG
158AC_ARG_ENABLE([tests],
159 [AC_HELP_STRING([--enable-tests], [build test/example binaries])],
160 [enable_tests=yes], [enable_tests=no])
525421c9
SG
161AM_CONDITIONAL([ENABLE_TESTS], [test "x$enable_tests" = "xyes"])
162
8aa4885c 163# LXC container path, where the containers are actually stored
aef4ebcf
AN
164AC_ARG_WITH([config-path],
165 [AC_HELP_STRING(
166 [--with-config-path=dir],
e892973e 167 [lxc configuration repository path]
1c41ddcb 168 )], [], [with_config_path=['${localstatedir}/lib/lxc']])
aef4ebcf 169
8aa4885c 170# Rootfs path, where the container mount structure is assembled
196db713
DL
171AC_ARG_WITH([rootfs-path],
172 [AC_HELP_STRING(
173 [--with-rootfs-path=dir],
174 [lxc rootfs mount point]
1c41ddcb 175 )], [], [with_rootfs_path=['${libdir}/lxc/rootfs']])
196db713 176
5e1e7aaf
SH
177# Container log path. By default, use $lxcpath.
178AC_MSG_CHECKING([Whether to place logfiles in container config path])
179AC_ARG_ENABLE([configpath-log],
180 [AC_HELP_STRING([--enable-configpath-log], [use logfiles in config path])],
181 [use_configpath_logs=yes], [use_configpath_logs=no])
182AC_MSG_RESULT([$use_configpath_logs])
183AM_CONDITIONAL([USE_CONFIGPATH_LOGS], [test "$use_configpath_logs" = "yes"])
184
185if test "$use_configpath_logs" = "yes"; then
186 default_log_path="${with_config_path}"
187else
188 default_log_path="/var/log/lxc"
189fi
190
191AC_ARG_WITH([log-path],
192 [AC_HELP_STRING(
193 [--with-log-path=dir],
194 [per container log path]
195 )], [], [with_log_path=['${default_log_path}']])
196
8aa4885c
SG
197# Expand some useful variables
198AS_AC_EXPAND(PREFIX, "$prefix")
199AS_AC_EXPAND(LIBDIR, "$libdir")
200AS_AC_EXPAND(BINDIR, "$bindir")
201AS_AC_EXPAND(LIBEXECDIR, "$libexecdir")
202AS_AC_EXPAND(INCLUDEDIR, "$includedir")
203AS_AC_EXPAND(SYSCONFDIR, "$sysconfdir")
204AS_AC_EXPAND(DATADIR, "$datadir")
205AS_AC_EXPAND(LOCALSTATEDIR, "$localstatedir")
206AS_AC_EXPAND(DOCDIR, "$docdir")
bb9702b5 207AS_AC_EXPAND(LXC_DEFAULT_CONF, "$defaultconf")
aef4ebcf 208AS_AC_EXPAND(LXC_GENERATE_DATE, "$(date)")
8aa4885c
SG
209AS_AC_EXPAND(LXCPATH, "$with_config_path")
210AS_AC_EXPAND(LXCROOTFSMOUNT, "$with_rootfs_path")
211AS_AC_EXPAND(LXCTEMPLATEDIR, "$datadir/lxc/templates")
212AS_AC_EXPAND(LXCINITDIR, "$libexecdir")
5e1e7aaf 213AS_AC_EXPAND(LOGPATH, "$with_log_path")
881450bb 214
8aa4885c 215# Check for some standard kernel headers
910bb4fa 216AC_CHECK_HEADERS([linux/unistd.h linux/netlink.h linux/genetlink.h],
8aa4885c
SG
217 [],
218 AC_MSG_ERROR([Please install the Linux kernel headers.]),
219 [#include <sys/socket.h>])
35f549fe 220
495d2046
SG
221# Allow disabling libcap support
222AC_ARG_ENABLE([capabilities],
223 [AC_HELP_STRING([--disable-capabilities], [disable kernel capabilities])],
224 [], [enable_capabilities=yes])
225
8aa4885c 226# Check for libcap support
495d2046
SG
227if test "x$enable_capabilities" = "xyes"; then
228 AC_CHECK_LIB(cap,cap_set_proc,caplib=yes,caplib=no)
229 AC_MSG_CHECKING([linux capabilities])
230 if test "x$caplib" = "xyes" ; then
231 CAP_LIBS="-lcap"
232 AC_MSG_RESULT([$CAP_LIBS])
233 else
234 AC_MSG_RESULT([no])
235 AC_MSG_ERROR([You are missing libcap support. If you really want to build without kernel capabilities, use --disable-capabilities])
236 fi
0af683cf 237else
495d2046 238 CAP_LIBS=""
0af683cf 239fi
240AC_SUBST([CAP_LIBS])
35f549fe 241
a6168a17
SG
242# Check for alternate C libraries
243AC_MSG_CHECKING(for bionic libc)
244AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
8aa4885c 245 [[#ifndef __ANDROID__
a6168a17
SG
246error: Not bionic!
247#endif]])],
8aa4885c
SG
248 [is_bionic=yes],
249 [is_bionic=no])
a6168a17 250if test "x$is_bionic" = "xyes"; then
8aa4885c
SG
251 AC_DEFINE([IS_BIONIC], 1, [bionic libc])
252 AC_MSG_RESULT([yes])
a6168a17 253else
8aa4885c 254 AC_MSG_RESULT([no])
a6168a17
SG
255fi
256AM_CONDITIONAL([IS_BIONIC], [test "x$is_bionic" = "xyes"])
257
656994bb
MH
258# Some systems lack PR_CAPBSET_DROP definition => HAVE_DECL_PR_CAPBSET_DROP
259AC_CHECK_DECLS([PR_CAPBSET_DROP], [], [], [#include <sys/prctl.h>])
260
e827ff7e 261# Check for some headers
9be380b0 262AC_CHECK_HEADERS([sys/signalfd.h pty.h sys/capability.h sys/personality.h utmpx.h sys/timerfd.h])
ff218c25 263
2d76d1d7
SG
264# Check for some syscalls functions
265AC_CHECK_FUNCS([setns pivot_root sethostname unshare])
266
e827ff7e 267# Check for some functions
740ee8c7 268AC_CHECK_LIB(util, openpty)
edaf8b1b 269AC_CHECK_FUNCS([openpty hasmntopt setmntent endmntent])
1ba0013f
SG
270AC_CHECK_FUNCS([getline],
271 AM_CONDITIONAL(HAVE_GETLINE, true)
272 AC_DEFINE(HAVE_GETLINE,1,[Have getline]),
273 AM_CONDITIONAL(HAVE_GETLINE, false))
274AC_CHECK_FUNCS([fgetln],
275 AM_CONDITIONAL(HAVE_FGETLN, true)
276 AC_DEFINE(HAVE_FGETLN,1,[Have fgetln]),
277 AM_CONDITIONAL(HAVE_FGETLN, false))
278
8aa4885c 279# Check for some standard binaries
5e97c3fc 280AC_PROG_GCC_TRADITIONAL
95a717e9 281AC_PROG_SED
5e97c3fc 282
283if test "x$GCC" = "xyes"; then
8aa4885c 284 CFLAGS="$CFLAGS -Wall -Werror"
5e97c3fc 285fi
286
8aa4885c 287# Files requiring some variable expansion
5e97c3fc 288AC_CONFIG_FILES([
288063bd 289 Makefile
b6345ba1 290 lxc.pc
5e97c3fc 291 lxc.spec
288063bd 292 config/Makefile
d823d5b9 293
288063bd 294 doc/Makefile
d823d5b9 295 doc/lxc-create.sgml
296 doc/lxc-destroy.sgml
297 doc/lxc-execute.sgml
298 doc/lxc-start.sgml
396639d4
DL
299 doc/lxc-checkpoint.sgml
300 doc/lxc-restart.sgml
d823d5b9 301 doc/lxc-stop.sgml
b0a33c1e 302 doc/lxc-console.sgml
d823d5b9 303 doc/lxc-freeze.sgml
304 doc/lxc-unfreeze.sgml
305 doc/lxc-monitor.sgml
306 doc/lxc-wait.sgml
307 doc/lxc-ls.sgml
308 doc/lxc-ps.sgml
f080ffd7 309 doc/lxc-top.sgml
b0e505c9 310 doc/lxc-cgroup.sgml
e4b3fe58 311 doc/lxc-kill.sgml
49ee6cdc 312 doc/lxc-attach.sgml
8a67a2b2 313 doc/lxc.conf.sgml
8b8b04f8 314 doc/lxc.sgml
10fba81b 315 doc/common_options.sgml
99e4008c 316 doc/see_also.sgml
6a85cf91 317 doc/legacy/lxc-ls.sgml
d823d5b9 318
baf6671f
DL
319 doc/rootfs/Makefile
320
0f71d073
DL
321 doc/examples/Makefile
322 doc/examples/lxc-macvlan.conf
26c39028 323 doc/examples/lxc-vlan.conf
0f71d073
DL
324 doc/examples/lxc-no-netns.conf
325 doc/examples/lxc-empty-netns.conf
326 doc/examples/lxc-phys.conf
327 doc/examples/lxc-veth.conf
c553a9c2 328 doc/examples/lxc-complex.conf
0f71d073 329
c01d62f2 330 templates/Makefile
03d56dff 331 templates/lxc-lenny
c01d62f2 332 templates/lxc-debian
7c382572 333 templates/lxc-ubuntu
d1458ac8 334 templates/lxc-ubuntu-cloud
c840b37d 335 templates/lxc-opensuse
c01d62f2
DL
336 templates/lxc-busybox
337 templates/lxc-fedora
708f4a80 338 templates/lxc-oracle
262f4e48 339 templates/lxc-altlinux
c01d62f2 340 templates/lxc-sshd
f6267d90 341 templates/lxc-archlinux
2a9a0a08 342 templates/lxc-alpine
c9844b87 343
288063bd 344 src/Makefile
5e97c3fc 345 src/lxc/Makefile
346 src/lxc/lxc-ps
9d0195cb 347 src/lxc/lxc-netstat
237315ff
DL
348 src/lxc/lxc-checkconfig
349 src/lxc/lxc-setcap
7a82e923 350 src/lxc/lxc-setuid
bcd952a1 351 src/lxc/lxc-version
ab2d32f8 352 src/lxc/lxc-create
be8b5972 353 src/lxc/lxc-clone
72be4f89 354 src/lxc/lxc-shutdown
5b12984b 355 src/lxc/lxc-start-ephemeral
ab2d32f8 356 src/lxc/lxc-destroy
6a85cf91 357 src/lxc/legacy/lxc-ls
c9844b87 358
be2e4e54 359 src/python-lxc/Makefile
2495cc91
SG
360 src/python-lxc/lxc/__init__.py
361 src/python-lxc/examples/api_test.py
be2e4e54 362
f080ffd7
DE
363 src/lua-lxc/Makefile
364
72d0e1cb 365 src/tests/Makefile
5e97c3fc 366])
367AC_CONFIG_COMMANDS([default],[[]],[[]])
368AC_OUTPUT
805415fc 369
8aa4885c
SG
370
371# Detect missing setcap binary
372AC_CHECK_PROG(SETCAP, setcap, yes, no, $PATH$PATH_SEPARATOR/sbin)
805415fc 373if test "x$SETCAP" = "xno"; then
8aa4885c 374 AC_MSG_NOTICE([
805415fc 375
376Warning:
377--------
378
87476557
FG
379The setcap binary was not found. This means the tools to set the
380privilege for the lxc commands are not available, that's ok, but you
381will need to run these commands as root or install libcap-2.
805415fc 382
383])
384
385else
386
f8dafdbb 387 AC_MSG_NOTICE([
805415fc 388
389Advice:
390-------
391
87476557 392If you wish to have a non root user to use the lxc tools,
237315ff
DL
393you can add the needed capabilities to the tools by invoking
394the 'lxc-setcap' script. To remove the capabilities, use
87476557 395'lxc-setcap -d'.
805415fc 396])
805415fc 397fi