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