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