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