added more details to the final summary
[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.28.191, 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
59 ENSC_CHECK_CC_FLAG([-std=c99 -Wall -pedantic -W])
60 ENSC_CHECK_CXX_FLAG([-ansi   -Wall -pedantic -W -fmessage-length=0])
61
62 ENSC_FPIC_SYSCALL
63
64
65 AC_MSG_CHECKING([whether to enable debug-code in library])
66 AC_ARG_ENABLE([lib-debug],
67               [AC_HELP_STRING([--enable-lib-debug],
68                               [enable additional debug code in library (default: no)])],
69               [case "$enableval" in
70                   yes)  use_lib_debug=1;;
71                   no)   use_lib_debug=;;
72                   *)    AC_MSG_ERROR(['$enableval' is not a valid value for '--enable-lib-debug']);;
73                esac],
74               [ use_lib_debug= ])
75
76 if test x"$use_lib_debug" = x; then
77         AC_SUBST(LIB_DEBUG_CPPFLAGS, [-DNDEBUG])
78         AC_MSG_RESULT(no)
79 else
80         AC_SUBST(LIB_DEBUG_CPPFLAGS, [])
81         AC_MSG_RESULT(yes)
82 fi
83
84 AC_ARG_VAR(CC, [The C compiler])
85
86 ENSC_INITRDDIR(initrddir)
87 ENSC_RELEASE(RELEASE_CPPFLAGS)
88 ENSC_ENABLE_DIETLIBC(USE_DIETLIBC)
89 ENSC_KERNEL_HEADERS(kernelincludedir)
90 ENSC_UV_VROOTDIR(vserverdir)
91 ENSC_CHANGELOG([trunk])
92
93 dnl Check whether to use external kernel headers
94 AC_MSG_CHECKING([whether to use internal kernel headers])
95 AC_ARG_ENABLE([internal-headers],
96               [AC_HELP_STRING([--disable-internal-headers],
97                               [use vserver specific headers from the kernel instead of the shipped versions (default: no)])],
98               [case "$enableval" in
99                   yes|no) ;;
100                   *)      AC_MSG_ERROR(['$i' is not a supported value for '--disable-internal-headers']);;
101                esac],
102               [enable_internal_headers=yes])
103
104 AM_CONDITIONAL(ENSC_ENABLE_INTERNAL_HEADERS, [test x"$enable_internal_headers" = xyes])
105 AC_MSG_RESULT([$enable_internal_headers])
106
107
108 dnl Check for the APIs to be used
109 AC_MSG_CHECKING([for supported APIs])
110 AC_ARG_ENABLE([apis],
111               [AC_HELP_STRING([--enable-apis=APIS],
112                               [enable support for the given apis; possible values are: legacy,compat,v11,v13,fscompat,ALL (default: ALL)])],
113               [],
114               [enable_apis=ALL])
115
116 test x"$enable_apis" != xALL || enable_apis='legacy,compat,v11,v13,fscompat'
117 enable_api_oldproc=
118 enable_api_olduts=
119 old_IFS=$IFS
120 IFS=,;
121 for i in $enable_apis; do
122         case "$i" in
123                 compat)         AC_DEFINE(VC_ENABLE_API_COMPAT,   1, [Enable support for compatibility syscall API])
124                                 enable_api_oldproc=1
125                                 enable_api_olduts=1
126                                 ;;
127                 legacy)         AC_DEFINE(VC_ENABLE_API_LEGACY,   1, [Enable support for old, /proc parsing API])
128                                 enable_api_old_proc=1
129                                 enable_api_olduts=1
130                                 ;;
131                 v11)            AC_DEFINE(VC_ENABLE_API_V11,      1, [Enable support for API of vserver 1.1.x])
132                                 enable_api_oldproc=1
133                                 enable_api_olduts=1
134                                 ;;
135                 v13)            AC_DEFINE(VC_ENABLE_API_V13,      1, [Enable support for API of vserver 1.3.x]);;
136                 fscompat)       AC_DEFINE(VC_ENABLE_API_FSCOMPAT, 1, [Enable support for filesystem compatibility API]);;
137                 *)              AC_MSG_ERROR(['$i' is not a supported API]);;
138         esac
139 done
140 IFS=$old_IFS
141 if test x"$enable_api_oldproc" != x; then
142         AC_DEFINE(VC_ENABLE_API_OLDPROC, 1, [Enable API for a backward compatible /proc parsing])
143         enable_apis="$enable_apis,oldproc"
144 fi
145 if test x"$enable_api_olduts" != x; then
146         AC_DEFINE(VC_ENABLE_API_OLDUTS, 1, [Enable API for a backward compatible uts handling])
147         enable_apis="$enable_apis,olduts"
148 fi
149 AC_MSG_RESULT([$enable_apis])
150
151 ENSC_CHECK_EXT2FS_HEADER
152 AC_CHECK_FUNCS([vserver])
153 AC_CHECK_DECLS(MS_MOVE,,,[#include <linux/fs.h>])
154 AC_CHECK_TYPES(xid_t,,,[#include <sys/types.h>])
155
156 dnl BIG HACK! Do some autodetection here!
157 AC_DEFINE(UTMP_GID, [22], [The utmp gid-number])
158
159 if false; then
160         AC_DEFINE(HAVE_GROWING_STACK, [1], [Define to 1 if the stack is on growing addresses])
161 fi
162
163 AH_BOTTOM([#include "compat.h"])
164 AC_CONFIG_FILES([util-vserver.spec Makefile distrib/Makefile])
165 AC_OUTPUT
166
167 ensc_cxx_affected=
168 ensc_c99_affected=
169 test x"$ensc_cv_cxx_cxxcompiler" = xyes || ensc_cxx_affected=" (affected: vbuild, vcheck)"
170 test x"$ensc_cv_c99_c99compiler" = xyes || ensc_c99_affected=" (affected: vunify)"
171
172 AC_MSG_NOTICE([
173
174 $PACKAGE_STRING
175
176 Features:
177               CPPFLAGS: '$CPPFLAGS'
178                 CFLAGS: '$CFLAGS'
179               CXXFLAGS: '$CXXFLAGS'
180           Use dietlibc: $ensc_have_dietlibc
181     Build C++ programs: $ensc_cv_cxx_cxxcompiler$ensc_cxx_affected
182     Build C99 programs: $ensc_cv_c99_c99compiler$ensc_c99_affected
183         Available APIs: $enable_apis
184          ext2fs Source: $ensc_cv_test_ext2fs_header
185
186 Paths:
187                 prefix: $prefix
188      sysconf-Directory: $sysconfdir
189          cfg-Directory: $sysconfdir/vservers
190       initrd-Directory: $initrddir
191          Kernelheaders: $kernelincludedir
192        vserver-Rootdir: $vserverdir
193 ])