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