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