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