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