Add features packet and fixes MIPS3.
[gnupg.git] / configure.in
1 dnl
2 dnl Configure template for GNUPG
3 dnl
4 dnl (Process this file with autoconf to produce a configure script.)
5 AC_REVISION($Revision$)dnl
6
7 dnl Must reset CDPATH so that bash's cd does not print to stdout
8 CDPATH=
9
10 AC_PREREQ(2.13)
11 AC_INIT(g10/gpg.c)
12 AC_CONFIG_AUX_DIR(scripts)
13 AM_CONFIG_HEADER(config.h)
14 AC_CANONICAL_SYSTEM
15 #############################################
16 # Version numbers (Rember to change them just before a release)
17 # 1. No interfaces changed, only implementations (good): Increment REVISION.
18 # 2. Interfaces added, none removed (good): Increment CURRENT, increment
19 #    AGE, set REVISION to 0.
20 # 3. Interfaces removed (BAD, breaks upward compatibility): Increment
21 #    CURRENT, set AGE and REVISION to 0.
22 AM_INIT_AUTOMAKE(gnupg,1.1.1a)
23 LIBGCRYPT_LT_CURRENT=1
24 LIBGCRYPT_LT_AGE=0
25 LIBGCRYPT_LT_REVISION=0
26 ##############################################
27
28 AC_SUBST(LIBGCRYPT_LT_CURRENT)
29 AC_SUBST(LIBGCRYPT_LT_AGE)
30 AC_SUBST(LIBGCRYPT_LT_REVISION)
31
32
33
34 ALL_LINGUAS="da de eo es_ES fr id it ja nl pl pt_BR pt_PT ru sv"
35 static_modules="sha1 md5 rmd160"
36 static_random_module=""
37
38 AC_PROG_AWK
39
40 MODULES_IN_CIPHER=`$AWK '/^EXTRA_PROGRAMS/ { for(i=3;i<=NF;i++) print $i}' \
41                                               $srcdir/cipher/Makefile.am`
42
43 dnl
44 dnl  Check for random module options
45 dnl
46 dnl  Fixme: get the list of available modules from MODULES_IN_CIPHER
47 dnl         and check against this list
48
49 AC_MSG_CHECKING([which static random module to use])
50 AC_ARG_ENABLE(static-rnd,
51     [  --enable-static-rnd=[egd|unix|linux|none]  ],
52 [use_static_rnd=$enableval], [use_static_rnd=default] )
53
54 if test "$use_static_rnd" = no; then
55     use_static_rnd=default
56 fi
57
58 case "$use_static_rnd" in
59     egd | linux | unix | none | default )
60       AC_MSG_RESULT($use_static_rnd)
61       ;;
62     * )
63       AC_MSG_RESULT(invalid argument)
64       AC_MSG_ERROR(there is no random module rnd$use_static_rnd)
65       ;;
66 esac
67
68 AC_ARG_WITH(egd-socket,
69     [  --with-egd-socket=NAME  Use NAME for the EGD socket)],
70             egd_socket_name="$withval", egd_socket_name="" )
71 AC_DEFINE_UNQUOTED(EGD_SOCKET_NAME, "$egd_socket_name")
72
73
74
75 dnl
76 dnl See whether the user wants to disable checking for /dev/random
77
78 AC_MSG_CHECKING([whether use of /dev/random is requested])
79 AC_ARG_ENABLE(dev-random,
80 [  --disable-dev-random    disable the use of dev random],
81     try_dev_random=$enableval, try_dev_random=yes)
82 AC_MSG_RESULT($try_dev_random)
83
84
85 dnl
86 dnl  Check other options
87 dnl
88
89 AC_MSG_CHECKING([whether use of extensions is requested])
90 AC_ARG_ENABLE(dynload,
91 [  --disable-dynload       disable use of extensions],
92     try_dynload=$enableval, try_dynload=yes)
93 AC_MSG_RESULT($try_dynload)
94
95 AC_MSG_CHECKING([whether assembler modules are requested])
96 AC_ARG_ENABLE(asm,
97 [  --disable-asm           do not use assembler modules],
98      try_asm_modules=$enableval, try_asm_modules=yes)
99 AC_MSG_RESULT($try_asm_modules)
100
101 AC_MSG_CHECKING([whether memory debugging is requested])
102 AC_ARG_ENABLE(m-debug,
103 [  --enable-m-debug        enable debugging of memory allocation],
104 use_m_debug=$enableval, use_m_debug=no)
105 AC_MSG_RESULT($use_m_debug)
106 if test "$use_m_debug" = yes; then
107     AC_DEFINE(M_DEBUG)
108     use_m_guard=yes
109 else
110     AC_MSG_CHECKING([whether memory guard is requested])
111     AC_ARG_ENABLE(m-guard,
112     [  --enable-m-guard        enable memory guard facility],
113     use_m_guard=$enableval, use_m_guard=no)
114     AC_MSG_RESULT($use_m_guard)
115 fi
116 if test "$use_m_guard" = yes ; then
117     AC_DEFINE(M_GUARD)
118 fi
119
120
121 AC_MSG_CHECKING([whether included zlib is requested])
122 AC_ARG_WITH(included-zlib,
123     [  --with-included-zlib    use the zlib code included here],
124 [g10_force_zlib=yes], [g10_force_zlib=no] )
125 AC_MSG_RESULT($g10_force_zlib)
126
127 dnl
128 dnl Check wether we want to compile libgcrypt
129 dnl
130 AC_MSG_CHECKING([whether compilation of libgcrypt is requested])
131 AC_ARG_ENABLE(libgcrypt,
132     [  --enable-libgcrypt      compile the libgcrypt [default=yes]],
133 [compile_libgcrypt="$enableval"],[compile_libgcrypt=no])
134 AC_MSG_RESULT($compile_libgcrypt)
135 AM_CONDITIONAL(COMPILE_LIBGCRYPT, test x$compile_libgcrypt = xyes)
136
137
138 dnl
139 dnl Check whether we want to use Linux capabilities
140 dnl
141 AC_MSG_CHECKING([whether use of capabilities is requested])
142 AC_ARG_WITH(capabilities,
143     [  --with-capabilities     use linux capabilities [default=no]],
144 [use_capabilities="$withval"],[use_capabilities=no])
145 AC_MSG_RESULT($use_capabilities)
146
147
148
149
150
151 AM_MAINTAINER_MODE
152
153 dnl Checks for programs.
154
155 dnl
156 dnl Setup some stuff depending on host/target.
157 dnl
158 case "${target}" in
159     *-*-mingw32*)
160         # special stuff for Windoze NT
161         # Do we need to set cross_compiling here or is it sufficient
162         # to rely on AC_PROG_CC which is called later?
163         cross_compiling=yes
164         CC="${target}-gcc"
165         CPP="${target}-gcc -E"
166         RANLIB="${target}-ranlib"
167         disallowed_modules="rndunix rndlinux rndegd"
168         ;;
169     *)
170         disallowed_modules="rndw32"
171        ;;
172 esac
173
174 AC_ARG_PROGRAM
175 AC_PROG_MAKE_SET
176 AM_SANITY_CHECK
177 missing_dir=`cd $ac_aux_dir && pwd`
178 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
179 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
180 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
181 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
182 dnl AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
183 AC_PROG_CC
184 AC_PROG_CPP
185 AC_ISC_POSIX
186 AC_PROG_INSTALL
187 AC_PROG_AWK
188 GPH_PROG_DOCBOOK
189 GNUPG_CHECK_FAQPROG
190
191
192 dnl
193 dnl Build shared libraries only when compilation of libgcrypt
194 dnl has been requested
195 dnl
196 AM_DISABLE_STATIC
197 AM_PROG_LIBTOOL
198
199
200 MPI_OPT_FLAGS=""
201
202
203 try_gettext=yes
204 case "${target}" in
205     *-*-mingw32*)
206         # special stuff for Windoze NT
207         ac_cv_have_dev_random=no
208         AC_DEFINE(USE_ONLY_8DOT3)
209         AC_DEFINE(HAVE_DRIVE_LETTERS)
210         AC_DEFINE(HAVE_DOSISH_SYSTEM)
211         AC_DEFINE(USE_SIMPLE_GETTEXT)
212         try_gettext="no"
213         ;;
214     i?86-emx-os2 | i?86-*-os2*emx )
215         # OS/2 with the EMX environment
216         ac_cv_have_dev_random=no
217         AC_DEFINE(HAVE_DRIVE_LETTERS)
218         AC_DEFINE(HAVE_DOSISH_SYSTEM)
219         try_gettext="no"
220         ;;
221
222     i?86-*-msdosdjgpp*)
223         # DOS with the DJGPP environment
224         ac_cv_have_dev_random=no
225         AC_DEFINE(HAVE_DRIVE_LETTERS)
226         AC_DEFINE(HAVE_DOSISH_SYSTEM)
227         try_gettext="no"
228         ;;
229
230     *-*-freebsd*)
231        # FreeBSD
232        CPPFLAGS="$CPPFLAGS -I/usr/local/include"
233        LDFLAGS="$LDFLAGS -L/usr/local/lib"
234        ;;
235
236     *-*-hpux*)
237         if test -z "$GCC" ; then
238             CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE"
239         fi
240         ;;
241     *-dec-osf4*)
242         if test -z "$GCC" ; then
243             # Suppress all warnings
244             # to get rid of the unsigned/signed char mismatch warnings.
245             CFLAGS="$CFLAGS -w"
246         fi
247         ;;
248     m68k-atari-mint)
249         ;;
250     *)
251        ;;
252 esac
253
254 AC_SUBST(MPI_OPT_FLAGS)
255 GNUPG_SYS_SYMBOL_UNDERSCORE
256 GNUPG_CHECK_PIC
257 GNUPG_CHECK_EXPORTDYNAMIC
258 if test "$NO_PIC" = yes; then
259     try_dynload=no
260 fi
261
262
263 case "${target}" in
264     *-*-mingw32*)
265         PRINTABLE_OS_NAME="MingW32"
266         ;;
267     i?86-emx-os2 | i?86-*-os2*emx )
268         PRINTABLE_OS_NAME="OS/2"
269         ;;
270     i?86-*-msdosdjgpp*)
271         PRINTABLE_OS_NAME="MSDOS/DJGPP"
272         try_dynload=no
273         ;;
274     *-linux*)
275         PRINTABLE_OS_NAME="GNU/Linux"
276         ;;
277 dnl let that after linux to avoid gnu-linux problems
278     *-gnu*)
279         PRINTABLE_OS_NAME="GNU/Hurd"
280         ;;
281     *)
282         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
283         ;;
284 esac
285 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME")
286
287 dnl  Fixme: Are these the best flags for OpenBSD????
288 dnl (I have removed the -lc from * ...CFLAGS for test purposes.)
289 case "${target}" in
290     *-openbsd*)
291         NAME_OF_DEV_RANDOM="/dev/srandom"
292         NAME_OF_DEV_URANDOM="/dev/urandom"
293         DYNLINK_MOD_CFLAGS="-shared -rdynamic $CFLAGS_PIC -Wl,-Bshareable -Wl,-x"
294         ;;
295
296     *-netbsd*)
297         NAME_OF_DEV_RANDOM="/dev/random"
298         NAME_OF_DEV_URANDOM="/dev/urandom"
299         DYNLINK_MOD_CFLAGS="-shared -rdynamic $CFLAGS_PIC -Wl,-Bshareable -Wl,-x"
300         ;;
301
302     *-solaris*)
303         NAME_OF_DEV_RANDOM="/dev/random"
304         NAME_OF_DEV_URANDOM="/dev/random"
305         DYNLINK_MOD_CFLAGS="-shared $CFLAGS_PIC"
306         ;;
307
308     *)
309         NAME_OF_DEV_RANDOM="/dev/random"
310         NAME_OF_DEV_URANDOM="/dev/urandom"
311         # -shared is a gcc-ism.  Find pic flags from GNUPG_CHECK_PIC.
312         if test -n "$GCC" ; then
313            DYNLINK_MOD_CFLAGS="-shared $CFLAGS_PIC"                            
314         else
315            DYNLINK_MOD_CFLAGS="$CFLAGS_PIC"
316         fi
317         ;;
318 esac
319 AC_DEFINE_UNQUOTED(NAME_OF_DEV_RANDOM, "$NAME_OF_DEV_RANDOM")
320 AC_DEFINE_UNQUOTED(NAME_OF_DEV_URANDOM, "$NAME_OF_DEV_URANDOM")
321 AC_SUBST(MPI_OPT_FLAGS)
322
323
324 dnl Checks for libraries.
325
326 if test "$try_gettext" = yes; then
327 AM_GNU_GETTEXT
328 else
329 USE_NLS=no
330 USE_INCLUDED_LIBINTL=no
331 AC_SUBST(USE_NLS)
332 AC_SUBST(USE_INCLUDED_LIBINTL)
333 fi
334
335 dnl Where is the GTK+ toolkit
336 if test "$cross_compiling" = yes ; then
337   CFLAGS="$CFLAGS -I/home/wk/work/gtk+w32/include/gtk+/gdk/win32 \
338  -I/home/wk/work/gtk+w32/include -I/home/wk/work/gtk+w32/include/gtk+"
339   LIBS="$LIBS     -L/home/wk/work/gtk+w32/lib -lgtk -lgdk -lglib"
340   compile_agent=no
341 else
342   AM_PATH_GTK(1.2.1, compile_agent=yes,compile_agent=no)
343 fi
344 AM_CONDITIONAL(COMPILE_AGENT, test x$compile_agent = xyes)
345
346
347 dnl Solaris needs -lsocket and -lnsl. Unisys system includes
348 dnl gethostbyname in libsocket but needs libnsl for socket.
349 AC_CHECK_LIB(nsl, gethostbyname)
350 AC_CHECK_LIB(socket, socket, ac_need_libsocket=1, ac_try_nsl=1)
351 if test x$ac_need_libsocket = x1; then
352     LIBS="$LIBS -lsocket"
353 fi
354 if test x$ac_try_nsl = x1; then
355     AC_CHECK_LIB(nsl, gethostbyname, ac_need_libnsl=1)
356     if test x$ac_need_libnsl = x1
357     then
358         LIBS="$LIBS -lnsl"
359     fi
360 fi
361
362
363 if test "$try_dynload" = yes ; then
364   AC_CHECK_LIB(dl,dlopen)
365   if test "$ac_cv_lib_dl_dlopen" = "yes"; then
366     AC_DEFINE(USE_DYNAMIC_LINKING)
367     AC_DEFINE(HAVE_DL_DLOPEN)
368     DYNLINK_LDFLAGS="$CFLAGS_EXPORTDYNAMIC"
369     use_gnupg_extensions=yes
370   else
371     AC_CHECK_FUNCS(dlopen)
372     if test "$ac_cv_func_dlopen" = "yes"; then
373       AC_DEFINE(USE_DYNAMIC_LINKING)
374       AC_DEFINE(HAVE_DL_DLOPEN)
375       DYNLINK_LDFLAGS="$CFLAGS_EXPORTDYNAMIC"
376       use_gnupg_extensions=yes
377     else
378       AC_CHECK_LIB(dld,shl_load)
379       if test "$ac_cv_lib_dld_shl_load" = "yes"; then
380         AC_DEFINE(USE_DYNAMIC_LINKING)
381         AC_DEFINE(HAVE_DL_SHL_LOAD)
382         DYNLINK_LDFLAGS="$CFLAGS_EXPORTDYNAMIC"
383         use_gnupg_extensions=yes
384 dnl -----------------
385 dnl  DLD is not ready for use. So I better disable this test
386 dnl
387 dnl    AC_CHECK_LIB(dld,dld_link)
388 dnl    if test "$ac_cv_lib_dld_dld_link" = "yes"; then
389 dnl      AC_DEFINE(USE_DYNAMIC_LINKING)
390 dnl      AC_DEFINE(HAVE_DLD_DLD_LINK)
391 dnl      DYNLINK_LDFLAGS="$CFLAGS_EXPORTDYNAMIC"
392 dnl      use_gnupg_extensions=yes
393 dnl ---------------
394       fi
395     fi
396   fi
397 else
398   AC_MSG_CHECKING(for dynamic loading)
399   DYNLINK_LDFLAGS=
400   DYNLINK_MOD_CFLAGS=
401   use_gnupg_extensions=no
402   AC_MSG_RESULT(has been disabled)
403 fi
404
405 AM_CONDITIONAL(ENABLE_GNUPG_EXTENSIONS, test "$use_gnupg_extensions" = yes )
406 AC_SUBST(DYNLINK_LDFLAGS)
407 AC_SUBST(DYNLINK_MOD_CFLAGS)
408
409
410 dnl Checks for header files.
411 AC_HEADER_STDC
412 AC_CHECK_HEADERS(unistd.h langinfo.h termio.h)
413
414
415 dnl Checks for typedefs, structures, and compiler characteristics.
416 AC_C_CONST
417 AC_C_INLINE
418 AC_TYPE_SIZE_T
419 AC_TYPE_SIGNAL
420 AC_DECL_SYS_SIGLIST
421
422 GNUPG_CHECK_ENDIAN
423
424
425 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
426 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
427 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
428 GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
429 GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
430
431 AC_CHECK_SIZEOF(unsigned short, 2)
432 AC_CHECK_SIZEOF(unsigned int, 4)
433 AC_CHECK_SIZEOF(unsigned long, 4)
434 AC_CHECK_SIZEOF(unsigned long long, 0)
435
436 if test "$ac_cv_sizeof_unsigned_short" = "0" \
437    || test "$ac_cv_sizeof_unsigned_int" = "0" \
438    || test "$ac_cv_sizeof_unsigned_long" = "0"; then
439     AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
440 fi
441
442
443
444 dnl Checks for library functions.
445 AC_FUNC_VPRINTF
446 AC_CHECK_FUNCS(strerror stpcpy strlwr stricmp tcgetattr rand strtoul mmap)
447 AC_CHECK_FUNCS(memmove gettimeofday getrusage gethrtime setrlimit clock_gettime)
448 AC_CHECK_FUNCS(memicmp atexit raise getpagesize strftime nl_langinfo)
449 AC_CHECK_FUNCS(waitpid wait4 sigaction sigprocmask fopen64 fstat64)
450
451 GNUPG_CHECK_MLOCK
452 GNUPG_FUNC_MKDIR_TAKES_ONE_ARG
453
454 dnl
455 dnl Check whether we can use Linux capabilities as requested
456 dnl
457 if test "$use_capabilities" = "yes" ; then
458 use_capabilities=no
459 AC_CHECK_HEADERS(sys/capability.h)
460 if test "$ac_cv_header_sys_capability_h" = "yes" ; then
461   AC_CHECK_LIB(cap, cap_init, ac_need_libcap=1)
462   if test "$ac_cv_lib_cap_cap_init" = "yes"; then
463      AC_DEFINE(USE_CAPABILITIES)
464      LIBS="$LIBS -lcap"
465      use_capabilities=yes
466   fi
467 fi
468 if test "$use_capabilities" = "no" ; then
469     AC_MSG_WARN([[
470 ***
471 *** The use of capabilities on this system is not possible.
472 *** You need a recent Linux kernel and some patches:
473 ***   fcaps-2.2.9-990610.patch      (kernel patch for 2.2.9)
474 ***   fcap-module-990613.tar.gz     (kernel module)
475 ***   libcap-1.92.tar.gz            (user mode library and utilities)
476 *** And you have to configure the kernel with CONFIG_VFS_CAP_PLUGIN
477 *** set (filesystems menu). Be warned: This code is *really* ALPHA.
478 ***]])
479 fi
480 fi
481
482
483 GNUPG_CHECK_IPC
484 if test "$ac_cv_header_sys_shm_h" = "yes"; then
485   AC_DEFINE(USE_SHM_COPROCESSING)
486 fi
487
488 dnl
489 dnl check whether we have a random device
490 dnl
491 if test "$try_dev_random" = yes ; then
492     AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
493     [if test -r "$NAME_OF_DEV_RANDOM" && test -r "$NAME_OF_DEV_URANDOM" ; then
494       ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
495     if test "$ac_cv_have_dev_random" = yes; then
496         AC_DEFINE(HAVE_DEV_RANDOM)
497     fi
498 else
499     AC_MSG_CHECKING(for random device)
500     ac_cv_have_dev_random=no
501     AC_MSG_RESULT(has been disabled)
502 fi
503
504 dnl
505 dnl and whether this device supports ioctl
506 dnl (Note, that we should do a real test here)
507 dnl
508 if test "$ac_cv_have_dev_random" = yes ; then
509     AC_CHECK_HEADERS(linux/random.h)
510     AC_CACHE_CHECK(for random device ioctl, ac_cv_have_dev_random_ioctl,
511       [ if test "$ac_cv_header_linux_random_h" = yes ; then
512           ac_cv_have_dev_random_ioctl=yes;
513         else
514           ac_cv_have_dev_random_ioctl=no;
515         fi
516       ])
517     if test "$ac_cv_have_dev_random_ioctl" = yes; then
518         AC_DEFINE(HAVE_DEV_RANDOM_IOCTL)
519     fi
520 fi
521
522
523 dnl
524 dnl Figure out the default linkage mode for cipher modules
525 dnl
526 print_egd_notice=no
527 if test "$use_static_rnd" = default; then
528   if test "$ac_cv_have_dev_random" = yes; then
529       static_random_module="rndlinux"
530   else
531       case "${target}" in
532           *-*-mingw32*)
533               static_random_module="rndw32"
534               AC_DEFINE(USE_STATIC_RNDW32)
535               ;;
536           i?86-emx-os2|i?86-*-os2*emx)
537               static_random_module="rndos2"
538               ;;
539           m68k-atari-mint)
540               static_random_module="rndatari"
541               ;;
542           i?86-*-msdosdjgpp*)
543               :
544               ;;
545           *)
546               static_random_module="rndunix"
547               print_egd_notice=yes
548              ;;
549       esac
550   fi
551 else
552   if test "$use_static_rnd" = none; then
553     :
554   else
555     static_random_module="rnd$use_static_rnd"
556     if test "$use_static_rnd" = "unix"; then
557         print_egd_notice=yes
558     fi
559   fi
560 fi
561
562
563 if test "$print_egd_notice" = "yes"; then
564     AC_MSG_WARN([[
565 ***
566 *** The performance of the UNIX random gatherer module is not very good
567 *** and it does not keep the entropy pool over multiple invocations of
568 *** GnuPG.  The suggested way to overcome this problem is to use the
569 ***
570 ***               Entropy Gathering Daemon (EGD)
571 ***
572 *** which provides a entropy source for the whole system.  It is written
573 *** in Perl and available at the GnuPG FTP servers.  For more information
574 *** consult the GnuPG webpages:
575 ***
576 ***           http://www.gnupg.org/download.html#egd
577 ***
578 *** You may want to run ./configure with --enable-static-rnd=none to be
579 *** able to load the EGD client code dynamically; this way you can choose
580 *** between RNDUNIX and RNDEGD without recompilation.
581 ***]])
582 fi
583
584 dnl
585 dnl Parse the modules list and build the list
586 dnl of static and dymically linked modules
587 dnl
588 dnl (We always need a static rmd160)
589 static_modules="$static_modules rmd160 $static_random_module"
590 STATIC_CIPHER_NAMES=""
591 STATIC_CIPHER_OBJS=""
592 DYNAMIC_CIPHER_MODS=""
593 GNUPG_MSG_PRINT([dynamically linked cipher modules:])
594 for name in $MODULES_IN_CIPHER; do
595     x="yes"
596     for i in $disallowed_modules; do
597         if test "$name" = "$i" ; then x="no" ; fi
598     done;
599     if test $x = yes; then
600         x="no"
601         for i in $static_modules; do
602             if test "$name" = "$i" ; then
603                 x="yes"
604             fi
605         done;
606         if test $x = yes; then
607             STATIC_CIPHER_NAMES="$STATIC_CIPHER_NAMES $name"
608             STATIC_CIPHER_OBJS="$STATIC_CIPHER_OBJS $name.lo"
609         else
610             DYNAMIC_CIPHER_MODS="$DYNAMIC_CIPHER_MODS $name"
611             GNUPG_MSG_PRINT([$name])
612         fi
613     fi
614 done
615 AC_MSG_RESULT()
616 AC_SUBST(STATIC_CIPHER_OBJS)
617 AC_SUBST(STATIC_CIPHER_NAMES)
618 AC_SUBST(DYNAMIC_CIPHER_MODS)
619
620 dnl
621 dnl And build the constructor file
622 dnl
623
624 test -d cipher || mkdir cipher
625 cat <<G10EOF >cipher/construct.c
626 /* automatically generated by configure - do not edit */
627
628 G10EOF
629 GNUPG_MSG_PRINT([statically linked cipher modules:])
630 for name in $STATIC_CIPHER_NAMES; do
631     echo "void ${name}_constructor(void);" >>cipher/construct.c
632     GNUPG_MSG_PRINT([$name])
633 done
634 AC_MSG_RESULT()
635 cat <<G10EOF >>cipher/construct.c
636
637 void
638 cipher_modules_constructor(void)
639 {
640     static int done = 0;
641     if( done )
642         return;
643     done = 1;
644
645 G10EOF
646 for name in $STATIC_CIPHER_NAMES; do
647     echo "   ${name}_constructor();" >>cipher/construct.c
648 done
649 echo '}' >>cipher/construct.c
650
651
652
653
654 dnl
655 dnl Figure how to link the cipher modules
656 dnl
657 AC_SUBST(STATIC_CIPHER_OBJS)
658 AC_SUBST(DYNAMIC_CIPHER_MODS)
659
660
661 dnl setup assembler stuff
662 AC_MSG_CHECKING(for mpi assembler functions)
663 if test -f $srcdir/mpi/config.links ; then
664     . $srcdir/mpi/config.links
665     GNUPG_LINK_FILES($mpi_ln_src, $mpi_ln_dst)
666     ac_cv_mpi_extra_asm_modules="$mpi_extra_modules"
667     ac_cv_mpi_sflags="$mpi_sflags"
668     ac_cv_mpi_config_done="yes"
669     AC_MSG_RESULT(done)
670 else
671     AC_MSG_RESULT(failed)
672     AC_MSG_ERROR([mpi/config.links missing!])
673 fi
674 MPI_EXTRA_ASM_OBJS=""
675 if test "$ac_cv_mpi_extra_asm_modules" != ""; then
676 GNUPG_MSG_PRINT([mpi extra asm functions:])
677 for i in $ac_cv_mpi_extra_asm_modules; do
678     GNUPG_MSG_PRINT([$i])
679     MPI_EXTRA_ASM_OBJS="$MPI_EXTRA_ASM_OBJS $i.lo"
680 done
681 AC_MSG_RESULT()
682 fi
683 AC_SUBST(MPI_EXTRA_ASM_OBJS)
684 MPI_SFLAGS="$ac_cv_mpi_sflags"
685 AC_SUBST(MPI_SFLAGS)
686
687 dnl Do we have zlib? Must do it here because Solaris failed
688 dnl when compiling a conftest (due to the "-lz" from LIBS).
689 use_local_zlib=yes
690 if test "$g10_force_zlib" = "yes"; then
691   :
692 else
693   AC_CHECK_HEADERS(zlib.h)
694   if test "$ac_cv_header_zlib_h" = yes ; then
695       AC_CHECK_LIB(z,deflateInit2_,use_local_zlib=no,:)
696   fi
697 fi
698
699 if test "$use_local_zlib" = yes ; then
700     AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, true)
701     GNUPG_LINK_FILES(zlib/zlib.h, zlib.h )
702     GNUPG_LINK_FILES(zlib/zconf.h, zconf.h )
703     ZLIBS="../zlib/libzlib.a"
704 else
705     AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, false)
706     ZLIBS=
707     LIBS="-lz $LIBS"
708 fi
709 AC_SUBST(ZLIBS)
710
711
712 # Allow users to append something to the version string without
713 # flagging it as development version.  The user version parts is
714 # considered everything after a dash.
715 changequote(,)dnl
716 tmp_pat='[a-zA-Z]'
717 changequote([,])dnl
718 if echo "$VERSION" | sed 's/-.*//' | grep "$tmp_pat" >/dev/null ; then
719     AC_DEFINE(IS_DEVELOPMENT_VERSION)
720 fi
721
722 dnl Temp workarounds:
723 GNUPG_LINK_FILES(gcrypt/gcrypt.h, gcrypt.h )
724 GNUPG_LINK_FILES(include/types.h, gcrypt/types.h )
725
726 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
727
728 GNUPG_DO_LINK_FILES
729
730 GNUPG_CHECK_GNUMAKE
731
732 if test "$GCC" = yes; then
733     if test "$MAINTAINER_MODE" = "yes"; then
734         CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
735     else
736         CFLAGS="$CFLAGS -Wall"
737     fi
738 fi
739
740 dnl
741 dnl Make the version number in gcrypt/gcrypt.h the same as the one here.
742 dnl (this is easier than to have a .in file just for one substitution)
743 dnl
744 GNUPG_FIX_HDR_VERSION(gcrypt/gcrypt.h, GCRYPT_VERSION)
745
746 GCRYPT_LIBS="-L${libdir} -lgcrypt"
747 GCRYPT_CFLAGS=""
748 AC_SUBST(GCRYPT_LIBS)
749 AC_SUBST(GCRYPT_CFLAGS)
750
751 AC_OUTPUT_COMMANDS([
752 chmod +x scripts/db2html
753 chmod +x gcrypt/gcrypt-config
754 cat >gnupg-defs.tmp <<G10EOF
755 /* Generated automatically by configure */
756 #ifdef HAVE_DRIVE_LETTERS
757   #define GNUPG_LOCALEDIR "c:/lib/gnupg/locale"
758   #define GNUPG_LIBDIR  "c:/lib/gnupg"
759   #define GNUPG_DATADIR "c:/lib/gnupg"
760   #define GNUPG_HOMEDIR "c:/gnupg-test"
761 #else
762   #define GNUPG_LOCALEDIR "${prefix}/${DATADIRNAME}/locale"
763   #define GNUPG_LIBDIR  "${libdir}/gnupg"
764   #define GNUPG_DATADIR "${datadir}/gnupg"
765   #ifdef __VMS
766     #define GNUPG_HOMEDIR "/SYS\$LOGIN/gnupg" 
767   #else
768     #define GNUPG_HOMEDIR "~/.gnupg-test" 
769   #endif
770 #endif
771 G10EOF
772 if cmp -s gnupg-defs.h gnupg-defs.tmp 2>/dev/null; then
773     echo "gnupg-defs.h is unchanged"
774     rm -f gnupg-defs.tmp
775 else
776     rm -f gnupg-defs.h
777     mv gnupg-defs.tmp gnupg-defs.h
778     echo "gnupg-defs.h created"
779 fi
780 ],[
781 prefix=$prefix
782 exec_prefix=$exec_prefix
783 libdir=$libdir
784 datadir=$datadir
785 DATADIRNAME=$DATADIRNAME
786 ])
787
788
789 AC_OUTPUT([
790 Makefile
791 scripts/db2html
792 intl/Makefile
793 po/Makefile.in
794 jnlib/Makefile
795 util/Makefile
796 mpi/Makefile
797 cipher/Makefile
798 g10/Makefile
799 agent/Makefile
800 doc/Makefile
801 doc/version.sgml
802 tools/Makefile
803 zlib/Makefile
804 checks/Makefile
805 gcrypt/Makefile
806 gcrypt/gcrypt-config
807 ])
808
809 dnl *-*wedit:notab*-*  Please keep this as the last line.