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