]>
Commit | Line | Data |
---|---|---|
1 | # -*- Autoconf -*- | |
2 | # Process this file with autoconf to produce a configure script. | |
3 | ||
4 | AC_INIT([lxc], [0.9.0]) | |
5 | ||
6 | AC_CONFIG_SRCDIR([configure.ac]) | |
7 | AC_CONFIG_AUX_DIR([config]) | |
8 | AC_CONFIG_HEADERS([src/config.h]) | |
9 | AM_INIT_AUTOMAKE([-Wall -Werror -Wno-portability]) | |
10 | AC_CANONICAL_HOST | |
11 | AM_PROG_CC_C_O | |
12 | AC_GNU_SOURCE | |
13 | ||
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` | |
20 | fi | |
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 | distroconf=default.conf.ubuntu | |
43 | ;; | |
44 | redhat|fedora|oracle|oracleserver) | |
45 | distroconf=default.conf.libvirt | |
46 | ;; | |
47 | *) | |
48 | echo -n "Linux distribution network config unknown, defaulting to lxc.network.type = empty" | |
49 | distroconf=default.conf.unknown | |
50 | ;; | |
51 | esac | |
52 | AC_MSG_RESULT([$with_distro]) | |
53 | AM_CONDITIONAL([HAVE_DEBIAN], [test x"$with_distro" = "xdebian" -o x"$with_distro" = "xubuntu"]) | |
54 | ||
55 | AC_CHECK_PROG([NEWUIDMAP], [newuidmap], [newuidmap]) | |
56 | AM_CONDITIONAL([HAVE_NEWUIDMAP], [test -n "$NEWUIDMAP"]) | |
57 | ||
58 | # Allow disabling rpath | |
59 | AC_ARG_ENABLE([rpath], | |
60 | [AC_HELP_STRING([--disable-rpath], [do not set rpath in executables])], | |
61 | [], [enable_rpath=yes]) | |
62 | AM_CONDITIONAL([ENABLE_RPATH], [test "x$enable_rpath" = "xyes"]) | |
63 | ||
64 | # Documentation (manpages) | |
65 | AC_ARG_ENABLE([doc], | |
66 | [AC_HELP_STRING([--enable-doc], [make mans (requires docbook2man or docbook2x-man to be installed) [default=auto]])], | |
67 | [], [enable_doc=auto]) | |
68 | ||
69 | if test "x$enable_doc" = "xyes" -o "x$enable_doc" = "xauto"; then | |
70 | db2xman="" | |
71 | dbparsers="docbook2x-man db2x_docbook2man docbook2man" | |
72 | ||
73 | AC_MSG_CHECKING(for docbook2x-man) | |
74 | for name in ${dbparsers}; do | |
75 | if "$name" --help >/dev/null 2>&1; then | |
76 | db2xman="$name" | |
77 | break; | |
78 | fi | |
79 | done | |
80 | ||
81 | if test -n "${db2xman}"; then | |
82 | AC_MSG_RESULT([${db2xman}]) | |
83 | else | |
84 | AC_MSG_RESULT([no]) | |
85 | if test "x$enable_doc" = "xyes"; then | |
86 | AC_MSG_ERROR([docbook2x-man required by man request, but not found]) | |
87 | fi | |
88 | fi | |
89 | ||
90 | AC_SUBST(db2xman) | |
91 | fi | |
92 | AM_CONDITIONAL([ENABLE_DOCBOOK], [test "x$db2xman" != "x"]) | |
93 | ||
94 | if test "x$db2xman" = "xdocbook2man"; then | |
95 | docdtd="\"-//Davenport//DTD DocBook V3.0//EN\"" | |
96 | else | |
97 | docdtd="\"-//OASIS//DTD DocBook XML\" \"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd\"" | |
98 | fi | |
99 | AC_SUBST(docdtd) | |
100 | ||
101 | # Apparmor | |
102 | AC_ARG_ENABLE([apparmor], | |
103 | [AC_HELP_STRING([--enable-apparmor], [enable apparmor])], | |
104 | [], [enable_apparmor=check]) | |
105 | ||
106 | if test "$enable_apparmor" = "check" ; then | |
107 | AC_CHECK_LIB([apparmor],[aa_change_profile],[enable_apparmor=yes], [enable_apparmor=no]) | |
108 | fi | |
109 | AM_CONDITIONAL([ENABLE_APPARMOR], [test "x$enable_apparmor" = "xyes"]) | |
110 | ||
111 | AC_CHECK_LIB([gnutls], [gnutls_hash_fast]) | |
112 | ||
113 | AM_COND_IF([ENABLE_APPARMOR], | |
114 | [AC_CHECK_HEADER([sys/apparmor.h],[],[AC_MSG_ERROR([You must install the AppArmor development package in order to compile lxc])]) | |
115 | AC_CHECK_LIB([apparmor], [aa_change_profile],[],[AC_MSG_ERROR([You must install the AppArmor development package in order to compile lxc])]) | |
116 | AC_SUBST([APPARMOR_LIBS], [-lapparmor])]) | |
117 | ||
118 | # Seccomp syscall filter | |
119 | AC_ARG_ENABLE([seccomp], | |
120 | [AC_HELP_STRING([--enable-seccomp], [enable seccomp])], | |
121 | [], [enable_seccomp=check]) | |
122 | ||
123 | if test "$enable_seccomp" = "check" ; then | |
124 | AC_CHECK_LIB([seccomp],[seccomp_init],[enable_seccomp=yes],[enable_seccomp=no]) | |
125 | fi | |
126 | AM_CONDITIONAL([ENABLE_SECCOMP], [test "x$enable_seccomp" = "xyes"]) | |
127 | ||
128 | AM_COND_IF([ENABLE_SECCOMP], | |
129 | [AC_CHECK_HEADER([seccomp.h],[],[AC_MSG_ERROR([You must install the seccomp development package in order to compile lxc])]) | |
130 | AC_CHECK_LIB([seccomp], [seccomp_init],[],[AC_MSG_ERROR([You must install the seccomp development package in order to compile lxc])]) | |
131 | AC_SUBST([SECCOMP_LIBS], [-lseccomp])]) | |
132 | ||
133 | # HAVE_SCMP_FILTER_CTX=1 will tell us we have libseccomp api >= 1.0.0 | |
134 | AC_CHECK_TYPES([scmp_filter_ctx], [], [], [#include <seccomp.h>]) | |
135 | ||
136 | # Configuration examples | |
137 | AC_ARG_ENABLE([examples], | |
138 | [AC_HELP_STRING([--disable-examples], [do not install configuration examples])], | |
139 | [], [enable_examples=yes]) | |
140 | AM_CONDITIONAL([ENABLE_EXAMPLES], [test "x$enable_examples" = "xyes"]) | |
141 | ||
142 | # Python3 module and scripts | |
143 | AC_ARG_ENABLE([python], | |
144 | [AC_HELP_STRING([--enable-python], [enable python binding])], | |
145 | [enable_python=yes], [enable_python=no]) | |
146 | AM_CONDITIONAL([ENABLE_PYTHON], [test "x$enable_python" = "xyes"]) | |
147 | ||
148 | AM_COND_IF([ENABLE_PYTHON], | |
149 | [AM_PATH_PYTHON([3.2], [], [AC_MSG_ERROR([You must install python3])]) | |
150 | PKG_CHECK_MODULES([PYTHONDEV], [python3 >= 3.2],[],[AC_MSG_ERROR([You must install python3-dev])]) | |
151 | AC_DEFINE_UNQUOTED([ENABLE_PYTHON], 1, [Python3 is available])]) | |
152 | ||
153 | # Lua module and scripts | |
154 | if test x"$with_distro" = "xdebian" -o x"$with_distro" = "xubuntu" ; then | |
155 | LUAPKGCONFIG=lua5.1 | |
156 | else | |
157 | LUAPKGCONFIG=lua | |
158 | fi | |
159 | ||
160 | AC_ARG_ENABLE([lua], | |
161 | [AC_HELP_STRING([--enable-lua], [enable lua binding])], | |
162 | [enable_lua=yes], [enable_lua=no]) | |
163 | ||
164 | AM_CONDITIONAL([ENABLE_LUA], [test "x$enable_lua" = "xyes"]) | |
165 | ||
166 | AM_COND_IF([ENABLE_LUA], | |
167 | [PKG_CHECK_MODULES([LUA], [$LUAPKGCONFIG >= 5.1],[],[AC_MSG_ERROR([You must install lua-devel for lua 5.1])]) | |
168 | AC_DEFINE_UNQUOTED([ENABLE_LUA], 1, [Lua is available])]) | |
169 | ||
170 | # Optional test binaries | |
171 | AC_ARG_ENABLE([tests], | |
172 | [AC_HELP_STRING([--enable-tests], [build test/example binaries])], | |
173 | [enable_tests=yes], [enable_tests=no]) | |
174 | AM_CONDITIONAL([ENABLE_TESTS], [test "x$enable_tests" = "xyes"]) | |
175 | ||
176 | # LXC container path, where the containers are actually stored | |
177 | # This is overridden by an entry in the file called LXCCONF | |
178 | # (i.e. /etc/lxc/lxc.conf) | |
179 | AC_ARG_WITH([config-path], | |
180 | [AC_HELP_STRING( | |
181 | [--with-config-path=dir], | |
182 | [lxc configuration repository path] | |
183 | )], [], [with_config_path=['${localstatedir}/lib/lxc']]) | |
184 | ||
185 | # The path of the global lxc configuration file. | |
186 | AC_ARG_WITH([global-conf], | |
187 | [AC_HELP_STRING( | |
188 | [--with-global-conf=dir], | |
189 | [global lxc configuration file] | |
190 | )], [], [with_global_conf=['${sysconfdir}/lxc/lxc.conf']]) | |
191 | ||
192 | # Rootfs path, where the container mount structure is assembled | |
193 | AC_ARG_WITH([rootfs-path], | |
194 | [AC_HELP_STRING( | |
195 | [--with-rootfs-path=dir], | |
196 | [lxc rootfs mount point] | |
197 | )], [], [with_rootfs_path=['${libdir}/lxc/rootfs']]) | |
198 | ||
199 | # Container log path. By default, use $lxcpath. | |
200 | AC_MSG_CHECKING([Whether to place logfiles in container config path]) | |
201 | AC_ARG_ENABLE([configpath-log], | |
202 | [AC_HELP_STRING([--enable-configpath-log], [use logfiles in config path])], | |
203 | [use_configpath_logs=yes], [use_configpath_logs=no]) | |
204 | AC_MSG_RESULT([$use_configpath_logs]) | |
205 | AM_CONDITIONAL([USE_CONFIGPATH_LOGS], [test "$use_configpath_logs" = "yes"]) | |
206 | ||
207 | if test "$use_configpath_logs" = "yes"; then | |
208 | default_log_path="${with_config_path}" | |
209 | else | |
210 | default_log_path="${localstatedir}/log/lxc" | |
211 | fi | |
212 | ||
213 | AC_ARG_WITH([log-path], | |
214 | [AC_HELP_STRING( | |
215 | [--with-log-path=dir], | |
216 | [per container log path] | |
217 | )], [], [with_log_path=['${default_log_path}']]) | |
218 | ||
219 | # Expand some useful variables | |
220 | AS_AC_EXPAND(PREFIX, "$prefix") | |
221 | AS_AC_EXPAND(LIBDIR, "$libdir") | |
222 | AS_AC_EXPAND(BINDIR, "$bindir") | |
223 | AS_AC_EXPAND(LIBEXECDIR, "$libexecdir") | |
224 | AS_AC_EXPAND(INCLUDEDIR, "$includedir") | |
225 | AS_AC_EXPAND(SYSCONFDIR, "$sysconfdir") | |
226 | AS_AC_EXPAND(LXC_DEFAULT_CONFIG, "$sysconfdir/lxc/default.conf") | |
227 | AS_AC_EXPAND(DATADIR, "$datadir") | |
228 | AS_AC_EXPAND(LOCALSTATEDIR, "$localstatedir") | |
229 | AS_AC_EXPAND(DOCDIR, "$docdir") | |
230 | AS_AC_EXPAND(LXC_DISTRO_CONF, "$distroconf") | |
231 | AS_AC_EXPAND(LXC_GENERATE_DATE, "$(date)") | |
232 | AS_AC_EXPAND(LXCPATH, "$with_config_path") | |
233 | AS_AC_EXPAND(LXC_GLOBAL_CONF, "$with_global_conf") | |
234 | AS_AC_EXPAND(LXCROOTFSMOUNT, "$with_rootfs_path") | |
235 | AS_AC_EXPAND(LXCTEMPLATEDIR, "$datadir/lxc/templates") | |
236 | AS_AC_EXPAND(LXCHOOKDIR, "$datadir/lxc/hooks") | |
237 | AS_AC_EXPAND(LXCINITDIR, "$libexecdir") | |
238 | AS_AC_EXPAND(LOGPATH, "$with_log_path") | |
239 | ||
240 | # Check for some standard kernel headers | |
241 | AC_CHECK_HEADERS([linux/unistd.h linux/netlink.h linux/genetlink.h], | |
242 | [], | |
243 | AC_MSG_ERROR([Please install the Linux kernel headers.]), | |
244 | [#include <sys/socket.h>]) | |
245 | ||
246 | # Allow disabling libcap support | |
247 | AC_ARG_ENABLE([capabilities], | |
248 | [AC_HELP_STRING([--disable-capabilities], [disable kernel capabilities])], | |
249 | [], [enable_capabilities=yes]) | |
250 | ||
251 | # Check for libcap support | |
252 | if test "x$enable_capabilities" = "xyes"; then | |
253 | AC_CHECK_LIB(cap,cap_set_proc,caplib=yes,caplib=no) | |
254 | AC_MSG_CHECKING([linux capabilities]) | |
255 | if test "x$caplib" = "xyes" ; then | |
256 | CAP_LIBS="-lcap" | |
257 | AC_MSG_RESULT([$CAP_LIBS]) | |
258 | else | |
259 | AC_MSG_RESULT([no]) | |
260 | AC_MSG_ERROR([You are missing libcap support. If you really want to build without kernel capabilities, use --disable-capabilities]) | |
261 | fi | |
262 | else | |
263 | CAP_LIBS="" | |
264 | fi | |
265 | AC_SUBST([CAP_LIBS]) | |
266 | ||
267 | # Check for alternate C libraries | |
268 | AC_MSG_CHECKING(for bionic libc) | |
269 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM( | |
270 | [[#ifndef __ANDROID__ | |
271 | error: Not bionic! | |
272 | #endif]])], | |
273 | [is_bionic=yes], | |
274 | [is_bionic=no]) | |
275 | if test "x$is_bionic" = "xyes"; then | |
276 | AC_DEFINE([IS_BIONIC], 1, [bionic libc]) | |
277 | AC_MSG_RESULT([yes]) | |
278 | else | |
279 | AC_MSG_RESULT([no]) | |
280 | fi | |
281 | AM_CONDITIONAL([IS_BIONIC], [test "x$is_bionic" = "xyes"]) | |
282 | ||
283 | # Some systems lack PR_CAPBSET_DROP definition => HAVE_DECL_PR_CAPBSET_DROP | |
284 | AC_CHECK_DECLS([PR_CAPBSET_DROP], [], [], [#include <sys/prctl.h>]) | |
285 | ||
286 | # Check for some headers | |
287 | AC_CHECK_HEADERS([sys/signalfd.h pty.h sys/capability.h sys/personality.h utmpx.h sys/timerfd.h]) | |
288 | ||
289 | # Check for some syscalls functions | |
290 | AC_CHECK_FUNCS([setns pivot_root sethostname unshare]) | |
291 | ||
292 | # Check for some functions | |
293 | AC_CHECK_LIB(util, openpty) | |
294 | AC_CHECK_FUNCS([openpty hasmntopt setmntent endmntent]) | |
295 | AC_CHECK_FUNCS([getline], | |
296 | AM_CONDITIONAL(HAVE_GETLINE, true) | |
297 | AC_DEFINE(HAVE_GETLINE,1,[Have getline]), | |
298 | AM_CONDITIONAL(HAVE_GETLINE, false)) | |
299 | AC_CHECK_FUNCS([fgetln], | |
300 | AM_CONDITIONAL(HAVE_FGETLN, true) | |
301 | AC_DEFINE(HAVE_FGETLN,1,[Have fgetln]), | |
302 | AM_CONDITIONAL(HAVE_FGETLN, false)) | |
303 | ||
304 | # Check for some libraries | |
305 | AC_SEARCH_LIBS(sem_open, [rt pthread]) | |
306 | AC_SEARCH_LIBS(clock_gettime, [rt]) | |
307 | ||
308 | # Check for some standard binaries | |
309 | AC_PROG_GCC_TRADITIONAL | |
310 | AC_PROG_SED | |
311 | ||
312 | if test "x$GCC" = "xyes"; then | |
313 | CFLAGS="$CFLAGS -Wall -Werror" | |
314 | fi | |
315 | ||
316 | # Files requiring some variable expansion | |
317 | AC_CONFIG_FILES([ | |
318 | Makefile | |
319 | lxc.pc | |
320 | lxc.spec | |
321 | config/Makefile | |
322 | ||
323 | doc/Makefile | |
324 | doc/legacy/lxc-ls.sgml | |
325 | doc/lxc-attach.sgml | |
326 | doc/lxc-cgroup.sgml | |
327 | doc/lxc-checkconfig.sgml | |
328 | doc/lxc-checkpoint.sgml | |
329 | doc/lxc-clone.sgml | |
330 | doc/lxc-console.sgml | |
331 | doc/lxc-create.sgml | |
332 | doc/lxc-destroy.sgml | |
333 | doc/lxc-device.sgml | |
334 | doc/lxc-execute.sgml | |
335 | doc/lxc-freeze.sgml | |
336 | doc/lxc-info.sgml | |
337 | doc/lxc-kill.sgml | |
338 | doc/lxc-ls.sgml | |
339 | doc/lxc-monitor.sgml | |
340 | doc/lxc-netstat.sgml | |
341 | doc/lxc-ps.sgml | |
342 | doc/lxc-restart.sgml | |
343 | doc/lxc-start-ephemeral.sgml | |
344 | doc/lxc-start.sgml | |
345 | doc/lxc-stop.sgml | |
346 | doc/lxc-top.sgml | |
347 | doc/lxc-unfreeze.sgml | |
348 | doc/lxc-unshare.sgml | |
349 | doc/lxc-version.sgml | |
350 | doc/lxc-wait.sgml | |
351 | ||
352 | doc/lxc.conf.sgml | |
353 | doc/lxc.sgml | |
354 | doc/common_options.sgml | |
355 | doc/see_also.sgml | |
356 | ||
357 | doc/rootfs/Makefile | |
358 | ||
359 | doc/examples/Makefile | |
360 | doc/examples/lxc-macvlan.conf | |
361 | doc/examples/lxc-vlan.conf | |
362 | doc/examples/lxc-no-netns.conf | |
363 | doc/examples/lxc-empty-netns.conf | |
364 | doc/examples/lxc-phys.conf | |
365 | doc/examples/lxc-veth.conf | |
366 | doc/examples/lxc-complex.conf | |
367 | ||
368 | hooks/Makefile | |
369 | ||
370 | templates/Makefile | |
371 | templates/lxc-cirros | |
372 | templates/lxc-debian | |
373 | templates/lxc-ubuntu | |
374 | templates/lxc-ubuntu-cloud | |
375 | templates/lxc-opensuse | |
376 | templates/lxc-busybox | |
377 | templates/lxc-fedora | |
378 | templates/lxc-oracle | |
379 | templates/lxc-altlinux | |
380 | templates/lxc-sshd | |
381 | templates/lxc-archlinux | |
382 | templates/lxc-alpine | |
383 | ||
384 | src/Makefile | |
385 | src/lxc/Makefile | |
386 | src/lxc/lxc-ps | |
387 | src/lxc/lxc-netstat | |
388 | src/lxc/lxc-checkconfig | |
389 | src/lxc/lxc-version | |
390 | src/lxc/lxc-start-ephemeral | |
391 | src/lxc/legacy/lxc-ls | |
392 | src/lxc/lxc.functions | |
393 | ||
394 | src/python-lxc/Makefile | |
395 | ||
396 | src/lua-lxc/Makefile | |
397 | ||
398 | src/tests/Makefile | |
399 | ]) | |
400 | AC_CONFIG_COMMANDS([default],[[]],[[]]) | |
401 | AC_OUTPUT |