Rename.
[gnutls:gnutls.git] / configure.ac
1 dnl Process this file with autoconf to produce a configure script.
2 # Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
3 #    Free Software Foundation, Inc.
4 #
5 # Author: Nikos Mavrogiannopoulos, Simon Josefsson
6 #
7 # This file is part of GNUTLS.
8 #
9 # This program is free software; you can redistribute it and/or modify
10 # it under the terms of the GNU General Public License as published by
11 # the Free Software Foundation; either version 3 of the License, or
12 # (at your option) any later version.
13 #
14 # This program is distributed in the hope that it will be useful, but
15 # WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17 # General Public License for more details.
18 #
19 # You should have received a copy of the GNU General Public License
20 # along with this program; if not, write to the Free Software
21 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
22 # USA
23
24 AC_PREREQ(2.61)
25 AC_INIT([GnuTLS], [2.7.1], [bug-gnutls@gnu.org])
26 AC_CONFIG_AUX_DIR([build-aux])
27 AC_CONFIG_MACRO_DIR([m4])
28
29 AM_INIT_AUTOMAKE([1.10 dist-bzip2 -Wall -Werror -Wno-override])
30 AM_CONFIG_HEADER(config.h)
31
32 opt_developer_mode=no
33 AC_MSG_CHECKING([whether to enable compiler warnings])
34 AC_ARG_ENABLE(developer-mode,
35         AS_HELP_STRING([--enable-developer-mode], [enable compiler warnings]),
36 opt_developer_mode=$enableval)
37 AC_MSG_RESULT($opt_developer_mode)
38
39 AC_MSG_RESULT([***
40 *** Checking for compilation programs...
41 ])
42
43 dnl Checks for programs.
44 AC_PROG_CC
45 AC_PROG_LN_S
46 GTK_DOC_CHECK(1.1)
47 AC_PATH_PROG([GAA], [gaa])
48 if test "x$GAA" = "x"; then
49    AC_MSG_WARN([[***
50 *** GAA was not found.  It is only needed if you wish to modify
51 *** the source code or command-line description files.  In this case,
52 *** you may want to get it from http://gaa.sourceforge.net/
53 ***]])
54 fi
55 AM_CONDITIONAL(HAVE_GCC,   test "x$GCC" = "xyes")
56
57
58 AC_MSG_RESULT([***
59 *** Detecting compiler options...
60 ])
61
62 gl_EARLY
63 AC_C_INLINE
64
65 LIBGNUTLS_HOOKS
66 LIBGNUTLS_EXTRA_HOOKS
67
68 if test $ac_cv_c_compiler_gnu != no; then
69
70         if test x$opt_developer_mode = xyes; then
71            AC_MSG_CHECKING([whether gcc supports various warning flags])
72            _gcc_cflags_save="$CFLAGS"
73            CFLAGS="${CFLAGS} -Wall -W -Wchar-subscripts -Wformat-security -Wnonnull -Winit-self -Wmissing-include-dirs -Wunused -Wno-unused-parameter -Wfloat-equal -Wdeclaration-after-statement -Wshadow -Wunsafe-loop-optimizations -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Waggregate-return -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-declarations -Wmissing-noreturn -Wmissing-format-attribute -Wpacked -Wredundant-decls -Wnested-externs -Winline -Wvolatile-register-var -Wdisabled-optimization -Wstack-protector -Woverlength-strings"
74            #removed "-Wlogical-op" and "-Wvla" which are not supported by my gcc --nmav
75            # -Wtraditional: warns on #elif which we use often
76            # -Wundef: warns on '#if GNULIB_PORTCHECK' etc in gnulib headers
77            # -Wpadded: many of our structs are not optimized for padding
78            # -Wtraditional-conversion: we catch missing prototypes anyway
79            # -Wno-unused-parameter: added because -Wunused cause too many warns
80            # -Wunreachable-code: appears to return many false positives
81            # -Wconversion: too many warnings for now
82            # -Wswitch-default: too many warnings for now
83            # -Wswitch-enum: too many warnings for now
84            AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_warns=yes,_gcc_warns=no)
85            AC_MSG_RESULT($_gcc_warns)
86            if test x"$_gcc_warns" != xyes ; then
87               CFLAGS=$_gcc_cflags_save;
88            fi
89         fi
90
91         AC_MSG_CHECKING([whether gcc supports -Wno-pointer-sign])
92         _gcc_cflags_save="$CFLAGS"
93         CFLAGS="${CFLAGS} -Wno-pointer-sign"
94         AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_psign=yes,_gcc_psign=no)
95         AC_MSG_RESULT($_gcc_psign)
96         if test "$_gcc_psign" != "yes"; then
97           CFLAGS="$_gcc_cflags_save";
98         fi
99
100         AC_MSG_CHECKING([whether gcc supports -fgnu89-inline])
101         _gcc_cflags_save="$CFLAGS"
102         CFLAGS="${CFLAGS} -fgnu89-inline"
103         AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),
104           _gcc_gnu89_inline=yes, _gcc_gnu89_inline=no)
105         AC_MSG_RESULT($_gcc_gnu89_inline)
106         CFLAGS="$_gcc_cflags_save"
107
108         AC_MSG_CHECKING([whether we have GNU assembler])
109         GAS=`as --version < /dev/null 2>/dev/null | grep GNU`
110         if test "$GAS"; then
111           AM_CFLAGS="${AM_CFLAGS} -pipe"
112           AC_MSG_RESULT(yes)
113         else
114           AC_MSG_RESULT(no)
115         fi
116 fi
117
118 # Needs to be called outside of 'if' clause.
119 AM_CONDITIONAL([HAVE_GCC_GNU89_INLINE_OPTION],
120                [test "$_gcc_gnu89_inline" = "yes"])
121
122 AC_MSG_RESULT([***
123 *** Detecting C library capabilities...
124 ])
125
126 AC_HEADER_STDC
127 AC_CHECK_FUNCS(fork,,)
128 AC_DEFINE([HAVE_STRINGS_H], 1, [Hard-code for src/cfg/.])
129 AC_DEFINE([HAVE_FLOAT_H], 1, [Hard-code for src/cfg/.])
130 AC_DEFINE([HAVE_LIMITS_H], 1, [Hard-code for src/cfg/.])
131 AC_DEFINE([HAVE_MATH_H], 1, [Hard-code for src/cfg/.])
132 AC_DEFINE([HAVE_CTYPE_H], 1, [Hard-code for src/cfg/.])
133 AC_DEFINE([HAVE_ERRNO_H], 1, [Hard-code for src/cfg/.])
134
135 # No fork on MinGW, disable some self-tests until we fix them.
136 AM_CONDITIONAL(HAVE_FORK, test "$ac_cv_func_fork" != "no")
137
138 AC_MSG_RESULT([***
139 *** Detecting system's parameters...
140 ])
141
142 # Run self-tests under valgrind?
143 if test "$cross_compiling" = no; then
144   AC_CHECK_PROGS(VALGRIND, valgrind)
145 fi
146 if test -n "$VALGRIND" && $VALGRIND true > /dev/null 2>&1; then
147   opt_valgrind_tests=yes
148 else
149   opt_valgrind_tests=no
150   VALGRIND=
151 fi 
152 AC_MSG_CHECKING([whether self tests are run under valgrind])
153 AC_ARG_ENABLE(valgrind-tests,
154         AS_HELP_STRING([--enable-valgrind-tests],
155                        [run self tests under valgrind]),
156   opt_valgrind_tests=$enableval)
157 AC_MSG_RESULT($opt_valgrind_tests)
158
159 AC_CHECK_TYPES(uint,,, [
160 # include <sys/types.h>
161 ])
162
163 AC_MSG_RESULT([***
164 *** Checking for external libraries...
165 ])
166
167 # For Guile bindings.
168
169 opt_guile_bindings=yes
170 AC_MSG_CHECKING([whether building Guile bindings])
171 AC_ARG_ENABLE(guile,
172         AS_HELP_STRING([--enable-guile], [build GNU Guile bindings]),
173 opt_guile_bindings=$enableval)
174 AC_MSG_RESULT($opt_guile_bindings)
175
176 AC_ARG_WITH([--with-guile-site-dir],
177   [AS_HELP_STRING([--with-guile-site-dir],
178      [use the given directory as the Guile site (use with care)])])
179
180 if test "x$opt_guile_bindings" = "xyes"; then
181    AC_MSG_RESULT([***
182 *** Detecting GNU Guile...
183 ])
184
185    AC_PATH_PROG([guile_snarf], [guile-snarf])
186    if test "x$guile_snarf" = "x"; then
187       AC_MSG_WARN([`guile-snarf' from Guile 1.8 not found.  Guile bindings not built.])
188       opt_guile_bindings=no
189    else
190       GUILE_PROGS
191       GUILE_FLAGS
192
193       save_CFLAGS="$CFLAGS"
194       save_LIBS="$LIBS"
195       CFLAGS="$CFLAGS $GUILE_CFLAGS"
196       LIBS="$LIBS $GUILE_LDFLAGS"
197       AC_MSG_CHECKING([whether GNU Guile is recent enough])
198       AC_LINK_IFELSE(AC_LANG_CALL([], [scm_from_locale_string]),
199         [], [opt_guile_bindings=no])
200       CFLAGS="$save_CFLAGS"
201       LIBS="$save_LIBS"
202
203       if test "x$opt_guile_bindings" = "xyes"; then
204         AC_MSG_RESULT([yes])
205         case "x$with_guile_site_dir" in 
206              xno)
207                 # Use the default $(GUILE_SITE).
208                 GUILE_SITE_DIR
209                 ;;
210              x|xyes)
211                 # Automatically derive $(GUILE_SITE) from $(pkgdatadir).  This
212                 # hack is used to allow `distcheck' to work (see
213                 # `DISTCHECK_CONFIGURE_FLAGS' in the top-level `Makefile.am').
214                 GUILE_SITE="\$(datadir)/guile/site"
215                 AC_SUBST(GUILE_SITE)
216                 ;;
217              *)
218                 # Use the user-specified directory as $(GUILE_SITE).
219                 GUILE_SITE="$with_guile_site_dir"
220                 AC_SUBST(GUILE_SITE)
221                 ;;
222         esac
223       else
224         AC_MSG_RESULT([no])
225         AC_MSG_WARN([A sufficiently recent GNU Guile not found.  Guile bindings not built.])
226         opt_guile_bindings=no
227       fi
228    fi
229 fi
230 AM_CONDITIONAL(HAVE_GUILE, test "x$opt_guile_bindings" = "xyes")
231
232 dnl Check for libcfg+
233
234 SAVED_LIBS=$LIBS
235 AC_ARG_WITH(included-libcfg,
236         AS_HELP_STRING([--with-included-libcfg],
237                 [use the included libcfg+ (certtool only)]),
238         libcfg_enabled=$withval, 
239         libcfg_enabled=no
240 dnl We search for libcfg+ which is used by certtool
241 dnl
242         AC_CHECK_LIB(cfg+, cfg_get_context,:,
243                      libcfg_enabled=yes
244                      AC_MSG_WARN([[
245 *** 
246 *** Libcfg+ was not found. Will use the included one.]])))
247
248 AM_CONDITIONAL(HAVE_LIBCFG, test "$libcfg_enabled" = "no")
249 LIBS=$SAVED_LIBS
250
251 AC_MSG_CHECKING([whether to use the included libcfg])
252 AC_MSG_RESULT($libcfg_enabled)
253
254 # Windows hacks.
255
256 AC_DEFINE([WINVER], [0x0501], [Windows 2000 or before not supported.])
257 save_LIBS="$LIBS"
258 LIBS="$LIBS -lws2_32"
259 AC_TRY_LINK([#include <winsock2.h>], [
260   WORD wVersionRequested = MAKEWORD(2, 2);
261   WSADATA wsaData;
262   int err = WSAStartup(wVersionRequested, &wsaData);
263   WSACleanup ();], wsastartup=yes, wsastartup=no)
264 LIBS="$save_LIBS"
265 if test "$wsastartup" = "yes"; then
266   AC_DEFINE(HAVE_WINSOCK, 1, [Call WSAStartup in gnutls_global_init])
267 fi
268 AC_MSG_CHECKING([if we have Windows and WSAStartup/WSACleanup in -lws2_32])
269 AC_MSG_RESULT($wsastartup)
270
271 dnl Gnulib files
272 dnl
273
274 AC_MSG_RESULT([***
275 *** Setting up gnulib compatibility files...
276 ])
277 gl_INIT
278
279 AC_MSG_RESULT([***
280 *** Detecting options for shared libraries...
281 ])
282 AC_LIBTOOL_WIN32_DLL
283 AC_PROG_LIBTOOL
284
285 AC_SUBST(AM_CFLAGS)
286
287 AC_CONFIG_SUBDIRS([lib])
288 AC_CONFIG_SUBDIRS([libextra])
289
290 AC_CONFIG_FILES([Makefile \
291         doc/Makefile doc/examples/Makefile doc/scripts/Makefile \
292         doc/manpages/Makefile doc/reference/Makefile doc/doxygen/Doxyfile \
293         doc/credentials/Makefile doc/credentials/x509/Makefile \
294         doc/credentials/srp/Makefile doc/credentials/openpgp/Makefile \
295         gl/Makefile gl/tests/Makefile \
296         tests/Makefile tests/rsa-md5-collision/Makefile tests/userid/Makefile \
297         tests/pkcs1-padding/Makefile tests/pkcs8-decode/Makefile \
298         tests/pkcs12-decode/Makefile tests/pathlen/Makefile \
299         tests/key-id/Makefile tests/sha2/Makefile \
300         tests/openpgp-certs/Makefile \
301         src/Makefile \
302         src/cfg/Makefile src/cfg/platon/Makefile src/cfg/platon/str/Makefile \
303         guile/Makefile guile/modules/Makefile \
304         guile/src/Makefile guile/tests/Makefile])
305
306 AC_CONFIG_FILES([guile/pre-inst-guile], [chmod +x guile/pre-inst-guile])
307
308 AC_OUTPUT