Minor changes and typo fixes.
[gnupg.git] / configure.ac
1 # configure.ac - for GnuPG 1.9
2 # Copyright (C) 1998, 1999, 2000, 2001, 2002,
3 #               2003, 2004, 2005, 2006 Free Software Foundation, Inc.
4
5 # This file is part of GnuPG.
6
7 # GnuPG is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2 of the License, or
10 # (at your option) any later version.
11
12 # GnuPG is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU General Public License for more details.
16
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, write to the Free Software
19 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
20 # USA.
21
22 # Process this file with autoconf to produce a configure script.
23 AC_PREREQ(2.52)
24 min_automake_version="1.9.3"
25
26 # Remember to change the version number immediately *after* a release.
27 # Set my_issvn to "yes" for non-released code.  Remember to run an
28 # "svn up" and "autogen.sh" right before creating a distribution.
29 m4_define([my_version], [1.9.23])
30 m4_define([my_issvn], [yes])
31
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;q}')]))
35 AC_INIT([gnupg], my_version[]m4_if(my_issvn,[yes],[-svn[]svn_revision]),
36         [bug-gnupg@gnupg.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=yes
41
42 NEED_GPG_ERROR_VERSION=1.2
43
44 NEED_LIBGCRYPT_API=1
45 NEED_LIBGCRYPT_VERSION=1.1.94
46
47 NEED_LIBASSUAN_VERSION=0.6.10
48
49 NEED_KSBA_API=1
50 NEED_KSBA_VERSION=1.0.0
51
52
53 PACKAGE=$PACKAGE_NAME
54 PACKAGE_GT=${PACKAGE_NAME}2
55 VERSION=$PACKAGE_VERSION
56
57 AC_CONFIG_AUX_DIR(scripts)
58 AC_CONFIG_SRCDIR(sm/gpgsm.c)
59 AM_CONFIG_HEADER(config.h)
60 AC_CANONICAL_TARGET()
61 AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
62 AB_INIT
63
64 AC_GNU_SOURCE
65
66 # Some status variables.
67 have_gpg_error=no
68 have_libgcrypt=no 
69 have_libassuan=no
70 have_ksba=no
71 have_pth=no
72 have_libusb=no
73
74 use_bzip2=yes
75 use_exec=yes
76 disable_keyserver_path=no
77
78
79 GNUPG_BUILD_PROGRAM(gpg, no)
80 GNUPG_BUILD_PROGRAM(gpgsm, yes)
81 GNUPG_BUILD_PROGRAM(agent, yes)
82 GNUPG_BUILD_PROGRAM(scdaemon, yes)
83 GNUPG_BUILD_PROGRAM(symcryptrun, no)
84
85 AC_SUBST(PACKAGE)
86 AC_SUBST(PACKAGE_GT)
87 AC_SUBST(VERSION)
88 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
89 AC_DEFINE_UNQUOTED(PACKAGE_GT, "$PACKAGE_GT",
90                                 [Name of this package for gettext])
91 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
92 AC_DEFINE_UNQUOTED(PACKAGE_BUGREPORT, "$PACKAGE_BUGREPORT",
93                                         [Bug report address])
94 AC_DEFINE_UNQUOTED(NEED_LIBGCRYPT_VERSION, "$NEED_LIBGCRYPT_VERSION",
95                                        [Required version of Libgcrypt])
96 AC_DEFINE_UNQUOTED(NEED_KSBA_VERSION, "$NEED_KSBA_VERSION",
97                                        [Required version of Libksba])
98
99
100
101 # The default is to use the modules from this package and the few
102 # other packages in a standard place; i.e where this package gets
103 # installed.  With these options it is possible to override these
104 # ${prefix} depended values with fixed paths, which can't be replaced
105 # at make time.  See also am/cmacros.am and the defaults in AH_BOTTOM.
106 AC_ARG_WITH(agent-pgm,
107     [  --with-agent-pgm=PATH  Use PATH as the default for the agent)],
108           GNUPG_AGENT_PGM="$withval", GNUPG_AGENT_PGM="" )
109 AC_SUBST(GNUPG_AGENT_PGM)
110 AM_CONDITIONAL(GNUPG_AGENT_PGM, test -n "$GNUPG_AGENT_PGM")
111 show_gnupg_agent_pgm="(default)"
112 test -n "$GNUPG_AGENT_PGM" && show_gnupg_agent_pgm="$GNUPG_AGENT_PGM"
113
114 AC_ARG_WITH(pinentry-pgm,
115     [  --with-pinentry-pgm=PATH  Use PATH as the default for the pinentry)],
116           GNUPG_PINENTRY_PGM="$withval", GNUPG_PINENTRY_PGM="" )
117 AC_SUBST(GNUPG_PINENTRY_PGM)
118 AM_CONDITIONAL(GNUPG_PINENTRY_PGM, test -n "$GNUPG_PINENTRY_PGM")
119 show_gnupg_pinentry_pgm="(default)"
120 test -n "$GNUPG_PINENTRY_PGM" && show_gnupg_pinentry_pgm="$GNUPG_PINENTRY_PGM"
121
122
123 AC_ARG_WITH(scdaemon-pgm,
124     [  --with-scdaemon-pgm=PATH  Use PATH as the default for the scdaemon)],
125           GNUPG_SCDAEMON_PGM="$withval", GNUPG_SCDAEMON_PGM="" )
126 AC_SUBST(GNUPG_SCDAEMON_PGM)
127 AM_CONDITIONAL(GNUPG_SCDAEMON_PGM, test -n "$GNUPG_SCDAEMON_PGM")
128 show_gnupg_scdaemon_pgm="(default)"
129 test -n "$GNUPG_SCDAEMON_PGM" && show_gnupg_scdaemon_pgm="$GNUPG_SCDAEMON_PGM"
130
131
132 AC_ARG_WITH(dirmngr-pgm,
133     [  --with-dirmngr-pgm=PATH  Use PATH as the default for the dirmngr)],
134           GNUPG_DIRMNGR_PGM="$withval", GNUPG_DIRMNGR_PGM="" )
135 AC_SUBST(GNUPG_DIRMNGR_PGM)
136 AM_CONDITIONAL(GNUPG_DIRMNGR_PGM, test -n "$GNUPG_DIRMNGR_PGM")
137 show_gnupg_dirmngr_pgm="(default)"
138 test -n "$GNUPG_DIRMNGR_PGM" && show_gnupg_dirmngr_pgm="$GNUPG_DIRMNGR_PGM"
139
140 AC_ARG_WITH(protect-tool-pgm,
141     [  --with-protect-tool-pgm=PATH  Use PATH as the default for the protect-tool)],
142           GNUPG_PROTECT_TOOL_PGM="$withval", GNUPG_PROTECT_TOOL_PGM="" )
143 AC_SUBST(GNUPG_PROTECT_TOOL_PGM)
144 AM_CONDITIONAL(GNUPG_PROTECT_TOOL_PGM, test -n "$GNUPG_PROTECT_TOOL_PGM")
145 show_gnupg_protect_tool_pgm="(default)"
146 test -n "$GNUPG_PROTECT_TOOL_PGM" \
147       && show_gnupg_protect_tool_pgm="$GNUPG_PROTECT_TOOL_PGM"
148
149
150 # Some folks want to use only the agent from this packet.  Make it
151 # easier for them by providing the configure option
152 # --enable-only-agent.
153 AC_ARG_ENABLE(agent-only,
154     AC_HELP_STRING([--enable-agent-only],[build only the gpg-agent]),
155     build_agent_only=$enableval)
156
157
158 # SELinux support includes tracking of sensitive files to avoid
159 # leaking their contents through processing these files by gpg itself
160 AC_MSG_CHECKING([whether SELinux support is requested])
161 AC_ARG_ENABLE(selinux-support,
162               AC_HELP_STRING([--enable-selinux-support],
163                              [enable SELinux support]),
164               selinux_support=$enableval, selinux_support=no)
165 AC_MSG_RESULT($selinux_support)
166
167 # Allow disabling of bzib2 support.
168 # It is defined only after we confirm the library is available later
169 AC_MSG_CHECKING([whether to enable the BZIP2 compression algorithm])
170 AC_ARG_ENABLE(bzip2,
171    AC_HELP_STRING([--disable-bzip2],[disable the BZIP2 compression algorithm]),
172    use_bzip2=$enableval)
173 AC_MSG_RESULT($use_bzip2)
174
175
176 # Configure option to allow or disallow execution of external
177 # programs, like a photo viewer.
178 AC_MSG_CHECKING([whether to enable external program execution])
179 AC_ARG_ENABLE(exec,
180     AC_HELP_STRING([--disable-exec],[disable all external program execution]),
181     use_exec=$enableval)
182 AC_MSG_RESULT($use_exec)
183 if test "$use_exec" = no ; then
184     AC_DEFINE(NO_EXEC,1,[Define to disable all external program execution])
185 fi
186
187 if test "$use_exec" = yes ; then
188   AC_MSG_CHECKING([whether to enable photo ID viewing])
189   AC_ARG_ENABLE(photo-viewers,
190       [  --disable-photo-viewers disable photo ID viewers],
191       [if test "$enableval" = no ; then
192          AC_DEFINE(DISABLE_PHOTO_VIEWER,1,[define to disable photo viewing])
193       fi],enableval=yes)
194   gnupg_cv_enable_photo_viewers=$enableval
195   AC_MSG_RESULT($enableval)
196
197   if test "$gnupg_cv_enable_photo_viewers" = yes ; then
198     AC_MSG_CHECKING([whether to use a fixed photo ID viewer])
199     AC_ARG_WITH(photo-viewer,
200         [  --with-photo-viewer=FIXED_VIEWER  set a fixed photo ID viewer],
201         [if test "$withval" = yes ; then
202            withval=no
203         elif test "$withval" != no ; then
204            AC_DEFINE_UNQUOTED(FIXED_PHOTO_VIEWER,"$withval",
205                             [if set, restrict photo-viewer to this])
206         fi],withval=no)
207     AC_MSG_RESULT($withval)
208   fi
209
210   AC_MSG_CHECKING([whether to enable external keyserver helpers])
211   AC_ARG_ENABLE(keyserver-helpers,
212       [  --disable-keyserver-helpers  disable all external keyserver support],
213       [if test "$enableval" = no ; then
214          AC_DEFINE(DISABLE_KEYSERVER_HELPERS,1,
215                   [define to disable keyserver helpers])
216       fi],enableval=yes)
217   gnupg_cv_enable_keyserver_helpers=$enableval
218   AC_MSG_RESULT($enableval)
219
220   if test "$gnupg_cv_enable_keyserver_helpers" = yes ; then
221     # LDAP is defined only after we confirm the library is available later
222     AC_MSG_CHECKING([whether LDAP keyserver support is requested])
223     AC_ARG_ENABLE(ldap,
224       AC_HELP_STRING([--disable-ldap],[disable LDAP keyserver interface only]),
225       try_ldap=$enableval, try_ldap=yes)
226     AC_MSG_RESULT($try_ldap)
227
228     AC_MSG_CHECKING([whether HKP keyserver support is requested])
229     AC_ARG_ENABLE(hkp,
230       AC_HELP_STRING([--disable-hkp],[disable HKP keyserver interface only]),
231       try_hkp=$enableval, try_hkp=yes)
232     AC_MSG_RESULT($try_hkp)
233
234     AC_MSG_CHECKING([whether finger key fetching support is requested])
235     AC_ARG_ENABLE(finger,
236       AC_HELP_STRING([--disable-finger],
237         [disable finger key fetching interface only]),
238       try_finger=$enableval, try_finger=yes)
239     AC_MSG_RESULT($try_finger)
240
241     AC_MSG_CHECKING([whether generic object key fetching support is requested])
242     AC_ARG_ENABLE(generic,
243       AC_HELP_STRING([--disable-generic],
244         [disable generic object key fetching interface only]),
245       try_generic=$enableval, try_generic=yes)
246     AC_MSG_RESULT($try_generic)
247
248     AC_MSG_CHECKING([whether email keyserver support is requested])
249     AC_ARG_ENABLE(mailto,
250       AC_HELP_STRING([--enable-mailto],
251         [enable email keyserver interface only]),
252       try_mailto=$enableval, try_mailto=no)
253     AC_MSG_RESULT($try_mailto)
254     fi
255
256     AC_MSG_CHECKING([whether keyserver exec-path is enabled])
257     AC_ARG_ENABLE(keyserver-path,
258       AC_HELP_STRING([--disable-keyserver-path],
259         [disable the exec-path option for keyserver helpers]),
260       [if test "$enableval" = no ; then
261          disable_keyserver_path=yes
262       fi],enableval=yes)
263     AC_MSG_RESULT($enableval)
264   fi
265
266
267 #
268 # Check for the key/uid cache size.  This can't be zero, but can be
269 # pretty small on embedded systems.  This is used for the gpg part.
270 #
271 AC_MSG_CHECKING([for the size of the key and uid cache])
272 AC_ARG_ENABLE(key-cache,
273         AC_HELP_STRING([--enable-key-cache=SIZE],
274                        [Set key cache to SIZE (default 4096)]),,enableval=4096)
275 if test "$enableval" = "no"; then
276    enableval=5
277 elif test "$enableval" = "yes" || test "$enableval" = ""; then
278    enableval=4096
279 fi
280 changequote(,)dnl
281 key_cache_size=`echo "$enableval" | sed 's/[A-Za-z]//g'`
282 changequote([,])dnl
283 if test "$enableval" != "$key_cache_size" || test "$key_cache_size" -lt 5; then
284    AC_MSG_ERROR([invalid key-cache size])
285 fi
286 AC_MSG_RESULT($key_cache_size)
287 AC_DEFINE_UNQUOTED(PK_UID_CACHE_SIZE,$key_cache_size,
288                   [Size of the key and UID caches])
289
290
291
292 #
293 # Check whether we want to use Linux capabilities
294 #
295 AC_MSG_CHECKING([whether use of capabilities is requested])
296 AC_ARG_WITH(capabilities,
297     [  --with-capabilities     use linux capabilities [default=no]],
298 [use_capabilities="$withval"],[use_capabilities=no])
299 AC_MSG_RESULT($use_capabilities)
300
301 #
302 # To avoid double inclusion of config.h which might happen at some
303 # places, we add the usual double inclusion protection at the top of
304 # config.h.
305 #
306 AH_TOP([
307 #ifndef GNUPG_CONFIG_H_INCLUDED
308 #define GNUPG_CONFIG_H_INCLUDED
309 ])
310
311 #
312 # Stuff which goes at the bottom of config.h.
313 #
314 AH_BOTTOM([
315 /* This is the major version number of GnuPG so that
316    source included files can test for this.  Note, that
317    we use 2 here even for GnuPG 1.9.x. */
318 #define GNUPG_MAJOR_VERSION 2
319
320 /* Now to separate file name parts.
321    Please note that the string version must not contain more
322    than one character because the code assumes strlen()==1 */
323 #ifdef HAVE_DOSISH_SYSTEM
324 #define DIRSEP_C '\\'
325 #define DIRSEP_S "\\"
326 #define EXTSEP_C '.'
327 #define EXTSEP_S "."
328 #define PATHSEP_C ';'
329 #define PATHSEP_S ";"
330 #define EXEEXT_S ".exe"
331 #else
332 #define DIRSEP_C '/'
333 #define DIRSEP_S "/"
334 #define EXTSEP_C '.'
335 #define EXTSEP_S "."
336 #define PATHSEP_C ':'
337 #define PATHSEP_S ":"
338 #define EXEEXT_S ""
339 #endif
340
341 /* This is the same as VERSION, but should be overridden if the
342    platform cannot handle things like dots '.' in filenames. Set
343    SAFE_VERSION_DOT and SAFE_VERSION_DASH to whatever SAFE_VERSION
344    uses for dots and dashes. */
345 #define SAFE_VERSION VERSION
346 #define SAFE_VERSION_DOT  '.'
347 #define SAFE_VERSION_DASH '-'
348
349 /* Some global constants. */
350 #ifdef HAVE_DRIVE_LETTERS
351 #define GNUPG_DEFAULT_HOMEDIR "c:/gnupg"
352 #elif defined(__VMS)
353 #define GNUPG_DEFAULT_HOMEDIR "/SYS\$LOGIN/gnupg" 
354 #else
355 #define GNUPG_DEFAULT_HOMEDIR "~/.gnupg"
356 #endif 
357 #define GNUPG_PRIVATE_KEYS_DIR "private-keys-v1.d"
358
359 /* For some systems (DOS currently), we hardcode the path here.  For
360    POSIX systems the values are constructed by the Makefiles, so that
361    the values may be overridden by the make invocations; this is to
362    comply with the GNU coding standards. */
363 #ifdef HAVE_DRIVE_LETTERS
364 #define GNUPG_BINDIR      "c:\\gnupg"
365 #define GNUPG_LIBEXECDIR  "c:\\gnupg"
366 #define GNUPG_LIBDIR      "c:\\gnupg"
367 #define GNUPG_DATADIR     "c:\\gnupg"
368 #endif
369
370 /* Setup the hardwired names of modules. */
371 #ifndef GNUPG_DEFAULT_AGENT
372 #define GNUPG_DEFAULT_AGENT    ( GNUPG_BINDIR DIRSEP_S "gpg-agent" EXEEXT_S )
373 #endif
374 #ifndef GNUPG_DEFAULT_PINENTRY
375 #define GNUPG_DEFAULT_PINENTRY ( GNUPG_BINDIR DIRSEP_S "pinentry" EXEEXT_S )
376 #endif
377 #ifndef GNUPG_DEFAULT_SCDAEMON
378 #define GNUPG_DEFAULT_SCDAEMON ( GNUPG_BINDIR DIRSEP_S "scdaemon" EXEEXT_S )
379 #endif
380 #ifndef GNUPG_DEFAULT_DIRMNGR
381 #define GNUPG_DEFAULT_DIRMNGR  ( GNUPG_BINDIR DIRSEP_S "dirmngr" EXEEXT_S )
382 #endif
383 #ifndef GNUPG_DEFAULT_PROTECT_TOOL
384 #define GNUPG_DEFAULT_PROTECT_TOOL \
385                     ( GNUPG_LIBEXECDIR DIRSEP_S "gpg-protect-tool" EXEEXT_S )
386 #endif
387
388
389 /* Derive some other constants. */
390 #if !(defined(HAVE_FORK) && defined(HAVE_PIPE) && defined(HAVE_WAITPID))
391 #define EXEC_TEMPFILE_ONLY
392 #endif
393
394
395 /* We didn't define endianness above, so get it from OS macros.  This
396    is intended for making fat binary builds on OS X. */
397 #if !defined(BIG_ENDIAN_HOST) && !defined(LITTLE_ENDIAN_HOST)
398 #if defined(__BIG_ENDIAN__)
399 #define BIG_ENDIAN_HOST 1
400 #elif defined(__LITTLE_ENDIAN__)
401 #define LITTLE_ENDIAN_HOST 1
402 #else
403 #error "No endianness found"
404 #endif
405 #endif
406
407
408 /* Tell libgcrypt not to use its own libgpg-error implementation. */
409 #define USE_LIBGPG_ERROR 1
410
411 /* We use jnlib, so tell other modules about it.  */
412 #define HAVE_JNLIB_LOGGING 1
413
414 /* Our HTTP code is used in estream mode.  */
415 #define HTTP_USE_ESTREAM 1
416
417 /* We always include support for the OpenPGP card.  */
418 #define ENABLE_CARD_SUPPORT 1
419
420
421 #endif /*GNUPG_CONFIG_H_INCLUDED*/
422 ])
423
424
425 AM_MAINTAINER_MODE
426
427 # Checks for programs.
428 AC_PROG_MAKE_SET
429 AM_SANITY_CHECK
430 missing_dir=`cd $ac_aux_dir && pwd`
431 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
432 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
433 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
434 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
435 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
436 AC_PROG_AWK
437 AC_PROG_CC
438 AC_PROG_CPP
439 AC_PROG_INSTALL
440 AC_PROG_LN_S
441 AC_PROG_RANLIB
442 AC_CHECK_TOOL(AR, ar, :)
443 AC_PATH_PROG(PERL,"perl")
444 AC_ISC_POSIX
445 gl_EARLY
446 AC_SYS_LARGEFILE
447 GNUPG_CHECK_FAQPROG
448 GNUPG_CHECK_USTAR
449
450
451 try_gettext=yes
452 have_dosish_system=no
453 have_w32_system=no
454 use_simple_gettext=no
455 case "${host}" in
456     *-mingw32*)
457         # special stuff for Windoze NT
458         ac_cv_have_dev_random=no
459         AC_DEFINE(USE_ONLY_8DOT3,1,
460                   [set this to limit filenames to the 8.3 format])
461         AC_DEFINE(HAVE_DRIVE_LETTERS,1,
462                   [defined if we must run on a stupid file system])
463         AC_DEFINE(USE_SIMPLE_GETTEXT,1,
464                   [because the Unix gettext has too much overhead on
465                    MingW32 systems and these systems lack Posix functions,
466                    we use a simplified version of gettext])
467         disable_keyserver_path=yes
468         have_dosish_system=yes
469         have_w32_system=yes
470         try_gettext="no"
471         use_simple_gettext=yes
472         ;;
473     i?86-emx-os2 | i?86-*-os2*emx )
474         # OS/2 with the EMX environment
475         ac_cv_have_dev_random=no
476         AC_DEFINE(HAVE_DRIVE_LETTERS)
477         have_dosish_system=yes
478         try_gettext="no"
479         ;;
480
481     i?86-*-msdosdjgpp*)
482         # DOS with the DJGPP environment
483         ac_cv_have_dev_random=no
484         AC_DEFINE(HAVE_DRIVE_LETTERS)
485         have_dosish_system=yes
486         try_gettext="no"
487         ;;
488
489     *-*-freebsd*)
490        # FreeBSD
491        CPPFLAGS="$CPPFLAGS -I/usr/local/include"
492        LDFLAGS="$LDFLAGS -L/usr/local/lib"
493        ;;
494
495     *-*-hpux*)
496         if test -z "$GCC" ; then
497             CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE"
498         fi
499         ;;
500     *-dec-osf4*)
501         if test -z "$GCC" ; then
502             # Suppress all warnings
503             # to get rid of the unsigned/signed char mismatch warnings.
504             CFLAGS="$CFLAGS -w"
505         fi
506         ;;
507     *-dec-osf5*)
508         if test -z "$GCC" ; then
509             # Use the newer compiler `-msg_disable ptrmismatch1' to
510             # get rid of the unsigned/signed char mismatch warnings.
511             # Using this may hide other pointer mismatch warnings, but
512             # it at least lets other warning classes through
513             CFLAGS="$CFLAGS -msg_disable ptrmismatch1"
514         fi
515         ;;
516     m68k-atari-mint)
517         ;;
518     *)
519        ;;
520 esac
521
522 if test "$have_dosish_system" = yes; then
523    AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
524              [Defined if we run on some of the PCDOS like systems 
525               (DOS, Windoze. OS/2) with special properties like
526               no file modes])
527 fi
528 AM_CONDITIONAL(HAVE_DOSISH_SYSTEM, test "$have_dosish_system" = yes)
529
530 AM_CONDITIONAL(USE_SIMPLE_GETTEXT, test x"$use_simple_gettext" = xyes)
531
532 if test "$have_w32_system" = yes; then
533    AC_DEFINE(HAVE_W32_SYSTEM,1, [Defined if we run on a W32 API based system])
534 fi
535 AM_CONDITIONAL(HAVE_W32_SYSTEM, test "$have_w32_system" = yes)
536
537 if test "$disable_keyserver_path" = yes; then
538     AC_DEFINE(DISABLE_KEYSERVER_PATH,1,
539               [Defined to disable exec-path for keyserver helpers])
540 fi
541
542 # (These need to go after AC_PROG_CC so that $EXEEXT is defined)
543 AC_DEFINE_UNQUOTED(EXEEXT,"$EXEEXT",[The executable file extension, if any])
544
545 if test x"$try_hkp" = xyes ; then
546   AC_SUBST(GPGKEYS_HKP,"gpg2keys_hkp$EXEEXT")
547 fi
548
549 if test x"$try_finger" = xyes ; then
550   AC_SUBST(GPGKEYS_FINGER,"gpg2keys_finger$EXEEXT")
551 fi
552
553
554
555 #
556 # Checks for libraries.
557 #
558
559
560 #
561 # libgpg-error is a library with error codes shared between GnuPG
562 # related projects.
563 #
564 AM_PATH_GPG_ERROR("$NEED_GPG_ERROR_VERSION",
565                   have_gpg_error=yes,have_gpg_error=no)
566
567
568 #
569 # Libgcrypt is our generic crypto library
570 #
571 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION",
572         have_libgcrypt=yes,have_libgcrypt=no)
573
574
575 #
576 # libassuan is used for IPC
577 #
578 AM_PATH_LIBASSUAN("$NEED_LIBASSUAN_VERSION",
579                   have_libassuan=yes,have_libassuan=no)
580
581
582 #
583 # libksba is our X.509 support library
584 #
585 AM_PATH_KSBA("$NEED_KSBA_API:$NEED_KSBA_VERSION",have_ksba=yes,have_ksba=no)
586
587
588 #
589 # libusb allows us to use the integrated CCID smartcard reader driver.
590 #
591 # FiXME: Use GNUPG_CHECK_LIBUSB and modify to use separate AC_SUBSTs.
592 AC_CHECK_LIB(usb, usb_bulk_write,
593               [ LIBUSB_LIBS="$LIBUSB_LIBS -lusb"
594                 AC_DEFINE(HAVE_LIBUSB,1,
595                          [defined if libusb is available])
596                 have_libusb=yes
597              ])
598 AC_SUBST(LIBUSB_LIBS)
599 AC_CHECK_FUNCS(usb_create_match)
600
601 #
602 # Check wether it is necessary to link against libdl.
603 #
604 LIBS=""
605 AC_SEARCH_LIBS(dlopen, c dl,,,)
606 DL_LIBS=$LIBS
607 AC_SUBST(DL_LIBS)
608
609 #
610 # Checks for symcryptrun:
611 #
612
613 # libutil has openpty() and login_tty().
614 AC_CHECK_LIB(util, openpty,
615               [ LIBUTIL_LIBS="$LIBUTIL_LIBS -lutil"
616                 AC_DEFINE(HAVE_LIBUTIL,1,
617                          [defined if libutil is available])
618              ])
619 AC_SUBST(LIBUTIL_LIBS)
620
621 # shred is used to clean temporary plain text files.
622 AC_PATH_PROG(SHRED, shred, /usr/bin/shred)
623 AC_DEFINE_UNQUOTED(SHRED,
624         "${SHRED}", [defines the filename of the shred program])
625
626
627
628 #
629 # Check whether the GNU Pth library is available
630 # Note, that we include a Pth emulation for W32.
631 #
632 AC_ARG_WITH(pth-prefix,
633             AC_HELP_STRING([--with-pth-prefix=PFX],
634                            [prefix where GNU Pth is installed (optional)]),
635      pth_config_prefix="$withval", pth_config_prefix="")
636 if test x$pth_config_prefix != x ; then
637    PTH_CONFIG="$pth_config_prefix/bin/pth-config"
638 fi
639 AC_PATH_PROG(PTH_CONFIG, pth-config, no)
640 if test "$have_w32_system" = no; then
641  if test "$PTH_CONFIG" = "no"; then
642     AC_MSG_WARN([[
643 ***
644 *** To support concurrent access to the gpg-agent and the SCdaemon
645 *** we need the support of the GNU Portable Threads Library.
646 *** Download it from ftp://ftp.gnu.org/gnu/pth/
647 *** On a Debian GNU/Linux system you might want to try 
648 ***   apt-get install libpth-dev
649 ***]])
650  else
651   GNUPG_PTH_VERSION_CHECK(1.3.7)
652   if test $have_pth = yes; then      
653      PTH_CFLAGS=`$PTH_CONFIG --cflags`
654      PTH_LIBS=`$PTH_CONFIG --ldflags`
655      PTH_LIBS="$PTH_LIBS `$PTH_CONFIG --libs --all`"
656      AC_DEFINE(USE_GNU_PTH, 1,
657               [Defined if the GNU Portable Thread Library should be used])
658      AC_DEFINE(HAVE_PTH, 1,
659               [Defined if the GNU Pth is available])
660   fi
661  fi
662 else 
663  have_pth=yes
664  PTH_CFLAGS=""
665  PTH_LIBS=""
666  AC_DEFINE(USE_GNU_PTH, 1)
667  AC_DEFINE(HAVE_PTH, 1)
668 fi
669 AC_SUBST(PTH_CFLAGS)
670 AC_SUBST(PTH_LIBS)
671
672
673 #
674 # Must check for network library requirements before doing link tests
675 # for ldap, for example. If ldap libs are static (or dynamic and without
676 # ELF runtime link paths), then link will fail and LDAP support won't
677 # be detected.
678 #
679 AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname,
680         [NETLIBS="-lnsl $NETLIBS"]))
681 AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt,
682         [NETLIBS="-lsocket $NETLIBS"]))
683
684 #
685 # Now try for the resolver functions so we can use DNS for SRV, PA and CERT.
686 #
687 if test x"$try_hkp" = xyes || test x"$try_http" = xyes ; then
688   AC_ARG_ENABLE(dns-srv,
689      AC_HELP_STRING([--disable-dns-srv],
690                     [disable the use of DNS SRV in HKP and HTTP]),
691                 use_dns_srv=$enableval,use_dns_srv=yes)
692 fi
693
694 AC_ARG_ENABLE(dns-pka,
695    AC_HELP_STRING([--disable-dns-pka],
696         [disable the use of PKA records in DNS]),
697    use_dns_pka=$enableval,use_dns_pka=yes)
698
699 AC_ARG_ENABLE(dns-cert,
700    AC_HELP_STRING([--disable-dns-cert],
701         [disable the use of CERT records in DNS]),
702    use_dns_cert=$enableval,use_dns_cert=yes)
703
704 if test x"$use_dns_pka" = xyes || test x"$use_dns_srv" = xyes \
705    || test x"$use_dns_cert" = xyes; then
706   _dns_save_libs=$LIBS
707   LIBS=""
708   # the double underscore thing is a glibc-ism?
709   AC_SEARCH_LIBS(res_query,resolv bind,,
710                  AC_SEARCH_LIBS(__res_query,resolv bind,,have_resolver=no))
711   AC_SEARCH_LIBS(dn_expand,resolv bind,,
712                  AC_SEARCH_LIBS(__dn_expand,resolv bind,,have_resolver=no))
713   AC_SEARCH_LIBS(dn_skipname,resolv bind,,
714                  AC_SEARCH_LIBS(__dn_skipname,resolv bind,,have_resolver=no))
715
716   if test x"$have_resolver" != xno ; then
717
718     # Make sure that the BIND 4 resolver interface is workable before
719     # enabling any code that calls it.  At some point I'll rewrite the
720     # code to use the BIND 8 resolver API.
721
722     AC_MSG_CHECKING([whether the resolver is usable])
723     AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
724 #include <netinet/in.h>
725 #include <arpa/nameser.h>
726 #include <resolv.h>],
727 [[unsigned char answer[PACKETSZ];
728   res_query("foo.bar",C_IN,T_A,answer,PACKETSZ);
729   dn_skipname(0,0); 
730   dn_expand(0,0,0,0,0);
731 ]])],have_resolver=yes,have_resolver=no)
732     AC_MSG_RESULT($have_resolver)
733
734     # This is Apple-specific and somewhat bizarre as they changed the
735     # define in bind 8 for some reason.
736
737     if test x"$have_resolver" != xyes ; then
738        AC_MSG_CHECKING(
739              [whether I can make the resolver usable with BIND_8_COMPAT])
740        AC_LINK_IFELSE([AC_LANG_PROGRAM([#define BIND_8_COMPAT
741 #include <sys/types.h>
742 #include <netinet/in.h>
743 #include <arpa/nameser.h>
744 #include <resolv.h>],
745 [[unsigned char answer[PACKETSZ];
746   res_query("foo.bar",C_IN,T_A,answer,PACKETSZ);
747   dn_skipname(0,0); dn_expand(0,0,0,0,0);
748 ]])],[have_resolver=yes ; need_compat=yes])
749        AC_MSG_RESULT($have_resolver)
750     fi
751   fi
752
753   if test x"$have_resolver" = xyes ; then
754      DNSLIBS=$LIBS
755
756      if test x"$use_dns_srv" = xyes ; then
757         AC_DEFINE(USE_DNS_SRV,1,[define to use DNS SRV])
758      fi
759
760      if test x"$use_dns_pka" = xyes ; then
761         AC_DEFINE(USE_DNS_PKA,1,[define to use our experimental DNS PKA])
762      fi
763
764      if test x"$use_dns_cert" = xyes ; then
765         AC_DEFINE(USE_DNS_CERT,1,[define to use DNS CERT])
766      fi
767
768      if test x"$need_compat" = xyes ; then
769         AC_DEFINE(BIND_8_COMPAT,1,[an Apple OSXism])
770      fi
771   else
772      use_dns_srv=no
773      use_dns_pka=no
774      use_dns_cert=no
775   fi
776
777   LIBS=$_dns_save_libs
778 fi
779
780 AC_SUBST(DNSLIBS)
781
782 AM_CONDITIONAL(USE_DNS_SRV, test x"$use_dns_srv" = xyes)
783
784 #
785 # Check for LDAP
786 #
787 if test "$try_ldap" = yes ; then
788    GNUPG_CHECK_LDAP($NETLIBS)
789 fi
790
791 #
792 # Check for curl.  We fake the curl API if libcurl isn't installed.
793 #
794 LIBCURL_CHECK_CONFIG([yes],,,[fake_curl=yes])
795 AM_CONDITIONAL(FAKE_CURL,test x"$fake_curl" = xyes)
796
797 # Generic, for us, means curl
798
799 if test x"$try_generic" = xyes ; then
800    AC_SUBST(GPGKEYS_CURL,"gpg2keys_curl$EXEEXT")
801 fi
802
803 #
804 # Check for sendmail
805 #
806 # This isn't necessarily sendmail itself, but anything that gives a
807 # sendmail-ish interface to the outside world.  That includes Exim,
808 # Postfix, etc.  Basically, anything that can handle "sendmail -t".
809 if test "$try_mailto" = yes ; then
810   AC_ARG_WITH(mailprog,
811       AC_HELP_STRING([--with-mailprog=NAME],
812                      [use "NAME -t" for mail transport]),
813              ,with_mailprog=yes)
814
815   if test x"$with_mailprog" = xyes ; then
816     AC_PATH_PROG(SENDMAIL,sendmail,,$PATH:/usr/sbin:/usr/libexec:/usr/lib)
817     if test "$ac_cv_path_SENDMAIL" ; then
818       GPGKEYS_MAILTO="gpg2keys_mailto"
819     fi
820   elif test x"$with_mailprog" != xno ; then
821     AC_MSG_CHECKING([for a mail transport program])
822     AC_SUBST(SENDMAIL,$with_mailprog)
823     AC_MSG_RESULT($with_mailprog)
824     GPGKEYS_MAILTO="gpg2keys_mailto"
825   fi
826 fi
827
828 AC_SUBST(GPGKEYS_MAILTO)
829
830 #
831 # Construct a printable name of the OS
832 #
833 case "${host}" in
834     *-mingw32*)
835         PRINTABLE_OS_NAME="MingW32"
836         ;;
837     *-*-cygwin*)
838         PRINTABLE_OS_NAME="Cygwin"
839         ;;
840     i?86-emx-os2 | i?86-*-os2*emx )
841         PRINTABLE_OS_NAME="OS/2"
842         ;;
843     i?86-*-msdosdjgpp*)
844         PRINTABLE_OS_NAME="MSDOS/DJGPP"
845         try_dynload=no
846         ;;
847     *-linux*)
848         PRINTABLE_OS_NAME="GNU/Linux"
849         ;;
850     *)
851         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
852         ;;
853 esac
854 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
855                    [A human readable text with the name of the OS])
856
857
858 #
859 # Check for gettext
860 #
861 AM_GNU_GETTEXT_VERSION(0.14.1)
862 if test "$try_gettext" = yes; then
863   AM_GNU_GETTEXT(,[need-ngettext])
864
865   # gettext requires some extra checks.  These really should be part of
866   # the basic AM_GNU_GETTEXT macro.  TODO: move other gettext-specific
867   # function checks to here.
868
869   AC_CHECK_FUNCS(strchr)
870 else
871   USE_NLS=no
872   USE_INCLUDED_LIBINTL=no
873   BUILD_INCLUDED_LIBINTL=no
874   AC_SUBST(USE_NLS)
875   AC_SUBST(USE_INCLUDED_LIBINTL)
876   AC_SUBST(BUILD_INCLUDED_LIBINTL)
877   AM_PO_SUBDIRS
878 fi
879
880
881 #
882 # SELinux support
883 #
884 if test "$selinux_support" = yes ; then
885   AC_DEFINE(ENABLE_SELINUX_HACKS,1,[Define to enable SELinux support])
886 fi
887
888
889 #
890 # Checks for header files.
891 #
892 AC_HEADER_STDC
893 AC_CHECK_HEADERS([string.h unistd.h langinfo.h termio.h locale.h getopt.h])
894 AC_CHECK_HEADERS([pwd.h inttypes.h])
895 # Note that we do not check for iconv here because this is done anyway
896 # by the gettext checks and thus it allows us to disable the use of
897 # iconv by using --disable-nls.
898
899
900 #
901 # Checks for typedefs, structures, and compiler characteristics.
902 #
903 AC_C_CONST
904 AC_C_INLINE
905 AC_C_VOLATILE
906 AC_TYPE_SIZE_T
907 AC_TYPE_MODE_T
908 AC_TYPE_SIGNAL
909 AC_DECL_SYS_SIGLIST
910
911 AC_ARG_ENABLE(endian-check,
912               AC_HELP_STRING([--disable-endian-check],
913               [disable the endian check and trust the OS provided macros]),
914               endiancheck=$enableval,endiancheck=yes)
915
916 if test x"$endiancheck" = xyes ; then
917   GNUPG_CHECK_ENDIAN
918 fi
919
920 # fixme: we should get rid of the byte type
921 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
922 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
923 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
924 GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
925 GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
926
927 AC_CHECK_SIZEOF(unsigned short)
928 AC_CHECK_SIZEOF(unsigned int)
929 AC_CHECK_SIZEOF(unsigned long)
930 AC_CHECK_SIZEOF(unsigned long long)
931 # Ensure that we have UINT64_C before we bother to check for uint64_t
932 # Fixme: really needed in gnupg?  I think it is only useful in libcgrypt.
933 AC_CACHE_CHECK([for UINT64_C],[gnupg_cv_uint64_c_works],
934    AC_COMPILE_IFELSE(AC_LANG_PROGRAM([#include <inttypes.h>
935        uint64_t foo=UINT64_C(42);]),
936      gnupg_cv_uint64_c_works=yes,gnupg_cv_uint64_c_works=no))
937 if test "$gnupg_cv_uint64_c_works" = "yes" ; then
938    AC_CHECK_SIZEOF(uint64_t)
939 fi
940
941 if test "$ac_cv_sizeof_unsigned_short" = "0" \
942    || test "$ac_cv_sizeof_unsigned_int" = "0" \
943    || test "$ac_cv_sizeof_unsigned_long" = "0"; then
944     AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
945 fi
946
947 #
948 # fixme: do we really need this - it should be encapsulated in libassuan
949 #
950 GNUPG_SYS_SO_PEERCRED
951
952
953 #
954 # Checks for library functions.
955 #
956 AC_CHECK_DECLS(getpagesize)
957 AC_FUNC_FSEEKO
958 AC_FUNC_VPRINTF
959 AC_FUNC_FORK
960 AC_CHECK_FUNCS([strerror stpcpy strsep strlwr tcgetattr strtoul mmap])
961 AC_CHECK_FUNCS([strcasecmp strncasecmp ctermid times timegm gmtime_r])
962 AC_CHECK_FUNCS([unsetenv getpwnam getpwuid fcntl ftruncate])
963 AC_CHECK_FUNCS([memmove gettimeofday getrusage setrlimit clock_gettime])
964 AC_CHECK_FUNCS([atexit raise getpagesize strftime nl_langinfo setlocale])
965 AC_CHECK_FUNCS([waitpid wait4 sigaction sigprocmask pipe stat getaddrinfo])
966 AC_CHECK_FUNCS([ttyname isascii memrchr rand ftello])
967
968 AC_CHECK_TYPES([struct sigaction, sigset_t],,,[#include <signal.h>])
969
970 #
971 # gnulib checks
972 #
973 gl_SOURCE_BASE(gl)
974 gl_M4_BASE(gl/m4)
975 gl_MODULES(setenv strsep mkdtemp vasprintf xsize)
976 gl_INIT
977
978
979 #
980 # These are needed by libjnlib - fixme: we should have macros for them
981 #
982 AC_CHECK_FUNCS([memicmp stpcpy strlwr strtoul memmove stricmp strtol])
983 AC_CHECK_FUNCS([getrusage setrlimit stat setlocale])
984 AC_CHECK_FUNCS([flockfile funlockfile fopencookie funopen])
985
986
987 #
988 # W32 specific test
989 #
990 GNUPG_FUNC_MKDIR_TAKES_ONE_ARG
991
992
993 #
994 # Sanity check regex.  Tests adapted from mutt.
995 # FIXME: We should use the the regex from gnulib
996 #
997 AC_MSG_CHECKING([whether regular expression support is requested])
998 AC_ARG_ENABLE(regex,
999   AC_HELP_STRING([--disable-regex],
1000     [do not handle regular expressions in trust signatures]),
1001   use_regex=$enableval, use_regex=yes)
1002 AC_MSG_RESULT($use_regex)
1003
1004 if test "$use_regex" = yes ; then
1005   AC_MSG_CHECKING([whether the included regex lib is requested])
1006   AC_ARG_WITH(included-regex,
1007       [  --with-included-regex   use the included GNU regex library],
1008       [gnupg_cv_included_regex="$withval"],[gnupg_cv_included_regex=no])
1009   AC_MSG_RESULT($gnupg_cv_included_regex)
1010
1011   if test $gnupg_cv_included_regex = no ; then
1012      # Does the system have regex functions at all?
1013      AC_CHECK_FUNC(regcomp,gnupg_cv_included_regex=no,
1014                            gnupg_cv_included_regex=yes)
1015   fi
1016
1017   if test $gnupg_cv_included_regex = no ; then
1018      AC_CACHE_CHECK([whether your system's regexp library is broken],
1019        [gnupg_cv_regex_broken],
1020        AC_TRY_RUN([
1021 #include <unistd.h>
1022 #include <regex.h>
1023 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); }],
1024        gnupg_cv_regex_broken=no, gnupg_cv_regex_broken=yes, gnupg_cv_regex_broken=yes))
1025
1026      if test $gnupg_cv_regex_broken = yes ; then
1027       AC_MSG_WARN(your regex is broken - using the included GNU regex instead.)
1028       gnupg_cv_included_regex=yes
1029      fi
1030   fi
1031
1032   if test $gnupg_cv_included_regex = yes; then
1033      AC_DEFINE(USE_INTERNAL_REGEX,1,[ Define if you want to use the included regex lib ])
1034   fi
1035 else
1036   AC_DEFINE(DISABLE_REGEX,1,[ Define to disable regular expression support ])
1037 fi
1038
1039 AM_CONDITIONAL(USE_INTERNAL_REGEX, test x"$gnupg_cv_included_regex" = xyes)
1040
1041
1042
1043 #
1044 # Do we have zlib? Must do it here because Solaris failed
1045 # when compiling a conftest (due to the "-lz" from LIBS).
1046 # Note that we combine zlib and bzlib2 in ZLIBS.
1047 #
1048 _cppflags="${CPPFLAGS}"
1049 _ldflags="${LDFLAGS}"
1050 AC_ARG_WITH(zlib,
1051   [  --with-zlib=DIR         use libz in DIR],[
1052     if test -d "$withval"; then
1053       CPPFLAGS="${CPPFLAGS} -I$withval/include"
1054       LDFLAGS="${LDFLAGS} -L$withval/lib"
1055     fi
1056   ])
1057
1058 AC_CHECK_HEADER(zlib.h,
1059       AC_CHECK_LIB(z, deflateInit2_,
1060        ZLIBS="-lz",
1061        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
1062        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
1063
1064 #
1065 # Check whether we can support bzip2
1066
1067 if test "$use_bzip2" = yes ; then
1068   _cppflags="${CPPFLAGS}"
1069   _ldflags="${LDFLAGS}"
1070   AC_ARG_WITH(bzip2,
1071      AC_HELP_STRING([--with-bzip2=DIR],[look for bzip2 in DIR]),
1072       [
1073       if test -d "$withval" ; then
1074         CPPFLAGS="${CPPFLAGS} -I$withval/include"
1075         LDFLAGS="${LDFLAGS} -L$withval/lib"
1076       fi
1077       ],withval="")
1078
1079   # Checking alongside stdio.h as an early version of bzip2 (1.0)
1080   # required stdio.h to be included before bzlib.h, and Solaris 9 is 
1081   # woefully out of date.
1082   if test "$withval" != no ; then
1083      AC_CHECK_HEADER(bzlib.h,
1084         AC_CHECK_LIB(bz2,BZ2_bzCompressInit,
1085           [
1086           have_bz2=yes
1087           ZLIBS="$ZLIBS -lbz2"
1088           AC_DEFINE(HAVE_BZIP2,1,
1089                   [Defined if the bz2 compression library is available])
1090           ],
1091           CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
1092           CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags},[#include <stdio.h>])
1093   fi
1094 fi
1095 AM_CONDITIONAL(ENABLE_BZIP2_SUPPORT,test x"$have_bz2" = "xyes")
1096 AC_SUBST(ZLIBS)
1097
1098
1099 # Check for readline support
1100 GNUPG_CHECK_READLINE
1101
1102 # See wether we want to run the long test suite.
1103 AC_ARG_WITH(pkits-tests,
1104     AC_HELP_STRING([--with-pkits-tests],[run the PKITS based tests]),
1105     [run_pkits_tests=$withval], [run_pkits_tests=no])
1106 AM_CONDITIONAL(RUN_PKITS_TESTS, test "$run_pkits_tests" = "yes")
1107
1108 #
1109 # Allow users to append something to the version string without
1110 # flagging it as development version.  The user version parts is
1111 # considered everything after a dash. 
1112 #
1113 if test "$development_version" != yes; then
1114   changequote(,)dnl
1115   tmp_pat='[a-zA-Z]'
1116   changequote([,])dnl
1117   if echo "$VERSION" | sed 's/-.*//' | grep "$tmp_pat" >/dev/null ; then
1118     development_version=yes
1119   fi
1120 fi
1121 if test "$development_version" = yes; then
1122     AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
1123             [Defined if this is not a regular release])
1124 fi
1125
1126 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
1127
1128 GNUPG_CHECK_GNUMAKE
1129
1130 # Add some extra libs here so that previous tests don't fail for
1131 # mysterious reasons - the final link step should bail out. 
1132 if test "$have_w32_system" = yes; then
1133    W32LIBS="-lwsock32"
1134 fi
1135
1136 AC_SUBST(NETLIBS)
1137 AC_SUBST(W32LIBS)
1138
1139
1140 #
1141 # Setup gcc specific options
1142 #
1143 if test "$GCC" = yes; then
1144     # Note that it is okay to use CFLAGS here because this are just
1145     # warning options and the user should have a chance of overriding
1146     # them.
1147     if test "$USE_MAINTAINER_MODE" = "yes"; then
1148         CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
1149         CFLAGS="$CFLAGS -Wno-format-y2k -Wformat-security -Wformat-nonliteral"
1150     else
1151         CFLAGS="$CFLAGS -Wall"
1152     fi
1153
1154     AC_MSG_CHECKING([if gcc supports -Wno-pointer-sign])
1155     _gcc_cflags_save=$CFLAGS
1156     CFLAGS="-Wno-pointer-sign"
1157     AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_psign=yes,_gcc_psign=no)
1158     AC_MSG_RESULT($_gcc_psign)
1159     CFLAGS=$_gcc_cflags_save;
1160     if test x"$_gcc_psign" = xyes ; then
1161        CFLAGS="$CFLAGS -Wno-pointer-sign"
1162     fi
1163 fi
1164
1165
1166 #
1167 # This is handy for debugging so the compiler doesn't rearrange
1168 # things and eliminate variables.
1169 #
1170 AC_ARG_ENABLE(optimization,
1171    AC_HELP_STRING([--disable-optimization],
1172                   [disable compiler optimization]),
1173                   [if test $enableval = no ; then
1174                       CFLAGS=`echo $CFLAGS | sed 's/-O[[0-9]]//'`
1175                    fi])
1176
1177 #
1178 # For W32 we need to use our Pth emulation code
1179 #
1180 if test "$have_w32_system" = yes; then
1181   AC_CONFIG_LINKS(pth.h:jnlib/w32-pth.h)
1182 fi
1183
1184
1185 #
1186 # Decide what to build
1187 #
1188 missing_pth=no
1189 if test $have_ksba = no; then
1190   build_gpgsm=no
1191   build_scdaemon=no
1192 fi
1193
1194 build_agent_threaded=""
1195 if test "$build_agent" = "yes"; then
1196   if test $have_pth = no; then
1197      build_agent_threaded="(not multi-threaded)"
1198      missing_pth=yes
1199   fi
1200 fi
1201
1202 build_scdaemon_extra=""
1203 if test "$build_scdaemon" = "yes"; then
1204   tmp=""
1205   if test $have_pth = no; then
1206      build_scdaemon_extra="not multi-threaded"
1207      tmp=", "
1208      missing_pth=yes
1209   fi
1210   if test $have_libusb = no; then
1211      build_scdaemon_extra="${tmp}without internal CCID driver"
1212      tmp=", "
1213   fi
1214   if test -n "$build_scdaemon_extra"; then
1215      build_scdaemon_extra="(${build_scdaemon_extra})"
1216   fi
1217 fi
1218
1219
1220 if test "$build_agent_only" = "yes" ; then
1221   build_gpg=no
1222   build_gpgsm=no
1223   build_scdaemon=no
1224 fi
1225
1226
1227 AM_CONDITIONAL(BUILD_GPG,   test "$build_gpg" = "yes")
1228 AM_CONDITIONAL(BUILD_GPGSM, test "$build_gpgsm" = "yes")
1229 AM_CONDITIONAL(BUILD_AGENT, test "$build_agent" = "yes")
1230 AM_CONDITIONAL(BUILD_SCDAEMON, test "$build_scdaemon" = "yes")
1231 AM_CONDITIONAL(BUILD_SYMCRYPTRUN, test "$build_symcryptrun" = "yes")
1232
1233
1234
1235 #
1236 # Print errors here so that they are visible all
1237 # together and the user can acquire them all together.
1238 #
1239 die=no
1240 if test "$have_gpg_error" = "no"; then
1241    die=yes
1242    AC_MSG_NOTICE([[
1243 ***  
1244 *** You need libgpg-error to build this program.
1245 **  This library is for example available at
1246 ***   ftp://ftp.gnupg.org/gcrypt/libgpg-error
1247 *** (at least version $NEED_GPG_ERROR_VERSION is required.)
1248 ***]])
1249 fi
1250 if test "$have_libgcrypt" = "no"; then
1251    die=yes
1252    AC_MSG_NOTICE([[
1253 ***  
1254 *** You need libgcrypt to build this program.
1255 **  This library is for example available at
1256 ***   ftp://ftp.gnupg.org/gcrypt/libgcrypt/
1257 *** (at least version $NEED_LIBGCRYPT_VERSION using API $NEED_LIBGCRYPT_API is required.)
1258 ***]])
1259 fi
1260 if test "$have_libassuan" = "no"; then
1261    die=yes
1262    AC_MSG_NOTICE([[
1263 ***
1264 *** You need libassuan to build this program.
1265 *** This library is for example available at
1266 ***   ftp://ftp.gnupg.org/gcrypt/alpha/libassuan/
1267 *** (at least version $NEED_LIBASSUAN_VERSION is required).
1268 ***]])
1269 fi
1270 if test "$have_ksba" = "no"; then
1271     AC_MSG_NOTICE([[
1272 ***
1273 *** You need libksba to build this program.
1274 *** This library is for example available at
1275 ***   ftp://ftp.gnupg.org/gcrypt/libksba/
1276 *** (at least version $NEED_KSBA_VERSION using API $NEED_KSBA_API is required).
1277 ***]])
1278 fi
1279 if test "$missing_pth" = "yes"; then
1280     AC_MSG_NOTICE([[
1281 ***
1282 *** It is now required to build with support for the
1283 *** GNU Portable Threads Library (Pth). Please install this
1284 *** library first.  The library is for example available at
1285 ***   ftp://ftp.gnu.org/gnu/pth/
1286 *** On a Debian GNU/Linux system you can install it using 
1287 ***   apt-get install libpth-dev
1288 ***]])
1289    die=yes
1290 fi
1291
1292 if test "$die" = "yes"; then
1293     AC_MSG_ERROR([[
1294 ***
1295 *** Required libraries not found. Please consult the above messages
1296 *** and install them before running configure again.
1297 ***]])
1298 fi
1299
1300
1301
1302 AC_CONFIG_FILES([ m4/Makefile 
1303 Makefile
1304 po/Makefile.in
1305 intl/Makefile
1306 gl/Makefile
1307 jnlib/Makefile
1308 common/Makefile
1309 kbx/Makefile
1310 g10/Makefile
1311 sm/Makefile
1312 agent/Makefile
1313 scd/Makefile
1314 keyserver/Makefile
1315 keyserver/gpgkeys_mailto
1316 keyserver/gpgkeys_test
1317 tools/gpg-zip
1318 tools/Makefile
1319 doc/Makefile
1320 tests/Makefile
1321 tests/openpgp/Makefile
1322 ])
1323 AC_OUTPUT
1324
1325 #tests/pkits/Makefile
1326
1327
1328
1329
1330 echo "
1331         GnuPG v${VERSION} has been configured as follows:
1332         
1333         Platform:  $PRINTABLE_OS_NAME ($host)
1334
1335         OpenPGP:   $build_gpg
1336         S/MIME:    $build_gpgsm
1337         Agent:     $build_agent $build_agent_threaded
1338         Smartcard: $build_scdaemon $build_scdaemon_extra
1339
1340         Protect tool:      $show_gnupg_protect_tool_pgm
1341         Default agent:     $show_gnupg_agent_pgm
1342         Default pinentry:  $show_gnupg_pinentry_pgm
1343         Default scdaemon:  $show_gnupg_scdaemon_pgm
1344         Default dirmngr:   $show_gnupg_dirmngr_pgm
1345
1346         PKITS based tests: $run_pkits_tests
1347 "
1348