Add support for vserver-build -m template, which extracts tarballs.
[util-vserver.git] / configure.ac
1 dnl $Id$
2
3 dnl Copyright (C) 2003,2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
4 dnl  
5 dnl This program is free software; you can redistribute it and/or modify
6 dnl it under the terms of the GNU General Public License as published by
7 dnl the Free Software Foundation; either version 2, or (at your option)
8 dnl any later version.
9 dnl  
10 dnl This program is distributed in the hope that it will be useful,
11 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
12 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 dnl GNU General Public License for more details.
14 dnl  
15 dnl You should have received a copy of the GNU General Public License
16 dnl along with this program; if not, write to the Free Software
17 dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 dnl  
19 dnl  
20 dnl As a special exception to the GNU General Public License, if you
21 dnl distribute this file as part of a program that contains a configuration
22 dnl script generated by Autoconf, you may include it under the same
23 dnl distribution terms that you use for the rest of that program.
24 dnl  
25
26 AC_PREREQ(2.57)
27 AC_INIT(util-vserver, 0.30.210, enrico.scholz@informatik.tu-chemnitz.de)
28 AC_CONFIG_SRCDIR([src/capchroot.c])
29 AC_CONFIG_HEADER([config.h])
30
31 AM_INIT_AUTOMAKE([1.9 gnits dist-bzip2 subdir-objects])
32 AM_MAINTAINER_MODE
33
34 AC_CANONICAL_BUILD
35 AC_CANONICAL_HOST
36
37 AC_SUBST(GPG_KEY, "0xFFD316AC53ACA43A!")
38
39 # Checks for programs.
40 AC_PROG_CXX
41 AC_PROG_CC
42 AC_PROG_INSTALL
43 AC_PROG_LN_S
44 AM_PROG_CC_C_O
45 ENSC_CXXCOMPILER
46 ENSC_C99COMPILER
47
48 ENSC_SET_SEARCHPATH([$PATH:/sbin:/usr/sbin:/usr/local/sbin])
49 ENSC_PATHPROG_STANDARD_TOOLS
50
51 ENSC_PATHPROG(IP,        ip,,      [Usually, this tool is shipped in the 'iproute' or 'iproute2' package of your distribution])
52 ENSC_PATHPROG(IPTABLES,  iptables)
53 ENSC_PATHPROG(MODPROBE,  modprobe)
54 ENSC_PATHPROG(NAMEIF,    nameif)
55 ENSC_PATHPROG(NOHUP,     nohup)
56 ENSC_PATHPROG(RMMOD,     rmmod)
57 ENSC_PATHPROG(VCONFIG,   vconfig,, [See http://www.candelatech.com/~greear/vlan.html; usually this tool is shipped in the 'vconfig' or 'vlan' package of your distribution])
58 ENSC_PATHPROG(WGET,      wget)
59 ENSC_PATHPROG(FILE,      file,    [file])
60 ENSC_PATHPROG(GZIP,      gzip,    [gzip])
61 ENSC_PATHPROG(BZIP2,     bzip2,   [bzip2])
62 ENSC_PATHPROG(CPIO,      cpio,    [cpio])
63 ENSC_PATHPROG(RESTORE,   restore, [restore])
64
65 ENSC_PATHPROG(DOXYGEN,   doxygen,  [:])
66 ENSC_PATHPROG(XSLTP,     xsltp,    [:])
67 ENSC_PATHPROG(XSLTPROC,  xsltproc, [:])
68
69
70 AM_CONDITIONAL(HAVE_XSLTP,    test "$XSLTP"    != ':')
71 AM_CONDITIONAL(HAVE_XSLTPROC, test "$XSLTPROC" != ':')
72         
73
74 ENSC_CHECK_CC_FLAG([-std=c99 -Wall -pedantic -W])
75 ENSC_CHECK_CXX_FLAG([-ansi   -Wall -pedantic -W -fmessage-length=0])
76
77 AC_MSG_CHECKING([whether to enable extra optimizations])
78 AC_ARG_ENABLE([extra-optimizations],
79               [AC_HELP_STRING([--disable-extra-optimizations],
80                               [disable certain extra optimizations (default: no)])],
81               [case "$enableval" in
82                   (yes) use_extra_optimizations=1;;
83                   (no)  use_extra_optimizations=;;
84                   (*)   AC_MSG_ERROR(['$enableval' is not a valid value for '--disable-extra-optimizations']);;
85                esac],
86               [use_extra_optimizations=1])
87
88 if test x"$use_extra_optimizations" = x; then
89         AC_MSG_RESULT(no)
90 else
91         AC_MSG_RESULT(yes)
92         ENSC_CHECK_CC_FLAG([-funit-at-a-time])
93         ENSC_CHECK_CXX_FLAG([-funit-at-a-time])
94 fi
95
96 AC_MSG_CHECKING([whether to enable debug-code in library])
97 AC_ARG_ENABLE([lib-debug],
98               [AC_HELP_STRING([--enable-lib-debug],
99                               [enable additional debug code in library (default: no)])],
100               [case "$enableval" in
101                   (yes) use_lib_debug=1;;
102                   (no)  use_lib_debug=;;
103                   (*)   AC_MSG_ERROR(['$enableval' is not a valid value for '--enable-lib-debug']);;
104                esac],
105               [ use_lib_debug= ])
106
107 if test x"$use_lib_debug" = x; then
108         AC_SUBST(LIB_DEBUG_CPPFLAGS, [-DNDEBUG])
109         AC_MSG_RESULT(no)
110 else
111         AC_SUBST(LIB_DEBUG_CPPFLAGS, [])
112         AC_MSG_RESULT(yes)
113 fi
114
115 AC_MSG_CHECKING([whether to enable expensive tests])
116 AC_ARG_ENABLE([expensive-tests],
117               [AC_HELP_STRING([--enable-expensive-tests],
118                               [disable tests which might be expensive on some systems (default: no)])],
119               [case "$enableval" in
120                  (yes|no)  use_expensive_tests=$enableval;;
121                  (*)       AC_MSG_ERROR(['$enableval' is not a valid value for '--enable-expensive-tests']);;
122                esac],
123               [ use_expensive_tests=no ])
124 AC_MSG_RESULT($use_expensive_tests)
125
126 AC_SUBST(ENSC_USE_EXPENSIVE_TESTS, "$use_expensive_tests")
127
128
129 ENSC_CHECK_PERSONALITY_FLAGS
130
131 AC_ARG_VAR(CC, [The C compiler])
132
133 ENSC_INITRDDIR(initrddir)
134 ENSC_RELEASE(RELEASE_CPPFLAGS)
135
136 dnl ###########################
137 dnl
138 dnl {some dietlibc related tests
139 dnl
140
141 case $host_cpu in
142         (i*86|athlon)   min_diet_ver=0.25;;
143         (ia64|hppa*)    min_diet_ver=0.29;;
144         (*)             min_diet_ver=0.28;;
145 esac
146
147 ENSC_ENABLE_DIETLIBC(USE_DIETLIBC, [$min_diet_ver])
148
149 if test x"$ensc_have_dietlibc" = xno; then
150         AC_MSG_WARN([***                                                         ***])
151         AC_MSG_WARN([*** it is strongly recommended to link util-vserver against ***])
152         AC_MSG_WARN([*** dietlibc;  glibc's NSS functions are very unreliable in ***])
153         AC_MSG_WARN([*** chroot() environments,  so you have to  expect problems ***])
154         AC_MSG_WARN([*** there.                                                  ***])
155         AC_MSG_WARN([***                                                         ***])
156         AM_CONDITIONAL(USE_DIETLIBC_COMPAT, false)
157 else
158         # HACK: libtool does not have cmdline options to build only
159         # dynamic libraries; this can be done with the
160         # '--disable-static' ./configure option only.  As our static
161         # libraries will be build with dietlibc, we have to do set
162         # this option which is evaluated by 'AC_PROG_LIBTOOL'
163         # below.  Therefore, this macro must not be called earlier.
164         enable_static=no
165
166         ENSC_DIETLIBC_SANITYCHECK
167         ENSC_DIETLIBC_NEED_COMPAT(USE_DIETLIBC_COMPAT)
168 fi
169
170 AM_CONDITIONAL(ENSC_USE_DIETLIBC, test x"$ensc_have_dietlibc" = xyes)
171 AM_CONDITIONAL(ENSC_USE_GLIBC,    true)
172
173 # HACK: see comments at 'enable_static' above
174 AC_PROG_LIBTOOL
175 dnl
176 dnl dietlibc stuff ends here}
177 dnl
178 dnl ##########################
179
180
181 ENSC_UV_VROOTDIR(vserverdir)
182 ENSC_CHANGELOG([trunk])
183
184
185 dnl ##########################
186 dnl
187 dnl {Check whether to use external kernel headers
188 dnl
189 AC_MSG_CHECKING([whether to use internal kernel headers])
190 AC_ARG_ENABLE([internal-headers],
191               [AC_HELP_STRING([--disable-internal-headers],
192                               [use vserver specific headers from the kernel instead of the shipped versions (default: no)])],
193               [case "$enableval" in
194                   (yes|no) ;;
195                   (*)      AC_MSG_ERROR(['$i' is not a supported value for '--disable-internal-headers']);;
196                esac],
197               [enable_internal_headers=yes])
198
199 AM_CONDITIONAL(ENSC_ENABLE_INTERNAL_HEADERS, [test x"$enable_internal_headers" = xyes])
200 AC_MSG_RESULT([$enable_internal_headers])
201 dnl
202 dnl the check regarding external kernel headers ends here}
203 dnl
204 dnl ##########################
205
206 dnl ##########################
207 dnl
208 dnl {Check for the APIs to be used
209 dnl
210 AH_TEMPLATE(VC_ENABLE_API_COMPAT,   [Enable support for compatibility syscall API])
211 AH_TEMPLATE(VC_ENABLE_API_LEGACY,   [Enable support for old, /proc parsing API])
212 AH_TEMPLATE(VC_ENABLE_API_V11,      [Enable support for API of vserver 1.1.x])
213 AH_TEMPLATE(VC_ENABLE_API_FSCOMPAT, [Enable support for filesystem compatibility API])
214 AH_TEMPLATE(VC_ENABLE_API_V13OBS,   [Enable support for some obsoleted API of vserver 1.3.x])
215 AH_TEMPLATE(VC_ENABLE_API_V13,      [Enable support for API of vserver 1.3.x])
216 AH_TEMPLATE(VC_ENABLE_API_NET,      [Enable support for network context API])
217 AH_TEMPLATE(VC_ENABLE_API_OLDPROC,  [Enable API for a backward compatible /proc parsing])
218 AH_TEMPLATE(VC_ENABLE_API_OLDUTS,   [Enable API for a backward compatible uts handling])
219
220 AC_MSG_CHECKING([for supported APIs])
221 AC_ARG_ENABLE([apis],
222               [AC_HELP_STRING([--enable-apis=APIS],
223                               [enable support for the given apis; possible values are: legacy,compat,v11,fscompat,v13obs,v13,net, ALL,NOLEGACY (default: v13,net)])],
224               [],
225               [enable_apis=v13,net])
226
227 test x"$enable_apis" != xALL      || enable_apis='legacy,compat,v11,fscompat,v13obs,v13,net'
228 test x"$enable_apis" != xNOLEGACY || enable_apis='compat,v11,fscompat,v13,net'
229 enable_api_oldproc=
230 enable_api_olduts=
231 old_IFS=$IFS
232 IFS=,;
233
234 for i in $enable_apis; do
235         case "$i" in
236                 (compat)        AC_DEFINE(VC_ENABLE_API_COMPAT,   1)
237                                 enable_api_oldproc=${enable_api_oldproc:-1}
238                                 enable_api_olduts=${enable_api_olduts:-1}
239                                 ;;
240                 (legacy)        AC_DEFINE(VC_ENABLE_API_LEGACY,   1)
241                                 enable_api_oldproc=${enable_api_oldproc:-1}
242                                 enable_api_olduts=${enable_api_olduts:-1}
243                                 ;;
244                 (v11)           AC_DEFINE(VC_ENABLE_API_V11,      1)
245                                 enable_api_oldproc=${enable_api_oldproc:-1}
246                                 enable_api_olduts=${enable_api_olduts:-1}
247                                 ;;
248                 (fscompat)      AC_DEFINE(VC_ENABLE_API_FSCOMPAT, 1);;
249                 (v13obs)        AC_DEFINE(VC_ENABLE_API_V13OBS,   1)
250                                 AC_DEFINE(VC_ENABLE_API_V13,      1);;
251                 (v13)           AC_DEFINE(VC_ENABLE_API_V13,      1);;
252                 (net)           AC_DEFINE(VC_ENABLE_API_NET,      1);;
253                 (oldproc)       enable_api_oldproc=2;;
254                 (olduts)        enable_api_olduts=2;;
255                 (*)             AC_MSG_ERROR(['$i' is not a supported API]);;
256         esac
257 done
258 IFS=$old_IFS
259 if test x"$enable_api_oldproc" != x; then
260         AC_DEFINE(VC_ENABLE_API_OLDPROC, 1)
261         test x"$enable_api_oldproc" != x2 && enable_apis="$enable_apis,oldproc"
262 fi
263 if test x"$enable_api_olduts" != x; then
264         AC_DEFINE(VC_ENABLE_API_OLDUTS, 1)
265         test x"$enable_api_olduts" != x2 && enable_apis="$enable_apis,olduts"
266 fi
267 AC_MSG_RESULT([$enable_apis])
268 dnl
269 dnl the check for used APIs ends here}
270 dnl
271 dnl ##########################
272
273
274 ENSC_SYSCALLNR(vserver,273,[lib/syscall-fallback.h])
275 ENSC_SYSCALL
276 ENSC_CHECK_EXT2FS_HEADER
277 AC_CHECK_FUNCS([vserver])
278 AC_CHECK_DECLS(MS_MOVE,,,[#include <linux/fs.h>])
279 AC_CHECK_TYPES(xid_t,,,[#include <sys/types.h>])
280 AC_CHECK_TYPES(nid_t,,,[#include <sys/types.h>])
281
282 AC_CHECK_HEADERS([sys/capability.h])
283
284
285 dnl ########################
286 dnl
287 dnl {check for beecrypt
288 dnl
289 if test x"$ensc_cv_c99_c99compiler" = xyes; then
290         ensc_have_beecrypt=yes
291
292         if test x"$ensc_have_beecrypt" = xyes; then
293                 AC_CHECK_HEADER([beecrypt/beecrypt.h], [ : ],
294                                 [ ensc_have_beecrypt=no ])
295         fi
296                         
297         if test x"$ensc_have_beecrypt" = xyes; then
298                 AC_CHECK_LIB(beecrypt, hashFunctionContextInit, [ : ],
299                              [ ensc_have_beecrypt=no ])
300         fi
301
302         if test x"$ensc_have_beecrypt" != xyes; then
303                 AC_MSG_WARN([
304 ****
305 **** 'beecrypt' could not be found;
306 **** this will disable the build of 'vhashify'
307 ****])
308         fi
309 else
310         ensc_have_beecrypt=no
311 fi
312
313 AM_CONDITIONAL(ENSC_HAVE_BEECRYPT, test x"$ensc_have_beecrypt" = xyes)
314 AM_CONDITIONAL(ENSC_CAN_BEECRYPT_WITH_DIETLIBC, false)
315 dnl
316 dnl beecrypt stuff ends here}
317 dnl
318 dnl ########################
319
320
321 dnl BIG HACK! Do some autodetection here!
322 AC_DEFINE(UTMP_GID, [22], [The utmp gid-number])
323
324 if false; then
325         AC_DEFINE(HAVE_GROWING_STACK, [1], [Define to 1 if the stack is on growing addresses])
326 fi
327
328 AC_DEFINE(_FILE_OFFSET_BITS, [64], [Use 64bit interface for filesystem operations])
329
330 dnl ########################
331 dnl
332 dnl {The final info-page
333 dnl
334 ensc_cxx_affected=" (affected: vbuild, vcheck)"
335 ensc_c99_affected=" (affected: vunify, vcopy, vhashify, vdlimit)"
336 ensc_diet_msg=" (you have been warned)"
337 ensc_diet_version_msg=" ($ensc_version_dietlibc)"
338 ensc_diet_compat_msg=" (using -lcompat)"
339 test x"$ensc_cv_cxx_cxxcompiler"    = xno || ensc_cxx_affected=
340 test x"$ensc_cv_c99_c99compiler"    = xno || ensc_c99_affected=
341 test x"$ensc_have_dietlibc"         = xno || ensc_diet_msg=
342 test x"$ensc_version_dietlibc"     != x   || ensc_diet_version_msg=
343 test x"$ensc_have_dietlibc$ensc_cv_c_dietlibc_compat" = xyesyes || ensc_diet_compat_msg=
344
345 AH_BOTTOM([#include "compat.h"
346 ])
347 AC_CONFIG_COMMANDS_PRE([
348                         FEATURES_TXT="\
349 Features:
350                        CC: $CC, $($CC   --version | sed -e '1p;d')
351                       CXX: $CXX, $($CXX --version | sed -e '1p;d')
352                  CPPFLAGS: '$CPPFLAGS'
353                    CFLAGS: '$CFLAGS'
354                  CXXFLAGS: '$CXXFLAGS'
355                build/host: $build/$host
356              Use dietlibc: $ensc_have_dietlibc$ensc_diet_version_msg$ensc_diet_msg$ensc_diet_compat_msg
357        Build C++ programs: $ensc_cv_cxx_cxxcompiler$ensc_cxx_affected
358        Build C99 programs: $ensc_cv_c99_c99compiler$ensc_c99_affected
359            Available APIs: $enable_apis
360             ext2fs Source: $ensc_cv_test_ext2fs_header
361     syscall(2) invocation: $with_syscall
362       vserver(2) syscall#: $ensc_cv_value_syscall_vserver
363    
364 Paths:
365                    prefix: $prefix
366         sysconf-Directory: $sysconfdir
367             cfg-Directory: $sysconfdir/vservers
368          initrd-Directory: $initrddir
369        pkgstate-Directory: $localstatedir/run/vservers
370           vserver-Rootdir: $vserverdir
371 "
372                         echo "$FEATURES_TXT" >FEATURES.txt
373                         ])
374 dnl
375 dnl final info-page ends here}
376 dnl
377 dnl ########################
378
379 AC_CONFIG_FILES([util-vserver.spec Makefile distrib/Makefile lib/apidoc/Doxyfile])
380 AC_OUTPUT
381
382 AC_MSG_NOTICE([
383
384 $PACKAGE_STRING
385
386 $FEATURES_TXT])