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