]>
Commit | Line | Data |
---|---|---|
1 | # -*- Autoconf -*- | |
2 | # Process this file with autoconf to produce a configure script. | |
3 | ||
4 | AC_INIT([lxc], [0.8.0]) | |
5 | ||
6 | AC_CONFIG_SRCDIR([configure.ac]) | |
7 | AC_CONFIG_AUX_DIR([config]) | |
8 | AM_CONFIG_HEADER([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 | AC_CHECK_PROG(SETCAP, setcap, yes, no, $PATH$PATH_SEPARATOR/sbin) | |
14 | ||
15 | AC_MSG_CHECKING([host distribution]) | |
16 | 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])) | |
17 | if test "z$with_distro" = "z"; then | |
18 | with_distro=`lsb_release -is` | |
19 | fi | |
20 | if test "z$with_distro" = "z"; then | |
21 | AC_CHECK_FILE(/etc/redhat-release,with_distro="redhat") | |
22 | AC_CHECK_FILE(/etc/oracle-release,with_distro="oracle") | |
23 | AC_CHECK_FILE(/etc/fedora-release,with_distro="fedora") | |
24 | AC_CHECK_FILE(/etc/SuSE-release,with_distro="suse") | |
25 | AC_CHECK_FILE(/etc/gentoo-release,with_distro="gentoo") | |
26 | AC_CHECK_FILE(/etc/debian_version,with_distro="debian") | |
27 | AC_CHECK_FILE(/etc/arch-release,with_distro="arch") | |
28 | AC_CHECK_FILE(/etc/slackware-version,with_distro="slackware") | |
29 | AC_CHECK_FILE(/etc/frugalware-release,with_distro="frugalware") | |
30 | AC_CHECK_FILE(/etc/mandrakelinux-release, with_distro="mandriva") | |
31 | AC_CHECK_FILE(/etc/mandriva-release,with_distro="mandriva") | |
32 | AC_CHECK_FILE(/etc/pardus-release,with_distro="pardus") | |
33 | fi | |
34 | with_distro=`echo ${with_distro} | tr '[[:upper:]]' '[[:lower:]]'` | |
35 | ||
36 | if test "z$with_distro" = "z"; then | |
37 | with_distro="unknown" | |
38 | fi | |
39 | case $with_distro in | |
40 | ubuntu) | |
41 | conffile=lxc.conf.ubuntu | |
42 | ;; | |
43 | redhat|fedora|oracle|oracleserver) | |
44 | conffile=lxc.conf.libvirt | |
45 | ;; | |
46 | *) | |
47 | echo -n "Linux distribution network config unknown, defaulting to lxc.network.type = empty" | |
48 | conffile=lxc.conf.unknown | |
49 | ;; | |
50 | esac | |
51 | AC_MSG_RESULT([$with_distro]) | |
52 | ||
53 | AM_CONDITIONAL([HAVE_DEBIAN], [test x"$with_distro" = "xdebian" -o x"$with_distro" = "xubuntu"]) | |
54 | ||
55 | AC_ARG_ENABLE([rpath], | |
56 | [AC_HELP_STRING([--disable-rpath], [do not set rpath in executables])], | |
57 | [], [enable_rpath=yes]) | |
58 | ||
59 | AM_CONDITIONAL([ENABLE_RPATH], [test "x$enable_rpath" = "xyes"]) | |
60 | ||
61 | AC_ARG_ENABLE([doc], | |
62 | [AC_HELP_STRING([--enable-doc], [make mans (require docbook2x-man installed) [default=auto]])], | |
63 | [], [enable_doc=auto]) | |
64 | ||
65 | if test "x$enable_doc" = "xyes" -o "x$enable_doc" = "xauto"; then | |
66 | db2xman="" | |
67 | ||
68 | AC_MSG_CHECKING(for docbook2x-man) | |
69 | for name in docbook2x-man db2x_docbook2man; do | |
70 | if "$name" --help >/dev/null 2>&1; then | |
71 | db2xman="$name" | |
72 | break; | |
73 | fi | |
74 | done | |
75 | ||
76 | if test -n "${db2xman}"; then | |
77 | AC_MSG_RESULT(${db2xman}) | |
78 | else | |
79 | AC_MSG_RESULT(no) | |
80 | if test "x$enable_doc" = "xyes"; then | |
81 | AC_MSG_ERROR([docbook2x-man required by man request, but not found]) | |
82 | fi | |
83 | fi | |
84 | ||
85 | AC_SUBST(db2xman) | |
86 | fi | |
87 | ||
88 | AC_ARG_ENABLE([apparmor], | |
89 | [AC_HELP_STRING([--enable-apparmor], [enable apparmor])], | |
90 | [], [enable_apparmor=check]) | |
91 | ||
92 | if test "$enable_apparmor" = "check" ; then | |
93 | AC_CHECK_LIB([apparmor],[aa_change_profile],[enable_apparmor=yes], [enable_apparmor=no]) | |
94 | fi | |
95 | ||
96 | AM_CONDITIONAL([ENABLE_APPARMOR], [test "x$enable_apparmor" = "xyes"]) | |
97 | ||
98 | AM_COND_IF([ENABLE_APPARMOR], | |
99 | [AC_CHECK_HEADER([sys/apparmor.h],[],[AC_MSG_ERROR([You must install the AppArmor development package in order to compile lxc])]) | |
100 | AC_CHECK_LIB([apparmor], [aa_change_profile],[],[AC_MSG_ERROR([You must install the AppArmor development package in order to compile lxc])]) | |
101 | AC_SUBST([APPARMOR_LIBS], [-lapparmor])]) | |
102 | ||
103 | AC_ARG_ENABLE([seccomp], | |
104 | [AC_HELP_STRING([--enable-seccomp], [enable seccomp])], | |
105 | [], [enable_seccomp=check]) | |
106 | ||
107 | if test "$enable_seccomp" = "check" ; then | |
108 | AC_CHECK_LIB([seccomp],[seccomp_init],[enable_seccomp=yes],[enable_seccomp=no]) | |
109 | fi | |
110 | ||
111 | AM_CONDITIONAL([ENABLE_SECCOMP], [test "x$enable_seccomp" = "xyes"]) | |
112 | ||
113 | AM_COND_IF([ENABLE_SECCOMP], | |
114 | [AC_CHECK_HEADER([seccomp.h],[],[AC_MSG_ERROR([You must install the seccomp development package in order to compile lxc])]) | |
115 | AC_CHECK_LIB([seccomp], [seccomp_init],[],[AC_MSG_ERROR([You must install the seccomp development package in order to compile lxc])]) | |
116 | AC_SUBST([SECCOMP_LIBS], [-lseccomp])]) | |
117 | ||
118 | AM_CONDITIONAL([ENABLE_DOCBOOK], [test "x$db2xman" != "x"]) | |
119 | ||
120 | AC_ARG_ENABLE([examples], | |
121 | [AC_HELP_STRING([--disable-examples], [do not install configuration examples])], | |
122 | [], [enable_examples=yes]) | |
123 | ||
124 | AM_CONDITIONAL([ENABLE_EXAMPLES], [test "x$enable_examples" = "xyes"]) | |
125 | ||
126 | AC_ARG_ENABLE([python], | |
127 | [AC_HELP_STRING([--enable-python], [enable python binding])], | |
128 | [enable_python=yes], [enable_python=no]) | |
129 | ||
130 | AM_CONDITIONAL([ENABLE_PYTHON], [test "x$enable_python" = "xyes"]) | |
131 | ||
132 | AM_COND_IF([ENABLE_PYTHON], | |
133 | [AM_PATH_PYTHON([3.2], [], [AC_MSG_ERROR([You must install python3])]) | |
134 | AC_CHECK_HEADER([python$PYTHON_VERSION/Python.h],[],[AC_MSG_ERROR([You must install python3-dev])]) | |
135 | AC_DEFINE_UNQUOTED([ENABLE_PYTHON], 1, [Python3 is available])]) | |
136 | ||
137 | AC_ARG_ENABLE([tests], | |
138 | [AC_HELP_STRING([--enable-tests], [build test/example binaries])], | |
139 | [enable_tests=yes], [enable_tests=no]) | |
140 | ||
141 | AM_CONDITIONAL([ENABLE_TESTS], [test "x$enable_tests" = "xyes"]) | |
142 | ||
143 | AS_AC_EXPAND(PREFIX, $prefix) | |
144 | AS_AC_EXPAND(LIBDIR, $libdir) | |
145 | AS_AC_EXPAND(BINDIR, $bindir) | |
146 | AS_AC_EXPAND(LIBEXECDIR, $libexecdir) | |
147 | AS_AC_EXPAND(INCLUDEDIR, $includedir) | |
148 | AS_AC_EXPAND(SYSCONFDIR, $sysconfdir) | |
149 | AS_AC_EXPAND(DATADIR, $datadir) | |
150 | AS_AC_EXPAND(LOCALSTATEDIR, $localstatedir) | |
151 | AS_AC_EXPAND(DOCDIR, $docdir) | |
152 | ||
153 | AC_ARG_WITH([config-path], | |
154 | [AC_HELP_STRING( | |
155 | [--with-config-path=dir], | |
156 | [lxc configuration repository path] | |
157 | )], [], [with_config_path=['${localstatedir}/lib/lxc']]) | |
158 | ||
159 | AC_ARG_WITH([rootfs-path], | |
160 | [AC_HELP_STRING( | |
161 | [--with-rootfs-path=dir], | |
162 | [lxc rootfs mount point] | |
163 | )], [], [with_rootfs_path=['${libdir}/lxc/rootfs']]) | |
164 | ||
165 | AS_AC_EXPAND(LXC_CONFFILE, $conffile) | |
166 | AS_AC_EXPAND(LXC_GENERATE_DATE, "$(date)") | |
167 | AS_AC_EXPAND(LXCPATH, "${with_config_path}") | |
168 | AS_AC_EXPAND(LXCROOTFSMOUNT, "${with_rootfs_path}") | |
169 | AS_AC_EXPAND(LXCTEMPLATEDIR, ['${datadir}/lxc/templates']) | |
170 | ||
171 | AS_AC_EXPAND(LXCINITDIR, ['${libexecdir}']) | |
172 | ||
173 | AC_CHECK_HEADERS([linux/unistd.h linux/netlink.h linux/genetlink.h], | |
174 | [], | |
175 | AC_MSG_ERROR([Please install the Linux kernel headers.]), | |
176 | [#include <sys/socket.h> | |
177 | ]) | |
178 | ||
179 | AC_CHECK_HEADERS([sys/capability.h], [], AC_MSG_ERROR([Please install the libcap development files.]), | |
180 | [#include <sys/types.h> | |
181 | #include <sys/capability.h>]) | |
182 | AC_CHECK_LIB(cap,cap_set_proc,caplib=yes,caplib=no) | |
183 | AC_MSG_CHECKING([linux capabilities]) | |
184 | if test "x$caplib" = "xyes" ; then | |
185 | CAP_LIBS="-lcap" | |
186 | AC_MSG_RESULT([$CAP_LIBS]) | |
187 | else | |
188 | AC_MSG_ERROR([not found]) | |
189 | fi | |
190 | AC_SUBST([CAP_LIBS]) | |
191 | ||
192 | # Some systems lack PR_CAPBSET_DROP definition => HAVE_DECL_PR_CAPBSET_DROP | |
193 | AC_CHECK_DECLS([PR_CAPBSET_DROP], [], [], [#include <sys/prctl.h>]) | |
194 | ||
195 | AC_CHECK_HEADERS([sys/signalfd.h]) | |
196 | ||
197 | AC_PROG_GCC_TRADITIONAL | |
198 | AC_PROG_SED | |
199 | ||
200 | if test "x$GCC" = "xyes"; then | |
201 | CFLAGS="$CFLAGS -Wall -Werror" | |
202 | fi | |
203 | ||
204 | AC_CONFIG_FILES([ | |
205 | Makefile | |
206 | lxc.pc | |
207 | lxc.spec | |
208 | config/Makefile | |
209 | ||
210 | doc/Makefile | |
211 | doc/lxc-create.sgml | |
212 | doc/lxc-destroy.sgml | |
213 | doc/lxc-execute.sgml | |
214 | doc/lxc-start.sgml | |
215 | doc/lxc-checkpoint.sgml | |
216 | doc/lxc-restart.sgml | |
217 | doc/lxc-stop.sgml | |
218 | doc/lxc-console.sgml | |
219 | doc/lxc-freeze.sgml | |
220 | doc/lxc-unfreeze.sgml | |
221 | doc/lxc-monitor.sgml | |
222 | doc/lxc-wait.sgml | |
223 | doc/lxc-ls.sgml | |
224 | doc/lxc-ps.sgml | |
225 | doc/lxc-cgroup.sgml | |
226 | doc/lxc-kill.sgml | |
227 | doc/lxc-attach.sgml | |
228 | doc/lxc.conf.sgml | |
229 | doc/lxc.sgml | |
230 | doc/common_options.sgml | |
231 | doc/see_also.sgml | |
232 | ||
233 | doc/rootfs/Makefile | |
234 | ||
235 | doc/examples/Makefile | |
236 | doc/examples/lxc-macvlan.conf | |
237 | doc/examples/lxc-vlan.conf | |
238 | doc/examples/lxc-no-netns.conf | |
239 | doc/examples/lxc-empty-netns.conf | |
240 | doc/examples/lxc-phys.conf | |
241 | doc/examples/lxc-veth.conf | |
242 | doc/examples/lxc-complex.conf | |
243 | ||
244 | templates/Makefile | |
245 | templates/lxc-lenny | |
246 | templates/lxc-debian | |
247 | templates/lxc-ubuntu-cloud | |
248 | templates/lxc-opensuse | |
249 | templates/lxc-busybox | |
250 | templates/lxc-fedora | |
251 | templates/lxc-oracle | |
252 | templates/lxc-altlinux | |
253 | templates/lxc-sshd | |
254 | templates/lxc-archlinux | |
255 | ||
256 | src/Makefile | |
257 | src/lxc/Makefile | |
258 | src/lxc/lxc-ps | |
259 | src/lxc/lxc-netstat | |
260 | src/lxc/lxc-checkconfig | |
261 | src/lxc/lxc-setcap | |
262 | src/lxc/lxc-setuid | |
263 | src/lxc/lxc-version | |
264 | src/lxc/lxc-create | |
265 | src/lxc/lxc-clone | |
266 | src/lxc/lxc-shutdown | |
267 | src/lxc/lxc-start-ephemeral | |
268 | src/lxc/lxc-destroy | |
269 | ||
270 | src/python-lxc/Makefile | |
271 | ||
272 | src/tests/Makefile | |
273 | ||
274 | ]) | |
275 | AC_CONFIG_COMMANDS([default],[[]],[[]]) | |
276 | AC_OUTPUT | |
277 | ||
278 | if test "x$SETCAP" = "xno"; then | |
279 | AC_MSG_NOTICE([ | |
280 | ||
281 | Warning: | |
282 | -------- | |
283 | ||
284 | The setcap binary was not found. This means the tools to set the | |
285 | privilege for the lxc commands are not available, that's ok, but you | |
286 | will need to run these commands as root or install libcap-2. | |
287 | ||
288 | ]) | |
289 | ||
290 | else | |
291 | ||
292 | AC_MSG_NOTICE([ | |
293 | ||
294 | Advice: | |
295 | ------- | |
296 | ||
297 | If you wish to have a non root user to use the lxc tools, | |
298 | you can add the needed capabilities to the tools by invoking | |
299 | the 'lxc-setcap' script. To remove the capabilities, use | |
300 | 'lxc-setcap -d'. | |
301 | ]) | |
302 | ||
303 | fi |