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