Pass on assuan comment lines from scd.
[gnupg.git] / configure.ac
1 # configure.ac - for GnuPG 2.0
2 # Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
3 #               2006, 2007, 2008, 2010 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 3 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, see <http://www.gnu.org/licenses/>.
19
20 # Process this file with autoconf to produce a configure script.
21 AC_PREREQ(2.61)
22 min_automake_version="1.10"
23
24 # Remember to change the version number immediately *after* a release.
25 # Set my_issvn to "yes" for non-released code.  Remember to run an
26 # "svn up" and "autogen.sh" right before creating a distribution.
27 m4_define([my_version], [2.0.17])
28 m4_define([my_issvn], [yes])
29
30 m4_define([svn_revision], m4_esyscmd([printf "%d" $(svn info 2>/dev/null \
31           | sed -n '/^Revision:/ s/[^0-9]//gp'|head -1)]))
32 AC_INIT([gnupg], 
33         [my_version[]m4_if(my_issvn,[yes],[-svn[]svn_revision])],
34         [http://bugs.gnupg.org])
35 # Set development_version to yes if the minor number is odd or you
36 # feel that the default check for a development version is not
37 # sufficient.
38 development_version=no
39
40 NEED_GPG_ERROR_VERSION=1.7
41
42 NEED_LIBGCRYPT_API=1
43 NEED_LIBGCRYPT_VERSION=1.4.0
44
45 NEED_LIBASSUAN_API=2
46 NEED_LIBASSUAN_VERSION=2.0.0
47
48 NEED_KSBA_API=1
49 NEED_KSBA_VERSION=1.0.7
50
51
52 PACKAGE=$PACKAGE_NAME
53 PACKAGE_GT=${PACKAGE_NAME}2
54 VERSION=$PACKAGE_VERSION
55
56 AC_CONFIG_AUX_DIR(scripts)
57 AC_CONFIG_SRCDIR(sm/gpgsm.c)
58 AM_CONFIG_HEADER(config.h)
59 AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
60 AC_CANONICAL_HOST
61 AB_INIT
62
63 AC_GNU_SOURCE
64
65 # Some status variables.
66 have_gpg_error=no
67 have_libgcrypt=no 
68 have_libassuan=no
69 have_ksba=no
70 have_pth=no
71 have_libusb=no
72 have_adns=no
73
74 use_bzip2=yes
75 use_exec=yes
76 disable_keyserver_path=no
77 use_ccid_driver=yes
78 use_standard_socket=no
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 # Configure option to allow or disallow execution of external
178 # programs, like a photo viewer.
179 AC_MSG_CHECKING([whether to enable external program execution])
180 AC_ARG_ENABLE(exec,
181     AC_HELP_STRING([--disable-exec],[disable all external program execution]),
182     use_exec=$enableval)
183 AC_MSG_RESULT($use_exec)
184 if test "$use_exec" = no ; then
185     AC_DEFINE(NO_EXEC,1,[Define to disable all external program execution])
186 fi
187
188 if test "$use_exec" = yes ; then
189   AC_MSG_CHECKING([whether to enable photo ID viewing])
190   AC_ARG_ENABLE(photo-viewers,
191       [  --disable-photo-viewers disable photo ID viewers],
192       [if test "$enableval" = no ; then
193          AC_DEFINE(DISABLE_PHOTO_VIEWER,1,[define to disable photo viewing])
194       fi],enableval=yes)
195   gnupg_cv_enable_photo_viewers=$enableval
196   AC_MSG_RESULT($enableval)
197
198   if test "$gnupg_cv_enable_photo_viewers" = yes ; then
199     AC_MSG_CHECKING([whether to use a fixed photo ID viewer])
200     AC_ARG_WITH(photo-viewer,
201         [  --with-photo-viewer=FIXED_VIEWER  set a fixed photo ID viewer],
202         [if test "$withval" = yes ; then
203            withval=no
204         elif test "$withval" != no ; then
205            AC_DEFINE_UNQUOTED(FIXED_PHOTO_VIEWER,"$withval",
206                             [if set, restrict photo-viewer to this])
207         fi],withval=no)
208     AC_MSG_RESULT($withval)
209   fi
210
211   AC_MSG_CHECKING([whether to enable external keyserver helpers])
212   AC_ARG_ENABLE(keyserver-helpers,
213       [  --disable-keyserver-helpers  disable all external keyserver support],
214       [if test "$enableval" = no ; then
215          AC_DEFINE(DISABLE_KEYSERVER_HELPERS,1,
216                   [define to disable keyserver helpers])
217       fi],enableval=yes)
218   gnupg_cv_enable_keyserver_helpers=$enableval
219   AC_MSG_RESULT($enableval)
220
221   if test "$gnupg_cv_enable_keyserver_helpers" = yes ; then
222     # LDAP is defined only after we confirm the library is available later
223     AC_MSG_CHECKING([whether LDAP keyserver support is requested])
224     AC_ARG_ENABLE(ldap,
225       AC_HELP_STRING([--disable-ldap],[disable LDAP keyserver interface only]),
226       try_ldap=$enableval, try_ldap=yes)
227     AC_MSG_RESULT($try_ldap)
228
229     AC_MSG_CHECKING([whether HKP keyserver support is requested])
230     AC_ARG_ENABLE(hkp,
231       AC_HELP_STRING([--disable-hkp],[disable HKP keyserver interface only]),
232       try_hkp=$enableval, try_hkp=yes)
233     AC_MSG_RESULT($try_hkp)
234
235     AC_MSG_CHECKING([whether finger key fetching support is requested])
236     AC_ARG_ENABLE(finger,
237       AC_HELP_STRING([--disable-finger],
238         [disable finger key fetching interface only]),
239       try_finger=$enableval, try_finger=yes)
240     AC_MSG_RESULT($try_finger)
241
242     AC_MSG_CHECKING([whether generic object key fetching support is requested])
243     AC_ARG_ENABLE(generic,
244       AC_HELP_STRING([--disable-generic],
245         [disable generic object key fetching interface only]),
246       try_generic=$enableval, try_generic=yes)
247     AC_MSG_RESULT($try_generic)
248
249     AC_MSG_CHECKING([whether email keyserver support is requested])
250     AC_ARG_ENABLE(mailto,
251       AC_HELP_STRING([--enable-mailto],
252         [enable email keyserver interface only]),
253       try_mailto=$enableval, try_mailto=no)
254     AC_MSG_RESULT($try_mailto)
255   fi
256
257   AC_MSG_CHECKING([whether keyserver exec-path is enabled])
258   AC_ARG_ENABLE(keyserver-path,
259       AC_HELP_STRING([--disable-keyserver-path],
260            [disable the exec-path option for keyserver helpers]),
261            [if test "$enableval" = no ; then
262               disable_keyserver_path=yes
263            fi],enableval=yes)
264   AC_MSG_RESULT($enableval)
265 fi
266
267
268 #
269 # Check for the key/uid cache size.  This can't be zero, but can be
270 # pretty small on embedded systems.  This is used for the gpg part.
271 #
272 AC_MSG_CHECKING([for the size of the key and uid cache])
273 AC_ARG_ENABLE(key-cache,
274         AC_HELP_STRING([--enable-key-cache=SIZE],
275                        [Set key cache to SIZE (default 4096)]),,enableval=4096)
276 if test "$enableval" = "no"; then
277    enableval=5
278 elif test "$enableval" = "yes" || test "$enableval" = ""; then
279    enableval=4096
280 fi
281 changequote(,)dnl
282 key_cache_size=`echo "$enableval" | sed 's/[A-Za-z]//g'`
283 changequote([,])dnl
284 if test "$enableval" != "$key_cache_size" || test "$key_cache_size" -lt 5; then
285    AC_MSG_ERROR([invalid key-cache size])
286 fi
287 AC_MSG_RESULT($key_cache_size)
288 AC_DEFINE_UNQUOTED(PK_UID_CACHE_SIZE,$key_cache_size,
289                   [Size of the key and UID caches])
290
291
292
293 #
294 # Check whether we want to use Linux capabilities
295 #
296 AC_MSG_CHECKING([whether use of capabilities is requested])
297 AC_ARG_WITH(capabilities,
298     [  --with-capabilities     use linux capabilities [default=no]],
299 [use_capabilities="$withval"],[use_capabilities=no])
300 AC_MSG_RESULT($use_capabilities)
301
302
303 #
304 # Allow disabling of internal CCID support.
305 # It is defined only after we confirm the library is available later
306 #
307 AC_MSG_CHECKING([whether to enable the internal CCID driver])
308 AC_ARG_ENABLE(ccid-driver,
309               AC_HELP_STRING([--disable-ccid-driver],
310                              [disable the internal CCID driver]),
311               use_ccid_driver=$enableval)
312 AC_MSG_RESULT($use_ccid_driver)
313
314
315 #
316 # To avoid double inclusion of config.h which might happen at some
317 # places, we add the usual double inclusion protection at the top of
318 # config.h.
319 #
320 AH_TOP([
321 #ifndef GNUPG_CONFIG_H_INCLUDED
322 #define GNUPG_CONFIG_H_INCLUDED
323 ])
324
325 #
326 # Stuff which goes at the bottom of config.h.
327 #
328 AH_BOTTOM([
329 /* This is the major version number of GnuPG so that
330    source included files can test for this.  Note, that
331    we use 2 here even for GnuPG 1.9.x. */
332 #define GNUPG_MAJOR_VERSION 2
333
334 /* Now to separate file name parts.
335    Please note that the string version must not contain more
336    than one character because the code assumes strlen()==1 */
337 #ifdef HAVE_DOSISH_SYSTEM
338 #define DIRSEP_C '\\'
339 #define DIRSEP_S "\\"
340 #define EXTSEP_C '.'
341 #define EXTSEP_S "."
342 #define PATHSEP_C ';'
343 #define PATHSEP_S ";"
344 #define EXEEXT_S ".exe"
345 #else
346 #define DIRSEP_C '/'
347 #define DIRSEP_S "/"
348 #define EXTSEP_C '.'
349 #define EXTSEP_S "."
350 #define PATHSEP_C ':'
351 #define PATHSEP_S ":"
352 #define EXEEXT_S ""
353 #endif
354
355 /* This is the same as VERSION, but should be overridden if the
356    platform cannot handle things like dots '.' in filenames. Set
357    SAFE_VERSION_DOT and SAFE_VERSION_DASH to whatever SAFE_VERSION
358    uses for dots and dashes. */
359 #define SAFE_VERSION VERSION
360 #define SAFE_VERSION_DOT  '.'
361 #define SAFE_VERSION_DASH '-'
362
363 /* Some global constants. */
364 #ifdef HAVE_DRIVE_LETTERS
365 #define GNUPG_DEFAULT_HOMEDIR "c:/gnupg"
366 #elif defined(__VMS)
367 #define GNUPG_DEFAULT_HOMEDIR "/SYS\$LOGIN/gnupg" 
368 #else
369 #define GNUPG_DEFAULT_HOMEDIR "~/.gnupg"
370 #endif 
371 #define GNUPG_PRIVATE_KEYS_DIR "private-keys-v1.d"
372
373 /* For some systems (DOS currently), we hardcode the path here.  For
374    POSIX systems the values are constructed by the Makefiles, so that
375    the values may be overridden by the make invocations; this is to
376    comply with the GNU coding standards. */
377 #ifdef HAVE_DRIVE_LETTERS
378  /* FIXME: We need to use a function to determine these values depending 
379     on the actual installation directory. */
380 #define GNUPG_BINDIR      "c:\\gnupg"
381 #define GNUPG_LIBEXECDIR  "c:\\gnupg"
382 #define GNUPG_LIBDIR      "c:\\gnupg"
383 #define GNUPG_DATADIR     "c:\\gnupg"
384 #define GNUPG_SYSCONFDIR  "c:\\gnupg"
385 #endif
386
387 /* Derive some other constants. */
388 #if !(defined(HAVE_FORK) && defined(HAVE_PIPE) && defined(HAVE_WAITPID))
389 #define EXEC_TEMPFILE_ONLY
390 #endif
391
392
393 /* We didn't define endianness above, so get it from OS macros.  This
394    is intended for making fat binary builds on OS X. */
395 #if !defined(BIG_ENDIAN_HOST) && !defined(LITTLE_ENDIAN_HOST)
396 #if defined(__BIG_ENDIAN__)
397 #define BIG_ENDIAN_HOST 1
398 #elif defined(__LITTLE_ENDIAN__)
399 #define LITTLE_ENDIAN_HOST 1
400 #else
401 #error "No endianness found"
402 #endif
403 #endif
404
405
406 /* Hack used for W32: ldap.m4 also tests for the ASCII version of
407    ldap_start_tls_s because that is the actual symbol used in the
408    library.  winldap.h redefines it to our commonly used value,
409    thus we define our usual macro here.  */
410 #ifdef HAVE_LDAP_START_TLS_SA
411 # ifndef HAVE_LDAP_START_TLS_S
412 #  define HAVE_LDAP_START_TLS_S 1
413 # endif
414 #endif
415
416
417 /* Tell libgcrypt not to use its own libgpg-error implementation. */
418 #define USE_LIBGPG_ERROR 1
419
420 /* We use jnlib, so tell other modules about it.  */
421 #define HAVE_JNLIB_LOGGING 1
422
423 /* Our HTTP code is used in estream mode.  */
424 #define HTTP_USE_ESTREAM 1
425
426 /* Under W32 we do an explicit socket initialization, thus we need to
427    avoid the on-demand initialization which would also install an atexit
428    handler.  */
429 #define HTTP_NO_WSASTARTUP
430
431 /* We always include support for the OpenPGP card.  */
432 #define ENABLE_CARD_SUPPORT 1
433
434 /* We don't want the old assuan codes anymore. */
435 #define _ASSUAN_ONLY_GPG_ERRORS 1
436
437 /* We explicitly need to disable PTH's soft mapping as Debian
438    currently enables it by default for no reason. */
439 #define PTH_SYSCALL_SOFT 0
440
441 /* We want to use the libgcrypt provided memory allocation for
442    asprintf.  */
443 #define _ESTREAM_PRINTF_MALLOC        gcry_malloc
444 #define _ESTREAM_PRINTF_FREE          gcry_free
445 #define _ESTREAM_PRINTF_EXTRA_INCLUDE "util.h"
446
447 #endif /*GNUPG_CONFIG_H_INCLUDED*/
448 ])
449
450
451 AM_MAINTAINER_MODE
452
453 # Checks for programs.
454 AC_MSG_NOTICE([checking for programs])
455 AC_PROG_MAKE_SET
456 AM_SANITY_CHECK
457 missing_dir=`cd $ac_aux_dir && pwd`
458 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
459 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
460 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
461 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
462 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
463 AC_PROG_AWK
464 AC_PROG_CC
465 AC_PROG_CPP
466 AM_PROG_CC_C_O
467 if test "x$ac_cv_prog_cc_c89" = "xno" ; then
468   AC_MSG_ERROR([[No C-89 compiler found]])
469 fi
470 AC_PROG_INSTALL
471 AC_PROG_LN_S
472 AC_PROG_RANLIB
473 AC_CHECK_TOOL(AR, ar, :)
474 AC_PATH_PROG(PERL,"perl")
475 AC_CHECK_TOOL(WINDRES, windres, :)
476 AC_ISC_POSIX
477 gl_EARLY
478 AC_SYS_LARGEFILE
479 GNUPG_CHECK_FAQPROG
480 GNUPG_CHECK_USTAR
481
482 # We need to compile and run a program on the build machine.  A
483 # comment in libgpg-error says that the AC_PROG_CC_FOR_BUILD macro in
484 # the AC archive is broken for autoconf 2.57.  Given that tehre is no
485 # newer version of that macro, we assume that it is also broken for
486 # autoconf 2.61 and thus we use a simple but usually sufficient
487 # approach.
488 AC_MSG_CHECKING(for cc for build)
489 if test "$cross_compiling" = "yes"; then
490   CC_FOR_BUILD="${CC_FOR_BUILD-cc}"
491 else
492   CC_FOR_BUILD="${CC_FOR_BUILD-$CC}"
493 fi
494 AC_MSG_RESULT($CC_FOR_BUILD)
495 AC_ARG_VAR(CC_FOR_BUILD,[build system C compiler])
496
497
498
499 try_gettext=yes
500 have_dosish_system=no
501 have_w32_system=no
502 use_simple_gettext=no
503 case "${host}" in
504     *-mingw32*)
505         # special stuff for Windoze NT
506         ac_cv_have_dev_random=no
507         AC_DEFINE(USE_ONLY_8DOT3,1,
508                   [set this to limit filenames to the 8.3 format])
509         AC_DEFINE(HAVE_DRIVE_LETTERS,1,
510                   [defined if we must run on a stupid file system])
511         AC_DEFINE(USE_SIMPLE_GETTEXT,1,
512                   [because the Unix gettext has too much overhead on
513                    MingW32 systems and these systems lack Posix functions,
514                    we use a simplified version of gettext])
515         disable_keyserver_path=yes
516         have_dosish_system=yes
517         have_w32_system=yes
518         try_gettext="no"
519         use_simple_gettext=yes
520         ;;
521     i?86-emx-os2 | i?86-*-os2*emx )
522         # OS/2 with the EMX environment
523         ac_cv_have_dev_random=no
524         AC_DEFINE(HAVE_DRIVE_LETTERS)
525         have_dosish_system=yes
526         try_gettext="no"
527         ;;
528
529     i?86-*-msdosdjgpp*)
530         # DOS with the DJGPP environment
531         ac_cv_have_dev_random=no
532         AC_DEFINE(HAVE_DRIVE_LETTERS)
533         have_dosish_system=yes
534         try_gettext="no"
535         ;;
536
537     *-*-freebsd*)
538        # FreeBSD
539        CPPFLAGS="$CPPFLAGS -I/usr/local/include"
540        LDFLAGS="$LDFLAGS -L/usr/local/lib"
541        ;;
542
543     *-*-hpux*)
544         if test -z "$GCC" ; then
545             CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE"
546         fi
547         ;;
548     *-dec-osf4*)
549         if test -z "$GCC" ; then
550             # Suppress all warnings
551             # to get rid of the unsigned/signed char mismatch warnings.
552             CFLAGS="$CFLAGS -w"
553         fi
554         ;;
555     *-dec-osf5*)
556         if test -z "$GCC" ; then
557             # Use the newer compiler `-msg_disable ptrmismatch1' to
558             # get rid of the unsigned/signed char mismatch warnings.
559             # Using this may hide other pointer mismatch warnings, but
560             # it at least lets other warning classes through
561             CFLAGS="$CFLAGS -msg_disable ptrmismatch1"
562         fi
563         ;;
564     m68k-atari-mint)
565         ;;
566     *)
567        ;;
568 esac
569
570 if test "$have_dosish_system" = yes; then
571    AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
572              [Defined if we run on some of the PCDOS like systems 
573               (DOS, Windoze. OS/2) with special properties like
574               no file modes])
575 fi
576 AM_CONDITIONAL(HAVE_DOSISH_SYSTEM, test "$have_dosish_system" = yes)
577
578 AM_CONDITIONAL(USE_SIMPLE_GETTEXT, test x"$use_simple_gettext" = xyes)
579
580 if test "$have_w32_system" = yes; then
581    AC_DEFINE(HAVE_W32_SYSTEM,1, [Defined if we run on a W32 API based system])
582 fi
583 AM_CONDITIONAL(HAVE_W32_SYSTEM, test "$have_w32_system" = yes)
584
585 if test "$disable_keyserver_path" = yes; then
586     AC_DEFINE(DISABLE_KEYSERVER_PATH,1,
587               [Defined to disable exec-path for keyserver helpers])
588 fi
589
590 #
591 # Allows enabling the use of a standard socket by default This is
592 # gpg-agent's option --[no-]use-standard-socket.  For Windows we force
593 # the use of this.
594 #
595 AC_MSG_CHECKING([whether to use a standard socket by default])
596 AC_ARG_ENABLE(standard-socket,
597               AC_HELP_STRING([--enable-standard-socket],
598                              [use a standard socket for the agent by default]),
599               use_standard_socket=$enableval)
600 tmp=""
601 if test "$use_standard_socket" != yes; then
602   if test "$have_w32_system" = yes; then
603     use_standard_socket=yes
604     tmp=" (forced)"
605   fi
606 fi
607 AC_MSG_RESULT($use_standard_socket$tmp)
608 if test "$use_standard_socket" = yes; then
609   AC_DEFINE(USE_STANDARD_SOCKET,1,
610             [Use a standard socket for the agent by default])
611 fi
612
613
614 # (These need to go after AC_PROG_CC so that $EXEEXT is defined)
615 AC_DEFINE_UNQUOTED(EXEEXT,"$EXEEXT",[The executable file extension, if any])
616
617 if test x"$try_hkp" = xyes ; then
618   AC_SUBST(GPGKEYS_HKP,"gpg2keys_hkp$EXEEXT")
619 fi
620
621 if test x"$try_finger" = xyes ; then
622   AC_SUBST(GPGKEYS_FINGER,"gpg2keys_finger$EXEEXT")
623 fi
624
625
626
627 #
628 # Checks for libraries.
629 #
630 AC_MSG_NOTICE([checking for libraries])
631
632
633 #
634 # libgpg-error is a library with error codes shared between GnuPG
635 # related projects.
636 #
637 AM_PATH_GPG_ERROR("$NEED_GPG_ERROR_VERSION",
638                   have_gpg_error=yes,have_gpg_error=no)
639
640
641 #
642 # Libgcrypt is our generic crypto library
643 #
644 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION",
645         have_libgcrypt=yes,have_libgcrypt=no)
646
647
648 #
649 # libassuan is used for IPC
650 #
651 AM_PATH_LIBASSUAN("$NEED_LIBASSUAN_API:$NEED_LIBASSUAN_VERSION",
652                   have_libassuan=yes,have_libassuan=no)
653 if test "$have_libassuan" = "yes"; then
654   AC_DEFINE_UNQUOTED(GNUPG_LIBASSUAN_VERSION, "$libassuan_version",
655             [version of the libbassuan library])
656 fi
657
658
659
660 #
661 # libksba is our X.509 support library
662 #
663 AM_PATH_KSBA("$NEED_KSBA_API:$NEED_KSBA_VERSION",have_ksba=yes,have_ksba=no)
664
665
666 #
667 # libusb allows us to use the integrated CCID smartcard reader driver.
668 #
669 # FiXME: Use GNUPG_CHECK_LIBUSB and modify to use separate AC_SUBSTs.
670 if test "$use_ccid_driver" = yes ; then
671   AC_CHECK_LIB(usb, usb_bulk_write,
672                 [ LIBUSB_LIBS="$LIBUSB_LIBS -lusb"
673                   AC_DEFINE(HAVE_LIBUSB,1,
674                            [defined if libusb is available])
675                   have_libusb=yes
676                ])
677   AC_CHECK_FUNCS(usb_create_match)
678 fi
679 AC_SUBST(LIBUSB_LIBS)
680
681 #
682 # Check wether it is necessary to link against libdl.
683 #
684 gnupg_dlopen_save_libs="$LIBS"
685 LIBS=""
686 AC_SEARCH_LIBS(dlopen, c dl,,,)
687 DL_LIBS=$LIBS
688 AC_SUBST(DL_LIBS)
689 LIBS="$gnupg_dlopen_save_libs"
690
691 #
692 # Checks for symcryptrun:
693 #
694
695 # libutil has openpty() and login_tty().
696 AC_CHECK_LIB(util, openpty,
697               [ LIBUTIL_LIBS="$LIBUTIL_LIBS -lutil"
698                 AC_DEFINE(HAVE_LIBUTIL,1,
699                          [defined if libutil is available])
700              ])
701 AC_SUBST(LIBUTIL_LIBS)
702
703 # shred is used to clean temporary plain text files.
704 AC_PATH_PROG(SHRED, shred, /usr/bin/shred)
705 AC_DEFINE_UNQUOTED(SHRED,
706         "${SHRED}", [defines the filename of the shred program])
707
708
709
710 #
711 # Check whether the GNU Pth library is available
712 # Note, that we include a Pth emulation for W32.
713 #
714 GNUPG_PATH_PTH
715 if test "$have_pth" = "yes"; then
716   AC_DEFINE(USE_GNU_PTH, 1,
717               [Defined if the GNU Portable Thread Library should be used])
718 else
719   AC_MSG_WARN([[
720 ***
721 *** To support concurrent access to the gpg-agent and the SCdaemon
722 *** we need the support of the GNU Portable Threads Library.
723 *** Download it from ftp://ftp.gnu.org/gnu/pth/
724 *** On a Debian GNU/Linux system you might want to try 
725 ***   apt-get install libpth-dev
726 ***]])
727 fi
728
729
730 AC_MSG_NOTICE([checking for networking options])
731
732 #
733 # Must check for network library requirements before doing link tests
734 # for ldap, for example. If ldap libs are static (or dynamic and without
735 # ELF runtime link paths), then link will fail and LDAP support won't
736 # be detected.
737 #
738 AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname,
739         [NETLIBS="-lnsl $NETLIBS"]))
740 AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt,
741         [NETLIBS="-lsocket $NETLIBS"]))
742
743
744 #
745 # Check for ADNS.
746 #
747 _cppflags="${CPPFLAGS}"
748 _ldflags="${LDFLAGS}"
749 AC_ARG_WITH(adns,
750             AC_HELP_STRING([--with-adns=DIR],
751                            [look for the adns library in DIR]),
752             [if test -d "$withval"; then
753                CPPFLAGS="${CPPFLAGS} -I$withval/include"
754                LDFLAGS="${LDFLAGS} -L$withval/lib"
755              fi])
756 if test "$with_adns" != "no"; then
757   AC_CHECK_HEADERS(adns.h,
758                 AC_CHECK_LIB(adns, adns_init,
759                              [have_adns=yes],
760                              [CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}]),
761                 [CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}])
762 fi
763 if test "$have_adns" = "yes"; then
764   ADNSLIBS="-ladns" 
765 fi
766 AC_SUBST(ADNSLIBS)
767 # Newer adns versions feature a free function to be used under W32.
768 AC_CHECK_FUNCS(adns_free)
769
770
771 #
772 # Now try for the resolver functions so we can use DNS for SRV, PA and CERT.
773 #
774 if test x"$try_hkp" = xyes || test x"$try_http" = xyes ; then
775   AC_ARG_ENABLE(dns-srv,
776      AC_HELP_STRING([--disable-dns-srv],
777                     [disable the use of DNS SRV in HKP and HTTP]),
778                 use_dns_srv=$enableval,use_dns_srv=yes)
779 fi
780
781 AC_ARG_ENABLE(dns-pka,
782    AC_HELP_STRING([--disable-dns-pka],
783         [disable the use of PKA records in DNS]),
784    use_dns_pka=$enableval,use_dns_pka=yes)
785
786 AC_ARG_ENABLE(dns-cert,
787    AC_HELP_STRING([--disable-dns-cert],
788         [disable the use of CERT records in DNS]),
789    use_dns_cert=$enableval,use_dns_cert=yes)
790
791 if test x"$use_dns_pka" = xyes || test x"$use_dns_srv" = xyes \
792    || test x"$use_dns_cert" = xyes; then
793   _dns_save_libs=$LIBS
794   LIBS=""
795   # the double underscore thing is a glibc-ism?
796   AC_SEARCH_LIBS(res_query,resolv bind,,
797                  AC_SEARCH_LIBS(__res_query,resolv bind,,have_resolver=no))
798   AC_SEARCH_LIBS(dn_expand,resolv bind,,
799                  AC_SEARCH_LIBS(__dn_expand,resolv bind,,have_resolver=no))
800   AC_SEARCH_LIBS(dn_skipname,resolv bind,,
801                  AC_SEARCH_LIBS(__dn_skipname,resolv bind,,have_resolver=no))
802
803   if test x"$have_resolver" != xno ; then
804
805     # Make sure that the BIND 4 resolver interface is workable before
806     # enabling any code that calls it.  At some point I'll rewrite the
807     # code to use the BIND 8 resolver API.
808     # We might also want to use adns instead.  Problem with ADNS is that
809     # it does not support v6.
810
811     AC_MSG_CHECKING([whether the resolver is usable])
812     AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
813 #include <netinet/in.h>
814 #include <arpa/nameser.h>
815 #include <resolv.h>],
816 [[unsigned char answer[PACKETSZ];
817   res_query("foo.bar",C_IN,T_A,answer,PACKETSZ);
818   dn_skipname(0,0); 
819   dn_expand(0,0,0,0,0);
820 ]])],have_resolver=yes,have_resolver=no)
821     AC_MSG_RESULT($have_resolver)
822
823     # This is Apple-specific and somewhat bizarre as they changed the
824     # define in bind 8 for some reason.
825
826     if test x"$have_resolver" != xyes ; then
827        AC_MSG_CHECKING(
828              [whether I can make the resolver usable with BIND_8_COMPAT])
829        AC_LINK_IFELSE([AC_LANG_PROGRAM([#define BIND_8_COMPAT
830 #include <sys/types.h>
831 #include <netinet/in.h>
832 #include <arpa/nameser.h>
833 #include <resolv.h>],
834 [[unsigned char answer[PACKETSZ];
835   res_query("foo.bar",C_IN,T_A,answer,PACKETSZ);
836   dn_skipname(0,0); dn_expand(0,0,0,0,0);
837 ]])],[have_resolver=yes ; need_compat=yes])
838        AC_MSG_RESULT($have_resolver)
839     fi
840   fi
841
842   if test x"$have_resolver" = xyes ; then
843      DNSLIBS=$LIBS
844
845      if test x"$use_dns_srv" = xyes ; then
846         AC_DEFINE(USE_DNS_SRV,1,[define to use DNS SRV])
847      fi
848
849      if test x"$use_dns_pka" = xyes ; then
850         AC_DEFINE(USE_DNS_PKA,1,[define to use our experimental DNS PKA])
851      fi
852
853      if test x"$use_dns_cert" = xyes ; then
854         AC_DEFINE(USE_DNS_CERT,1,[define to use DNS CERT])
855      fi
856
857      if test x"$need_compat" = xyes ; then
858         AC_DEFINE(BIND_8_COMPAT,1,[an Apple OSXism])
859      fi
860   else
861      # If we have no resolver library but ADNS (e.g. under W32) enable the
862      # code parts which can be used with ADNS.
863      if test x"$have_adns" = xyes ; then
864         DNSLIBS="$ADNSLIBS"
865         AC_DEFINE(USE_ADNS,1,[Use ADNS as resolver library.])
866
867         if test x"$use_dns_srv" = xyes ; then
868            AC_DEFINE(USE_DNS_SRV,1)
869         fi
870
871         if test x"$use_dns_pka" = xyes ; then
872            AC_DEFINE(USE_DNS_PKA,1)
873         fi
874
875         if test x"$use_dns_cert" = xyes ; then
876            AC_DEFINE(USE_DNS_CERT,1,[define to use DNS CERT])
877         fi
878      else
879         use_dns_srv=no
880         use_dns_pka=no
881         use_dns_cert=no
882      fi
883   fi
884
885   LIBS=$_dns_save_libs
886 fi
887
888 AC_SUBST(DNSLIBS)
889
890 AM_CONDITIONAL(USE_DNS_SRV, test x"$use_dns_srv" = xyes)
891
892
893 #
894 # Check for LDAP
895 #
896 if test "$try_ldap" = yes ; then
897    GNUPG_CHECK_LDAP($NETLIBS)
898 fi
899
900 #
901 # Check for curl.  We fake the curl API if libcurl isn't installed.
902 # We require 7.10 or later as we use curl_version_info().
903 #
904 LIBCURL_CHECK_CONFIG([yes],[7.10],,[fake_curl=yes])
905 AM_CONDITIONAL(FAKE_CURL,test x"$fake_curl" = xyes)
906
907 # Generic, for us, means curl
908
909 if test x"$try_generic" = xyes ; then
910    AC_SUBST(GPGKEYS_CURL,"gpg2keys_curl$EXEEXT")
911 fi
912
913 #
914 # Check for sendmail
915 #
916 # This isn't necessarily sendmail itself, but anything that gives a
917 # sendmail-ish interface to the outside world.  That includes Exim,
918 # Postfix, etc.  Basically, anything that can handle "sendmail -t".
919 if test "$try_mailto" = yes ; then
920   AC_ARG_WITH(mailprog,
921       AC_HELP_STRING([--with-mailprog=NAME],
922                      [use "NAME -t" for mail transport]),
923              ,with_mailprog=yes)
924
925   if test x"$with_mailprog" = xyes ; then
926     AC_PATH_PROG(SENDMAIL,sendmail,,$PATH:/usr/sbin:/usr/libexec:/usr/lib)
927     if test "$ac_cv_path_SENDMAIL" ; then
928       GPGKEYS_MAILTO="gpg2keys_mailto"
929     fi
930   elif test x"$with_mailprog" != xno ; then
931     AC_MSG_CHECKING([for a mail transport program])
932     AC_SUBST(SENDMAIL,$with_mailprog)
933     AC_MSG_RESULT($with_mailprog)
934     GPGKEYS_MAILTO="gpg2keys_mailto"
935   fi
936 fi
937
938 AC_SUBST(GPGKEYS_MAILTO)
939
940 #
941 # Construct a printable name of the OS
942 #
943 case "${host}" in
944     *-mingw32*)
945         PRINTABLE_OS_NAME="MingW32"
946         ;;
947     *-*-cygwin*)
948         PRINTABLE_OS_NAME="Cygwin"
949         ;;
950     i?86-emx-os2 | i?86-*-os2*emx )
951         PRINTABLE_OS_NAME="OS/2"
952         ;;
953     i?86-*-msdosdjgpp*)
954         PRINTABLE_OS_NAME="MSDOS/DJGPP"
955         try_dynload=no
956         ;;
957     *-linux*)
958         PRINTABLE_OS_NAME="GNU/Linux"
959         ;;
960     *)
961         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
962         ;;
963 esac
964 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
965                    [A human readable text with the name of the OS])
966
967
968 #
969 # Checking for iconv
970 #
971 AM_ICONV
972
973
974 #
975 # Check for gettext
976 #
977 # This is "GNU gnupg" - The project-id script from gettext
978 #                       needs this string
979 #
980 AC_MSG_NOTICE([checking for gettext])
981 AM_PO_SUBDIRS
982 AM_GNU_GETTEXT_VERSION([0.17])
983 if test "$try_gettext" = yes; then
984   AM_GNU_GETTEXT([external],[need-ngettext])
985
986   # gettext requires some extra checks.  These really should be part of
987   # the basic AM_GNU_GETTEXT macro.  TODO: move other gettext-specific
988   # function checks to here.
989
990   AC_CHECK_FUNCS(strchr)
991 else
992   USE_NLS=no
993   USE_INCLUDED_LIBINTL=no
994   BUILD_INCLUDED_LIBINTL=no
995   POSUB=po
996   AC_SUBST(USE_NLS)
997   AC_SUBST(USE_INCLUDED_LIBINTL)
998   AC_SUBST(BUILD_INCLUDED_LIBINTL)
999   AC_SUBST(POSUB)
1000 fi
1001
1002 # We use HAVE_LANGINFO_CODESET in a couple of places.
1003 AM_LANGINFO_CODESET
1004
1005 # Checks required for our use locales
1006 gt_LC_MESSAGES
1007
1008
1009 #
1010 # SELinux support
1011 #
1012 if test "$selinux_support" = yes ; then
1013   AC_DEFINE(ENABLE_SELINUX_HACKS,1,[Define to enable SELinux support])
1014 fi
1015
1016
1017 #
1018 # Checks for header files.
1019 #
1020 AC_MSG_NOTICE([checking for header files])
1021 AC_HEADER_STDC
1022 AC_CHECK_HEADERS([string.h unistd.h langinfo.h termio.h locale.h getopt.h])
1023 AC_CHECK_HEADERS([pty.h pwd.h inttypes.h])
1024 AC_HEADER_TIME
1025
1026
1027 #
1028 # Checks for typedefs, structures, and compiler characteristics.
1029 #
1030 AC_MSG_NOTICE([checking for system characteristics])
1031 AC_C_CONST
1032 AC_C_INLINE
1033 AC_C_VOLATILE
1034 AC_TYPE_SIZE_T
1035 AC_TYPE_MODE_T
1036 AC_TYPE_SIGNAL
1037 AC_DECL_SYS_SIGLIST
1038
1039 gl_HEADER_SYS_SOCKET
1040 gl_TYPE_SOCKLEN_T
1041
1042 AC_ARG_ENABLE(endian-check,
1043               AC_HELP_STRING([--disable-endian-check],
1044               [disable the endian check and trust the OS provided macros]),
1045               endiancheck=$enableval,endiancheck=yes)
1046
1047 if test x"$endiancheck" = xyes ; then
1048   GNUPG_CHECK_ENDIAN
1049 fi
1050
1051 # fixme: we should get rid of the byte type
1052 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
1053 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
1054 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
1055 GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
1056 GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
1057
1058 AC_CHECK_SIZEOF(unsigned short)
1059 AC_CHECK_SIZEOF(unsigned int)
1060 AC_CHECK_SIZEOF(unsigned long)
1061 AC_CHECK_SIZEOF(unsigned long long)
1062 AC_CHECK_SIZEOF(time_t,,[[
1063 #include <stdio.h>
1064 #if TIME_WITH_SYS_TIME
1065 # include <sys/time.h>
1066 # include <time.h>
1067 #else
1068 # if HAVE_SYS_TIME_H
1069 #  include <sys/time.h>
1070 # else
1071 #  include <time.h>
1072 # endif
1073 #endif
1074 ]])
1075
1076
1077 # Ensure that we have UINT64_C before we bother to check for uint64_t
1078 # Fixme: really needed in gnupg?  I think it is only useful in libcgrypt.
1079 AC_CACHE_CHECK([for UINT64_C],[gnupg_cv_uint64_c_works],
1080    AC_COMPILE_IFELSE(AC_LANG_PROGRAM([#include <inttypes.h>
1081        uint64_t foo=UINT64_C(42);]),
1082      gnupg_cv_uint64_c_works=yes,gnupg_cv_uint64_c_works=no))
1083 if test "$gnupg_cv_uint64_c_works" = "yes" ; then
1084    AC_CHECK_SIZEOF(uint64_t)
1085 fi
1086
1087 if test "$ac_cv_sizeof_unsigned_short" = "0" \
1088    || test "$ac_cv_sizeof_unsigned_int" = "0" \
1089    || test "$ac_cv_sizeof_unsigned_long" = "0"; then
1090     AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
1091 fi
1092
1093
1094 #
1095 # Checks for library functions.
1096 #
1097 AC_MSG_NOTICE([checking for library functions])
1098 AC_CHECK_DECLS(getpagesize)
1099 AC_FUNC_FSEEKO
1100 AC_FUNC_VPRINTF
1101 AC_FUNC_FORK
1102 AC_CHECK_FUNCS([strerror strlwr tcgetattr mmap])
1103 AC_CHECK_FUNCS([strcasecmp strncasecmp ctermid times gmtime_r])
1104 AC_CHECK_FUNCS([unsetenv fcntl ftruncate])
1105 AC_CHECK_FUNCS([gettimeofday getrusage getrlimit setrlimit clock_gettime])
1106 AC_CHECK_FUNCS([atexit raise getpagesize strftime nl_langinfo setlocale])
1107 AC_CHECK_FUNCS([waitpid wait4 sigaction sigprocmask pipe stat getaddrinfo])
1108 AC_CHECK_FUNCS([ttyname rand ftello fsync])
1109
1110 AC_CHECK_TYPES([struct sigaction, sigset_t],,,[#include <signal.h>])
1111
1112 #
1113 # These are needed by libjnlib - fixme: we should use a jnlib.m4
1114 # Note:  We already checked pwd.h.
1115 AC_CHECK_FUNCS([memicmp stpcpy strsep strlwr strtoul memmove stricmp strtol])
1116 AC_CHECK_FUNCS([memrchr isascii timegm getrusage setrlimit stat setlocale])
1117 AC_CHECK_FUNCS([flockfile funlockfile fopencookie funopen getpwnam getpwuid])
1118
1119 #
1120 # gnulib checks
1121 #
1122 gl_SOURCE_BASE([gl])
1123 gl_M4_BASE([gl/m4])
1124 gl_MODULES([setenv mkdtemp xsize strpbrk])
1125 gl_INIT
1126
1127
1128 #
1129 # W32 specific test
1130 #
1131 GNUPG_FUNC_MKDIR_TAKES_ONE_ARG
1132
1133 #
1134 # Sanity check regex.  Tests adapted from mutt.
1135 #
1136 AC_MSG_CHECKING([whether regular expression support is requested])
1137 AC_ARG_ENABLE(regex,
1138   AC_HELP_STRING([--disable-regex],
1139     [do not handle regular expressions in trust signatures]),
1140   use_regex=$enableval, use_regex=yes)
1141 AC_MSG_RESULT($use_regex)
1142
1143 if test "$use_regex" = yes ; then
1144   _cppflags="${CPPFLAGS}"
1145   _ldflags="${LDFLAGS}"
1146   AC_ARG_WITH(regex,
1147      AC_HELP_STRING([--with-regex=DIR],[look for regex in DIR]),
1148       [
1149       if test -d "$withval" ; then
1150         CPPFLAGS="${CPPFLAGS} -I$withval/include"
1151         LDFLAGS="${LDFLAGS} -L$withval/lib"
1152       fi
1153       ],withval="")     
1154
1155   # Does the system have regex functions at all?
1156   AC_SEARCH_LIBS([regcomp], [regex])
1157   AC_CHECK_FUNC(regcomp, gnupg_cv_have_regex=yes, gnupg_cv_have_regex=no)
1158
1159   if test $gnupg_cv_have_regex = no; then
1160     use_regex=no
1161   else
1162     if test x"$cross_compiling" = xyes; then
1163       AC_MSG_WARN([cross compiling; assuming regexp libray is not broken])
1164     else
1165       AC_CACHE_CHECK([whether your system's regexp library is broken],
1166        [gnupg_cv_regex_broken],
1167        AC_TRY_RUN([
1168 #include <unistd.h>
1169 #include <regex.h>
1170 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); }],
1171        gnupg_cv_regex_broken=no, gnupg_cv_regex_broken=yes, gnupg_cv_regex_broken=yes))
1172
1173       if test $gnupg_cv_regex_broken = yes; then
1174         AC_MSG_WARN([your regex is broken - disabling regex use])
1175         use_regex=no
1176       fi
1177     fi
1178   fi
1179   CPPFLAGS="${_cppflags}"
1180   LDFLAGS="${_ldflags}"
1181 fi
1182
1183 if test "$use_regex" != yes ; then
1184   AC_DEFINE(DISABLE_REGEX,1, [Define to disable regular expression support])
1185 fi
1186 AM_CONDITIONAL(DISABLE_REGEX, test x"$use_regex" != xyes)
1187
1188
1189
1190 #
1191 # Do we have zlib? Must do it here because Solaris failed
1192 # when compiling a conftest (due to the "-lz" from LIBS).
1193 # Note that we combine zlib and bzlib2 in ZLIBS.
1194 #
1195 _cppflags="${CPPFLAGS}"
1196 _ldflags="${LDFLAGS}"
1197 AC_ARG_WITH(zlib,
1198   [  --with-zlib=DIR         use libz in DIR],[
1199     if test -d "$withval"; then
1200       CPPFLAGS="${CPPFLAGS} -I$withval/include"
1201       LDFLAGS="${LDFLAGS} -L$withval/lib"
1202     fi
1203   ])
1204
1205 AC_CHECK_HEADER(zlib.h,
1206       AC_CHECK_LIB(z, deflateInit2_,
1207        ZLIBS="-lz",
1208        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
1209        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
1210
1211 #
1212 # Check whether we can support bzip2
1213
1214 if test "$use_bzip2" = yes ; then
1215   _cppflags="${CPPFLAGS}"
1216   _ldflags="${LDFLAGS}"
1217   AC_ARG_WITH(bzip2,
1218      AC_HELP_STRING([--with-bzip2=DIR],[look for bzip2 in DIR]),
1219       [
1220       if test -d "$withval" ; then
1221         CPPFLAGS="${CPPFLAGS} -I$withval/include"
1222         LDFLAGS="${LDFLAGS} -L$withval/lib"
1223       fi
1224       ],withval="")
1225
1226   # Checking alongside stdio.h as an early version of bzip2 (1.0)
1227   # required stdio.h to be included before bzlib.h, and Solaris 9 is 
1228   # woefully out of date.
1229   if test "$withval" != no ; then
1230      AC_CHECK_HEADER(bzlib.h,
1231         AC_CHECK_LIB(bz2,BZ2_bzCompressInit,
1232           [
1233           have_bz2=yes
1234           ZLIBS="$ZLIBS -lbz2"
1235           AC_DEFINE(HAVE_BZIP2,1,
1236                   [Defined if the bz2 compression library is available])
1237           ],
1238           CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
1239           CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags},[#include <stdio.h>])
1240   fi
1241 fi
1242 AM_CONDITIONAL(ENABLE_BZIP2_SUPPORT,test x"$have_bz2" = "xyes")
1243 AC_SUBST(ZLIBS)
1244
1245
1246 # Check for readline support
1247 GNUPG_CHECK_READLINE
1248
1249 #
1250 # Allow users to append something to the version string without
1251 # flagging it as development version.  The user version parts is
1252 # considered everything after a dash. 
1253 #
1254 if test "$development_version" != yes; then
1255   changequote(,)dnl
1256   tmp_pat='[a-zA-Z]'
1257   changequote([,])dnl
1258   if echo "$VERSION" | sed 's/-.*//' | grep "$tmp_pat" >/dev/null ; then
1259     development_version=yes
1260   fi
1261 fi
1262 if test "$development_version" = yes; then
1263     AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
1264             [Defined if this is not a regular release])
1265 fi
1266
1267 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
1268
1269 GNUPG_CHECK_GNUMAKE
1270
1271 # Add some extra libs here so that previous tests don't fail for
1272 # mysterious reasons - the final link step should bail out.
1273 # W32SOCKLIBS is also defined so that if can be used for tools not
1274 # requiring any network stuff but linking to code in libcommon which
1275 # tracks in winsock stuff (e.g. init_common_subsystems.
1276 if test "$have_w32_system" = yes; then
1277    W32SOCKLIBS="-lws2_32"
1278    NETLIBS="${NETLIBS} ${W32SOCKLIBS}"
1279 fi
1280
1281 AC_SUBST(NETLIBS)
1282 AC_SUBST(W32SOCKLIBS)
1283
1284 #
1285 # Setup gcc specific options
1286 #
1287 AC_MSG_NOTICE([checking for cc features])
1288 if test "$GCC" = yes; then
1289     # Note that it is okay to use CFLAGS here because this are just
1290     # warning options and the user should have a chance of overriding
1291     # them.
1292     if test "$USE_MAINTAINER_MODE" = "yes"; then
1293         CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
1294         CFLAGS="$CFLAGS -Wformat -Wno-format-y2k -Wformat-security"
1295         AC_MSG_CHECKING([if gcc supports -Wno-missing-field-initializers])
1296         _gcc_cflags_save=$CFLAGS
1297         CFLAGS="-Wno-missing-field-initializers"
1298         AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_wopt=yes,_gcc_wopt=no)
1299         AC_MSG_RESULT($_gcc_wopt)
1300         CFLAGS=$_gcc_cflags_save;
1301         if test x"$_gcc_wopt" = xyes ; then
1302           CFLAGS="$CFLAGS -W -Wno-sign-compare -Wno-missing-field-initializers"
1303         fi
1304         AC_MSG_CHECKING([if gcc supports -Wdeclaration-after-statement])
1305         _gcc_cflags_save=$CFLAGS
1306         CFLAGS="-Wdeclaration-after-statement"
1307         AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_wopt=yes,_gcc_wopt=no)
1308         AC_MSG_RESULT($_gcc_wopt)
1309         CFLAGS=$_gcc_cflags_save;
1310         if test x"$_gcc_wopt" = xyes ; then
1311           CFLAGS="$CFLAGS -Wdeclaration-after-statement"
1312         fi
1313     else
1314         CFLAGS="$CFLAGS -Wall"
1315     fi
1316
1317     AC_MSG_CHECKING([if gcc supports -Wno-pointer-sign])
1318     _gcc_cflags_save=$CFLAGS
1319     CFLAGS="-Wno-pointer-sign"
1320     AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_psign=yes,_gcc_psign=no)
1321     AC_MSG_RESULT($_gcc_psign)
1322     CFLAGS=$_gcc_cflags_save;
1323     if test x"$_gcc_psign" = xyes ; then
1324        CFLAGS="$CFLAGS -Wno-pointer-sign"
1325     fi
1326
1327     AC_MSG_CHECKING([if gcc supports -Wpointer-arith])
1328     _gcc_cflags_save=$CFLAGS
1329     CFLAGS="-Wpointer-arith"
1330     AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_psign=yes,_gcc_psign=no)
1331     AC_MSG_RESULT($_gcc_psign)
1332     CFLAGS=$_gcc_cflags_save;
1333     if test x"$_gcc_psign" = xyes ; then
1334        CFLAGS="$CFLAGS -Wpointer-arith"
1335     fi
1336 fi
1337
1338
1339 #
1340 # This is handy for debugging so the compiler doesn't rearrange
1341 # things and eliminate variables.
1342 #
1343 AC_ARG_ENABLE(optimization,
1344    AC_HELP_STRING([--disable-optimization],
1345                   [disable compiler optimization]),
1346                   [if test $enableval = no ; then
1347                       CFLAGS=`echo $CFLAGS | sed 's/-O[[0-9]]//'`
1348                    fi])
1349
1350 #
1351 # Prepare building of estream
1352 #
1353 estream_INIT
1354
1355
1356 #
1357 # Decide what to build
1358 #
1359 if test "$have_adns" = "yes"; then
1360   AC_SUBST(GPGKEYS_KDNS, "gpg2keys_kdns$EXEEXT")
1361 fi
1362
1363
1364 missing_pth=no
1365 if test $have_ksba = no; then
1366   build_gpgsm=no
1367   build_scdaemon=no
1368 fi
1369
1370 build_agent_threaded=""
1371 if test "$build_agent" = "yes"; then
1372   if test $have_pth = no; then
1373      build_agent_threaded="(not multi-threaded)"
1374      missing_pth=yes
1375   fi
1376 fi
1377
1378 build_scdaemon_extra=""
1379 if test "$build_scdaemon" = "yes"; then
1380   tmp=""
1381   if test $have_pth = no; then
1382      build_scdaemon_extra="not multi-threaded"
1383      tmp=", "
1384      missing_pth=yes
1385   fi
1386   if test $have_libusb = no; then
1387      build_scdaemon_extra="${tmp}without internal CCID driver"
1388      tmp=", "
1389   fi
1390   if test -n "$build_scdaemon_extra"; then
1391      build_scdaemon_extra="(${build_scdaemon_extra})"
1392   fi
1393 fi
1394
1395
1396 if test "$build_agent_only" = "yes" ; then
1397   build_gpg=no
1398   build_gpgsm=no
1399   build_scdaemon=no
1400   build_tools=no
1401   build_doc=no
1402 fi
1403
1404
1405 AM_CONDITIONAL(BUILD_GPG,   test "$build_gpg" = "yes")
1406 AM_CONDITIONAL(BUILD_GPGSM, test "$build_gpgsm" = "yes")
1407 AM_CONDITIONAL(BUILD_AGENT, test "$build_agent" = "yes")
1408 AM_CONDITIONAL(BUILD_SCDAEMON, test "$build_scdaemon" = "yes")
1409 AM_CONDITIONAL(BUILD_TOOLS, test "$build_tools" = "yes")
1410 AM_CONDITIONAL(BUILD_DOC,   test "$build_doc" = "yes")
1411 AM_CONDITIONAL(BUILD_SYMCRYPTRUN, test "$build_symcryptrun" = "yes")
1412
1413 AM_CONDITIONAL(RUN_GPG_TESTS,
1414         test x$cross_compiling = xno -a "$build_gpg" = yes )
1415
1416
1417 #
1418 # Print errors here so that they are visible all
1419 # together and the user can acquire them all together.
1420 #
1421 die=no
1422 if test "$have_gpg_error" = "no"; then
1423    die=yes
1424    AC_MSG_NOTICE([[
1425 ***  
1426 *** You need libgpg-error to build this program.
1427 **  This library is for example available at
1428 ***   ftp://ftp.gnupg.org/gcrypt/libgpg-error
1429 *** (at least version $NEED_GPG_ERROR_VERSION is required.)
1430 ***]])
1431 fi
1432 if test "$have_libgcrypt" = "no"; then
1433    die=yes
1434    AC_MSG_NOTICE([[
1435 ***  
1436 *** You need libgcrypt to build this program.
1437 **  This library is for example available at
1438 ***   ftp://ftp.gnupg.org/gcrypt/libgcrypt/
1439 *** (at least version $NEED_LIBGCRYPT_VERSION using API $NEED_LIBGCRYPT_API is required.)
1440 ***]])
1441 fi
1442 if test "$have_libassuan" = "no"; then
1443    die=yes
1444    AC_MSG_NOTICE([[
1445 ***
1446 *** You need libassuan to build this program.
1447 *** This library is for example available at
1448 ***   ftp://ftp.gnupg.org/gcrypt/libassuan/
1449 *** (at least version $NEED_LIBASSUAN_VERSION (API $NEED_LIBASSUAN_API) is required).
1450 ***]])
1451 fi
1452 if test "$have_ksba" = "no"; then
1453     AC_MSG_NOTICE([[
1454 ***
1455 *** You need libksba to build this program.
1456 *** This library is for example available at
1457 ***   ftp://ftp.gnupg.org/gcrypt/libksba/
1458 *** (at least version $NEED_KSBA_VERSION using API $NEED_KSBA_API is required).
1459 ***]])
1460 fi
1461 if test "$missing_pth" = "yes"; then
1462     AC_MSG_NOTICE([[
1463 ***
1464 *** It is now required to build with support for the
1465 *** GNU Portable Threads Library (Pth). Please install this
1466 *** library first.  The library is for example available at
1467 ***   ftp://ftp.gnu.org/gnu/pth/
1468 *** On a Debian GNU/Linux system you can install it using 
1469 ***   apt-get install libpth-dev
1470 *** To build GnuPG for Windows you need to use the W32PTH
1471 *** package; available at:
1472 ***   ftp://ftp.g10code.com/g10code/w32pth/
1473 ***]])
1474    die=yes
1475 fi
1476
1477 if test "$die" = "yes"; then
1478     AC_MSG_ERROR([[
1479 ***
1480 *** Required libraries not found. Please consult the above messages
1481 *** and install them before running configure again.
1482 ***]])
1483 fi
1484
1485
1486
1487 AC_CONFIG_FILES([ m4/Makefile 
1488 Makefile
1489 po/Makefile.in
1490 gl/Makefile
1491 include/Makefile
1492 jnlib/Makefile
1493 common/Makefile
1494 kbx/Makefile
1495 g10/Makefile
1496 sm/Makefile
1497 agent/Makefile
1498 scd/Makefile
1499 keyserver/Makefile
1500 keyserver/gpg2keys_mailto
1501 keyserver/gpg2keys_test
1502 tools/gpg-zip
1503 tools/Makefile
1504 doc/Makefile
1505 tests/Makefile
1506 tests/openpgp/Makefile
1507 tests/pkits/Makefile
1508 ])
1509 AC_OUTPUT
1510
1511
1512 echo "
1513         GnuPG v${VERSION} has been configured as follows:
1514         
1515         Platform:  $PRINTABLE_OS_NAME ($host)
1516
1517         OpenPGP:   $build_gpg
1518         S/MIME:    $build_gpgsm
1519         Agent:     $build_agent $build_agent_threaded
1520         Smartcard: $build_scdaemon $build_scdaemon_extra
1521
1522         Protect tool:      $show_gnupg_protect_tool_pgm
1523         Default agent:     $show_gnupg_agent_pgm
1524         Default pinentry:  $show_gnupg_pinentry_pgm
1525         Default scdaemon:  $show_gnupg_scdaemon_pgm
1526         Default dirmngr:   $show_gnupg_dirmngr_pgm
1527 "
1528 if test x"$use_regex" != xyes ; then
1529 echo "
1530         Warning: No regular expression support available.
1531                  OpenPGP trust signatures won't work.
1532                  gpg-check-pattern will not be build.
1533 "
1534 fi