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