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