HACK: set 'enable_static=no' for dietlibc case and postpone AC_PROG_LIBTOOL execution
[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.30.204, enrico.scholz@informatik.tu-chemnitz.de)
28 AC_CONFIG_SRCDIR([src/capchroot.c])
29 AC_CONFIG_HEADER([config.h])
30
31 AM_INIT_AUTOMAKE([1.9 gnits dist-bzip2 subdir-objects])
32 AM_MAINTAINER_MODE
33
34 AC_CANONICAL_BUILD
35 AC_CANONICAL_HOST
36
37 AC_SUBST(GPG_KEY, "0xFFD316AC53ACA43A!")
38
39 # Checks for programs.
40 AC_PROG_CXX
41 AC_PROG_CC
42 AC_PROG_INSTALL
43 AC_PROG_LN_S
44 AM_PROG_CC_C_O
45 ENSC_CXXCOMPILER
46 ENSC_C99COMPILER
47
48 ENSC_SET_SEARCHPATH([$PATH:/sbin:/usr/sbin:/usr/local/sbin])
49 ENSC_PATHPROG_STANDARD_TOOLS
50
51 ENSC_PATHPROG(IP,        ip,,      [Usually, this tool is shipped in the 'iproute' or 'iproute2' package of your distribution])
52 ENSC_PATHPROG(IPTABLES,  iptables)
53 ENSC_PATHPROG(MODPROBE,  modprobe)
54 ENSC_PATHPROG(NAMEIF,    nameif)
55 ENSC_PATHPROG(RMMOD,     rmmod)
56 ENSC_PATHPROG(VCONFIG,   vconfig,, [See http://www.candelatech.com/~greear/vlan.html; usually this tool is shipped in the 'vconfig' or 'vlan' package of your distribution])
57 ENSC_PATHPROG(WGET,      wget)
58
59 ENSC_PATHPROG(DOXYGEN,   doxygen,  [:])
60 ENSC_PATHPROG(XSLTP,     xsltp,    [:])
61 ENSC_PATHPROG(XSLTPROC,  xsltproc, [:])
62
63
64 AM_CONDITIONAL(HAVE_XSLTP, test "$XSLTP" != ':')
65         
66
67 ENSC_CHECK_CC_FLAG([-std=c99 -Wall -pedantic -W])
68 ENSC_CHECK_CXX_FLAG([-ansi   -Wall -pedantic -W -fmessage-length=0])
69
70 ENSC_FPIC_SYSCALL
71
72
73 AC_MSG_CHECKING([whether to enable debug-code in library])
74 AC_ARG_ENABLE([lib-debug],
75               [AC_HELP_STRING([--enable-lib-debug],
76                               [enable additional debug code in library (default: no)])],
77               [case "$enableval" in
78                   yes)  use_lib_debug=1;;
79                   no)   use_lib_debug=;;
80                   *)    AC_MSG_ERROR(['$enableval' is not a valid value for '--enable-lib-debug']);;
81                esac],
82               [ use_lib_debug= ])
83
84 if test x"$use_lib_debug" = x; then
85         AC_SUBST(LIB_DEBUG_CPPFLAGS, [-DNDEBUG])
86         AC_MSG_RESULT(no)
87 else
88         AC_SUBST(LIB_DEBUG_CPPFLAGS, [])
89         AC_MSG_RESULT(yes)
90 fi
91
92 AC_ARG_VAR(CC, [The C compiler])
93
94 ENSC_INITRDDIR(initrddir)
95 ENSC_RELEASE(RELEASE_CPPFLAGS)
96 ENSC_ENABLE_DIETLIBC(USE_DIETLIBC, [0.24])
97
98 if test x"$ensc_have_dietlibc" = xno; then
99         AC_MSG_WARN([***                                                         ***])
100         AC_MSG_WARN([*** it is strongly recommended to link util-vserver against ***])
101         AC_MSG_WARN([*** dietlibc;  glibc's NSS functions are very unreliable in ***])
102         AC_MSG_WARN([*** chroot() environments,  so you have to  expect problems ***])
103         AC_MSG_WARN([*** there.                                                  ***])
104         AC_MSG_WARN([***                                                         ***])
105         AM_CONDITIONAL(USE_DIETLIBC_COMPAT, false)
106 else
107         enable_static=no
108
109         ENSC_DIETLIBC_SANITYCHECK
110         ENSC_DIETLIBC_NEED_COMPAT(USE_DIETLIBC_COMPAT)
111 fi
112
113
114 dnl AC_PROG_RANLIB
115 AC_PROG_LIBTOOL
116
117
118 ENSC_KERNEL_HEADERS(kernelincludedir)
119 ENSC_UV_VROOTDIR(vserverdir)
120 ENSC_CHANGELOG([trunk])
121
122 dnl Check whether to use external kernel headers
123 AC_MSG_CHECKING([whether to use internal kernel headers])
124 AC_ARG_ENABLE([internal-headers],
125               [AC_HELP_STRING([--disable-internal-headers],
126                               [use vserver specific headers from the kernel instead of the shipped versions (default: no)])],
127               [case "$enableval" in
128                   yes|no) ;;
129                   *)      AC_MSG_ERROR(['$i' is not a supported value for '--disable-internal-headers']);;
130                esac],
131               [enable_internal_headers=yes])
132
133 AM_CONDITIONAL(ENSC_ENABLE_INTERNAL_HEADERS, [test x"$enable_internal_headers" = xyes])
134 AC_MSG_RESULT([$enable_internal_headers])
135
136
137 AM_CONDITIONAL(CAN_BEECRYPT_WITH_DIETLIBC, false)
138
139 dnl Check for the APIs to be used
140 AC_MSG_CHECKING([for supported APIs])
141 AC_ARG_ENABLE([apis],
142               [AC_HELP_STRING([--enable-apis=APIS],
143                               [enable support for the given apis; possible values are: legacy,compat,v11,v13,fscompat,net,ALL (default: all except 'legacy')])],
144               [],
145               [enable_apis=compat,v11,v13,fscompat,net])
146
147 test x"$enable_apis" != xALL || enable_apis='legacy,compat,v11,v13,fscompat,net'
148 enable_api_oldproc=
149 enable_api_olduts=
150 old_IFS=$IFS
151 IFS=,;
152 for i in $enable_apis; do
153         case "$i" in
154                 compat)         AC_DEFINE(VC_ENABLE_API_COMPAT,   1, [Enable support for compatibility syscall API])
155                                 enable_api_oldproc=1
156                                 enable_api_olduts=1
157                                 ;;
158                 legacy)         AC_DEFINE(VC_ENABLE_API_LEGACY,   1, [Enable support for old, /proc parsing API])
159                                 enable_api_old_proc=1
160                                 enable_api_olduts=1
161                                 ;;
162                 v11)            AC_DEFINE(VC_ENABLE_API_V11,      1, [Enable support for API of vserver 1.1.x])
163                                 enable_api_oldproc=1
164                                 enable_api_olduts=1
165                                 ;;
166                 v13)            AC_DEFINE(VC_ENABLE_API_V13,      1, [Enable support for API of vserver 1.3.x]);;
167                 net)            AC_DEFINE(VC_ENABLE_API_NET,      1, [Enable support for network context API]);;
168                 fscompat)       AC_DEFINE(VC_ENABLE_API_FSCOMPAT, 1, [Enable support for filesystem compatibility API]);;
169                 *)              AC_MSG_ERROR(['$i' is not a supported API]);;
170         esac
171 done
172 IFS=$old_IFS
173 if test x"$enable_api_oldproc" != x; then
174         AC_DEFINE(VC_ENABLE_API_OLDPROC, 1, [Enable API for a backward compatible /proc parsing])
175         enable_apis="$enable_apis,oldproc"
176 fi
177 if test x"$enable_api_olduts" != x; then
178         AC_DEFINE(VC_ENABLE_API_OLDUTS, 1, [Enable API for a backward compatible uts handling])
179         enable_apis="$enable_apis,olduts"
180 fi
181 AC_MSG_RESULT([$enable_apis])
182
183 ENSC_SYSCALLNR(vserver,273)
184 ENSC_SYSCALL
185 ENSC_CHECK_EXT2FS_HEADER
186 AC_CHECK_FUNCS([vserver])
187 AC_CHECK_DECLS(MS_MOVE,,,[#include <linux/fs.h>])
188 AC_CHECK_TYPES(xid_t,,,[#include <sys/types.h>])
189 AC_CHECK_TYPES(nid_t,,,[#include <sys/types.h>])
190
191 AC_CHECK_HEADERS([sys/capability.h])
192
193 dnl BIG HACK! Do some autodetection here!
194 AC_DEFINE(UTMP_GID, [22], [The utmp gid-number])
195
196 if false; then
197         AC_DEFINE(HAVE_GROWING_STACK, [1], [Define to 1 if the stack is on growing addresses])
198 fi
199
200
201 ensc_cxx_affected=" (affected: vbuild, vcheck)"
202 ensc_c99_affected=" (affected: vunify, vcopy)"
203 ensc_diet_msg=" (you have been warned)"
204 ensc_diet_version_msg=" ($ensc_version_dietlibc)"
205 ensc_diet_compat_msg=" (using -lcompat)"
206 test x"$ensc_cv_cxx_cxxcompiler"    = xno || ensc_cxx_affected=
207 test x"$ensc_cv_c99_c99compiler"    = xno || ensc_c99_affected=
208 test x"$ensc_have_dietlibc"         = xno || ensc_diet_msg=
209 test x"$ensc_version_dietlibc"     != x   || ensc_diet_version_msg=
210 test x"$ensc_have_dietlibc$ensc_cv_c_dietlibc_compat" = xyesyes || ensc_diet_compat_msg=
211
212 AH_BOTTOM([#include "compat.h"])
213 AC_CONFIG_COMMANDS_PRE([
214                         FEATURES_TXT="\
215 Features:
216                        CC: $CC, $($CC   --version | sed -e '1p;d')
217                       CXX: $CXX, $($CXX --version | sed -e '1p;d')
218                  CPPFLAGS: '$CPPFLAGS'
219                    CFLAGS: '$CFLAGS'
220                  CXXFLAGS: '$CXXFLAGS'
221                build/host: $build/$host
222              Use dietlibc: $ensc_have_dietlibc$ensc_diet_version_msg$ensc_diet_msg$ensc_diet_compat_msg
223        Build C++ programs: $ensc_cv_cxx_cxxcompiler$ensc_cxx_affected
224        Build C99 programs: $ensc_cv_c99_c99compiler$ensc_c99_affected
225            Available APIs: $enable_apis
226             ext2fs Source: $ensc_cv_test_ext2fs_header
227     syscall(2) invocation: $with_syscall
228       vserver(2) syscall#: $ensc_cv_value_syscall_vserver
229    
230 Paths:
231                    prefix: $prefix
232         sysconf-Directory: $sysconfdir
233             cfg-Directory: $sysconfdir/vservers
234          initrd-Directory: $initrddir
235        pkgstate-Directory: $localstatedir/run/vservers
236             Kernelheaders: $kernelincludedir
237           vserver-Rootdir: $vserverdir
238 "
239                         echo "$FEATURES_TXT" >FEATURES.txt
240                         ])
241 AC_CONFIG_FILES([util-vserver.spec Makefile distrib/Makefile lib/apidoc/Doxyfile])
242 AC_OUTPUT
243
244 AC_MSG_NOTICE([
245
246 $PACKAGE_STRING
247
248 $FEATURES_TXT])