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