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