See ChangeLog: Mon Sep 18 16:35:45 CEST 2000 Werner Koch
[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 AM_INIT_AUTOMAKE(gnupg,`cat $srcdir/VERSION`)
16
17 ALL_LINGUAS="da de eo es_ES fr id it ja nl pl pt_BR pt_PT ru sv"
18 static_modules="sha1 md5 rmd160"
19 static_random_module=""
20
21 AC_PROG_AWK
22
23 MODULES_IN_CIPHER=`$AWK '/^EXTRA_PROGRAMS/ { for(i=3;i<=NF;i++) print $i}' \
24                                               $srcdir/cipher/Makefile.am`
25
26 dnl
27 dnl  Check for random module options
28 dnl
29 dnl  Fixme: get the list of available modules from MODULES_IN_CIPHER
30 dnl         and check against this list
31
32 AC_MSG_CHECKING([which static random module to use])
33 AC_ARG_ENABLE(static-rnd,
34     [  --enable-static-rnd=[egd|unix|linux|none]  ],
35 [use_static_rnd=$enableval], [use_static_rnd=default] )
36
37 if test "$use_static_rnd" = no; then
38     use_static_rnd=default
39 fi
40
41 case "$use_static_rnd" in
42     egd | linux | unix | none | default )
43       AC_MSG_RESULT($use_static_rnd)
44       ;;
45     * )
46       AC_MSG_RESULT(invalid argument)
47       AC_MSG_ERROR(there is no random module rnd$use_static_rnd)
48       ;;
49 esac
50
51 AC_ARG_WITH(egd-socket,
52     [  --with-egd-socket=NAME  Use NAME for the EGD socket)],
53             egd_socket_name="$withval", egd_socket_name="" )
54 AC_DEFINE_UNQUOTED(EGD_SOCKET_NAME, "$egd_socket_name")
55
56
57
58 dnl
59 dnl See whether the user wants to disable checking for /dev/random
60
61 AC_MSG_CHECKING([whether use of /dev/random is requested])
62 AC_ARG_ENABLE(dev-random,
63 [  --disable-dev-random    disable the use of dev random],
64     try_dev_random=$enableval, try_dev_random=yes)
65 AC_MSG_RESULT($try_dev_random)
66
67
68 dnl
69 dnl  Check other options
70 dnl
71
72 AC_MSG_CHECKING([whether use of extensions is requested])
73 AC_ARG_ENABLE(dynload,
74 [  --disable-dynload       disable use of extensions],
75     try_dynload=$enableval, try_dynload=yes)
76 AC_MSG_RESULT($try_dynload)
77
78 AC_MSG_CHECKING([whether assembler modules are requested])
79 AC_ARG_ENABLE(asm,
80 [  --disable-asm           do not use assembler modules],
81      try_asm_modules=$enableval, try_asm_modules=yes)
82 AC_MSG_RESULT($try_asm_modules)
83
84 AC_MSG_CHECKING([whether memory debugging is requested])
85 AC_ARG_ENABLE(m-debug,
86 [  --enable-m-debug        enable debugging of memory allocation],
87 use_m_debug=$enableval, use_m_debug=no)
88 AC_MSG_RESULT($use_m_debug)
89 if test "$use_m_debug" = yes; then
90     AC_DEFINE(M_DEBUG)
91     use_m_guard=yes
92 else
93     AC_MSG_CHECKING([whether memory guard is requested])
94     AC_ARG_ENABLE(m-guard,
95     [  --enable-m-guard        enable memory guard facility],
96     use_m_guard=$enableval, use_m_guard=no)
97     AC_MSG_RESULT($use_m_guard)
98 fi
99 if test "$use_m_guard" = yes ; then
100     AC_DEFINE(M_GUARD)
101 fi
102
103
104 AC_MSG_CHECKING([whether included zlib is requested])
105 AC_ARG_WITH(included-zlib,
106     [  --with-included-zlib    use the zlib code included here],
107 [g10_force_zlib=yes], [g10_force_zlib=no] )
108 AC_MSG_RESULT($g10_force_zlib)
109
110 dnl
111 dnl Check wether we want to compile libgcrypt
112 dnl
113 AC_MSG_CHECKING([whether compilation of libgcrypt is requested])
114 AC_ARG_ENABLE(libgcrypt,
115     [  --enable-libgcrypt      compile the libgcrypt [default=yes]],
116 [compile_libgcrypt="$enableval"],[compile_libgcrypt=no])
117 AC_MSG_RESULT($compile_libgcrypt)
118 AM_CONDITIONAL(COMPILE_LIBGCRYPT, test x$compile_libgcrypt = xyes)
119
120
121 dnl
122 dnl Check whether we want to use Linux capabilities
123 dnl
124 AC_MSG_CHECKING([whether use of capabilities is requested])
125 AC_ARG_WITH(capabilities,
126     [  --with-capabilities     use linux capabilities [default=no]],
127 [use_capabilities="$withval"],[use_capabilities=no])
128 AC_MSG_RESULT($use_capabilities)
129
130
131
132
133
134 AM_MAINTAINER_MODE
135
136 dnl Checks for programs.
137
138 dnl
139 dnl Setup some stuff depending on host/target.
140 dnl
141 case "${target}" in
142     *-*-mingw32*)
143         # special stuff for Windoze NT
144         # Do we need to set cross_compiling here or is it sufficient
145         # to rely on AC_PROG_CC which is called later?
146         cross_compiling=yes
147         CC="${target}-gcc"
148         CPP="${target}-gcc -E"
149         RANLIB="${target}-ranlib"
150         disallowed_modules="rndunix rndlinux rndegd"
151         ;;
152     *)
153         disallowed_modules="rndw32"
154        ;;
155 esac
156
157 AC_ARG_PROGRAM
158 AC_PROG_MAKE_SET
159 AM_SANITY_CHECK
160 missing_dir=`cd $ac_aux_dir && pwd`
161 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
162 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
163 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
164 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
165 dnl AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
166 AC_PROG_CC
167 AC_PROG_CPP
168 AC_ISC_POSIX
169 AC_PROG_INSTALL
170 AC_PROG_AWK
171 GPH_PROG_DOCBOOK
172 GNUPG_CHECK_FAQPROG
173
174
175 dnl
176 dnl Build shared libraries only when compilation of libgcrypt
177 dnl has been requested
178 dnl
179 AM_DISABLE_STATIC
180 AM_PROG_LIBTOOL
181
182
183 MPI_OPT_FLAGS=""
184
185
186 try_gettext=yes
187 try_gdbm=yes
188 case "${target}" in
189     *-*-mingw32*)
190         # special stuff for Windoze NT
191         ac_cv_have_dev_random=no
192         AC_DEFINE(USE_ONLY_8DOT3)
193         AC_DEFINE(HAVE_DRIVE_LETTERS)
194         AC_DEFINE(HAVE_DOSISH_SYSTEM)
195         AC_DEFINE(USE_SIMPLE_GETTEXT)
196         try_gettext="no"
197         try_gdbm="no"
198         ;;
199     i?86-emx-os2 | i?86-*-os2*emx )
200         # OS/2 with the EMX environment
201         ac_cv_have_dev_random=no
202         AC_DEFINE(HAVE_DRIVE_LETTERS)
203         AC_DEFINE(HAVE_DOSISH_SYSTEM)
204         try_gettext="no"
205         try_gdbm="no"
206         ;;
207
208     i?86-*-msdosdjgpp*)
209         # DOS with the DJGPP environment
210         ac_cv_have_dev_random=no
211         AC_DEFINE(HAVE_DRIVE_LETTERS)
212         AC_DEFINE(HAVE_DOSISH_SYSTEM)
213         try_gettext="no"
214         try_gdbm="no"
215         ;;
216
217     *-*-freebsd*)
218        # FreeBSD
219        CPPFLAGS="$CPPFLAGS -I/usr/local/include"
220        LDFLAGS="$LDFLAGS -L/usr/local/lib"
221        ;;
222
223     *-*-hpux*)
224         if test -z "$GCC" ; then
225             CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE"
226         fi
227         ;;
228     *-dec-osf4*)
229         if test -z "$GCC" ; then
230             # Suppress all warnings
231             # to get rid of the unsigned/signed char mismatch warnings.
232             CFLAGS="$CFLAGS -w"
233         fi
234         ;;
235     m68k-atari-mint)
236         ;;
237     *)
238        ;;
239 esac
240
241 AC_SUBST(MPI_OPT_FLAGS)
242 GNUPG_SYS_SYMBOL_UNDERSCORE
243 GNUPG_CHECK_PIC
244 GNUPG_CHECK_EXPORTDYNAMIC
245 if test "$NO_PIC" = yes; then
246     try_dynload=no
247 fi
248
249
250 case "${target}" in
251     *-*-mingw32*)
252         PRINTABLE_OS_NAME="MingW32"
253         ;;
254     i?86-emx-os2 | i?86-*-os2*emx )
255         PRINTABLE_OS_NAME="OS/2"
256         ;;
257     i?86-*-msdosdjgpp*)
258         PRINTABLE_OS_NAME="MSDOS/DJGPP"
259         try_dynload=no
260         ;;
261     *-linux*)
262         PRINTABLE_OS_NAME="GNU/Linux"
263         ;;
264 dnl let that after linux to avoid gnu-linux problems
265     *-gnu*)
266         PRINTABLE_OS_NAME="GNU/Hurd"
267         ;;
268     *)
269         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
270         ;;
271 esac
272 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME")
273
274 dnl  Fixme: Are these the best flags for OpenBSD????
275 dnl (I have removed the -lc from * ...CFLAGS for test purposes.)
276 case "${target}" in
277     *-openbsd*)
278         NAME_OF_DEV_RANDOM="/dev/srandom"
279         NAME_OF_DEV_URANDOM="/dev/urandom"
280         DYNLINK_MOD_CFLAGS="-shared -rdynamic $CFLAGS_PIC -Wl,-Bshareable -Wl,-x"
281         ;;
282
283     *-netbsd*)
284         NAME_OF_DEV_RANDOM="/dev/random"
285         NAME_OF_DEV_URANDOM="/dev/urandom"
286         DYNLINK_MOD_CFLAGS="-shared -rdynamic $CFLAGS_PIC -Wl,-Bshareable -Wl,-x"
287         ;;
288
289     *-solaris*)
290         NAME_OF_DEV_RANDOM="/dev/random"
291         NAME_OF_DEV_URANDOM="/dev/random"
292         DYNLINK_MOD_CFLAGS="-shared $CFLAGS_PIC"
293         ;;
294
295     *)
296         NAME_OF_DEV_RANDOM="/dev/random"
297         NAME_OF_DEV_URANDOM="/dev/urandom"
298         # -shared is a gcc-ism.  Find pic flags from GNUPG_CHECK_PIC.
299         if test -n "$GCC" ; then
300            DYNLINK_MOD_CFLAGS="-shared $CFLAGS_PIC"                            
301         else
302            DYNLINK_MOD_CFLAGS="$CFLAGS_PIC"
303         fi
304         ;;
305 esac
306 AC_DEFINE_UNQUOTED(NAME_OF_DEV_RANDOM, "$NAME_OF_DEV_RANDOM")
307 AC_DEFINE_UNQUOTED(NAME_OF_DEV_URANDOM, "$NAME_OF_DEV_URANDOM")
308 AC_SUBST(MPI_OPT_FLAGS)
309
310
311 dnl Checks for libraries.
312
313 if test "$try_gettext" = yes; then
314 AM_GNU_GETTEXT
315 else
316 USE_NLS=no
317 USE_INCLUDED_LIBINTL=no
318 AC_SUBST(USE_NLS)
319 AC_SUBST(USE_INCLUDED_LIBINTL)
320 fi
321
322 dnl Where is the GTK+ toolkit
323 if test "$cross_compiling" = yes ; then
324   CFLAGS="$CFLAGS -I/home/wk/work/gtk+w32/include/gtk+/gdk/win32 \
325  -I/home/wk/work/gtk+w32/include -I/home/wk/work/gtk+w32/include/gtk+"
326   LIBS="$LIBS     -L/home/wk/work/gtk+w32/lib -lgtk -lgdk -lglib"
327   compile_agent=no
328 else
329   AM_PATH_GTK(1.2.1, compile_agent=yes,compile_agent=no)
330 fi
331 AM_CONDITIONAL(COMPILE_AGENT, test x$compile_agent = xyes)
332
333
334
335 dnl
336 dnl There are lot of misconfigured systems.  We include
337 dnl gdbm support only if the lib and the header is installed.
338 dnl
339 if test "$try_gdbm" = yes; then
340 AC_CHECK_HEADERS(gdbm.h)
341 if test "$ac_cv_header_gdbm_h" = yes ; then
342   AC_CHECK_LIB(gdbm,gdbm_firstkey)
343 fi
344 fi
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.