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