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