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