added Vector_zeroEnd() function
[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.29.215, enrico.scholz@informatik.tu-chemnitz.de)
28 AC_CONFIG_SRCDIR([src/capchroot.c])
29 AC_CONFIG_HEADER([config.h])
30
31 AM_INIT_AUTOMAKE([gnits dist-bzip2 subdir-objects])
32 AM_MAINTAINER_MODE
33
34 AC_SUBST(GPG_KEY, "0x7AE5D4B5922F7AF9!")
35
36 # Checks for programs.
37 AC_PROG_CXX
38 AC_PROG_CC
39 AC_PROG_INSTALL
40 AC_PROG_LN_S
41 dnl AC_PROG_RANLIB
42 AC_PROG_LIBTOOL
43 AM_PROG_CC_C_O
44 ENSC_CXXCOMPILER
45 ENSC_C99COMPILER
46
47 check_paths=$PATH:/sbin:/usr/sbin:/usr/local/sbin
48 AC_PATH_PROGS(AWK,     [awk],     [awk],         [ $check_paths ])
49 AC_PATH_PROGS(GREP,    [grep],    [grep],        [ $check_paths ])
50 AC_PATH_PROGS(IP,      [ip],      [ip],          [ $check_paths ])
51 AC_PATH_PROGS(MOUNT,   [mount],   [/bin/mount],  [ $check_paths ])
52 AC_PATH_PROGS(UMOUNT,  [umount],  [/bin/umount], [ $check_paths ])
53 AC_PATH_PROGS(NICE,    [nice],    [nice],        [ $check_paths ])
54 AC_PATH_PROGS(VCONFIG, [vconfig], [vconfig],     [ $check_paths ])
55 AC_PATH_PROGS(WC,      [wc],      [wc],          [ $check_paths ])
56 AC_PATH_PROGS(PS,      [ps],      [/bin/ps],     [ $check_paths ])
57 AC_PATH_PROGS(MODPROBE, [modprobe], [/sbin/modprobe], [ $check_paths ])
58 AC_PATH_PROGS(RMMOD,    [rmmod],    [/sbin/rmmod],    [ $check_paths ])
59 AC_PATH_PROGS(NAMEIF,   [nameif],   [/sbin/nameif],   [ $check_paths ])
60 AC_PATH_PROGS(IPTABLES, [iptables], [/sbin/iptables], [ $check_paths ])
61 AC_PATH_PROGS(ENV,      [env],      [/usr/bin/env])
62 AC_PATH_PROGS(SED,      [sed],      [sed])
63 AC_PATH_PROGS(CMP,      [cmp],      [cmp])
64 AC_PATH_PROGS(WGET,     [wget],     [wget])
65 AC_PATH_PROGS(DOXYGEN,  [doxygen],  [:])
66 AC_PATH_PROGS(TAR,      [tar])
67 AC_PATH_PROGS(XSLTP,    [xsltp])
68
69 AM_CONDITIONAL(HAVE_XSLTP, test "$XSLTP")
70         
71
72 ENSC_CHECK_CC_FLAG([-std=c99 -Wall -pedantic -W])
73 ENSC_CHECK_CXX_FLAG([-ansi   -Wall -pedantic -W -fmessage-length=0])
74
75 ENSC_FPIC_SYSCALL
76
77
78 AC_MSG_CHECKING([whether to enable debug-code in library])
79 AC_ARG_ENABLE([lib-debug],
80               [AC_HELP_STRING([--enable-lib-debug],
81                               [enable additional debug code in library (default: no)])],
82               [case "$enableval" in
83                   yes)  use_lib_debug=1;;
84                   no)   use_lib_debug=;;
85                   *)    AC_MSG_ERROR(['$enableval' is not a valid value for '--enable-lib-debug']);;
86                esac],
87               [ use_lib_debug= ])
88
89 if test x"$use_lib_debug" = x; then
90         AC_SUBST(LIB_DEBUG_CPPFLAGS, [-DNDEBUG])
91         AC_MSG_RESULT(no)
92 else
93         AC_SUBST(LIB_DEBUG_CPPFLAGS, [])
94         AC_MSG_RESULT(yes)
95 fi
96
97 AC_ARG_VAR(CC, [The C compiler])
98
99 ENSC_INITRDDIR(initrddir)
100 ENSC_RELEASE(RELEASE_CPPFLAGS)
101 ENSC_ENABLE_DIETLIBC(USE_DIETLIBC, [0.24])
102
103 if test x"$ensc_have_dietlibc" = xno; then
104         AC_MSG_WARN([***                                                         ***])
105         AC_MSG_WARN([*** it is strongly recommended to link util-vserver against ***])
106         AC_MSG_WARN([*** dietlibc;  glibc's NSS functions are very unreliable in ***])
107         AC_MSG_WARN([*** chroot() environments,  so you have to  expect problems ***])
108         AC_MSG_WARN([*** there.                                                  ***])
109         AC_MSG_WARN([***                                                         ***])
110         AM_CONDITIONAL(USE_DIETLIBC_COMPAT, false)
111 else
112         ENSC_DIETLIBC_NEED_COMPAT(USE_DIETLIBC_COMPAT)
113 fi
114
115
116 ENSC_KERNEL_HEADERS(kernelincludedir)
117 ENSC_UV_VROOTDIR(vserverdir)
118 ENSC_CHANGELOG([trunk])
119
120 dnl Check whether to use external kernel headers
121 AC_MSG_CHECKING([whether to use internal kernel headers])
122 AC_ARG_ENABLE([internal-headers],
123               [AC_HELP_STRING([--disable-internal-headers],
124                               [use vserver specific headers from the kernel instead of the shipped versions (default: no)])],
125               [case "$enableval" in
126                   yes|no) ;;
127                   *)      AC_MSG_ERROR(['$i' is not a supported value for '--disable-internal-headers']);;
128                esac],
129               [enable_internal_headers=yes])
130
131 AM_CONDITIONAL(ENSC_ENABLE_INTERNAL_HEADERS, [test x"$enable_internal_headers" = xyes])
132 AC_MSG_RESULT([$enable_internal_headers])
133
134
135 dnl Check for the APIs to be used
136 AC_MSG_CHECKING([for supported APIs])
137 AC_ARG_ENABLE([apis],
138               [AC_HELP_STRING([--enable-apis=APIS],
139                               [enable support for the given apis; possible values are: legacy,compat,v11,v13,fscompat,net,ALL (default: all except 'legacy')])],
140               [],
141               [enable_apis=compat,v11,v13,fscompat,net])
142
143 test x"$enable_apis" != xALL || enable_apis='legacy,compat,v11,v13,fscompat,net'
144 enable_api_oldproc=
145 enable_api_olduts=
146 old_IFS=$IFS
147 IFS=,;
148 for i in $enable_apis; do
149         case "$i" in
150                 compat)         AC_DEFINE(VC_ENABLE_API_COMPAT,   1, [Enable support for compatibility syscall API])
151                                 enable_api_oldproc=1
152                                 enable_api_olduts=1
153                                 ;;
154                 legacy)         AC_DEFINE(VC_ENABLE_API_LEGACY,   1, [Enable support for old, /proc parsing API])
155                                 enable_api_old_proc=1
156                                 enable_api_olduts=1
157                                 ;;
158                 v11)            AC_DEFINE(VC_ENABLE_API_V11,      1, [Enable support for API of vserver 1.1.x])
159                                 enable_api_oldproc=1
160                                 enable_api_olduts=1
161                                 ;;
162                 v13)            AC_DEFINE(VC_ENABLE_API_V13,      1, [Enable support for API of vserver 1.3.x]);;
163                 net)            AC_DEFINE(VC_ENABLE_API_NET,      1, [Enable support for network context API]);;
164                 fscompat)       AC_DEFINE(VC_ENABLE_API_FSCOMPAT, 1, [Enable support for filesystem compatibility API]);;
165                 *)              AC_MSG_ERROR(['$i' is not a supported API]);;
166         esac
167 done
168 IFS=$old_IFS
169 if test x"$enable_api_oldproc" != x; then
170         AC_DEFINE(VC_ENABLE_API_OLDPROC, 1, [Enable API for a backward compatible /proc parsing])
171         enable_apis="$enable_apis,oldproc"
172 fi
173 if test x"$enable_api_olduts" != x; then
174         AC_DEFINE(VC_ENABLE_API_OLDUTS, 1, [Enable API for a backward compatible uts handling])
175         enable_apis="$enable_apis,olduts"
176 fi
177 AC_MSG_RESULT([$enable_apis])
178
179 ENSC_SYSCALLNR(vserver,273)
180 ENSC_SYSCALL
181 ENSC_CHECK_EXT2FS_HEADER
182 AC_CHECK_FUNCS([vserver])
183 AC_CHECK_DECLS(MS_MOVE,,,[#include <linux/fs.h>])
184 AC_CHECK_TYPES(xid_t,,,[#include <sys/types.h>])
185 AC_CHECK_TYPES(nid_t,,,[#include <sys/types.h>])
186
187 dnl BIG HACK! Do some autodetection here!
188 AC_DEFINE(UTMP_GID, [22], [The utmp gid-number])
189
190 if false; then
191         AC_DEFINE(HAVE_GROWING_STACK, [1], [Define to 1 if the stack is on growing addresses])
192 fi
193
194
195 ensc_cxx_affected=" (affected: vbuild, vcheck)"
196 ensc_c99_affected=" (affected: vunify, vcopy)"
197 ensc_diet_msg=" (you have been warned)"
198 ensc_diet_compat_msg=" (using -lcompat)"
199 test x"$ensc_cv_cxx_cxxcompiler"    = xno || ensc_cxx_affected=
200 test x"$ensc_cv_c99_c99compiler"    = xno || ensc_c99_affected=
201 test x"$ensc_have_dietlibc"         = xno || ensc_diet_msg=
202 test x"$ensc_have_dietlibc$ensc_cv_c_dietlibc_compat" = xyesyes || ensc_diet_compat_msg=
203
204 AH_BOTTOM([#include "compat.h"])
205 AC_CONFIG_COMMANDS_PRE([
206                         FEATURES_TXT="\
207 Features:
208                        CC: $CC, $($CC   --version | sed -e '1p;d')
209                       CXX: $CXX, $($CXX --version | sed -e '1p;d')
210                  CPPFLAGS: '$CPPFLAGS'
211                    CFLAGS: '$CFLAGS'
212                  CXXFLAGS: '$CXXFLAGS'
213                build/host: $build/$host
214              Use dietlibc: $ensc_have_dietlibc$ensc_diet_msg$ensc_diet_compat_msg
215        Build C++ programs: $ensc_cv_cxx_cxxcompiler$ensc_cxx_affected
216        Build C99 programs: $ensc_cv_c99_c99compiler$ensc_c99_affected
217            Available APIs: $enable_apis
218             ext2fs Source: $ensc_cv_test_ext2fs_header
219     syscall(2) invocation: $with_syscall
220       vserver(2) syscall#: $ensc_cv_value_syscall_vserver
221    
222 Paths:
223                    prefix: $prefix
224         sysconf-Directory: $sysconfdir
225             cfg-Directory: $sysconfdir/vservers
226          initrd-Directory: $initrddir
227        pkgstate-Directory: $localstatedir/run/vservers
228             Kernelheaders: $kernelincludedir
229           vserver-Rootdir: $vserverdir
230 "
231                         echo "$FEATURES_TXT" >FEATURES.txt
232                         ])
233 AC_CONFIG_FILES([util-vserver.spec Makefile distrib/Makefile lib/apidoc/Doxyfile])
234 AC_OUTPUT
235
236 AC_MSG_NOTICE([
237
238 $PACKAGE_STRING
239
240 $FEATURES_TXT])