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