sync to 0.30.213
[util-vserver.git] / configure.ac
1 dnl $Id: configure.ac 2539 2007-05-02 20:11:40Z dhozac $
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.213, vserver@list.linux-vserver.org)
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 ENSC_PATHPROG(RSYNC,     rsync,   [rsync])
65
66 ENSC_PATHPROG(DOXYGEN,   doxygen,  [:])
67 ENSC_PATHPROG(XSLTP,     xsltp,    [:])
68 ENSC_PATHPROG(XSLTPROC,  xsltproc, [:])
69
70
71 AM_CONDITIONAL(HAVE_XSLTP,    test "$XSLTP"    != ':')
72 AM_CONDITIONAL(HAVE_XSLTPROC, test "$XSLTPROC" != ':')
73
74 if test x"$prefix" = x/; then
75         prefix=
76 fi      
77
78 ENSC_CHECK_CC_FLAG([-std=c99 -Wall -pedantic -W])
79 ENSC_CHECK_CXX_FLAG([-ansi   -Wall -pedantic -W -fmessage-length=0])
80
81 AC_MSG_CHECKING([whether to enable extra optimizations])
82 AC_ARG_ENABLE([extra-optimizations],
83               [AC_HELP_STRING([--disable-extra-optimizations],
84                               [disable certain extra optimizations (default: no)])],
85               [case "$enableval" in
86                   (yes) use_extra_optimizations=1;;
87                   (no)  use_extra_optimizations=;;
88                   (*)   AC_MSG_ERROR(['$enableval' is not a valid value for '--disable-extra-optimizations']);;
89                esac],
90               [use_extra_optimizations=1])
91
92 if test x"$use_extra_optimizations" = x; then
93         AC_MSG_RESULT(no)
94 else
95         AC_MSG_RESULT(yes)
96         ENSC_CHECK_CC_FLAG([-funit-at-a-time])
97         ENSC_CHECK_CXX_FLAG([-funit-at-a-time])
98 fi
99
100 AC_MSG_CHECKING([whether to enable debug-code in library])
101 AC_ARG_ENABLE([lib-debug],
102               [AC_HELP_STRING([--enable-lib-debug],
103                               [enable additional debug code in library (default: no)])],
104               [case "$enableval" in
105                   (yes) use_lib_debug=1;;
106                   (no)  use_lib_debug=;;
107                   (*)   AC_MSG_ERROR(['$enableval' is not a valid value for '--enable-lib-debug']);;
108                esac],
109               [ use_lib_debug= ])
110
111 if test x"$use_lib_debug" = x; then
112         AC_SUBST(LIB_DEBUG_CPPFLAGS, [-DNDEBUG])
113         AC_MSG_RESULT(no)
114 else
115         AC_SUBST(LIB_DEBUG_CPPFLAGS, [])
116         AC_MSG_RESULT(yes)
117 fi
118
119 AC_MSG_CHECKING([whether to enable expensive tests])
120 AC_ARG_ENABLE([expensive-tests],
121               [AC_HELP_STRING([--enable-expensive-tests],
122                               [disable tests which might be expensive on some systems (default: no)])],
123               [case "$enableval" in
124                  (yes|no)  use_expensive_tests=$enableval;;
125                  (*)       AC_MSG_ERROR(['$enableval' is not a valid value for '--enable-expensive-tests']);;
126                esac],
127               [ use_expensive_tests=no ])
128 AC_MSG_RESULT($use_expensive_tests)
129
130 AC_SUBST(ENSC_USE_EXPENSIVE_TESTS, "$use_expensive_tests")
131
132
133 ENSC_CHECK_PERSONALITY_FLAGS
134
135 AC_ARG_VAR(CC, [The C compiler])
136
137 ENSC_INITRDDIR(initrddir)
138 ENSC_RELEASE(RELEASE_CPPFLAGS)
139
140 # HACK: This needs to be before ENSC_DIETLIBC_NEED_COMPAT, or the alternative
141 # syscalls will never be enabled for glibc.
142 ENSC_SYSCALLNR(vserver,273,[lib/syscall-fallback.h])
143 ENSC_SYSCALL
144
145 dnl ###########################
146 dnl
147 dnl {some dietlibc related tests
148 dnl
149
150 case $host_cpu in
151         (i*86|athlon)   min_diet_ver=0.25;;
152         (ia64|hppa*)    min_diet_ver=0.29;;
153         (sparc*)        min_diet_ver=0.30;;
154         (x86_64)        min_diet_ver=0.27;;
155         (*)             min_diet_ver=0.28;;
156 esac
157
158 ENSC_ENABLE_DIETLIBC(USE_DIETLIBC, [$min_diet_ver])
159
160 if test x"$ensc_have_dietlibc" = xno; then
161         AC_MSG_WARN([***                                                         ***])
162         AC_MSG_WARN([*** it is strongly recommended to link util-vserver against ***])
163         AC_MSG_WARN([*** dietlibc;  glibc's NSS functions are very unreliable in ***])
164         AC_MSG_WARN([*** chroot() environments,  so you have to  expect problems ***])
165         AC_MSG_WARN([*** there.                                                  ***])
166         AC_MSG_WARN([***                                                         ***])
167         AM_CONDITIONAL(USE_DIETLIBC_COMPAT, false)
168 else
169         # HACK: libtool does not have cmdline options to build only
170         # dynamic libraries; this can be done with the
171         # '--disable-static' ./configure option only.  As our static
172         # libraries will be build with dietlibc, we have to do set
173         # this option which is evaluated by 'AC_PROG_LIBTOOL'
174         # below.  Therefore, this macro must not be called earlier.
175         enable_static=no
176
177         ENSC_DIETLIBC_NEED_COMPAT(USE_DIETLIBC_COMPAT)
178 fi
179
180 AM_CONDITIONAL(ENSC_USE_DIETLIBC, test x"$ensc_have_dietlibc" = xyes)
181 AM_CONDITIONAL(ENSC_USE_GLIBC,    true)
182
183 # HACK: see comments at 'enable_static' above
184 AC_PROG_LIBTOOL
185 dnl
186 dnl dietlibc stuff ends here}
187 dnl
188 dnl ##########################
189
190
191 ENSC_UV_VROOTDIR(vserverdir)
192 ENSC_CHANGELOG
193
194
195 dnl ##########################
196 dnl
197 dnl {Check whether to use external kernel headers
198 dnl
199 AC_MSG_CHECKING([whether to use internal kernel headers])
200 AC_ARG_ENABLE([internal-headers],
201               [AC_HELP_STRING([--disable-internal-headers],
202                               [use vserver specific headers from the kernel instead of the shipped versions (default: no)])],
203               [case "$enableval" in
204                   (yes|no) ;;
205                   (*)      AC_MSG_ERROR(['$i' is not a supported value for '--disable-internal-headers']);;
206                esac],
207               [enable_internal_headers=yes])
208
209 AM_CONDITIONAL(ENSC_ENABLE_INTERNAL_HEADERS, [test x"$enable_internal_headers" = xyes])
210 AC_MSG_RESULT([$enable_internal_headers])
211 dnl
212 dnl the check regarding external kernel headers ends here}
213 dnl
214 dnl ##########################
215
216 dnl ##########################
217 dnl
218 dnl {Check for the APIs to be used
219 dnl
220 AH_TEMPLATE(VC_ENABLE_API_COMPAT,   [Enable support for compatibility syscall API])
221 AH_TEMPLATE(VC_ENABLE_API_LEGACY,   [Enable support for old, /proc parsing API])
222 AH_TEMPLATE(VC_ENABLE_API_V11,      [Enable support for API of vserver 1.1.x])
223 AH_TEMPLATE(VC_ENABLE_API_FSCOMPAT, [Enable support for filesystem compatibility API])
224 AH_TEMPLATE(VC_ENABLE_API_V13OBS,   [Enable support for some obsoleted API of vserver 1.3.x])
225 AH_TEMPLATE(VC_ENABLE_API_V13,      [Enable support for API of vserver 1.3.x])
226 AH_TEMPLATE(VC_ENABLE_API_NET,      [Enable support for network context API])
227 AH_TEMPLATE(VC_ENABLE_API_V21,      [Enable support for API of vserver 2.1.x])
228 AH_TEMPLATE(VC_ENABLE_API_OLDPROC,  [Enable API for a backward compatible /proc parsing])
229 AH_TEMPLATE(VC_ENABLE_API_OLDUTS,   [Enable API for a backward compatible uts handling])
230
231 AC_MSG_CHECKING([for supported APIs])
232 AC_ARG_ENABLE([apis],
233               [AC_HELP_STRING([--enable-apis=APIS],
234                               [enable support for the given apis; possible values are: legacy,compat,v11,fscompat,v13obs,v13,net, ALL,NOLEGACY (default: v13,net,v21)])],
235               [],
236               [enable_apis=v13,net,v21])
237
238 test x"$enable_apis" != xALL      || enable_apis='legacy,compat,v11,fscompat,v13obs,v13,net,v21'
239 test x"$enable_apis" != xNOLEGACY || enable_apis='compat,v11,fscompat,v13,net,v21'
240 enable_api_oldproc=
241 enable_api_olduts=
242 old_IFS=$IFS
243 IFS=,;
244
245 for i in $enable_apis; do
246         case "$i" in
247                 (compat)        AC_DEFINE(VC_ENABLE_API_COMPAT,   1)
248                                 enable_api_oldproc=${enable_api_oldproc:-1}
249                                 enable_api_olduts=${enable_api_olduts:-1}
250                                 ;;
251                 (legacy)        AC_DEFINE(VC_ENABLE_API_LEGACY,   1)
252                                 enable_api_oldproc=${enable_api_oldproc:-1}
253                                 enable_api_olduts=${enable_api_olduts:-1}
254                                 ;;
255                 (v11)           AC_DEFINE(VC_ENABLE_API_V11,      1)
256                                 enable_api_oldproc=${enable_api_oldproc:-1}
257                                 enable_api_olduts=${enable_api_olduts:-1}
258                                 ;;
259                 (fscompat)      AC_DEFINE(VC_ENABLE_API_FSCOMPAT, 1);;
260                 (v13obs)        AC_DEFINE(VC_ENABLE_API_V13OBS,   1)
261                                 AC_DEFINE(VC_ENABLE_API_V13,      1);;
262                 (v13)           AC_DEFINE(VC_ENABLE_API_V13,      1);;
263                 (net)           AC_DEFINE(VC_ENABLE_API_NET,      1);;
264                 (v21)           AC_DEFINE(VC_ENABLE_API_V21,      1);;
265                 (oldproc)       enable_api_oldproc=2;;
266                 (olduts)        enable_api_olduts=2;;
267                 (*)             AC_MSG_ERROR(['$i' is not a supported API]);;
268         esac
269 done
270 IFS=$old_IFS
271 if test x"$enable_api_oldproc" != x; then
272         AC_DEFINE(VC_ENABLE_API_OLDPROC, 1)
273         test x"$enable_api_oldproc" != x2 && enable_apis="$enable_apis,oldproc"
274 fi
275 if test x"$enable_api_olduts" != x; then
276         AC_DEFINE(VC_ENABLE_API_OLDUTS, 1)
277         test x"$enable_api_olduts" != x2 && enable_apis="$enable_apis,olduts"
278 fi
279 AC_MSG_RESULT([$enable_apis])
280 dnl
281 dnl the check for used APIs ends here}
282 dnl
283 dnl ##########################
284
285
286 ENSC_CHECK_EXT2FS_HEADER
287 AC_CHECK_FUNCS([vserver])
288 AC_CHECK_DECLS(MS_MOVE,,,[#include <linux/fs.h>])
289 AC_CHECK_TYPES(xid_t,,,[#include <sys/types.h>])
290 AC_CHECK_TYPES(nid_t,,,[#include <sys/types.h>])
291
292 AC_CHECK_HEADERS([sys/capability.h])
293
294 dnl vlogin might need -lutil
295 if test x"$ensc_have_dietlibc" = xno; then
296         AC_CHECK_FUNC([openpty],, [AC_CHECK_LIB([util], [openpty],, [AC_MSG_ERROR([
297 ****
298 **** openpty could not be found
299 ****])])])
300 fi
301
302
303 dnl ########################
304 dnl
305 dnl {check for beecrypt
306 dnl
307 if test x"$ensc_cv_c99_c99compiler" = xyes; then
308         ensc_have_beecrypt=yes
309
310         if test x"$ensc_have_beecrypt" = xyes; then
311                 AC_CHECK_HEADER([beecrypt/beecrypt.h], [ : ],
312                                 [ ensc_have_beecrypt=no ])
313         fi
314                         
315         if test x"$ensc_have_beecrypt" = xyes; then
316                 AC_CHECK_LIB(beecrypt, hashFunctionContextInit, [ : ],
317                              [ ensc_have_beecrypt=no ])
318         fi
319
320         if test x"$ensc_have_beecrypt" != xyes; then
321                 AC_MSG_WARN([
322 ****
323 **** 'beecrypt' could not be found;
324 **** this will disable the build of 'vhashify'
325 ****])
326         fi
327 else
328         ensc_have_beecrypt=no
329 fi
330
331 AM_CONDITIONAL(ENSC_HAVE_BEECRYPT, test x"$ensc_have_beecrypt" = xyes)
332 AM_CONDITIONAL(ENSC_CAN_BEECRYPT_WITH_DIETLIBC, false)
333 dnl
334 dnl beecrypt stuff ends here}
335 dnl
336 dnl ########################
337
338
339 dnl Check what distro this is, use Gentoo initscripts if appropriate
340 AC_MSG_CHECKING([for host initscripts])
341 AC_ARG_WITH(initscripts, AC_HELP_STRING([--with-initscripts=TYPE], [force host initscripts; valid values are 'gentoo' and 'sysv' (default: guess)]), [
342         case "$withval" in
343         gentoo) ensc_with_init=gentoo;;
344         sysv)   ensc_with_init=sysv;;
345         *)      AC_MSG_ERROR([invalid initscripts value, only gentoo and sysv are supported]);;
346         esac
347         ], [
348         if test -e /etc/gentoo-release; then
349                 ensc_with_init=gentoo
350         else
351                 ensc_with_init=sysv
352         fi
353         ])
354 AC_MSG_RESULT([$ensc_with_init])
355 AM_CONDITIONAL(HAVE_GENTOO_INIT, test x"$ensc_with_init" = xgentoo)
356 AM_CONDITIONAL(HAVE_SYSV_INIT, test x"$ensc_with_init" = xsysv)
357
358
359 dnl BIG HACK! Do some autodetection here!
360 AC_DEFINE(UTMP_GID, [22], [The utmp gid-number])
361
362 if false; then
363         AC_DEFINE(HAVE_GROWING_STACK, [1], [Define to 1 if the stack is on growing addresses])
364 fi
365
366 AC_DEFINE(_FILE_OFFSET_BITS, [64], [Use 64bit interface for filesystem operations])
367
368 dnl ########################
369 dnl
370 dnl {The final info-page
371 dnl
372 ensc_cxx_affected=" (affected: vbuild, vcheck)"
373 ensc_c99_affected=" (affected: vunify, vcopy, vhashify, vdlimit)"
374 ensc_diet_msg=" (you have been warned)"
375 ensc_diet_version_msg=" ($ensc_version_dietlibc)"
376 ensc_diet_compat_msg=" (using -lcompat)"
377 test x"$ensc_cv_cxx_cxxcompiler"    = xno || ensc_cxx_affected=
378 test x"$ensc_cv_c99_c99compiler"    = xno || ensc_c99_affected=
379 test x"$ensc_have_dietlibc"         = xno || ensc_diet_msg=
380 test x"$ensc_version_dietlibc"     != x   || ensc_diet_version_msg=
381 test x"$ensc_have_dietlibc$ensc_cv_c_dietlibc_compat" = xyesyes || ensc_diet_compat_msg=
382
383 AH_BOTTOM([#include "compat.h"
384 ])
385 AC_CONFIG_COMMANDS_PRE([
386                         FEATURES_TXT="\
387 Features:
388                        CC: $CC, $($CC   --version | sed -e '1p;d')
389                       CXX: $CXX, $($CXX --version | sed -e '1p;d')
390                  CPPFLAGS: '$CPPFLAGS'
391                    CFLAGS: '$CFLAGS'
392                  CXXFLAGS: '$CXXFLAGS'
393                build/host: $build/$host
394              Use dietlibc: $ensc_have_dietlibc$ensc_diet_version_msg$ensc_diet_msg$ensc_diet_compat_msg
395        Build C++ programs: $ensc_cv_cxx_cxxcompiler$ensc_cxx_affected
396        Build C99 programs: $ensc_cv_c99_c99compiler$ensc_c99_affected
397            Available APIs: $enable_apis
398             ext2fs Source: $ensc_cv_test_ext2fs_header
399     syscall(2) invocation: $with_syscall
400       vserver(2) syscall#: $ensc_cv_value_syscall_vserver
401    
402 Paths:
403                    prefix: $prefix
404         sysconf-Directory: $sysconfdir
405             cfg-Directory: $sysconfdir/vservers
406          initrd-Directory: $initrddir
407        pkgstate-Directory: $localstatedir/run/vservers
408           vserver-Rootdir: $vserverdir
409 "
410                         echo "$FEATURES_TXT" >FEATURES.txt
411                         ])
412 dnl
413 dnl final info-page ends here}
414 dnl
415 dnl ########################
416
417 AC_CONFIG_FILES([util-vserver.spec Makefile distrib/Makefile lib/apidoc/Doxyfile])
418 AC_OUTPUT
419
420 AC_MSG_NOTICE([
421
422 $PACKAGE_STRING
423
424 $FEATURES_TXT])