See ChangeLog: Fri Oct 6 14:29:16 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 case "${target}" in
188     *-*-mingw32*)
189         # special stuff for Windoze NT
190         ac_cv_have_dev_random=no
191         AC_DEFINE(USE_ONLY_8DOT3)
192         AC_DEFINE(HAVE_DRIVE_LETTERS)
193         AC_DEFINE(HAVE_DOSISH_SYSTEM)
194         AC_DEFINE(USE_SIMPLE_GETTEXT)
195         try_gettext="no"
196         ;;
197     i?86-emx-os2 | i?86-*-os2*emx )
198         # OS/2 with the EMX environment
199         ac_cv_have_dev_random=no
200         AC_DEFINE(HAVE_DRIVE_LETTERS)
201         AC_DEFINE(HAVE_DOSISH_SYSTEM)
202         try_gettext="no"
203         ;;
204
205     i?86-*-msdosdjgpp*)
206         # DOS with the DJGPP environment
207         ac_cv_have_dev_random=no
208         AC_DEFINE(HAVE_DRIVE_LETTERS)
209         AC_DEFINE(HAVE_DOSISH_SYSTEM)
210         try_gettext="no"
211         ;;
212
213     *-*-freebsd*)
214        # FreeBSD
215        CPPFLAGS="$CPPFLAGS -I/usr/local/include"
216        LDFLAGS="$LDFLAGS -L/usr/local/lib"
217        ;;
218
219     *-*-hpux*)
220         if test -z "$GCC" ; then
221             CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE"
222         fi
223         ;;
224     *-dec-osf4*)
225         if test -z "$GCC" ; then
226             # Suppress all warnings
227             # to get rid of the unsigned/signed char mismatch warnings.
228             CFLAGS="$CFLAGS -w"
229         fi
230         ;;
231     m68k-atari-mint)
232         ;;
233     *)
234        ;;
235 esac
236
237 AC_SUBST(MPI_OPT_FLAGS)
238 GNUPG_SYS_SYMBOL_UNDERSCORE
239 GNUPG_CHECK_PIC
240 GNUPG_CHECK_EXPORTDYNAMIC
241 if test "$NO_PIC" = yes; then
242     try_dynload=no
243 fi
244
245
246 case "${target}" in
247     *-*-mingw32*)
248         PRINTABLE_OS_NAME="MingW32"
249         ;;
250     i?86-emx-os2 | i?86-*-os2*emx )
251         PRINTABLE_OS_NAME="OS/2"
252         ;;
253     i?86-*-msdosdjgpp*)
254         PRINTABLE_OS_NAME="MSDOS/DJGPP"
255         try_dynload=no
256         ;;
257     *-linux*)
258         PRINTABLE_OS_NAME="GNU/Linux"
259         ;;
260 dnl let that after linux to avoid gnu-linux problems
261     *-gnu*)
262         PRINTABLE_OS_NAME="GNU/Hurd"
263         ;;
264     *)
265         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
266         ;;
267 esac
268 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME")
269
270 dnl  Fixme: Are these the best flags for OpenBSD????
271 dnl (I have removed the -lc from * ...CFLAGS for test purposes.)
272 case "${target}" in
273     *-openbsd*)
274         NAME_OF_DEV_RANDOM="/dev/srandom"
275         NAME_OF_DEV_URANDOM="/dev/urandom"
276         DYNLINK_MOD_CFLAGS="-shared -rdynamic $CFLAGS_PIC -Wl,-Bshareable -Wl,-x"
277         ;;
278
279     *-netbsd*)
280         NAME_OF_DEV_RANDOM="/dev/random"
281         NAME_OF_DEV_URANDOM="/dev/urandom"
282         DYNLINK_MOD_CFLAGS="-shared -rdynamic $CFLAGS_PIC -Wl,-Bshareable -Wl,-x"
283         ;;
284
285     *-solaris*)
286         NAME_OF_DEV_RANDOM="/dev/random"
287         NAME_OF_DEV_URANDOM="/dev/random"
288         DYNLINK_MOD_CFLAGS="-shared $CFLAGS_PIC"
289         ;;
290
291     *)
292         NAME_OF_DEV_RANDOM="/dev/random"
293         NAME_OF_DEV_URANDOM="/dev/urandom"
294         # -shared is a gcc-ism.  Find pic flags from GNUPG_CHECK_PIC.
295         if test -n "$GCC" ; then
296            DYNLINK_MOD_CFLAGS="-shared $CFLAGS_PIC"                            
297         else
298            DYNLINK_MOD_CFLAGS="$CFLAGS_PIC"
299         fi
300         ;;
301 esac
302 AC_DEFINE_UNQUOTED(NAME_OF_DEV_RANDOM, "$NAME_OF_DEV_RANDOM")
303 AC_DEFINE_UNQUOTED(NAME_OF_DEV_URANDOM, "$NAME_OF_DEV_URANDOM")
304 AC_SUBST(MPI_OPT_FLAGS)
305
306
307 dnl Checks for libraries.
308
309 if test "$try_gettext" = yes; then
310 AM_GNU_GETTEXT
311 else
312 USE_NLS=no
313 USE_INCLUDED_LIBINTL=no
314 AC_SUBST(USE_NLS)
315 AC_SUBST(USE_INCLUDED_LIBINTL)
316 fi
317
318 dnl Where is the GTK+ toolkit
319 if test "$cross_compiling" = yes ; then
320   CFLAGS="$CFLAGS -I/home/wk/work/gtk+w32/include/gtk+/gdk/win32 \
321  -I/home/wk/work/gtk+w32/include -I/home/wk/work/gtk+w32/include/gtk+"
322   LIBS="$LIBS     -L/home/wk/work/gtk+w32/lib -lgtk -lgdk -lglib"
323   compile_agent=no
324 else
325   AM_PATH_GTK(1.2.1, compile_agent=yes,compile_agent=no)
326 fi
327 AM_CONDITIONAL(COMPILE_AGENT, test x$compile_agent = xyes)
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 fopen64 fstat64)
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 -r "$NAME_OF_DEV_RANDOM" && test -r "$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   #define GNUPG_HOMEDIR "c:/gnupg-test"
744 #else
745   #define GNUPG_LOCALEDIR "${prefix}/${DATADIRNAME}/locale"
746   #define GNUPG_LIBDIR  "${libdir}/gnupg"
747   #define GNUPG_DATADIR "${datadir}/gnupg"
748   #ifdef __VMS
749     #define GNUPG_HOMEDIR "/SYS\$LOGIN/gnupg" 
750   #else
751     #define GNUPG_HOMEDIR "~/.gnupg-test" 
752   #endif
753 #endif
754 G10EOF
755 if cmp -s gnupg-defs.h gnupg-defs.tmp 2>/dev/null; then
756     echo "gnupg-defs.h is unchanged"
757     rm -f gnupg-defs.tmp
758 else
759     rm -f gnupg-defs.h
760     mv gnupg-defs.tmp gnupg-defs.h
761     echo "gnupg-defs.h created"
762 fi
763 ],[
764 prefix=$prefix
765 exec_prefix=$exec_prefix
766 libdir=$libdir
767 datadir=$datadir
768 DATADIRNAME=$DATADIRNAME
769 ])
770
771
772 AC_OUTPUT([
773 Makefile
774 scripts/db2html
775 intl/Makefile
776 po/Makefile.in
777 jnlib/Makefile
778 util/Makefile
779 mpi/Makefile
780 cipher/Makefile
781 g10/Makefile
782 agent/Makefile
783 doc/Makefile
784 doc/version.sgml
785 tools/Makefile
786 zlib/Makefile
787 checks/Makefile
788 gcrypt/Makefile
789 gcrypt/gcrypt-config
790 ])
791
792 dnl *-*wedit:notab*-*  Please keep this as the last line.