* Makefile.am (DISTCHECK_CONFIGURE_FLAGS): New.
[gnupg.git] / configure.ac
1 dnl Configure.ac script for GnuPG
2 dnl Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
3 dnl               2004 Free Software Foundation, Inc.
4 dnl
5 dnl This file is part of GnuPG.
6 dnl
7 dnl GnuPG is free software; you can redistribute it and/or modify
8 dnl it under the terms of the GNU General Public License as published by
9 dnl the Free Software Foundation; either version 2 of the License, or
10 dnl (at your option) any later version.
11 dnl 
12 dnl GnuPG is distributed in the hope that it will be useful,
13 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
14 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 dnl GNU General Public License for more details.
16 dnl 
17 dnl You should have received a copy of the GNU General Public License
18 dnl along with this program; if not, write to the Free Software
19 dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
20 dnl
21 dnl (Process this file with autoconf to produce a configure script.)
22 dnlAC_REVISION($Revision$)dnl
23
24 AC_PREREQ(2.59)
25 min_automake_version="1.7.9"
26
27 # Remember to change the version number immediately *after* a release
28 # and remove the "-cvs" or "rc" suffix immediately *before* a release.
29 AC_INIT(gnupg, 1.3.91-cvs, bug-gnupg@gnu.org)
30 # Set development_version to yes if the minor number is odd or you
31 # feel that the default check for a development version is not
32 # sufficient.
33 development_version=yes
34
35 AC_CONFIG_AUX_DIR(scripts)
36 AC_CONFIG_SRCDIR(g10/g10.c)
37 AC_CANONICAL_TARGET
38 AM_INIT_AUTOMAKE
39 AM_CONFIG_HEADER(config.h)
40
41 AC_GNU_SOURCE
42
43 dnl
44 dnl  Check for random module options
45 dnl
46 AC_MSG_CHECKING([which random module to use])
47 AC_ARG_ENABLE(static-rnd,
48     [  --enable-static-rnd=[egd|unix|linux|auto]  ],
49 [use_static_rnd=$enableval], [use_static_rnd=default] )
50
51 if test "$use_static_rnd" = no; then
52     use_static_rnd=default
53 fi
54
55 case "$use_static_rnd" in
56     egd | linux | unix | default )
57       AC_MSG_RESULT($use_static_rnd)
58       ;;
59     auto )
60       AC_MSG_RESULT(automagically selected at runtime)
61       ;;
62     * )
63       AC_MSG_RESULT(invalid argument)
64       AC_MSG_ERROR(there is no random module rnd$use_static_rnd)
65       ;;
66 esac
67
68 AC_ARG_WITH(egd-socket,
69     [  --with-egd-socket=NAME  use NAME for the EGD socket],
70             egd_socket_name="$withval", egd_socket_name="" )
71 AC_DEFINE_UNQUOTED(EGD_SOCKET_NAME, "$egd_socket_name",
72                    [Define if you don't want the default EGD socket name.
73                     For details see cipher/rndegd.c])
74
75
76 dnl
77 dnl See whether the user wants to disable checking for /dev/random
78
79 AC_MSG_CHECKING([whether use of /dev/random is requested])
80 AC_ARG_ENABLE(dev-random,
81 [  --disable-dev-random    disable the use of dev random],
82     try_dev_random=$enableval, try_dev_random=yes)
83 AC_MSG_RESULT($try_dev_random)
84
85
86 dnl
87 dnl  Check other options
88 dnl
89
90 AC_MSG_CHECKING([whether assembler modules are requested])
91 AC_ARG_ENABLE(asm,
92 [  --disable-asm           do not use assembler modules],
93      try_asm_modules=$enableval, try_asm_modules=yes)
94 AC_MSG_RESULT($try_asm_modules)
95
96 AC_MSG_CHECKING([whether memory guard is requested])
97 AC_ARG_ENABLE(m-guard,
98     [  --enable-m-guard        enable memory guard facility],
99     use_m_guard=$enableval, use_m_guard=no)
100 AC_MSG_RESULT($use_m_guard)
101 if test "$use_m_guard" = yes ; then
102     AC_DEFINE(M_GUARD,1,[Define to use the (obsolete) malloc guarding feature])
103 fi
104
105 AC_MSG_CHECKING([whether SELinux support is requested])
106 AC_ARG_ENABLE(selinux-support,
107               AC_HELP_STRING([--enable-selinux-support],
108                              [enable SELinux support]),
109               selinux_support=$enableval, selinux_support=no)
110 AC_MSG_RESULT($selinux_support)
111
112 AC_MSG_CHECKING([whether OpenPGP card support is requested])
113 AC_ARG_ENABLE(card-support,
114               AC_HELP_STRING([--disable-card-support],
115                              [disable OpenPGP card support]),
116               card_support=$enableval, card_support=yes)
117 AC_MSG_RESULT($card_support)
118
119 AC_MSG_CHECKING([whether readline support is requested])
120 AC_ARG_WITH(readline,
121               AC_HELP_STRING([--without-readline],
122                              [do not support fancy command line editing]),
123               [readline_support="$withval"], [readline_support=yes])  
124 case "$readline_support" in yes);; no);; *)readline_support=yes;; esac
125 AC_MSG_RESULT($readline_support)
126
127
128 dnl See if we are disabling any algorithms or features for a smaller
129 dnl binary
130
131 try_extensions=no
132
133 use_rsa=yes
134 use_idea=yes
135 use_cast5=yes
136 use_blowfish=yes
137 use_aes=yes
138 use_twofish=yes
139 use_sha256=yes
140 use_sha512=yes
141 use_bzip2=yes
142 use_exec=yes
143
144 AC_ARG_ENABLE(minimal,
145    AC_HELP_STRING([--enable-minimal],[build the smallest gpg binary possible]),
146    use_rsa=no
147    use_idea=no
148    use_cast5=no
149    use_blowfish=no
150    use_aes=no
151    use_twofish=no
152    use_sha256=no
153    use_sha512=no
154    use_bzip2=no
155    use_exec=no)
156
157 AC_MSG_CHECKING([whether to enable the RSA public key algorithm])
158 AC_ARG_ENABLE(rsa,
159    AC_HELP_STRING([--disable-rsa],[disable the RSA public key algorithm]),
160    use_rsa=$enableval)
161 AC_MSG_RESULT($use_rsa)
162 if test x"$use_rsa" = xyes ; then
163    AC_DEFINE(USE_RSA,1,[Define to include the RSA public key algorithm])
164 fi
165
166 AC_MSG_CHECKING([whether to enable the IDEA cipher])
167 AC_ARG_ENABLE(idea,
168    AC_HELP_STRING([--disable-idea],[disable the IDEA cipher]),
169    use_idea=$enableval)
170 AC_MSG_RESULT($use_idea)
171 if test x"$use_idea" = xyes ; then
172    AC_DEFINE(USE_IDEA,1,[Define to include the IDEA cipher])
173
174 # We don't need idea but some people claim that they need it for
175 # research etc., so we allow to place an idea source code into the
176 # cipher directory and statically link it if available, otherwise we
177 # link to a stub.  We don't use AC_CHECK_FILE to avoid caching.
178
179    AC_MSG_CHECKING([for idea cipher module])
180    tmp=""
181    if test -f $srcdir/cipher/idea.c; then 
182       IDEA_O=idea.o
183       tmp=idea
184    else
185       IDEA_O=idea-stub.o
186       tmp=no
187       try_extensions=yes
188    fi
189    AC_SUBST(IDEA_O)
190    AC_MSG_RESULT($tmp)
191 fi
192
193 AC_MSG_CHECKING([whether to enable the CAST5 cipher])
194 AC_ARG_ENABLE(cast5,
195    AC_HELP_STRING([--disable-cast5],[disable the CAST5 cipher]),
196    use_cast5=$enableval)
197 AC_MSG_RESULT($use_cast5)
198 if test x"$use_cast5" = xyes ; then
199    AC_DEFINE(USE_CAST5,1,[Define to include the CAST5 cipher])
200 fi
201
202 AC_MSG_CHECKING([whether to enable the BLOWFISH cipher])
203 AC_ARG_ENABLE(blowfish,
204    AC_HELP_STRING([--disable-blowfish],[disable the BLOWFISH cipher]),
205    use_blowfish=$enableval)
206 AC_MSG_RESULT($use_blowfish)
207 if test x"$use_blowfish" = xyes ; then
208    AC_DEFINE(USE_BLOWFISH,1,[Define to include the BLOWFISH cipher])
209 fi
210
211 AC_MSG_CHECKING([whether to enable the AES ciphers])
212 AC_ARG_ENABLE(aes,
213    AC_HELP_STRING([--disable-aes],[disable the AES, AES192, and AES256 ciphers]),
214    use_aes=$enableval)
215 AC_MSG_RESULT($use_aes)
216 if test x"$use_aes" = xyes ; then
217    AC_DEFINE(USE_AES,1,[Define to include the AES, AES192, and AES256 ciphers])
218 fi
219
220 AC_MSG_CHECKING([whether to enable the TWOFISH cipher])
221 AC_ARG_ENABLE(twofish,
222    AC_HELP_STRING([--disable-twofish],[disable the TWOFISH cipher]),
223    use_twofish=$enableval)
224 AC_MSG_RESULT($use_twofish)
225 if test x"$use_twofish" = xyes ; then
226    AC_DEFINE(USE_TWOFISH,1,[Define to include the TWOFISH cipher])
227 fi
228
229 AC_MSG_CHECKING([whether to enable the SHA-256 digest])
230 AC_ARG_ENABLE(sha256,
231    AC_HELP_STRING([--disable-sha256],[disable the SHA-256 digest]),
232    use_sha256=$enableval)
233 AC_MSG_RESULT($use_sha256)
234 if test x"$use_sha256" = xyes ; then
235    AC_DEFINE(USE_SHA256,1,[Define to include the SHA-256 digest])
236 fi
237
238 dnl SHA512 is defined only after we confirm 64-bit support later
239 AC_MSG_CHECKING([whether to enable the SHA-384 and SHA-512 digests])
240 AC_ARG_ENABLE(sha512,
241    AC_HELP_STRING([--disable-sha512],[disable the SHA-384 and SHA-512 digests]),
242    use_sha512=$enableval)
243 AC_MSG_RESULT($use_sha512)
244
245 dnl BZLIB is defined only after we confirm the library is available later
246 AC_MSG_CHECKING([whether to enable the BZIP2 compression algorithm])
247 AC_ARG_ENABLE(bzip2,
248    AC_HELP_STRING([--disable-bzip2],[disable the BZIP2 compression algorithm]),
249    use_bzip2=$enableval)
250 AC_MSG_RESULT($use_bzip2)
251
252 AC_MSG_CHECKING([whether to enable external program execution])
253 AC_ARG_ENABLE(exec,
254     AC_HELP_STRING([--disable-exec],[disable all external program execution]),
255     use_exec=$enableval)
256 AC_MSG_RESULT($use_exec)
257 if test "$use_exec" = no ; then
258     AC_DEFINE(NO_EXEC,1,[Define to disable all external program execution])
259 fi
260
261 if test "$use_exec" = yes ; then
262   AC_MSG_CHECKING([whether to enable photo ID viewing])
263   AC_ARG_ENABLE(photo-viewers,
264       [  --disable-photo-viewers disable photo ID viewers],
265       [if test "$enableval" = no ; then
266          AC_DEFINE(DISABLE_PHOTO_VIEWER,1,[define to disable photo viewing])
267       fi],enableval=yes)
268   gnupg_cv_enable_photo_viewers=$enableval
269   AC_MSG_RESULT($enableval)
270
271   if test "$gnupg_cv_enable_photo_viewers" = yes ; then
272     AC_MSG_CHECKING([whether to use a fixed photo ID viewer])
273     AC_ARG_WITH(photo-viewer,
274         [  --with-photo-viewer=FIXED_VIEWER  set a fixed photo ID viewer],
275         [if test "$withval" = yes ; then
276            withval=no
277         elif test "$withval" != no ; then
278            AC_DEFINE_UNQUOTED(FIXED_PHOTO_VIEWER,"$withval",
279                             [if set, restrict photo-viewer to this])
280         fi],withval=no)
281     AC_MSG_RESULT($withval)
282   fi
283
284   AC_MSG_CHECKING([whether to enable external keyserver helpers])
285   AC_ARG_ENABLE(keyserver-helpers,
286       [  --disable-keyserver-helpers  disable all external keyserver support],
287       [if test "$enableval" = no ; then
288          AC_DEFINE(DISABLE_KEYSERVER_HELPERS,1,
289                   [define to disable keyserver helpers])
290       fi],enableval=yes)
291   gnupg_cv_enable_keyserver_helpers=$enableval
292   AC_MSG_RESULT($enableval)
293
294   if test "$gnupg_cv_enable_keyserver_helpers" = yes ; then
295     AC_MSG_CHECKING([whether LDAP keyserver support is requested])
296     AC_ARG_ENABLE(ldap,
297     [  --disable-ldap          disable LDAP keyserver interface],
298         try_ldap=$enableval, try_ldap=yes)
299     AC_MSG_RESULT($try_ldap)
300
301     AC_MSG_CHECKING([whether HKP keyserver support is requested])
302     AC_ARG_ENABLE(hkp,
303     [  --disable-hkp           disable HKP keyserver interface],
304         try_hkp=$enableval, try_hkp=yes)
305     AC_MSG_RESULT($try_hkp)
306
307     AC_MSG_CHECKING([whether HTTP key fetching support is requested])
308     AC_ARG_ENABLE(http,
309       AC_HELP_STRING([--disable-http],[disable HTTP key fetching interface]),
310         try_http=$enableval, try_http=yes)
311     AC_MSG_RESULT($try_http)
312
313     AC_MSG_CHECKING([whether Finger key fetching support is requested])
314     AC_ARG_ENABLE(finger,
315       AC_HELP_STRING([--disable-finger],
316                      [disable Finger key fetching interface]),
317         try_finger=$enableval, try_finger=yes)
318     AC_MSG_RESULT($try_finger)
319
320     AC_MSG_CHECKING([whether email keyserver support is requested])
321     AC_ARG_ENABLE(mailto,
322     [  --disable-mailto        disable email keyserver interface],
323         try_mailto=$enableval, try_mailto=yes)
324     AC_MSG_RESULT($try_mailto)
325     fi
326
327     AC_MSG_CHECKING([whether keyserver exec-path is enabled])
328     AC_ARG_ENABLE(keyserver-path,
329         [  --disable-keyserver-path disable the exec-path option for keyserver helpers],
330         [if test "$enableval" = no ; then
331          AC_DEFINE(DISABLE_KEYSERVER_PATH,1,[define to disable exec-path for keyserver helpers])
332         fi],enableval=yes)
333     AC_MSG_RESULT($enableval)
334   fi
335
336 AC_MSG_CHECKING([whether the included zlib is requested])
337 AC_ARG_WITH(included-zlib,
338     [  --with-included-zlib    use the zlib code included here],
339 [g10_force_zlib=yes], [g10_force_zlib=no] )
340 AC_MSG_RESULT($g10_force_zlib)
341
342 dnl
343 dnl Check for the key/uid cache size.  This can't be zero, but can be
344 dnl pretty small on embedded systems.
345 dnl
346 AC_MSG_CHECKING([for the size of the key and uid cache])
347 AC_ARG_ENABLE(key-cache,
348         AC_HELP_STRING([--enable-key-cache=SIZE],[Set key cache to SIZE (default 4096)]),,enableval=4096)
349
350 if test "$enableval" = "no"; then
351    enableval=5
352 elif test "$enableval" = "yes" || test "$enableval" = ""; then
353    enableval=4096
354 fi
355
356 changequote(,)dnl
357 key_cache_size=`echo "$enableval" | sed 's/[A-Za-z]//g'`
358 changequote([,])dnl
359
360 if test "$enableval" != "$key_cache_size" || test "$key_cache_size" -lt 5; then
361    AC_MSG_ERROR([invalid key-cache size])
362 fi
363
364 AC_MSG_RESULT($key_cache_size)
365 AC_DEFINE_UNQUOTED(PK_UID_CACHE_SIZE,$key_cache_size,[Size of the key and UID caches])
366
367 dnl
368 dnl Check whether we want to use Linux capabilities
369 dnl
370 AC_MSG_CHECKING([whether use of capabilities is requested])
371 AC_ARG_WITH(capabilities,
372     [  --with-capabilities     use linux capabilities [default=no]],
373 [use_capabilities="$withval"],[use_capabilities=no])
374 AC_MSG_RESULT($use_capabilities)
375
376
377 AH_BOTTOM([
378 #if !(defined(HAVE_FORK) && defined(HAVE_PIPE) && defined(HAVE_WAITPID))
379 #define EXEC_TEMPFILE_ONLY
380 #endif
381
382 /* This is the major version number of GnuPG so that
383    source included files can test for this. */
384 #define GNUPG_MAJOR_VERSION 1
385
386 #include "g10defs.h"
387 ])
388
389
390 AM_MAINTAINER_MODE
391
392 dnl Checks for programs.
393
394 AC_PROG_MAKE_SET
395 AM_SANITY_CHECK
396 missing_dir=`cd $ac_aux_dir && pwd`
397 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
398 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
399 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
400 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
401 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
402 AC_PROG_CC
403 AC_PROG_CPP
404 AC_PROG_RANLIB
405 AC_CHECK_TOOL(AR, ar, :)
406 AC_PATH_PROG(PERL,"perl")
407 AC_ISC_POSIX
408 AC_SYS_LARGEFILE
409 AC_PROG_INSTALL
410 AC_PROG_LN_S
411 AC_PROG_AWK
412 AC_CHECK_PROG(DOCBOOK_TO_MAN, docbook-to-man, yes, no)
413 AM_CONDITIONAL(HAVE_DOCBOOK_TO_MAN, test "$ac_cv_prog_DOCBOOK_TO_MAN" = yes)
414 GNUPG_CHECK_FAQPROG
415 GNUPG_CHECK_DOCBOOK_TO_TEXI
416
417 MPI_OPT_FLAGS=""
418
419
420 try_gettext=yes
421 have_dosish_system=no
422 need_dlopen=yes
423 case "${target}" in
424     *-*-mingw32*)
425         # special stuff for Windoze NT
426         ac_cv_have_dev_random=no
427         AC_DEFINE(USE_ONLY_8DOT3,1,
428                   [set this to limit filenames to the 8.3 format])
429         AC_DEFINE(HAVE_DRIVE_LETTERS,1,
430                   [defined if we must run on a stupid file system])
431         AC_DEFINE(USE_SIMPLE_GETTEXT,1,
432                   [because the Unix gettext has too much overhead on
433                    MingW32 systems and these systems lack Posix functions,
434                    we use a simplified version of gettext])
435         have_dosish_system=yes
436         need_dlopen=no
437         try_gettext="no"
438         LDAPLIBS="-lwldap32"
439         ;;
440     i?86-emx-os2 | i?86-*-os2*emx )
441         # OS/2 with the EMX environment
442         ac_cv_have_dev_random=no
443         AC_DEFINE(HAVE_DRIVE_LETTERS)
444         have_dosish_system=yes
445         try_gettext="no"
446         ;;
447
448     i?86-*-msdosdjgpp*)
449         # DOS with the DJGPP environment
450         ac_cv_have_dev_random=no
451         AC_DEFINE(HAVE_DRIVE_LETTERS)
452         have_dosish_system=yes
453         try_gettext="no"
454         ;;
455
456     *-*-freebsd*)
457        # FreeBSD
458        CPPFLAGS="$CPPFLAGS -I/usr/local/include"
459        LDFLAGS="$LDFLAGS -L/usr/local/lib"
460        ;;
461
462     *-*-hpux*)
463         if test -z "$GCC" ; then
464             CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE"
465         fi
466         ;;
467     *-dec-osf4*)
468         if test -z "$GCC" ; then
469             # Suppress all warnings
470             # to get rid of the unsigned/signed char mismatch warnings.
471             CFLAGS="$CFLAGS -w"
472         fi
473         ;;
474     *-dec-osf5*)
475         if test -z "$GCC" ; then
476             # Use the newer compiler `-msg_disable ptrmismatch' to
477             # get rid of the unsigned/signed char mismatch warnings.
478             # Using this may hide other pointer mismatch warnings, but
479             # it at least lets other warning classes through
480             CFLAGS="$CFLAGS -msg_disable ptrmismatch"
481         fi
482         ;;
483     m68k-atari-mint)
484         ;;
485     *)
486        ;;
487 esac
488
489 if test "$have_dosish_system" = yes; then
490    AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
491              [defined if we run on some of the PCDOS like systems 
492               (DOS, Windoze. OS/2) with special properties like
493               no file modes])
494 fi
495 AM_CONDITIONAL(HAVE_DOSISH_SYSTEM, test "$have_dosish_system" = yes)
496
497 AC_SUBST(MPI_OPT_FLAGS)
498 GNUPG_SYS_SYMBOL_UNDERSCORE
499
500 dnl These need to go after AC_PROG_CC so that $EXEEXT is defined
501 if test x"$try_hkp" = xyes ; then
502   AC_SUBST(GPGKEYS_HKP,"gpgkeys_hkp$EXEEXT")
503 fi
504
505 if test x"$try_http" = xyes ; then
506   AC_SUBST(GPGKEYS_HTTP,"gpgkeys_http$EXEEXT")
507 fi
508
509 if test x"$try_finger" = xyes ; then
510   AC_SUBST(GPGKEYS_FINGER,"gpgkeys_finger$EXEEXT")
511 fi
512
513 dnl Must check for network library requirements before doing link tests
514 dnl for ldap, for example. If ldap libs are static (or dynamic and without
515 dnl ELF runtime link paths), then link will fail and LDAP support won't
516 dnl be detected.
517
518 AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname,
519         [NETLIBS="-lnsl $NETLIBS"]))
520 AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt,
521         [NETLIBS="-lsocket $NETLIBS"]))
522
523 dnl Now try for the resolver functions so we can use DNS SRV
524
525 AC_ARG_ENABLE(dns-srv,
526    AC_HELP_STRING([--disable-dns-srv],
527         [disable the use of DNS SRV in HKP and HTTP]),
528    use_dns_srv=$enableval,use_dns_srv=yes)
529
530 if (test x"$try_hkp" = xyes || test x"$try_http" = xyes) && test x"$use_dns_srv" = xyes ; then
531   _srv_save_libs=$LIBS
532   LIBS=""
533   # the double underscore thing is a glibc-ism?
534   AC_SEARCH_LIBS(res_query,resolv bind,,
535                  AC_SEARCH_LIBS(__res_query,resolv bind,,use_dns_srv=no))
536   AC_SEARCH_LIBS(dn_expand,resolv bind,,
537                  AC_SEARCH_LIBS(__dn_expand,resolv bind,,use_dns_srv=no))
538   AC_SEARCH_LIBS(dn_skipname,resolv bind,,
539                  AC_SEARCH_LIBS(__dn_skipname,resolv bind,,use_dns_srv=no))
540
541   if test x"$use_dns_srv" = xyes ; then
542
543     # Make sure that the BIND 4 resolver interface is workable before
544     # enabling SRVs.  At some point I'll rewrite the code to use the
545     # BIND 8 resolver API.
546
547     AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
548 #include <netinet/in.h>
549 #include <arpa/nameser.h>
550 #include <resolv.h>],
551 [[unsigned char answer[PACKETSZ]; res_query("foo.bar",C_IN,T_A,answer,PACKETSZ);]])],,use_dns_srv=no)
552   fi
553
554   if test x"$use_dns_srv" = xyes ; then
555      AC_DEFINE(USE_DNS_SRV,1,[define to use DNS SRV])
556      SRVLIBS=$LIBS
557   else
558      AC_MSG_NOTICE([Resolver functions not found or not usable.  Disabling DNS SRV.])
559   fi
560   LIBS=$_srv_save_libs
561 fi
562
563 AC_SUBST(SRVLIBS)
564
565 # Try and link a LDAP test program to weed out unusable LDAP
566 # libraries.  -lldap [-llber [-lresolv]] is for older OpenLDAPs.
567 # OpenLDAP, circa 1999, was terrible with creating weird dependencies.
568 # This seems to have all been resolved, so I'm simplifying this code
569 # significantly.  If all else fails, the user can play
570 # guess-the-dependency by using something like ./configure
571 # LDAPLIBS="-Lfoo -lbar"
572
573 if test "$try_ldap" = yes ; then
574   for MY_LDAPLIBS in ${LDAPLIBS+"$LDAPLIBS"} "-lldap" "-lldap -llber" "-lldap -llber -lresolv"; do
575     _ldap_save_libs=$LIBS
576     LIBS="$MY_LDAPLIBS $NETLIBS $LIBS"
577
578     AC_MSG_CHECKING([whether LDAP via \"$MY_LDAPLIBS\" is present and sane])
579     AC_TRY_LINK([#include <ldap.h>],[ldap_open("foobar",1234);],
580                 [gnupg_cv_func_ldap_init=yes],[gnupg_cv_func_ldap_init=no])
581     AC_MSG_RESULT([$gnupg_cv_func_ldap_init])
582
583     if test "$gnupg_cv_func_ldap_init" = yes ; then
584        LDAPLIBS=$MY_LDAPLIBS
585        GPGKEYS_LDAP="gpgkeys_ldap$EXEEXT"
586
587        AC_CHECK_FUNCS(ldap_get_option ldap_set_option ldap_start_tls_s)
588
589        if test "$ac_cv_func_ldap_get_option" != yes ; then
590           AC_MSG_CHECKING([whether LDAP supports ld_errno])
591           AC_TRY_LINK([#include <ldap.h>],[LDAP *ldap; ldap->ld_errno;],
592              [gnupg_cv_func_ldap_ld_errno=yes],
593              [gnupg_cv_func_ldap_ld_errno=no])
594           AC_MSG_RESULT([$gnupg_cv_func_ldap_ld_errno])
595
596           if test "$gnupg_cv_func_ldap_ld_errno" = yes ; then
597              AC_DEFINE(HAVE_LDAP_LD_ERRNO,1,[Define if the LDAP library supports ld_errno])
598           fi
599        fi
600     fi
601
602     LIBS=$_ldap_save_libs
603
604     if test "$GPGKEYS_LDAP" != "" ; then break; fi
605   done
606 fi
607
608 AC_SUBST(GPGKEYS_LDAP)
609 AC_SUBST(LDAPLIBS)
610 AM_CONDITIONAL(GPGKEYS_LDAP, test "$GPGKEYS_LDAP" != "")
611
612 dnl This isn't necessarily sendmail itself, but anything that gives a
613 dnl sendmail-ish interface to the outside world.  That includes qmail,
614 dnl postfix, etc.  Basically, anything that can handle "sendmail -t".
615
616 if test "$try_mailto" = yes ; then
617   AC_ARG_WITH(mailprog,[  --with-mailprog=NAME    use "NAME -t" for mail transport],,with_mailprog=yes)
618
619   if test "$with_mailprog" = yes ; then
620     AC_PATH_PROG(SENDMAIL,sendmail,,$PATH:/usr/sbin:/usr/libexec:/usr/lib)
621     if test "$ac_cv_path_SENDMAIL" ; then
622       GPGKEYS_MAILTO="gpgkeys_mailto"
623     fi
624   elif test "$with_mailprog" != no ; then
625     AC_MSG_CHECKING([for a mail transport program])
626     AC_SUBST(SENDMAIL,$with_mailprog)
627     AC_MSG_RESULT($with_mailprog)
628     GPGKEYS_MAILTO="gpgkeys_mailto"
629   fi
630 fi
631
632 AC_SUBST(GPGKEYS_MAILTO)
633
634 case "${target}" in
635     *-*-mingw32*)
636         PRINTABLE_OS_NAME="MingW32"
637         ;;
638     *-*-cygwin*)
639         PRINTABLE_OS_NAME="Cygwin"
640         ;;
641     i?86-emx-os2 | i?86-*-os2*emx )
642         PRINTABLE_OS_NAME="OS/2"
643         ;;
644     i?86-*-msdosdjgpp*)
645         PRINTABLE_OS_NAME="MSDOS/DJGPP"
646         try_extensions=no
647         ;;
648     *-linux*)
649         PRINTABLE_OS_NAME="GNU/Linux"
650         ;;
651     *)
652         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
653         ;;
654 esac
655 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
656                    [A human readable text with the name of the OS])
657
658
659 #
660 # 1. Set names of random devices
661 #
662 NAME_OF_DEV_RANDOM="/dev/random"
663 NAME_OF_DEV_URANDOM="/dev/urandom"
664 case "${target}" in
665     *-openbsd*)
666         NAME_OF_DEV_RANDOM="/dev/srandom"
667         NAME_OF_DEV_URANDOM="/dev/urandom"
668         ;;
669 esac
670 AC_DEFINE_UNQUOTED(NAME_OF_DEV_RANDOM, "$NAME_OF_DEV_RANDOM",
671                    [defined to the name of the strong random device])
672 AC_DEFINE_UNQUOTED(NAME_OF_DEV_URANDOM, "$NAME_OF_DEV_URANDOM",
673                    [defined to the name of the weaker random device])
674 AC_SUBST(MPI_OPT_FLAGS)
675
676
677 dnl Checks for libraries.
678
679 AM_GNU_GETTEXT_VERSION(0.14.1)
680 if test "$try_gettext" = yes; then
681   AM_GNU_GETTEXT(,[need-ngettext])
682
683   # gettext requires some extra checks.  These really should be part of
684   # the basic AM_GNU_GETTEXT macro.  TODO: move other gettext-specific
685   # function checks to here.
686
687   AC_CHECK_FUNCS(strchr)
688 else
689   USE_NLS=no
690   USE_INCLUDED_LIBINTL=no
691   BUILD_INCLUDED_LIBINTL=no
692   AC_SUBST(USE_NLS)
693   AC_SUBST(USE_INCLUDED_LIBINTL)
694   AC_SUBST(BUILD_INCLUDED_LIBINTL)
695 fi
696
697 if test "$try_extensions" = yes || test x"$card_support" = xyes ; then
698   if test "$need_dlopen" = yes; then
699     _dl_save_libs=$LIBS
700     LIBS=""
701     AC_SEARCH_LIBS(dlopen,dl,found_dlopen=yes)
702     if test x"$found_dlopen" = "xyes" ; then
703       AC_DEFINE(HAVE_DL_DLOPEN,1,
704                 [Defined when the dlopen function family is available])
705       DLLIBS=$LIBS
706     else
707       if test "$try_extensions" = yes ; then
708          AC_MSG_NOTICE([dlopen not found.  Disabling extensions.])
709          try_extensions=no
710       fi
711   
712       if test "$card_support" = yes ; then
713          AC_MSG_WARN([dlopen not found.  Disabling OpenPGP card support.])
714          card_support=no
715       fi
716     fi
717     LIBS=$_dl_save_libs
718   fi
719 fi
720
721 AC_SUBST(DLLIBS)
722
723 if test "$card_support" = yes ; then
724   AC_DEFINE(ENABLE_CARD_SUPPORT,1,[Define to include OpenPGP card support])
725 fi
726
727 if test "$try_extensions" = yes ; then
728   AC_DEFINE(USE_DYNAMIC_LINKING,1,[Define to enable the use of extensions])
729 fi
730
731 if test "$selinux_support" = yes ; then
732   AC_DEFINE(ENABLE_SELINUX_HACKS,1,[Define to enable SELinux support])
733 fi
734
735 AM_CONDITIONAL(ENABLE_CARD_SUPPORT, test "$card_support" = yes)
736
737 dnl Checks for header files.
738 AC_HEADER_STDC
739 AC_CHECK_HEADERS(unistd.h langinfo.h termio.h locale.h getopt.h)
740
741
742 dnl Checks for typedefs, structures, and compiler characteristics.
743 AC_C_CONST
744 AC_C_INLINE
745 AC_C_VOLATILE
746 AC_TYPE_SIZE_T
747 AC_TYPE_MODE_T
748 AC_TYPE_SIGNAL
749 AC_DECL_SYS_SIGLIST
750
751 GNUPG_CHECK_ENDIAN
752
753 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
754 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
755 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
756 GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
757 GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
758
759 AC_CHECK_SIZEOF(unsigned short)
760 AC_CHECK_SIZEOF(unsigned int)
761 AC_CHECK_SIZEOF(unsigned long)
762 AC_CHECK_SIZEOF(unsigned long long)
763
764 # Ensure that we have UINT64_C before we bother to check for uint64_t
765 AC_CACHE_CHECK([for UINT64_C],[gnupg_cv_uint64_c_works],
766    AC_COMPILE_IFELSE(AC_LANG_PROGRAM([#include <inttypes.h>
767 uint64_t foo=UINT64_C(42);]),gnupg_cv_uint64_c_works=yes,gnupg_cv_uint64_c_works=no))
768
769 if test "$gnupg_cv_uint64_c_works" = "yes" ; then
770    AC_CHECK_SIZEOF(uint64_t)
771 fi
772
773 if test "$ac_cv_sizeof_unsigned_short" = "0" \
774    || test "$ac_cv_sizeof_unsigned_int" = "0" \
775    || test "$ac_cv_sizeof_unsigned_long" = "0"; then
776     AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
777 fi
778
779 dnl Do we have any 64-bit data types?
780 if test "$ac_cv_sizeof_unsigned_int" != "8" \
781    && test "$ac_cv_sizeof_unsigned_long" != "8" \
782    && test "$ac_cv_sizeof_unsigned_long_long" != "8" \
783    && test x"$ac_cv_sizeof_uint64_t" != "x8"; then
784     AC_MSG_NOTICE([No 64-bit types.  Disabling SHA-384 and SHA-512.])
785 else
786   if test x"$use_sha512" = xyes ; then
787      AC_SUBST(SHA512_O,sha512.o)
788      AC_DEFINE(USE_SHA512,1,[Define to include the SHA-384 and SHA-512 digests])
789   fi
790 fi
791
792 dnl Checks for library functions.
793 AC_FUNC_FSEEKO
794 AC_FUNC_VPRINTF
795 AC_FUNC_FORK
796 AC_CHECK_FUNCS(strerror stpcpy strsep strlwr tcgetattr strtoul mmap)
797 AC_CHECK_FUNCS(strcasecmp strncasecmp ctermid times unsetenv)
798 AC_CHECK_FUNCS(memmove gettimeofday getrusage setrlimit clock_gettime)
799 AC_CHECK_FUNCS(atexit raise getpagesize strftime nl_langinfo setlocale)
800 AC_CHECK_FUNCS(waitpid wait4 sigaction sigprocmask rand pipe stat getaddrinfo)
801 AC_REPLACE_FUNCS(mkdtemp timegm)
802 AC_REPLACE_FUNCS(vasprintf)
803 AC_CHECK_TYPES([struct sigaction, sigset_t],,,[#include <signal.h>])
804
805 # See if getopt is in libiberty.  This is of course not optimal since
806 # it might be somewhere other than libiberty, but does cover the
807 # mingw32 case.
808
809 AC_CHECK_FUNC(getopt,,AC_CHECK_LIB(iberty,getopt,AC_SUBST(GETOPT,"-liberty")))
810
811 #
812 # check for gethrtime and run a testprogram to see whether
813 # it is broken.  It has been reported that some Solaris and HP UX systems 
814 # raise an SIGILL
815 #
816 AC_CACHE_CHECK([for gethrtime], 
817                [gnupg_cv_func_gethrtime],
818                [AC_TRY_LINK([#include <sys/times.h>],[
819                    hrtime_t tv;
820                    tv = gethrtime();
821                  ],
822                  [gnupg_cv_func_gethrtime=yes],
823                  [gnupg_cv_func_gethrtime=no])
824                ])
825 if test $gnupg_cv_func_gethrtime = yes; then
826      AC_DEFINE([HAVE_GETHRTIME], 1,
827                [Define if you have the `gethrtime(2)' function.])
828      AC_CACHE_CHECK([whether gethrtime is broken], 
829                [gnupg_cv_func_broken_gethrtime],
830                [AC_TRY_RUN([
831                    #include <sys/times.h>
832                    int main () {
833                    hrtime_t tv;
834                    tv = gethrtime(); 
835                  }
836                  ],
837                  [gnupg_cv_func_broken_gethrtime=no],
838                  [gnupg_cv_func_broken_gethrtime=yes],
839                  [gnupg_cv_func_broken_gethrtime=assume-no])
840                 ])
841     if test $gnupg_cv_func_broken_gethrtime = yes; then
842       AC_DEFINE([HAVE_BROKEN_GETHRTIME], 1,
843       [Define if `gethrtime(2)' does not work correctly i.e. issues a SIGILL.])
844     fi
845 fi
846      
847
848 GNUPG_CHECK_MLOCK
849 GNUPG_FUNC_MKDIR_TAKES_ONE_ARG
850
851 dnl
852 dnl Check whether we can use Linux capabilities as requested
853 dnl
854 if test "$use_capabilities" = "yes" ; then
855
856 AC_MSG_WARN([[
857 ***
858 *** WARNING: using capabilities with GnuPG is experimental code!
859 ***]])
860
861 use_capabilities=no
862 AC_CHECK_HEADERS(sys/capability.h)
863 if test "$ac_cv_header_sys_capability_h" = "yes" ; then
864   AC_CHECK_LIB(cap, cap_init, ac_need_libcap=1)
865   if test "$ac_cv_lib_cap_cap_init" = "yes"; then
866      AC_DEFINE(USE_CAPABILITIES,1,
867                [define if capabilities should be used])
868      AC_SUBST(CAPLIBS,"-lcap")
869      use_capabilities=yes
870   fi
871 fi
872 if test "$use_capabilities" = "no" ; then
873     AC_MSG_WARN([[
874 ***
875 *** The use of capabilities on this system is not possible.
876 *** You need a recent Linux kernel and some patches:
877 ***   fcaps-2.2.9-990610.patch      (kernel patch for 2.2.9)
878 ***   fcap-module-990613.tar.gz     (kernel module)
879 ***   libcap-1.92.tar.gz            (user mode library and utilities)
880 *** And you have to configure the kernel with CONFIG_VFS_CAP_PLUGIN
881 *** set (filesystems menu). Be warned: This code is *really* ALPHA.
882 ***]])
883 fi
884 fi
885
886
887 GNUPG_CHECK_IPC
888 if test "$ac_cv_header_sys_shm_h" = "yes"; then
889   AC_DEFINE(USE_SHM_COPROCESSING,1,
890             [define if the shared memory interface should be made available])
891 fi
892
893 dnl
894 dnl check whether we have a random device
895 dnl
896 if test "$try_dev_random" = yes ; then
897     AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
898     [if test -r "$NAME_OF_DEV_RANDOM" && test -r "$NAME_OF_DEV_URANDOM" ; then
899       ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
900     if test "$ac_cv_have_dev_random" = yes; then
901         AC_DEFINE(HAVE_DEV_RANDOM,1,
902                  [defined if the system supports a random device] )
903     fi
904 else
905     AC_MSG_CHECKING(for random device)
906     ac_cv_have_dev_random=no
907     AC_MSG_RESULT(has been disabled)
908 fi
909
910
911 dnl
912 dnl Figure out the default random module.
913 dnl
914 random_modules=""
915 if test "$use_static_rnd" = default; then
916      if test "$ac_cv_have_dev_random" = yes; then
917         random_modules="rndlinux"
918      else
919          case "${target}" in
920             *-*-mingw32*|*-*-cygwin*)
921                 random_modules="rndw32"
922                 ;;
923             i?86-emx-os2|i?86-*-os2*emx)
924                 random_modules="rndos2"
925                 ;;
926             m68k-atari-mint)
927                 random_modules="rndatari"
928                 ;;
929             i?86-*-msdosdjgpp*)
930                 :
931                 ;;
932             *)
933                 random_modules="rndlinux rndegd rndunix"
934                 AC_DEFINE(USE_ALL_RANDOM_MODULES, 1, 
935                           [Allow to select random modules at runtime.])
936                 ;;
937          esac
938      fi
939 else
940   if test "$use_static_rnd" = auto; then
941      random_modules="rndlinux rndegd rndunix"
942      AC_DEFINE(USE_ALL_RANDOM_MODULES, 1)
943   else
944      random_modules="rnd$use_static_rnd";
945   fi
946 fi
947
948 if test -z "$random_modules"; then
949    AC_MSG_ERROR(no random module available)
950 fi
951 print_egd_warning=no
952 for rndmod in $random_modules "" ; do
953   case "$rndmod" in
954     rndlinux)
955          AC_DEFINE(USE_RNDLINUX,1, 
956                   [Defined if the /dev/random based RNG should be used.])
957          ;;
958     rndunix)
959          AC_DEFINE(USE_RNDUNIX,1, 
960                   [Defined if the default Unix RNG should be used.])
961          print_egd_warning=yes
962           ;;
963     rndegd)
964          AC_DEFINE(USE_RNDEGD,1, 
965                   [Defined if the EGD based RNG should be used.])
966          ;;
967     rndw32)
968          AC_DEFINE(USE_RNDW32,1, 
969                   [Defined if the Windows specific RNG should be used.])
970         ;;
971    esac
972 done
973
974 dnl setup assembler stuff
975 AC_MSG_CHECKING(for mpi assembler functions)
976 if test -f $srcdir/mpi/config.links ; then
977     . $srcdir/mpi/config.links
978     AC_CONFIG_LINKS("$mpi_ln_list")
979     ac_cv_mpi_extra_asm_modules="$mpi_extra_modules"
980     ac_cv_mpi_sflags="$mpi_sflags"
981     ac_cv_mpi_config_done="yes"
982     AC_MSG_RESULT(done)
983 else
984     AC_MSG_RESULT(failed)
985     AC_MSG_ERROR([mpi/config.links missing!])
986 fi
987 MPI_EXTRA_ASM_OBJS=""
988 show_extraasm=""
989 if test "$ac_cv_mpi_extra_asm_modules" != ""; then
990 for i in $ac_cv_mpi_extra_asm_modules; do
991     show_extraasm="$show_extraasm $i"
992     MPI_EXTRA_ASM_OBJS="$MPI_EXTRA_ASM_OBJS $i.o"
993 done
994 fi
995 AC_SUBST(MPI_EXTRA_ASM_OBJS)
996 MPI_SFLAGS="$ac_cv_mpi_sflags"
997 AC_SUBST(MPI_SFLAGS)
998
999 # Sanity check regex.  Tests adapted from mutt.
1000
1001 AC_MSG_CHECKING([whether regular expression support is requested])
1002 AC_ARG_ENABLE(regex,
1003 [  --disable-regex         do not handle regular expressions in trust sigs],
1004      use_regex=$enableval, use_regex=yes)
1005 AC_MSG_RESULT($use_regex)
1006
1007 if test "$use_regex" = yes ; then
1008   AC_MSG_CHECKING([whether the included regex lib is requested])
1009   AC_ARG_WITH(included-regex,
1010       [  --with-included-regex   use the included GNU regex library],
1011       [gnupg_cv_included_regex=yes],[gnupg_cv_included_regex=no])
1012   AC_MSG_RESULT($gnupg_cv_included_regex)
1013
1014   if test $gnupg_cv_included_regex = no ; then
1015      # Does the system have regex functions at all?
1016      AC_CHECK_FUNC(regcomp,gnupg_cv_included_regex=no,
1017                            gnupg_cv_included_regex=yes)
1018   fi
1019
1020   if test $gnupg_cv_included_regex = no ; then
1021      AC_CACHE_CHECK([whether your system's regexp library is broken],
1022        [gnupg_cv_regex_broken],
1023        AC_TRY_RUN([
1024 #include <unistd.h>
1025 #include <regex.h>
1026 main() { regex_t blah ; regmatch_t p; p.rm_eo = p.rm_eo; return regcomp(&blah, "foo.*bar", REG_NOSUB) || regexec (&blah, "foobar", 0, NULL, 0); }],
1027        gnupg_cv_regex_broken=no, gnupg_cv_regex_broken=yes, gnupg_cv_regex_broken=yes))
1028
1029      if test $gnupg_cv_regex_broken = yes ; then
1030       AC_MSG_WARN(your regex is broken - using the included GNU regex instead.)
1031       gnupg_cv_included_regex=yes
1032      fi
1033   fi
1034
1035   if test $gnupg_cv_included_regex = yes; then
1036      AC_DEFINE(USE_GNU_REGEX,1,[ Define if you want to use the included regex lib ])
1037      AC_SUBST(REGEX_O,regex.o)
1038   fi
1039 else
1040
1041   AC_DEFINE(DISABLE_REGEX,1,[ Define to disable regular expression support ])
1042 fi
1043
1044 dnl Do we have zlib? Must do it here because Solaris failed
1045 dnl when compiling a conftest (due to the "-lz" from LIBS).
1046 use_local_zlib=yes
1047 if test "$g10_force_zlib" = "yes"; then
1048   :
1049 else
1050   _cppflags="${CPPFLAGS}"
1051   _ldflags="${LDFLAGS}"
1052
1053   AC_ARG_WITH(zlib,
1054   [  --with-zlib=DIR         use libz in DIR],[
1055     if test -d "$withval"; then
1056       CPPFLAGS="${CPPFLAGS} -I$withval/include"
1057       LDFLAGS="${LDFLAGS} -L$withval/lib"
1058     fi
1059   ])
1060
1061   AC_CHECK_HEADER(zlib.h,
1062       AC_CHECK_LIB(z, deflateInit2_,
1063        use_local_zlib=no
1064        ZLIBS="-lz",
1065        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
1066        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
1067 fi
1068
1069 if test "$use_local_zlib" = yes ; then
1070     AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, true)
1071     AC_CONFIG_LINKS(zlib.h:zlib/zlib.h zconf.h:zlib/zconf.h )
1072     ZLIBS="../zlib/libzlib.a"
1073 else
1074     AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, false)
1075 fi
1076
1077 if test "$use_bzip2" = yes ; then
1078   _cppflags="${CPPFLAGS}"
1079   _ldflags="${LDFLAGS}"
1080   AC_ARG_WITH(bzip2,
1081      AC_HELP_STRING([--with-bzip2=DIR],[look for bzip2 in DIR]),
1082       [
1083       if test -d "$withval" ; then
1084         CPPFLAGS="${CPPFLAGS} -I$withval/include"
1085         LDFLAGS="${LDFLAGS} -L$withval/lib"
1086       fi
1087       ],withval="")
1088
1089 # Checking alongside stdio.h as an early version of bzip2 (1.0)
1090 # required stdio.h to be included before bzlib.h, and Solaris 9 is
1091 # woefully out of date.
1092
1093   if test "$withval" != no ; then
1094      AC_CHECK_HEADER(bzlib.h,
1095         AC_CHECK_LIB(bz2,BZ2_bzCompressInit,
1096           [
1097           have_bz2=yes
1098           ZLIBS="$ZLIBS -lbz2"
1099           AC_DEFINE(HAVE_BZIP2,1,
1100                   [Defined if the bz2 compression library is available])
1101           ],
1102           CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
1103           CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags},[#include <stdio.h>])
1104   fi
1105 fi
1106
1107 AM_CONDITIONAL(ENABLE_BZIP2_SUPPORT,test x"$have_bz2" = "xyes")
1108 AC_SUBST(ZLIBS)
1109
1110
1111 #
1112 # libusb allows us to use the integrated CCID smartcard reader driver.
1113 #
1114 LIBUSB_LIBS=""
1115 if test "$card_support" = yes; then
1116     AC_CHECK_LIB(usb, usb_bulk_write,
1117                  [ LIBUSB_LIBS="$LIBUSB_LIBS -lusb"
1118                    AC_DEFINE(HAVE_LIBUSB,1,
1119                    [defined if libusb is available])
1120                  ])
1121 fi
1122 AC_SUBST(LIBUSB_LIBS)
1123 AC_CHECK_FUNCS(usb_get_busses)
1124
1125 #
1126 # Check for readline support
1127 #
1128 if test "$readline_support" = yes ; then
1129     AC_CHECK_LIB(readline, add_history)
1130     AC_CHECK_HEADERS([readline/readline.h])
1131 fi
1132
1133
1134 # Allow users to append something to the version string without
1135 # flagging it as development version.  The user version parts is
1136 # considered everything after a dash. 
1137 if test "$development_version" != yes; then
1138   changequote(,)dnl
1139   tmp_pat='[a-zA-Z]'
1140   changequote([,])dnl
1141   if echo "$VERSION" | sed 's/-.*//' | grep "$tmp_pat" >/dev/null ; then
1142     development_version=yes
1143   fi
1144 fi
1145 if test "$development_version" = yes; then
1146     AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
1147             [Defined if this is not a regular release])
1148 fi
1149
1150 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
1151
1152 GNUPG_CHECK_GNUMAKE
1153
1154 # add some extra libs here so that previous tests don't fail for
1155 # mysterious reasons - the final link step should bail out. 
1156 case "${target}" in
1157     *-*-mingw32*)
1158 dnl      NETLIBS="$NETLIBS -lwsock32"
1159         W32LIBS="-lwsock32"
1160         ;;
1161     *)
1162        ;;
1163 esac
1164
1165 AC_SUBST(NETLIBS)
1166 AC_SUBST(W32LIBS)
1167
1168 if test "$GCC" = yes; then
1169     if test "$USE_MAINTAINER_MODE" = "yes"; then
1170         CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
1171         CFLAGS="$CFLAGS -Wformat-nonliteral"
1172     else
1173         CFLAGS="$CFLAGS -Wall"
1174     fi
1175 fi
1176
1177
1178 if test "$print_egd_warning" = yes; then
1179   AC_MSG_WARN([[
1180 ***
1181 *** The performance of the UNIX random gatherer module is not very good
1182 *** and it does not keep the entropy pool over multiple invocations of
1183 *** GnuPG.  The suggested way to overcome this problem is to use the
1184 ***
1185 ***               Entropy Gathering Daemon (EGD)
1186 ***
1187 *** which provides a entropy source for the whole system.  It is written
1188 *** in Perl and available at the GnuPG FTP servers.  For more information
1189 *** consult the GnuPG webpages:
1190 ***
1191 ***           http://www.gnupg.org/download/#EGD
1192 ***
1193 *** You may want to run ./configure with --enable-static-rnd=egd or
1194 *** --enable-static-rnd=auto to use it.
1195 ***]])
1196 fi
1197
1198 # Note the \\\\ for backslashes.  Autoconf eats one layer, leaving \\
1199
1200 AC_CONFIG_COMMANDS(g10defs.h,[[
1201 cat >g10defs.tmp <<G10EOF
1202 /* Generated automatically by configure */
1203 #ifdef HAVE_DRIVE_LETTERS
1204 #define G10_LOCALEDIR     "c:\\\\lib\\\\gnupg\\\\locale"
1205 #define GNUPG_LIBDIR      "c:\\\\lib\\\\gnupg"
1206 #define GNUPG_LIBEXECDIR  "c:\\\\lib\\\\gnupg"
1207 #define GNUPG_DATADIR     "c:\\\\lib\\\\gnupg"
1208 #define GNUPG_HOMEDIR     "c:\\\\gnupg"
1209 #else
1210 #define G10_LOCALEDIR     "${datadir}/locale"
1211 #define GNUPG_LIBDIR      "${libdir}/gnupg"
1212 #define GNUPG_DATADIR     "${datadir}/gnupg"
1213 #ifdef __VMS
1214 #define GNUPG_HOMEDIR "/SYS\$LOGIN/gnupg" 
1215 #else
1216 #define GNUPG_HOMEDIR "~/.gnupg" 
1217 #endif
1218 #endif
1219 /* those are here to be redefined by handcrafted g10defs.h.
1220    Please note that the string version must not contain more
1221    than one character because the using code assumes strlen()==1 */
1222 #ifdef HAVE_DOSISH_SYSTEM
1223 #define DIRSEP_C '\\\\'
1224 #define EXTSEP_C '.'
1225 #define DIRSEP_S "\\\\"
1226 #define EXTSEP_S "."
1227 #else
1228 #define DIRSEP_C '/'
1229 #define EXTSEP_C '.'
1230 #define DIRSEP_S "/"
1231 #define EXTSEP_S "."
1232 #endif
1233 /* This is the same as VERSION, but should be overridden if the
1234    platform cannot handle things like dots'.' in filenames.  Set
1235    SAFE_VERSION_DOT and SAFE_VERSION_DASH to whatever SAFE_VERSION
1236    uses for dots and dashes. */
1237 #define SAFE_VERSION      VERSION
1238 #define SAFE_VERSION_DOT  '.'
1239 #define SAFE_VERSION_DASH '-'
1240 G10EOF
1241 cat mpi/mpi-asm-defs.h >>g10defs.tmp 
1242 if cmp -s g10defs.h g10defs.tmp 2>/dev/null; then
1243     echo "g10defs.h is unchanged"
1244     rm -f g10defs.tmp
1245 else
1246     rm -f g10defs.h
1247     mv g10defs.tmp g10defs.h
1248     echo "g10defs.h created"
1249 fi
1250 ]],[[
1251 prefix=$prefix
1252 exec_prefix=$exec_prefix
1253 libdir=$libdir
1254 libexecdir=$libexecdir
1255 datadir=$datadir
1256 DATADIRNAME=$DATADIRNAME
1257 ]])
1258
1259
1260 AC_CONFIG_FILES([
1261 Makefile
1262 m4/Makefile
1263 intl/Makefile
1264 po/Makefile.in
1265 util/Makefile
1266 mpi/Makefile
1267 cipher/Makefile
1268 g10/Makefile
1269 keyserver/Makefile
1270 keyserver/gpgkeys_mailto
1271 keyserver/gpgkeys_test
1272 doc/Makefile
1273 tools/Makefile
1274 zlib/Makefile
1275 checks/Makefile
1276 ])
1277 AC_OUTPUT
1278
1279 # Give some feedback
1280 echo
1281 echo   "                Configured for: $PRINTABLE_OS_NAME ($target)"
1282 if test -n "$show_extraasm"; then
1283   echo "  Extra cpu specific functions:$show_extraasm"
1284 fi
1285 echo