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