]>
Commit | Line | Data |
---|---|---|
5e97c3fc | 1 | # -*- Autoconf -*- |
2 | # Process this file with autoconf to produce a configure script. | |
3 | ||
56655134 | 4 | AC_INIT([lxc], [0.9.0.alpha2]) |
5e97c3fc | 5 | |
f8dafdbb | 6 | AC_CONFIG_SRCDIR([configure.ac]) |
5e97c3fc | 7 | AC_CONFIG_AUX_DIR([config]) |
8 | AM_CONFIG_HEADER([src/config.h]) | |
ad563aea | 9 | AM_INIT_AUTOMAKE([-Wall -Werror -Wno-portability]) |
5e97c3fc | 10 | AC_CANONICAL_HOST |
5e97c3fc | 11 | AM_PROG_CC_C_O |
12 | AC_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 | 16 | AC_MSG_CHECKING([host distribution]) |
8aa4885c | 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.])) |
6f75ba0b DE |
18 | if test "z$with_distro" = "z"; then |
19 | with_distro=`lsb_release -is` | |
be2e4e54 | 20 | fi |
6f75ba0b DE |
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") | |
34 | fi | |
35 | with_distro=`echo ${with_distro} | tr '[[:upper:]]' '[[:lower:]]'` | |
36 | ||
37 | if test "z$with_distro" = "z"; then | |
38 | with_distro="unknown" | |
39 | fi | |
40 | case $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 | ;; | |
51 | esac | |
52 | AC_MSG_RESULT([$with_distro]) | |
6f75ba0b | 53 | AM_CONDITIONAL([HAVE_DEBIAN], [test x"$with_distro" = "xdebian" -o x"$with_distro" = "xubuntu"]) |
be2e4e54 | 54 | |
8aa4885c | 55 | # Allow disabling rpath |
1c41ddcb GK |
56 | AC_ARG_ENABLE([rpath], |
57 | [AC_HELP_STRING([--disable-rpath], [do not set rpath in executables])], | |
58 | [], [enable_rpath=yes]) | |
1c41ddcb GK |
59 | AM_CONDITIONAL([ENABLE_RPATH], [test "x$enable_rpath" = "xyes"]) |
60 | ||
8aa4885c | 61 | # Documentation (manpages) |
5c8f9bd8 | 62 | AC_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 | ||
66 | if 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 | 87 | fi |
8aa4885c | 88 | AM_CONDITIONAL([ENABLE_DOCBOOK], [test "x$db2xman" != "x"]) |
5c8f9bd8 | 89 | |
8aa4885c | 90 | # Apparmor |
e767dd55 SH |
91 | AC_ARG_ENABLE([apparmor], |
92 | [AC_HELP_STRING([--enable-apparmor], [enable apparmor])], | |
93 | [], [enable_apparmor=check]) | |
94 | ||
95 | if test "$enable_apparmor" = "check" ; then | |
96 | AC_CHECK_LIB([apparmor],[aa_change_profile],[enable_apparmor=yes], [enable_apparmor=no]) | |
97 | fi | |
e767dd55 SH |
98 | AM_CONDITIONAL([ENABLE_APPARMOR], [test "x$enable_apparmor" = "xyes"]) |
99 | ||
e075f5d9 | 100 | AM_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 |
106 | AC_ARG_ENABLE([seccomp], |
107 | [AC_HELP_STRING([--enable-seccomp], [enable seccomp])], | |
108 | [], [enable_seccomp=check]) | |
109 | ||
110 | if test "$enable_seccomp" = "check" ; then | |
111 | AC_CHECK_LIB([seccomp],[seccomp_init],[enable_seccomp=yes],[enable_seccomp=no]) | |
112 | fi | |
e767dd55 SH |
113 | AM_CONDITIONAL([ENABLE_SECCOMP], [test "x$enable_seccomp" = "xyes"]) |
114 | ||
8f2c3a70 | 115 | AM_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 |
121 | AC_CHECK_TYPES([scmp_filter_ctx], [], [], [#include <seccomp.h>]) | |
122 | ||
8aa4885c | 123 | # Configuration examples |
3fb0a9bb AN |
124 | AC_ARG_ENABLE([examples], |
125 | [AC_HELP_STRING([--disable-examples], [do not install configuration examples])], | |
126 | [], [enable_examples=yes]) | |
3fb0a9bb AN |
127 | AM_CONDITIONAL([ENABLE_EXAMPLES], [test "x$enable_examples" = "xyes"]) |
128 | ||
8aa4885c | 129 | # Python3 module and scripts |
be2e4e54 SG |
130 | AC_ARG_ENABLE([python], |
131 | [AC_HELP_STRING([--enable-python], [enable python binding])], | |
132 | [enable_python=yes], [enable_python=no]) | |
be2e4e54 SG |
133 | AM_CONDITIONAL([ENABLE_PYTHON], [test "x$enable_python" = "xyes"]) |
134 | ||
135 | AM_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 |
141 | AC_ARG_ENABLE([tests], |
142 | [AC_HELP_STRING([--enable-tests], [build test/example binaries])], | |
143 | [enable_tests=yes], [enable_tests=no]) | |
525421c9 SG |
144 | AM_CONDITIONAL([ENABLE_TESTS], [test "x$enable_tests" = "xyes"]) |
145 | ||
8aa4885c | 146 | # LXC container path, where the containers are actually stored |
aef4ebcf AN |
147 | AC_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 |
154 | AC_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. |
161 | AC_MSG_CHECKING([Whether to place logfiles in container config path]) | |
162 | AC_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]) | |
165 | AC_MSG_RESULT([$use_configpath_logs]) | |
166 | AM_CONDITIONAL([USE_CONFIGPATH_LOGS], [test "$use_configpath_logs" = "yes"]) | |
167 | ||
168 | if test "$use_configpath_logs" = "yes"; then | |
169 | default_log_path="${with_config_path}" | |
170 | else | |
171 | default_log_path="/var/log/lxc" | |
172 | fi | |
173 | ||
174 | AC_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 |
181 | AS_AC_EXPAND(PREFIX, "$prefix") | |
182 | AS_AC_EXPAND(LIBDIR, "$libdir") | |
183 | AS_AC_EXPAND(BINDIR, "$bindir") | |
184 | AS_AC_EXPAND(LIBEXECDIR, "$libexecdir") | |
185 | AS_AC_EXPAND(INCLUDEDIR, "$includedir") | |
186 | AS_AC_EXPAND(SYSCONFDIR, "$sysconfdir") | |
187 | AS_AC_EXPAND(DATADIR, "$datadir") | |
188 | AS_AC_EXPAND(LOCALSTATEDIR, "$localstatedir") | |
189 | AS_AC_EXPAND(DOCDIR, "$docdir") | |
190 | AS_AC_EXPAND(LXC_CONFFILE, "$conffile") | |
aef4ebcf | 191 | AS_AC_EXPAND(LXC_GENERATE_DATE, "$(date)") |
8aa4885c SG |
192 | AS_AC_EXPAND(LXCPATH, "$with_config_path") |
193 | AS_AC_EXPAND(LXCROOTFSMOUNT, "$with_rootfs_path") | |
194 | AS_AC_EXPAND(LXCTEMPLATEDIR, "$datadir/lxc/templates") | |
195 | AS_AC_EXPAND(LXCINITDIR, "$libexecdir") | |
5e1e7aaf | 196 | AS_AC_EXPAND(LOGPATH, "$with_log_path") |
881450bb | 197 | |
8aa4885c | 198 | # Check for some standard kernel headers |
910bb4fa | 199 | AC_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 |
205 | AC_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 |
210 | if 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 | 220 | else |
495d2046 | 221 | CAP_LIBS="" |
0af683cf | 222 | fi |
223 | AC_SUBST([CAP_LIBS]) | |
35f549fe | 224 | |
a6168a17 SG |
225 | # Check for alternate C libraries |
226 | AC_MSG_CHECKING(for bionic libc) | |
227 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM( | |
8aa4885c | 228 | [[#ifndef __ANDROID__ |
a6168a17 SG |
229 | error: Not bionic! |
230 | #endif]])], | |
8aa4885c SG |
231 | [is_bionic=yes], |
232 | [is_bionic=no]) | |
a6168a17 | 233 | if test "x$is_bionic" = "xyes"; then |
8aa4885c SG |
234 | AC_DEFINE([IS_BIONIC], 1, [bionic libc]) |
235 | AC_MSG_RESULT([yes]) | |
a6168a17 | 236 | else |
8aa4885c | 237 | AC_MSG_RESULT([no]) |
a6168a17 SG |
238 | fi |
239 | AM_CONDITIONAL([IS_BIONIC], [test "x$is_bionic" = "xyes"]) | |
240 | ||
656994bb MH |
241 | # Some systems lack PR_CAPBSET_DROP definition => HAVE_DECL_PR_CAPBSET_DROP |
242 | AC_CHECK_DECLS([PR_CAPBSET_DROP], [], [], [#include <sys/prctl.h>]) | |
243 | ||
e827ff7e | 244 | # Check for some headers |
9be380b0 | 245 | AC_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 |
248 | AC_CHECK_FUNCS([setns pivot_root sethostname unshare]) | |
249 | ||
e827ff7e | 250 | # Check for some functions |
740ee8c7 | 251 | AC_CHECK_LIB(util, openpty) |
edaf8b1b | 252 | AC_CHECK_FUNCS([openpty hasmntopt setmntent endmntent]) |
1ba0013f SG |
253 | AC_CHECK_FUNCS([getline], |
254 | AM_CONDITIONAL(HAVE_GETLINE, true) | |
255 | AC_DEFINE(HAVE_GETLINE,1,[Have getline]), | |
256 | AM_CONDITIONAL(HAVE_GETLINE, false)) | |
257 | AC_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 | 263 | AC_PROG_GCC_TRADITIONAL |
95a717e9 | 264 | AC_PROG_SED |
5e97c3fc | 265 | |
266 | if test "x$GCC" = "xyes"; then | |
8aa4885c | 267 | CFLAGS="$CFLAGS -Wall -Werror" |
5e97c3fc | 268 | fi |
269 | ||
8aa4885c | 270 | # Files requiring some variable expansion |
5e97c3fc | 271 | AC_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 | ]) |
347 | AC_CONFIG_COMMANDS([default],[[]],[[]]) | |
348 | AC_OUTPUT | |
805415fc | 349 | |
8aa4885c SG |
350 | |
351 | # Detect missing setcap binary | |
352 | AC_CHECK_PROG(SETCAP, setcap, yes, no, $PATH$PATH_SEPARATOR/sbin) | |
805415fc | 353 | if test "x$SETCAP" = "xno"; then |
8aa4885c | 354 | AC_MSG_NOTICE([ |
805415fc | 355 | |
356 | Warning: | |
357 | -------- | |
358 | ||
87476557 FG |
359 | The setcap binary was not found. This means the tools to set the |
360 | privilege for the lxc commands are not available, that's ok, but you | |
361 | will need to run these commands as root or install libcap-2. | |
805415fc | 362 | |
363 | ]) | |
364 | ||
365 | else | |
366 | ||
f8dafdbb | 367 | AC_MSG_NOTICE([ |
805415fc | 368 | |
369 | Advice: | |
370 | ------- | |
371 | ||
87476557 | 372 | If you wish to have a non root user to use the lxc tools, |
237315ff DL |
373 | you can add the needed capabilities to the tools by invoking |
374 | the 'lxc-setcap' script. To remove the capabilities, use | |
87476557 | 375 | 'lxc-setcap -d'. |
805415fc | 376 | ]) |
805415fc | 377 | fi |