do not use the local kernelheaders anymore; this causes problems on
[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.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([--enable-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 '--enable-expensive-tests']);;
117                esac],
118               [ use_expensive_tests=no ])
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_UV_VROOTDIR(vserverdir)
177 ENSC_CHANGELOG([trunk])
178
179
180 dnl ##########################
181 dnl
182 dnl {Check whether to use external kernel headers
183 dnl
184 AC_MSG_CHECKING([whether to use internal kernel headers])
185 AC_ARG_ENABLE([internal-headers],
186               [AC_HELP_STRING([--disable-internal-headers],
187                               [use vserver specific headers from the kernel instead of the shipped versions (default: no)])],
188               [case "$enableval" in
189                   (yes|no) ;;
190                   (*)      AC_MSG_ERROR(['$i' is not a supported value for '--disable-internal-headers']);;
191                esac],
192               [enable_internal_headers=yes])
193
194 AM_CONDITIONAL(ENSC_ENABLE_INTERNAL_HEADERS, [test x"$enable_internal_headers" = xyes])
195 AC_MSG_RESULT([$enable_internal_headers])
196 dnl
197 dnl the check regarding external kernel headers ends here}
198 dnl
199 dnl ##########################
200
201 dnl ##########################
202 dnl
203 dnl {Check for the APIs to be used
204 dnl
205 AC_MSG_CHECKING([for supported APIs])
206 AC_ARG_ENABLE([apis],
207               [AC_HELP_STRING([--enable-apis=APIS],
208                               [enable support for the given apis; possible values are: legacy,compat,v11,v13,fscompat,net,ALL (default: all except 'legacy')])],
209               [],
210               [enable_apis=compat,v11,v13,fscompat,net])
211
212 test x"$enable_apis" != xALL || enable_apis='legacy,compat,v11,v13,fscompat,net'
213 enable_api_oldproc=
214 enable_api_olduts=
215 old_IFS=$IFS
216 IFS=,;
217 for i in $enable_apis; do
218         case "$i" in
219                 (compat)        AC_DEFINE(VC_ENABLE_API_COMPAT,   1, [Enable support for compatibility syscall API])
220                                 enable_api_oldproc=1
221                                 enable_api_olduts=1
222                                 ;;
223                 (legacy)        AC_DEFINE(VC_ENABLE_API_LEGACY,   1, [Enable support for old, /proc parsing API])
224                                 enable_api_old_proc=1
225                                 enable_api_olduts=1
226                                 ;;
227                 (v11)           AC_DEFINE(VC_ENABLE_API_V11,      1, [Enable support for API of vserver 1.1.x])
228                                 enable_api_oldproc=1
229                                 enable_api_olduts=1
230                                 ;;
231                 (v13)           AC_DEFINE(VC_ENABLE_API_V13,      1, [Enable support for API of vserver 1.3.x]);;
232                 (net)           AC_DEFINE(VC_ENABLE_API_NET,      1, [Enable support for network context API]);;
233                 (fscompat)      AC_DEFINE(VC_ENABLE_API_FSCOMPAT, 1, [Enable support for filesystem compatibility API]);;
234                 (*)             AC_MSG_ERROR(['$i' is not a supported API]);;
235         esac
236 done
237 IFS=$old_IFS
238 if test x"$enable_api_oldproc" != x; then
239         AC_DEFINE(VC_ENABLE_API_OLDPROC, 1, [Enable API for a backward compatible /proc parsing])
240         enable_apis="$enable_apis,oldproc"
241 fi
242 if test x"$enable_api_olduts" != x; then
243         AC_DEFINE(VC_ENABLE_API_OLDUTS, 1, [Enable API for a backward compatible uts handling])
244         enable_apis="$enable_apis,olduts"
245 fi
246 AC_MSG_RESULT([$enable_apis])
247 dnl
248 dnl the check for used APIs ends here}
249 dnl
250 dnl ##########################
251
252
253 ENSC_SYSCALLNR(vserver,273,[lib/syscall-fallback.h])
254 ENSC_SYSCALL
255 ENSC_CHECK_EXT2FS_HEADER
256 AC_CHECK_FUNCS([vserver])
257 AC_CHECK_DECLS(MS_MOVE,,,[#include <linux/fs.h>])
258 AC_CHECK_TYPES(xid_t,,,[#include <sys/types.h>])
259 AC_CHECK_TYPES(nid_t,,,[#include <sys/types.h>])
260
261 AC_CHECK_HEADERS([sys/capability.h])
262
263
264 dnl ########################
265 dnl
266 dnl {check for beecrypt
267 dnl
268 if test x"$ensc_cv_c99_c99compiler" = xyes; then
269         ensc_have_beecrypt=yes
270
271         if test x"$ensc_have_beecrypt" = xyes; then
272                 AC_CHECK_HEADER([beecrypt/beecrypt.h], [ : ],
273                                 [ ensc_have_beecrypt=no ])
274         fi
275                         
276         if test x"$ensc_have_beecrypt" = xyes; then
277                 AC_CHECK_LIB(beecrypt, hashFunctionContextInit, [ : ],
278                              [ ensc_have_beecrypt=no ])
279         fi
280
281         if test x"$ensc_have_beecrypt" != xyes; then
282                 AC_MSG_WARN([
283 ****
284 **** 'beecrypt' could not be found;
285 **** this will disable the build of 'vhashify'
286 ****])
287         fi
288 else
289         ensc_have_beecrypt=no
290 fi
291
292 AM_CONDITIONAL(ENSC_HAVE_BEECRYPT, test x"$ensc_have_beecrypt" = xyes)
293 AM_CONDITIONAL(ENSC_CAN_BEECRYPT_WITH_DIETLIBC, false)
294 dnl
295 dnl beecrypt stuff ends here}
296 dnl
297 dnl ########################
298
299
300 dnl BIG HACK! Do some autodetection here!
301 AC_DEFINE(UTMP_GID, [22], [The utmp gid-number])
302
303 if false; then
304         AC_DEFINE(HAVE_GROWING_STACK, [1], [Define to 1 if the stack is on growing addresses])
305 fi
306
307 AC_DEFINE(_FILE_OFFSET_BITS, [64], [Use 64bit interface for filesystem operations])
308
309 dnl ########################
310 dnl
311 dnl {The final info-page
312 dnl
313 ensc_cxx_affected=" (affected: vbuild, vcheck)"
314 ensc_c99_affected=" (affected: vunify, vcopy, vhashify, vdlimit)"
315 ensc_diet_msg=" (you have been warned)"
316 ensc_diet_version_msg=" ($ensc_version_dietlibc)"
317 ensc_diet_compat_msg=" (using -lcompat)"
318 test x"$ensc_cv_cxx_cxxcompiler"    = xno || ensc_cxx_affected=
319 test x"$ensc_cv_c99_c99compiler"    = xno || ensc_c99_affected=
320 test x"$ensc_have_dietlibc"         = xno || ensc_diet_msg=
321 test x"$ensc_version_dietlibc"     != x   || ensc_diet_version_msg=
322 test x"$ensc_have_dietlibc$ensc_cv_c_dietlibc_compat" = xyesyes || ensc_diet_compat_msg=
323
324 AH_BOTTOM([#include "compat.h"
325 ])
326 AC_CONFIG_COMMANDS_PRE([
327                         FEATURES_TXT="\
328 Features:
329                        CC: $CC, $($CC   --version | sed -e '1p;d')
330                       CXX: $CXX, $($CXX --version | sed -e '1p;d')
331                  CPPFLAGS: '$CPPFLAGS'
332                    CFLAGS: '$CFLAGS'
333                  CXXFLAGS: '$CXXFLAGS'
334                build/host: $build/$host
335              Use dietlibc: $ensc_have_dietlibc$ensc_diet_version_msg$ensc_diet_msg$ensc_diet_compat_msg
336        Build C++ programs: $ensc_cv_cxx_cxxcompiler$ensc_cxx_affected
337        Build C99 programs: $ensc_cv_c99_c99compiler$ensc_c99_affected
338            Available APIs: $enable_apis
339             ext2fs Source: $ensc_cv_test_ext2fs_header
340     syscall(2) invocation: $with_syscall
341       vserver(2) syscall#: $ensc_cv_value_syscall_vserver
342    
343 Paths:
344                    prefix: $prefix
345         sysconf-Directory: $sysconfdir
346             cfg-Directory: $sysconfdir/vservers
347          initrd-Directory: $initrddir
348        pkgstate-Directory: $localstatedir/run/vservers
349           vserver-Rootdir: $vserverdir
350 "
351                         echo "$FEATURES_TXT" >FEATURES.txt
352                         ])
353 dnl
354 dnl final info-page ends here}
355 dnl
356 dnl ########################
357
358 AC_CONFIG_FILES([util-vserver.spec Makefile distrib/Makefile lib/apidoc/Doxyfile])
359 AC_OUTPUT
360
361 AC_MSG_NOTICE([
362
363 $PACKAGE_STRING
364
365 $FEATURES_TXT])