Bumped version number for cvs version
[gnupg.git] / configure.ac
1 dnl Configure.ac script for GnuPG
2 dnl Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
3 dnl
4 dnl This file is part of GnuPG.
5 dnl
6 dnl GnuPG is free software; you can redistribute it and/or modify
7 dnl it under the terms of the GNU General Public License as published by
8 dnl the Free Software Foundation; either version 2 of the License, or
9 dnl (at your option) any later version.
10 dnl 
11 dnl GnuPG is distributed in the hope that it will be useful,
12 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
13 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 dnl GNU General Public License for more details.
15 dnl 
16 dnl You should have received a copy of the GNU General Public License
17 dnl along with this program; if not, write to the Free Software
18 dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19 dnl
20 dnl (Process this file with autoconf to produce a configure script.)
21 dnlAC_REVISION($Revision$)dnl
22
23 AC_PREREQ(2.52)
24
25 # Remember to change the version number immediately *after* a release
26 # and remove the "-cvs" or "rc" suffix immediately *before* a release.
27 AC_INIT(gnupg, 1.3.1-cvs, bug-gnupg@gnu.org)
28 # Set development_version to yes if the minor number is odd or you
29 # feel that the default check for a development version is not
30 # sufficient.
31 development_version=yes
32
33 ALL_LINGUAS="de"
34
35 PACKAGE=$PACKAGE_NAME
36 VERSION=$PACKAGE_VERSION
37
38 AC_CONFIG_AUX_DIR(scripts)
39 AC_CONFIG_SRCDIR(g10/g10.c)
40 AC_CANONICAL_TARGET()
41 AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
42 AM_CONFIG_HEADER(config.h)
43
44 AC_SUBST(PACKAGE)
45 AC_SUBST(VERSION)
46 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
47 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
48 AC_DEFINE(_GNU_SOURCE,1,[Some tests rely on this (stpcpy) and it should be used for new programs anyway])
49
50 dnl
51 dnl  Check for random module options
52 dnl
53 AC_MSG_CHECKING([which random module to use])
54 AC_ARG_ENABLE(static-rnd,
55     [  --enable-static-rnd=[egd|unix|linux|auto]  ],
56 [use_static_rnd=$enableval], [use_static_rnd=default] )
57
58 if test "$use_static_rnd" = no; then
59     use_static_rnd=default
60 fi
61
62 case "$use_static_rnd" in
63     egd | linux | unix | default )
64       AC_MSG_RESULT($use_static_rnd)
65       ;;
66     auto )
67       AC_MSG_RESULT(automagically selected at runtime)
68       ;;
69     * )
70       AC_MSG_RESULT(invalid argument)
71       AC_MSG_ERROR(there is no random module rnd$use_static_rnd)
72       ;;
73 esac
74
75 AC_ARG_WITH(egd-socket,
76     [  --with-egd-socket=NAME  use NAME for the EGD socket],
77             egd_socket_name="$withval", egd_socket_name="" )
78 AC_DEFINE_UNQUOTED(EGD_SOCKET_NAME, "$egd_socket_name",
79                    [Define if you don't want the default EGD socket name.
80                     For details see cipher/rndegd.c])
81
82
83 dnl
84 dnl See whether the user wants to disable checking for /dev/random
85
86 AC_MSG_CHECKING([whether use of /dev/random is requested])
87 AC_ARG_ENABLE(dev-random,
88 [  --disable-dev-random    disable the use of dev random],
89     try_dev_random=$enableval, try_dev_random=yes)
90 AC_MSG_RESULT($try_dev_random)
91
92
93 dnl
94 dnl  Check other options
95 dnl
96
97 # We don't need idea but some people claim that they need it for
98 # research etc., so we allow to place an idea source code into the
99 # cipher directory and statically link it if available, otherwise we
100 # link to a stub.  We don't use AC_CHECK_FILE to avoid caching.
101 AC_MSG_CHECKING(for extra cipher modules)
102 tmp=""
103 if test -f $srcdir/cipher/idea.c; then 
104    IDEA_O=idea.o
105    tmp=idea
106 else
107    IDEA_O=idea-stub.o
108    tmp=no
109 fi
110 AC_SUBST(IDEA_O)
111 AC_MSG_RESULT($tmp)
112
113 # if the static idea is present, disable dynload.
114 if test "$IDEA_O" = idea-stub.o ; then
115   AC_MSG_CHECKING([whether use of extensions is requested])
116   AC_ARG_ENABLE(dynload,
117   [  --disable-dynload       disable use of extensions],
118       try_dynload=$enableval, try_dynload=yes)
119   AC_MSG_RESULT($try_dynload)
120 else
121   try_dynload=no
122 fi
123
124 AC_MSG_CHECKING([whether assembler modules are requested])
125 AC_ARG_ENABLE(asm,
126 [  --disable-asm           do not use assembler modules],
127      try_asm_modules=$enableval, try_asm_modules=yes)
128 AC_MSG_RESULT($try_asm_modules)
129
130 AC_MSG_CHECKING([whether memory guard is requested])
131 AC_ARG_ENABLE(m-guard,
132     [  --enable-m-guard        enable memory guard facility],
133     use_m_guard=$enableval, use_m_guard=no)
134 AC_MSG_RESULT($use_m_guard)
135 if test "$use_m_guard" = yes ; then
136     AC_DEFINE(M_GUARD,1,[Define to use the (obsolete) malloc guarding feature])
137 fi
138
139 AC_MSG_CHECKING([whether to enable old-style TIGER digest support])
140 AC_ARG_ENABLE(old-tiger,
141     [  --enable-old-tiger      enable old-style TIGER digest support],
142     old_tiger=$enableval, old_tiger=no)
143 AC_MSG_RESULT($old_tiger)
144 if test "$old_tiger" = yes ; then
145     AC_DEFINE(USE_OLD_TIGER,1,[Define to use the old fake OID for TIGER digest support])
146 fi
147
148 AC_MSG_CHECKING([whether to enable external program execution])
149 AC_ARG_ENABLE(exec,
150     [  --disable-exec          disable all external program execution],
151     use_exec=$enableval, use_exec=yes)
152 AC_MSG_RESULT($use_exec)
153 if test "$use_exec" = no ; then
154     AC_DEFINE(NO_EXEC,1,[Define to disable all external program execution])
155 fi
156
157 if test "$use_exec" = yes ; then
158   AC_MSG_CHECKING([whether to enable photo ID viewing])
159   AC_ARG_ENABLE(photo-viewers,
160       [  --disable-photo-viewers disable photo ID viewers],
161       [if test "$enableval" = no ; then
162          AC_DEFINE(DISABLE_PHOTO_VIEWER,1,[define to disable photo viewing])
163       fi],enableval=yes)
164   gnupg_cv_enable_photo_viewers=$enableval
165   AC_MSG_RESULT($enableval)
166
167   if test "$gnupg_cv_enable_photo_viewers" = yes ; then
168     AC_MSG_CHECKING([whether to use a fixed photo ID viewer])
169     AC_ARG_WITH(photo-viewer,
170         [  --with-photo-viewer=FIXED_VIEWER  set a fixed photo ID viewer],
171         [if test "$withval" = yes ; then
172            withval=no
173         elif test "$withval" != no ; then
174            AC_DEFINE_UNQUOTED(FIXED_PHOTO_VIEWER,"$withval",
175                             [if set, restrict photo-viewer to this])
176         fi],withval=no)
177     AC_MSG_RESULT($withval)
178   fi
179
180   AC_MSG_CHECKING([whether to enable external keyserver helpers])
181   AC_ARG_ENABLE(keyserver-helpers,
182       [  --disable-keyserver-helpers  disable all external keyserver support],
183       [if test "$enableval" = no ; then
184          AC_DEFINE(DISABLE_KEYSERVER_HELPERS,1,
185                   [define to disable keyserver helpers])
186       fi],enableval=yes)
187   gnupg_cv_enable_keyserver_helpers=$enableval
188   AC_MSG_RESULT($enableval)
189
190   if test "$gnupg_cv_enable_keyserver_helpers" = yes ; then
191     AC_MSG_CHECKING([whether LDAP keyserver support is requested])
192     AC_ARG_ENABLE(ldap,
193     [  --disable-ldap          disable LDAP keyserver interface],
194         try_ldap=$enableval, try_ldap=yes)
195     AC_MSG_RESULT($try_ldap)
196
197     AC_MSG_CHECKING([whether HKP keyserver support is requested])
198     AC_ARG_ENABLE(hkp,
199     [  --disable-hkp           disable HKP keyserver interface],
200         try_hkp=$enableval, try_hkp=yes)
201     AC_MSG_RESULT($try_hkp)
202
203     if test "$try_hkp" = yes ; then
204       AC_SUBST(GPGKEYS_HKP,"gpgkeys_hkp")
205     fi
206
207     AC_MSG_CHECKING([whether email keyserver support is requested])
208     AC_ARG_ENABLE(mailto,
209     [  --disable-mailto        disable email keyserver interface],
210         try_mailto=$enableval, try_mailto=yes)
211     AC_MSG_RESULT($try_mailto)
212     fi
213
214     AC_MSG_CHECKING([whether keyserver exec-path is enabled])
215     AC_ARG_ENABLE(keyserver-path,
216         [  --disable-keyserver-path disable the exec-path option for keyserver helpers],
217         [if test "$enableval" = no ; then
218          AC_DEFINE(DISABLE_KEYSERVER_PATH,1,[define to disable exec-path for keyserver helpers])
219         fi],enableval=yes)
220     AC_MSG_RESULT($enableval)
221   fi
222
223 AC_MSG_CHECKING([whether included zlib is requested])
224 AC_ARG_WITH(included-zlib,
225     [  --with-included-zlib    use the zlib code included here],
226 [g10_force_zlib=yes], [g10_force_zlib=no] )
227 AC_MSG_RESULT($g10_force_zlib)
228
229
230 dnl
231 dnl Check whether we want to use Linux capabilities
232 dnl
233 AC_MSG_CHECKING([whether use of capabilities is requested])
234 AC_ARG_WITH(capabilities,
235     [  --with-capabilities     use linux capabilities [default=no]],
236 [use_capabilities="$withval"],[use_capabilities=no])
237 AC_MSG_RESULT($use_capabilities)
238
239
240 AH_BOTTOM([
241 #if !(defined(HAVE_FORK) && defined(HAVE_PIPE) && defined(HAVE_WAITPID))
242 #define EXEC_TEMPFILE_ONLY
243 #endif
244
245 #include "g10defs.h"
246 ])
247
248
249 AM_MAINTAINER_MODE
250
251 dnl Checks for programs.
252
253 AC_PROG_MAKE_SET
254 AM_SANITY_CHECK
255 missing_dir=`cd $ac_aux_dir && pwd`
256 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
257 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
258 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
259 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
260 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
261 AC_PROG_CC
262 AC_PROG_CPP
263 AC_PATH_PROG(PERL,"perl")
264 AC_ISC_POSIX
265 AC_SYS_LARGEFILE
266 AC_PROG_INSTALL
267 AC_PROG_AWK
268 AC_CHECK_PROG(DOCBOOK_TO_MAN, docbook-to-man, yes, no)
269 AM_CONDITIONAL(HAVE_DOCBOOK_TO_MAN, test "$ac_cv_prog_DOCBOOK_TO_MAN" = yes)
270 GNUPG_CHECK_FAQPROG
271 GNUPG_CHECK_DOCBOOK_TO_TEXI
272
273 MPI_OPT_FLAGS=""
274
275
276 try_gettext=yes
277 case "${target}" in
278     *-*-mingw32*|*-*-cygwin*)
279         # special stuff for Windoze NT
280         ac_cv_have_dev_random=no
281         AC_DEFINE(USE_ONLY_8DOT3,1,
282                   [set this to limit filenames to the 8.3 format])
283         AC_DEFINE(HAVE_DRIVE_LETTERS,1,
284                   [defined if we must run on a stupid file system])
285         AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
286                   [defined if we run on some of the PCDOS like systems 
287                    (DOS, Windoze. OS/2) with special properties like
288                     no file modes])
289         AC_DEFINE(USE_SIMPLE_GETTEXT,1,
290                   [because the Unix gettext has too much overhead on
291                    MingW32 systems and these systems lack Posix functions,
292                    we use a simplified version of gettext])
293         try_gettext="no"
294         ;;
295     i?86-emx-os2 | i?86-*-os2*emx )
296         # OS/2 with the EMX environment
297         ac_cv_have_dev_random=no
298         AC_DEFINE(HAVE_DRIVE_LETTERS)
299         AC_DEFINE(HAVE_DOSISH_SYSTEM)
300         try_gettext="no"
301         ;;
302
303     i?86-*-msdosdjgpp*)
304         # DOS with the DJGPP environment
305         ac_cv_have_dev_random=no
306         AC_DEFINE(HAVE_DRIVE_LETTERS)
307         AC_DEFINE(HAVE_DOSISH_SYSTEM)
308         try_gettext="no"
309         ;;
310
311     *-*-freebsd*)
312        # FreeBSD
313        CPPFLAGS="$CPPFLAGS -I/usr/local/include"
314        LDFLAGS="$LDFLAGS -L/usr/local/lib"
315        ;;
316
317     *-*-hpux*)
318         if test -z "$GCC" ; then
319             CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE"
320         fi
321         ;;
322     *-dec-osf4*)
323         if test -z "$GCC" ; then
324             # Suppress all warnings
325             # to get rid of the unsigned/signed char mismatch warnings.
326             CFLAGS="$CFLAGS -w"
327         fi
328         ;;
329     *-dec-osf5*)
330         if test -z "$GCC" ; then
331             # Use the newer compiler `-msg_disable ptrmismatch' to
332             # get rid of the unsigned/signed char mismatch warnings.
333             # Using this may hide other pointer mismatch warnings, but
334             # it at least lets other warning classes through
335             CFLAGS="$CFLAGS -msg_disable ptrmismatch"
336         fi
337         ;;
338     m68k-atari-mint)
339         ;;
340     *)
341        ;;
342 esac
343
344 AC_SUBST(MPI_OPT_FLAGS)
345 GNUPG_SYS_SYMBOL_UNDERSCORE
346
347 dnl Must check for network library requirements before doing link tests
348 dnl for ldap, for example. If ldap libs are static (or dynamic and without
349 dnl ELF runtime link paths), then link will fail and LDAP support won't
350 dnl be detected.
351
352 AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname,
353         [NETLIBS="-lnsl $NETLIBS"]))
354 AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt,
355         [NETLIBS="-lsocket $NETLIBS"]))
356
357 # Try and link a LDAP test program to weed out unusable LDAP
358 # libraries.  -lldap [-llber [-lresolv]] is for OpenLDAP.  OpenLDAP in
359 # general is terrible with creating weird dependencies.  If all else
360 # fails, the user can play guess-the-dependency by using something
361 # like LDAPLIBS="-lfoo" ./configure
362
363 if test "$try_ldap" = yes ; then
364   for MY_LDAPLIBS in ${LDAPLIBS+"$LDAPLIBS"} "-lldap" "-lldap -llber" "-lldap -llber -lresolv"; do
365     _ldap_save_libs=$LIBS
366     LIBS="$MY_LDAPLIBS $NETLIBS $LIBS"
367
368     AC_MSG_CHECKING([whether LDAP via \"$MY_LDAPLIBS\" is present and sane])
369     AC_TRY_LINK([#include <ldap.h>],[ldap_open("foobar",1234);],
370                 [gnupg_cv_func_ldap_init=yes],[gnupg_cv_func_ldap_init=no])
371     AC_MSG_RESULT([$gnupg_cv_func_ldap_init])
372
373     if test $gnupg_cv_func_ldap_init = no; then
374       AC_MSG_CHECKING([whether I can make LDAP be sane with lber.h])
375       AC_TRY_LINK([#include <lber.h>
376 #include <ldap.h>],[ldap_open("foobar",1234);],
377          [gnupg_cv_func_ldaplber_init=yes],[gnupg_cv_func_ldaplber_init=no])
378       AC_MSG_RESULT([$gnupg_cv_func_ldaplber_init])
379     fi
380
381     if test "$gnupg_cv_func_ldaplber_init" = yes ; then
382        AC_DEFINE(NEED_LBER_H,1,[Define if the LDAP library requires including lber.h before ldap.h])
383     fi
384
385     if test "$gnupg_cv_func_ldap_init" = yes || \
386         test "$gnupg_cv_func_ldaplber_init" = yes ; then
387        LDAPLIBS=$MY_LDAPLIBS
388        GPGKEYS_LDAP="gpgkeys_ldap"
389
390        AC_MSG_CHECKING([whether LDAP supports ldap_get_option])
391
392        if test "$gnupg_cv_func_ldap_init" = yes ; then
393           AC_TRY_LINK([#include <ldap.h>],
394              [ldap_get_option((void *)0,0,(void *)0);],
395              [gnupg_cv_func_ldap_get_option=yes],
396              [gnupg_cv_func_ldap_get_option=no])
397         else
398           AC_TRY_LINK([#include <lber.h>
399 #include <ldap.h>],[ldap_get_option((void *)0,0,(void *)0);],
400              [gnupg_cv_func_ldap_get_option=yes],
401              [gnupg_cv_func_ldap_get_option=no])
402        fi
403
404        AC_MSG_RESULT([$gnupg_cv_func_ldap_get_option])
405
406        if test "$gnupg_cv_func_ldap_get_option" = yes ; then
407           AC_DEFINE(HAVE_LDAP_GET_OPTION,1,[Define if the LDAP library has ldap_get_option])
408        else
409           AC_MSG_CHECKING([whether LDAP supports ld_errno])
410
411           if test "$gnupg_cv_func_ldap_init" = yes ; then
412             AC_TRY_COMPILE([#include <ldap.h>],
413                [LDAP *ldap; ldap->ld_errno;],
414                [gnupg_cv_func_ldap_ld_errno=yes],
415                [gnupg_cv_func_ldap_ld_errno=no])
416            else
417             AC_TRY_LINK([#include <lber.h>
418 #include <ldap.h>],[LDAP *ldap; ldap->ld_errno;],
419                [gnupg_cv_func_ldap_ld_errno=yes],
420                [gnupg_cv_func_ldap_ld_errno=no])
421           fi
422
423           AC_MSG_RESULT([$gnupg_cv_func_ldap_ld_errno])
424
425           if test "$gnupg_cv_func_ldap_ld_errno" = yes ; then
426              AC_DEFINE(HAVE_LDAP_LD_ERRNO,1,[Define if the LDAP library supports ld_errno])
427           fi
428        fi
429     fi
430
431     LIBS=$_ldap_save_libs
432
433     if test "$GPGKEYS_LDAP" != "" ; then break; fi
434   done
435 fi
436
437 AC_SUBST(GPGKEYS_LDAP)
438 AC_SUBST(LDAPLIBS)
439
440 dnl This isn't necessarily sendmail itself, but anything that gives a
441 dnl sendmail-ish interface to the outside world.  That includes qmail,
442 dnl postfix, etc.  Basically, anything that can handle "sendmail -t".
443
444 if test "$try_mailto" = yes ; then
445   AC_ARG_WITH(mailprog,[  --with-mailprog=NAME    use "NAME -t" for mail transport],,with_mailprog=yes)
446
447   if test "$with_mailprog" = yes ; then
448     AC_PATH_PROG(SENDMAIL,sendmail,,$PATH:/usr/sbin:/usr/libexec:/usr/lib)
449     if test "$ac_cv_path_SENDMAIL" ; then
450       GPGKEYS_MAILTO="gpgkeys_mailto"
451     fi
452   elif test "$with_mailprog" != no ; then
453     AC_MSG_CHECKING([for a mail transport program])
454     AC_SUBST(SENDMAIL,$with_mailprog)
455     AC_MSG_RESULT($with_mailprog)
456     GPGKEYS_MAILTO="gpgkeys_mailto"
457   fi
458 fi
459
460 AC_SUBST(GPGKEYS_MAILTO)
461
462 case "${target}" in
463     *-*-mingw32*)
464         PRINTABLE_OS_NAME="MingW32"
465         ;;
466     *-*-cygwin*)
467         PRINTABLE_OS_NAME="Cygwin32"
468         ;;
469     i?86-emx-os2 | i?86-*-os2*emx )
470         PRINTABLE_OS_NAME="OS/2"
471         ;;
472     i?86-*-msdosdjgpp*)
473         PRINTABLE_OS_NAME="MSDOS/DJGPP"
474         try_dynload=no
475         ;;
476     *-linux*)
477         PRINTABLE_OS_NAME="GNU/Linux"
478         ;;
479 dnl let that after linux to avoid gnu-linux problems
480     *-gnu*)
481         PRINTABLE_OS_NAME="GNU/Hurd"
482         ;;
483     *)
484         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
485         ;;
486 esac
487 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
488                    [A human readable text with the name of the OS])
489
490
491 #
492 # 1. Set names of random devices
493 #
494 NAME_OF_DEV_RANDOM="/dev/random"
495 NAME_OF_DEV_URANDOM="/dev/urandom"
496 case "${target}" in
497     *-openbsd*)
498         NAME_OF_DEV_RANDOM="/dev/srandom"
499         NAME_OF_DEV_URANDOM="/dev/urandom"
500         ;;
501 esac
502 AC_DEFINE_UNQUOTED(NAME_OF_DEV_RANDOM, "$NAME_OF_DEV_RANDOM",
503                    [defined to the name of the strong random device])
504 AC_DEFINE_UNQUOTED(NAME_OF_DEV_URANDOM, "$NAME_OF_DEV_URANDOM",
505                    [defined to the name of the weaker random device])
506 AC_SUBST(MPI_OPT_FLAGS)
507
508
509 dnl Checks for libraries.
510
511 if test "$try_gettext" = yes; then
512   AM_GNU_GETTEXT
513 else
514   USE_NLS=no
515   USE_INCLUDED_LIBINTL=no
516   BUILD_INCLUDED_LIBINTL=no
517   AC_SUBST(USE_NLS)
518   AC_SUBST(USE_INCLUDED_LIBINTL)
519   AC_SUBST(BUILD_INCLUDED_LIBINTL)
520 fi
521
522
523 if test "$try_dynload" = yes ; then
524   AC_CHECK_LIB(dl,dlopen)
525   if test "$ac_cv_lib_dl_dlopen" = "yes"; then
526     AC_DEFINE(USE_DYNAMIC_LINKING,1,
527               [define to enable the use of extensions])
528     AC_DEFINE(HAVE_DL_DLOPEN,1,
529               [Defined when the dlopen function family is available])
530   else
531     AC_CHECK_FUNCS(dlopen)
532     if test "$ac_cv_func_dlopen" = "yes"; then
533       AC_DEFINE(USE_DYNAMIC_LINKING)
534       AC_DEFINE(HAVE_DL_DLOPEN)
535     fi
536   fi
537 else
538   AC_MSG_CHECKING(for dynamic loading)
539   DYNLINK_LDFLAGS=
540   DYNLINK_MOD_CFLAGS=
541   AC_MSG_RESULT(has been disabled)
542 fi
543
544 dnl Checks for header files.
545 AC_HEADER_STDC
546 AC_CHECK_HEADERS(unistd.h langinfo.h termio.h locale.h)
547
548 dnl Checks for typedefs, structures, and compiler characteristics.
549 AC_C_CONST
550 AC_C_INLINE
551 AC_TYPE_SIZE_T
552 AC_TYPE_MODE_T
553 AC_TYPE_SIGNAL
554 AC_DECL_SYS_SIGLIST
555
556 GNUPG_CHECK_ENDIAN
557
558
559 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
560 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
561 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
562 GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
563 GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
564
565 AC_CHECK_SIZEOF(unsigned short, 2)
566 AC_CHECK_SIZEOF(unsigned int, 4)
567 AC_CHECK_SIZEOF(unsigned long, 4)
568 AC_CHECK_SIZEOF(unsigned long long, 0)
569
570 if test "$ac_cv_sizeof_unsigned_short" = "0" \
571    || test "$ac_cv_sizeof_unsigned_int" = "0" \
572    || test "$ac_cv_sizeof_unsigned_long" = "0"; then
573     AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
574 fi
575
576 dnl Checks for library functions.
577 AC_FUNC_FSEEKO
578 AC_FUNC_VPRINTF
579 AC_FUNC_FORK
580 AC_CHECK_FUNCS(strerror stpcpy strsep strlwr tcgetattr strtoul mmap)
581 AC_CHECK_FUNCS(strcasecmp strncasecmp)
582 AC_CHECK_FUNCS(memmove gettimeofday getrusage setrlimit clock_gettime)
583 AC_CHECK_FUNCS(atexit raise getpagesize strftime nl_langinfo setlocale)
584 AC_CHECK_FUNCS(waitpid wait4 sigaction sigprocmask rand pipe stat)
585 AC_REPLACE_FUNCS(mkdtemp)
586
587 #
588 # check for gethrtime and run a testprogram to see whether
589 # it is broken.  It has been reported that some Solaris and HP UX systems 
590 # raise an SIGILL
591 #
592 AC_CACHE_CHECK([for gethrtime], 
593                [gnupg_cv_func_gethrtime],
594                [AC_TRY_LINK([#include <sys/times.h>],[
595                    hrtime_t tv;
596                    tv = gethrtime();
597                  ],
598                  [gnupg_cv_func_gethrtime=yes],
599                  [gnupg_cv_func_gethrtime=no])
600                ])
601 if test $gnupg_cv_func_gethrtime = yes; then
602      AC_DEFINE([HAVE_GETHRTIME], 1,
603                [Define if you have the `gethrtime(2)' function.])
604      AC_CACHE_CHECK([whether gethrtime is broken], 
605                [gnupg_cv_func_broken_gethrtime],
606                [AC_TRY_RUN([
607                    #include <sys/times.h>
608                    int main () {
609                    hrtime_t tv;
610                    tv = gethrtime(); 
611                  }
612                  ],
613                  [gnupg_cv_func_broken_gethrtime=no],
614                  [gnupg_cv_func_broken_gethrtime=yes],
615                  [gnupg_cv_func_broken_gethrtime=assume-no])
616                 ])
617     if test $gnupg_cv_func_broken_gethrtime = yes; then
618       AC_DEFINE([HAVE_BROKEN_GETHRTIME], 1,
619       [Define if `gethrtime(2)' does not work correctly i.e. issues a SIGILL.])
620     fi
621 fi
622      
623
624 GNUPG_CHECK_MLOCK
625 GNUPG_FUNC_MKDIR_TAKES_ONE_ARG
626
627 dnl
628 dnl Check whether we can use Linux capabilities as requested
629 dnl
630 if test "$use_capabilities" = "yes" ; then
631 use_capabilities=no
632 AC_CHECK_HEADERS(sys/capability.h)
633 if test "$ac_cv_header_sys_capability_h" = "yes" ; then
634   AC_CHECK_LIB(cap, cap_init, ac_need_libcap=1)
635   if test "$ac_cv_lib_cap_cap_init" = "yes"; then
636      AC_DEFINE(USE_CAPABILITIES,1,
637                [define if capabilities should be used])
638      LIBS="$LIBS -lcap"
639      use_capabilities=yes
640   fi
641 fi
642 if test "$use_capabilities" = "no" ; then
643     AC_MSG_WARN([[
644 ***
645 *** The use of capabilities on this system is not possible.
646 *** You need a recent Linux kernel and some patches:
647 ***   fcaps-2.2.9-990610.patch      (kernel patch for 2.2.9)
648 ***   fcap-module-990613.tar.gz     (kernel module)
649 ***   libcap-1.92.tar.gz            (user mode library and utilities)
650 *** And you have to configure the kernel with CONFIG_VFS_CAP_PLUGIN
651 *** set (filesystems menu). Be warned: This code is *really* ALPHA.
652 ***]])
653 fi
654 fi
655
656
657 GNUPG_CHECK_IPC
658 if test "$ac_cv_header_sys_shm_h" = "yes"; then
659   AC_DEFINE(USE_SHM_COPROCESSING,1,
660             [define if the shared memory interface should be made available])
661 fi
662
663 dnl
664 dnl check whether we have a random device
665 dnl
666 if test "$try_dev_random" = yes ; then
667     AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
668     [if test -r "$NAME_OF_DEV_RANDOM" && test -r "$NAME_OF_DEV_URANDOM" ; then
669       ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
670     if test "$ac_cv_have_dev_random" = yes; then
671         AC_DEFINE(HAVE_DEV_RANDOM,1,
672                  [defined if the system supports a random device] )
673     fi
674 else
675     AC_MSG_CHECKING(for random device)
676     ac_cv_have_dev_random=no
677     AC_MSG_RESULT(has been disabled)
678 fi
679
680
681 dnl
682 dnl Figure out the default random module.
683 dnl
684 random_modules=""
685 if test "$use_static_rnd" = default; then
686      if test "$ac_cv_have_dev_random" = yes; then
687         random_modules="rndlinux"
688      else
689          case "${target}" in
690             *-*-mingw32*|*-*-cygwin*)
691                 random_modules="rndw32"
692                 ;;
693             i?86-emx-os2|i?86-*-os2*emx)
694                 random_modules="rndos2"
695                 ;;
696             m68k-atari-mint)
697                 random_modules="rndatari"
698                 ;;
699             i?86-*-msdosdjgpp*)
700                 :
701                 ;;
702             *)
703                 random_modules="rndlinux rndegd rndunix"
704                 AC_DEFINE(USE_ALL_RANDOM_MODULES, 1, 
705                           [Allow to select random modules at runtime.])
706                 ;;
707          esac
708      fi
709 else
710   if test "$use_static_rnd" = auto; then
711      random_modules="rndlinux rndegd rndunix"
712      AC_DEFINE(USE_ALL_RANDOM_MODULES, 1)
713   else
714      random_modules="rnd$use_static_rnd";
715   fi
716 fi
717
718 if test -z "$random_modules"; then
719    AC_MSG_ERROR(no random module available)
720 fi
721 print_egd_warning=no
722 for rndmod in $random_modules "" ; do
723   case "$rndmod" in
724     rndlinux)
725          AC_DEFINE(USE_RNDLINUX,1, 
726                   [Defined if the /dev/random based RNG should be used.])
727          ;;
728     rndunix)
729          AC_DEFINE(USE_RNDUNIX,1, 
730                   [Defined if the default Unix RNG should be used.])
731          print_egd_warning=yes
732           ;;
733     rndegd)
734          AC_DEFINE(USE_RNDEGD,1, 
735                   [Defined if the EGD based RNG should be used.])
736          EGDLIBS=$NETLIBS
737          AC_SUBST(EGDLIBS)
738          ;;
739     rndw32)
740          AC_DEFINE(USE_RNDW32,1, 
741                   [Defined if the Windows specific RNG should be used.])
742         ;;
743    esac
744 done
745
746 dnl setup assembler stuff
747 AC_MSG_CHECKING(for mpi assembler functions)
748 if test -f $srcdir/mpi/config.links ; then
749     . $srcdir/mpi/config.links
750     AC_CONFIG_LINKS("$mpi_ln_list")
751     ac_cv_mpi_extra_asm_modules="$mpi_extra_modules"
752     ac_cv_mpi_sflags="$mpi_sflags"
753     ac_cv_mpi_config_done="yes"
754     AC_MSG_RESULT(done)
755 else
756     AC_MSG_RESULT(failed)
757     AC_MSG_ERROR([mpi/config.links missing!])
758 fi
759 MPI_EXTRA_ASM_OBJS=""
760 show_extraasm=""
761 if test "$ac_cv_mpi_extra_asm_modules" != ""; then
762 for i in $ac_cv_mpi_extra_asm_modules; do
763     show_extraasm="$show_extraasm $i"
764     MPI_EXTRA_ASM_OBJS="$MPI_EXTRA_ASM_OBJS $i.o"
765 done
766 fi
767 AC_SUBST(MPI_EXTRA_ASM_OBJS)
768 MPI_SFLAGS="$ac_cv_mpi_sflags"
769 AC_SUBST(MPI_SFLAGS)
770
771 dnl Do we have zlib? Must do it here because Solaris failed
772 dnl when compiling a conftest (due to the "-lz" from LIBS).
773 use_local_zlib=yes
774 if test "$g10_force_zlib" = "yes"; then
775   :
776 else
777   _cppflags="${CPPFLAGS}"
778   _ldflags="${LDFLAGS}"
779
780   AC_ARG_WITH(zlib,
781   [  --with-zlib=DIR         use libz in DIR],[
782     if test -d "$withval"; then
783       CPPFLAGS="${CPPFLAGS} -I$withval/include"
784       LDFLAGS="${LDFLAGS} -L$withval/lib"
785     fi
786   ])
787
788   AC_CHECK_HEADER(zlib.h,
789       AC_CHECK_LIB(z, deflateInit2_,
790        use_local_zlib=no
791        LIBS="$LIBS -lz",
792        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
793        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
794 fi
795  
796 if test "$use_local_zlib" = yes ; then
797     AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, true)
798     AC_CONFIG_LINKS(zlib.h:zlib/zlib.h zconf.h:zlib/zconf.h )
799     ZLIBS="../zlib/libzlib.a"
800 else
801     AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, false)
802     ZLIBS=
803 fi
804 AC_SUBST(ZLIBS)
805
806
807 # Allow users to append something to the version string without
808 # flagging it as development version.  The user version parts is
809 # considered everything after a dash. 
810 if test "$development_version" != yes; then
811   changequote(,)dnl
812   tmp_pat='[a-zA-Z]'
813   changequote([,])dnl
814   if echo "$VERSION" | sed 's/-.*//' | grep "$tmp_pat" >/dev/null ; then
815     development_version=yes
816   fi
817 fi
818 if test "$development_version" = yes; then
819     AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
820             [Defined if this is not a regular release])
821 fi
822
823 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
824
825 GNUPG_CHECK_GNUMAKE
826
827 # add some extra libs here so that previous tests don't fail for
828 # mysterious reasons - the final link step should bail out. 
829 case "${target}" in
830     *-*-mingw32*)
831         LIBS="$LIBS -lwsock32"
832         ;;
833     *)
834        ;;
835 esac
836
837
838 if test "$GCC" = yes; then
839     if test "$USE_MAINTAINER_MODE" = "yes"; then
840         CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
841     else
842         CFLAGS="$CFLAGS -Wall"
843     fi
844 fi
845
846 AC_SUBST(NETLIBS)
847
848
849 if test "$print_egd_warning" = yes; then
850   AC_MSG_WARN([[
851 ***
852 *** The performance of the UNIX random gatherer module is not very good
853 *** and it does not keep the entropy pool over multiple invocations of
854 *** GnuPG.  The suggested way to overcome this problem is to use the
855 ***
856 ***               Entropy Gathering Daemon (EGD)
857 ***
858 *** which provides a entropy source for the whole system.  It is written
859 *** in Perl and available at the GnuPG FTP servers.  For more information
860 *** consult the GnuPG webpages:
861 ***
862 ***           http://www.gnupg.org/download.html#egd
863 ***
864 *** You may want to run ./configure with --enable-static-rnd=egd to use it.
865 ***]])
866 fi
867
868
869
870 # Note the \\\\ for backslashes.  Autoconf eats one layer, leaving \\
871
872 AC_SUBST(GNUPG_LIBEXECDIR,"${libexecdir}/gnupg")
873
874 AC_CONFIG_COMMANDS(g10defs.h,[[
875 cat >g10defs.tmp <<G10EOF
876 /* Generated automatically by configure */
877 #ifdef HAVE_DRIVE_LETTERS
878   #define G10_LOCALEDIR     "c:\\\\lib\\\\gnupg\\\\locale"
879   #define GNUPG_LIBDIR      "c:\\\\lib\\\\gnupg"
880   #define GNUPG_LIBEXECDIR  "c:\\\\lib\\\\gnupg"
881   #define GNUPG_DATADIR     "c:\\\\lib\\\\gnupg"
882   #define GNUPG_HOMEDIR     "c:\\\\gnupg"
883 #else
884   #define G10_LOCALEDIR     "${datadir}/locale"
885   #define GNUPG_LIBDIR      "${libdir}/gnupg"
886   #define GNUPG_LIBEXECDIR  "${libexecdir}/gnupg"
887   #define GNUPG_DATADIR     "${datadir}/gnupg"
888   #ifdef __VMS
889     #define GNUPG_HOMEDIR "/SYS\$LOGIN/gnupg" 
890   #else
891     #define GNUPG_HOMEDIR "~/.gnupg" 
892   #endif
893 #endif
894 /* those are here to be redefined by handcrafted g10defs.h.
895    Please note that the string version must not contain more
896    than one character because the using code assumes strlen()==1 */
897 #ifdef HAVE_DOSISH_SYSTEM
898 #define DIRSEP_C '\\\\'
899 #define EXTSEP_C '.'
900 #define DIRSEP_S "\\\\"
901 #define EXTSEP_S "."
902 #else
903 #define DIRSEP_C '/'
904 #define EXTSEP_C '.'
905 #define DIRSEP_S "/"
906 #define EXTSEP_S "."
907 #endif
908 G10EOF
909 cat mpi/mpi-asm-defs.h >>g10defs.tmp 
910 if cmp -s g10defs.h g10defs.tmp 2>/dev/null; then
911     echo "g10defs.h is unchanged"
912     rm -f g10defs.tmp
913 else
914     rm -f g10defs.h
915     mv g10defs.tmp g10defs.h
916     echo "g10defs.h created"
917 fi
918 ]],[[
919 prefix=$prefix
920 exec_prefix=$exec_prefix
921 libdir=$libdir
922 libexecdir=$libexecdir
923 datadir=$datadir
924 DATADIRNAME=$DATADIRNAME
925 ]])
926
927
928 AC_CONFIG_FILES([
929 Makefile
930 intl/Makefile
931 po/Makefile.in
932 util/Makefile
933 mpi/Makefile
934 cipher/Makefile
935 g10/Makefile
936 keyserver/Makefile
937 keyserver/gpgkeys_mailto
938 keyserver/gpgkeys_test
939 doc/Makefile
940 tools/Makefile
941 zlib/Makefile
942 checks/Makefile
943 ])
944 AC_OUTPUT
945
946 # Give some feedback
947 echo
948 echo   "                Configured for: $PRINTABLE_OS_NAME ($target)"
949 if test -n "$show_extraasm"; then
950   echo "  Extra cpu specific functions:$show_extraasm"
951 fi
952 echo