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