Changes mainly to fix automake problems
[libgcrypt.git] / configure.ac
1 dnl Configure.ac script for Libgcrypt
2 dnl Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
3 dnl
4 dnl This file is part of Libgcrypt.
5 dnl
6 dnl Libgcrypt is free software; you can redistribute it and/or modify
7 dnl it under the terms of the GNU General Public License as published by
8 dnl the Free Software Foundation; either version 2 of the License, or
9 dnl (at your option) any later version.
10 dnl 
11 dnl Libgcrypt is distributed in the hope that it will be useful,
12 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
13 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 dnl GNU General Public License for more details.
15 dnl 
16 dnl You should have received a copy of the GNU General Public License
17 dnl along with this program; if not, write to the Free Software
18 dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19 dnl
20 dnl (Process this file with autoconf to produce a configure script.)
21 AC_REVISION($Revision$)dnl
22
23 AC_PREREQ(2.52)
24 # Version numbers (Remember to change them just before a release)
25 #   (Interfaces removed:    CURRENT++, AGE=0, REVISION=0)
26 #   (Interfaces added:      CURRENT++, AGE++, REVISION=0)
27 #   (No interfaces changed:                   REVISION++)
28 AC_INIT(libgcrypt,1.1.4b-cvs)
29 LIBGCRYPT_LT_CURRENT=2
30 LIBGCRYPT_LT_AGE=1
31 LIBGCRYPT_LT_REVISION=1
32 #-----------------------
33
34 PACKAGE=$PACKAGE_NAME
35 VERSION=$PACKAGE_VERSION
36
37 AC_CONFIG_SRCDIR([src/gcrypt.h])
38 AC_CONFIG_AUX_DIR(scripts)
39 AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
40 AM_CONFIG_HEADER(config.h)
41
42 AH_TOP([
43 /* need this, because some autoconf tests rely on this (e.g. stpcpy)
44  * and it should be used for new programs  */
45 #define _GNU_SOURCE  1
46 ])
47
48 AH_BOTTOM([
49 #include "gcrypt-defs.h"
50 #define _GCRYPT_IN_LIBGCRYPT 1
51 ])
52
53
54
55
56 AC_SUBST(LIBGCRYPT_LT_CURRENT)
57 AC_SUBST(LIBGCRYPT_LT_AGE)
58 AC_SUBST(LIBGCRYPT_LT_REVISION)
59 AC_SUBST(PACKAGE)
60 AC_SUBST(VERSION)
61 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
62 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
63
64
65 # ALL_LINGUAS="da de eo es_ES fr id it ja nl pl pt_BR pt_PT ru sv"
66 static_modules="sha1 md5 rmd160"
67 static_random_module=""
68
69 AC_PROG_AWK
70
71 MODULES_IN_CIPHER=`$AWK '/^EXTRA_PROGRAMS/ { for(i=3;i<=NF;i++) print $i}' \
72                                               $srcdir/cipher/Makefile.am`
73
74 dnl
75 dnl  Check for random module options
76 dnl
77 dnl  Fixme: get the list of available modules from MODULES_IN_CIPHER
78 dnl         and check against this list
79
80 AC_MSG_CHECKING([which static random module to use])
81 AC_ARG_ENABLE(static-rnd,
82     [  --enable-static-rnd=[egd|unix|linux|none]  ],
83 [use_static_rnd=$enableval], [use_static_rnd=default] )
84
85 if test "$use_static_rnd" = no; then
86     use_static_rnd=default
87 fi
88
89 case "$use_static_rnd" in
90     egd | linux | unix | none | default )
91       AC_MSG_RESULT($use_static_rnd)
92       ;;
93     * )
94       AC_MSG_RESULT(invalid argument)
95       AC_MSG_ERROR(there is no random module rnd$use_static_rnd)
96       ;;
97 esac
98
99 AC_ARG_WITH(egd-socket,
100     [  --with-egd-socket=NAME  Use NAME for the EGD socket)],
101             egd_socket_name="$withval", egd_socket_name="" )
102 AC_DEFINE_UNQUOTED(EGD_SOCKET_NAME, "$egd_socket_name",
103                    [Define if you don't want the default EGD socket name.
104                     For details see cipher/rndegd.c])
105
106
107
108 dnl
109 dnl See whether the user wants to disable checking for /dev/random
110
111 AC_MSG_CHECKING([whether use of /dev/random is requested])
112 AC_ARG_ENABLE(dev-random,
113 [  --disable-dev-random    disable the use of dev random],
114     try_dev_random=$enableval, try_dev_random=yes)
115 AC_MSG_RESULT($try_dev_random)
116
117
118 dnl
119 dnl  Check other options
120 dnl
121
122 AC_MSG_CHECKING([whether use of extensions is requested])
123 AC_ARG_ENABLE(dynload,
124 [  --disable-dynload       disable use of extensions],
125     try_dynload=$enableval, try_dynload=yes)
126 AC_MSG_RESULT($try_dynload)
127
128 AC_MSG_CHECKING([whether assembler modules are requested])
129 AC_ARG_ENABLE(asm,
130 [  --disable-asm           do not use assembler modules],
131      try_asm_modules=$enableval, try_asm_modules=yes)
132 AC_MSG_RESULT($try_asm_modules)
133
134 AC_MSG_CHECKING([whether memory guard is requested])
135 AC_ARG_ENABLE(m-guard,
136     [  --enable-m-guard        enable memory guard facility],
137     use_m_guard=$enableval, use_m_guard=no)
138     AC_MSG_RESULT($use_m_guard)
139 if test "$use_m_guard" = yes ; then
140     AC_DEFINE(M_GUARD,1,[Define to use the (obsolete) malloc guarding feature])
141 fi
142
143 dnl
144 dnl Check whether we want to use Linux capabilities
145 dnl
146 AC_MSG_CHECKING([whether use of capabilities is requested])
147 AC_ARG_WITH(capabilities,
148     [  --with-capabilities     use linux capabilities [default=no]],
149 [use_capabilities="$withval"],[use_capabilities=no])
150 AC_MSG_RESULT($use_capabilities)
151
152
153 AM_MAINTAINER_MODE
154
155 dnl Checks for programs.
156
157 dnl
158 dnl Setup some stuff depending on host/target.
159 dnl
160 case "${target}" in
161     *-*-mingw32*)
162         # special stuff for Windoze NT
163         disallowed_modules="rndunix rndlinux rndegd"
164         ;;
165     *)
166         disallowed_modules="rndw32"
167        ;;
168 esac
169
170 AC_PROG_MAKE_SET
171 AM_SANITY_CHECK
172 missing_dir=`cd $ac_aux_dir && pwd`
173 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
174 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
175 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
176 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
177 dnl AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
178 AC_PROG_CC
179 AC_PROG_CPP
180 AC_ISC_POSIX
181 AC_PROG_INSTALL
182 AC_PROG_AWK
183 GPH_PROG_DB2ANY
184
185 AM_DISABLE_STATIC
186 AM_PROG_LIBTOOL
187
188
189 MPI_OPT_FLAGS=""
190
191
192 try_gettext=no
193 case "${target}" in
194     *-*-mingw32*)
195         # special stuff for Windoze NT
196         ac_cv_have_dev_random=no
197         AC_DEFINE(USE_ONLY_8DOT3,1,
198                   [set this to limit filenames to the 8.3 format])
199         AC_DEFINE(HAVE_DRIVE_LETTERS,1,
200                   [defined if we must run on a stupid file system])
201         AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
202                   [defined if we run on some of the PCDOS like systems 
203                    (DOS, Windoze. OS/2) with special properties like
204                     no file modes])
205         try_gettext="no"
206         ;;
207     i?86-emx-os2 | i?86-*-os2*emx )
208         # OS/2 with the EMX environment
209         ac_cv_have_dev_random=no
210         AC_DEFINE(HAVE_DRIVE_LETTERS)
211         AC_DEFINE(HAVE_DOSISH_SYSTEM)
212         try_gettext="no"
213         ;;
214
215     i?86-*-msdosdjgpp*)
216         # DOS with the DJGPP environment
217         ac_cv_have_dev_random=no
218         AC_DEFINE(HAVE_DRIVE_LETTERS)
219         AC_DEFINE(HAVE_DOSISH_SYSTEM)
220         try_gettext="no"
221         ;;
222
223     *-*-freebsd*)
224        # FreeBSD
225        CPPFLAGS="$CPPFLAGS -I/usr/local/include"
226        LDFLAGS="$LDFLAGS -L/usr/local/lib"
227        ;;
228
229     *-*-hpux*)
230         if test -z "$GCC" ; then
231             CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE"
232         fi
233         ;;
234     *-dec-osf4*)
235         if test -z "$GCC" ; then
236             # Suppress all warnings
237             # to get rid of the unsigned/signed char mismatch warnings.
238             CFLAGS="$CFLAGS -w"
239         fi
240         ;;
241     m68k-atari-mint)
242         ;;
243     *)
244        ;;
245 esac
246
247 AC_SUBST(MPI_OPT_FLAGS)
248 GNUPG_SYS_SYMBOL_UNDERSCORE
249 GNUPG_CHECK_PIC
250 GNUPG_CHECK_EXPORTDYNAMIC
251 if test "$NO_PIC" = yes; then
252     try_dynload=no
253 fi
254
255
256 case "${target}" in
257     *-*-mingw32*)
258         PRINTABLE_OS_NAME="MingW32"
259         ;;
260     i?86-emx-os2 | i?86-*-os2*emx )
261         PRINTABLE_OS_NAME="OS/2"
262         ;;
263     i?86-*-msdosdjgpp*)
264         PRINTABLE_OS_NAME="MSDOS/DJGPP"
265         try_dynload=no
266         ;;
267     *-linux*)
268         PRINTABLE_OS_NAME="GNU/Linux"
269         ;;
270 dnl let that after linux to avoid gnu-linux problems
271     *-gnu*)
272         PRINTABLE_OS_NAME="GNU/Hurd"
273         ;;
274     *)
275         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
276         ;;
277 esac
278 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
279                    [A human readable text with the name of the OS])
280
281 dnl  Fixme: Are these the best flags for OpenBSD????
282 case "${target}" in
283     *-openbsd* | *-netbsd*)
284         NAME_OF_DEV_RANDOM="/dev/srandom"
285         NAME_OF_DEV_URANDOM="/dev/urandom"
286         DYNLINK_MOD_CFLAGS="-shared -rdynamic $CFLAGS_PIC -Wl,-Bshareable -Wl,-x"
287         ;;
288
289     *-solaris* | *-irix* | *-dec-osf* )
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                    [defined to the name of the strong random device])
308 AC_DEFINE_UNQUOTED(NAME_OF_DEV_URANDOM, "$NAME_OF_DEV_URANDOM",
309                    [defined to the name of the weaker random device])
310 AC_SUBST(MPI_OPT_FLAGS)
311
312
313 dnl Checks for libraries.
314
315 USE_NLS=no
316 USE_INCLUDED_LIBINTL=no
317 AC_SUBST(USE_NLS)
318 AC_SUBST(USE_INCLUDED_LIBINTL)
319
320
321 dnl Solaris needs -lsocket and -lnsl. Unisys system includes
322 dnl gethostbyname in libsocket but needs libnsl for socket.
323 AC_CHECK_LIB(nsl, gethostbyname)
324 AC_CHECK_LIB(socket, socket, ac_need_libsocket=1, ac_try_nsl=1)
325 if test x$ac_need_libsocket = x1; then
326     LIBS="$LIBS -lsocket"
327 fi
328 if test x$ac_try_nsl = x1; then
329     AC_CHECK_LIB(nsl, gethostbyname, ac_need_libnsl=1)
330     if test x$ac_need_libnsl = x1
331     then
332         LIBS="$LIBS -lnsl"
333     fi
334 fi
335
336
337 if test "$try_dynload" = yes ; then
338   AC_CHECK_LIB(dl,dlopen)
339   if test "$ac_cv_lib_dl_dlopen" = "yes"; then
340     AC_DEFINE(USE_DYNAMIC_LINKING,1,
341               [define to enable the use of extensions])
342     AC_DEFINE(HAVE_DL_DLOPEN,1,
343               [Defined when the dlopen function family is available])
344     DYNLINK_LDFLAGS="$CFLAGS_EXPORTDYNAMIC"
345     use_gnupg_extensions=yes
346   else
347     AC_CHECK_FUNCS(dlopen)
348     if test "$ac_cv_func_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_LIB(dld,shl_load)
355       if test "$ac_cv_lib_dld_shl_load" = "yes"; then
356         AC_DEFINE(USE_DYNAMIC_LINKING)
357         AC_DEFINE(HAVE_DL_SHL_LOAD,1,
358                   [Defined if the shl_load function family is available])
359         DYNLINK_LDFLAGS="$CFLAGS_EXPORTDYNAMIC"
360         use_gnupg_extensions=yes
361 dnl -----------------
362 dnl  DLD is not ready for use. So I better disable this test
363 dnl
364 dnl    AC_CHECK_LIB(dld,dld_link)
365 dnl    if test "$ac_cv_lib_dld_dld_link" = "yes"; then
366 dnl      AC_DEFINE(USE_DYNAMIC_LINKING)
367 dnl      AC_DEFINE(HAVE_DLD_DLD_LINK)
368 dnl      DYNLINK_LDFLAGS="$CFLAGS_EXPORTDYNAMIC"
369 dnl      use_gnupg_extensions=yes
370 dnl ---------------
371       fi
372     fi
373   fi
374 else
375   AC_MSG_CHECKING(for dynamic loading)
376   DYNLINK_LDFLAGS=
377   DYNLINK_MOD_CFLAGS=
378   use_gnupg_extensions=no
379   AC_MSG_RESULT(has been disabled)
380 fi
381
382 AM_CONDITIONAL(ENABLE_GNUPG_EXTENSIONS, test "$use_gnupg_extensions" = yes )
383 AC_SUBST(DYNLINK_LDFLAGS)
384 AC_SUBST(DYNLINK_MOD_CFLAGS)
385
386
387 dnl Checks for header files.
388 AC_HEADER_STDC
389 AC_CHECK_HEADERS(unistd.h langinfo.h termio.h)
390
391
392 dnl Checks for typedefs, structures, and compiler characteristics.
393 AC_C_CONST
394 AC_C_INLINE
395 AC_TYPE_SIZE_T
396 AC_TYPE_SIGNAL
397 AC_DECL_SYS_SIGLIST
398
399 GNUPG_CHECK_ENDIAN
400
401
402 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
403 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
404 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
405 GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
406 GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
407
408 AC_CHECK_SIZEOF(unsigned short, 2)
409 AC_CHECK_SIZEOF(unsigned int, 4)
410 AC_CHECK_SIZEOF(unsigned long, 4)
411 AC_CHECK_SIZEOF(unsigned long long, 0)
412
413 if test "$ac_cv_sizeof_unsigned_short" = "0" \
414    || test "$ac_cv_sizeof_unsigned_int" = "0" \
415    || test "$ac_cv_sizeof_unsigned_long" = "0"; then
416     AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
417 fi
418
419
420
421 dnl Checks for library functions.
422 AC_FUNC_VPRINTF
423 AC_CHECK_FUNCS(strerror stpcpy strlwr stricmp tcgetattr rand strtoul mmap)
424 AC_CHECK_FUNCS(memmove gettimeofday getrusage gethrtime setrlimit clock_gettime)
425 AC_CHECK_FUNCS(memicmp atexit raise getpagesize strftime nl_langinfo)
426 AC_CHECK_FUNCS(waitpid wait4 sigaction sigprocmask fopen64 fstat64)
427
428 GNUPG_CHECK_MLOCK
429 GNUPG_FUNC_MKDIR_TAKES_ONE_ARG
430
431 dnl
432 dnl Check whether we can use Linux capabilities as requested
433 dnl
434 if test "$use_capabilities" = "yes" ; then
435 use_capabilities=no
436 AC_CHECK_HEADERS(sys/capability.h)
437 if test "$ac_cv_header_sys_capability_h" = "yes" ; then
438   AC_CHECK_LIB(cap, cap_init, ac_need_libcap=1)
439   if test "$ac_cv_lib_cap_cap_init" = "yes"; then
440      AC_DEFINE(USE_CAPABILITIES,1,
441                [define if capabilities should be used])
442      LIBS="$LIBS -lcap"
443      use_capabilities=yes
444   fi
445 fi
446 if test "$use_capabilities" = "no" ; then
447     AC_MSG_WARN([[
448 ***
449 *** The use of capabilities on this system is not possible.
450 *** You need a recent Linux kernel and some patches:
451 ***   fcaps-2.2.9-990610.patch      (kernel patch for 2.2.9)
452 ***   fcap-module-990613.tar.gz     (kernel module)
453 ***   libcap-1.92.tar.gz            (user mode library and utilities)
454 *** And you have to configure the kernel with CONFIG_VFS_CAP_PLUGIN
455 *** set (filesystems menu). Be warned: This code is *really* ALPHA.
456 ***]])
457 fi
458 fi
459
460
461 GNUPG_CHECK_IPC
462 if test "$ac_cv_header_sys_shm_h" = "yes"; then
463   AC_DEFINE(USE_SHM_COPROCESSING,1,
464             [define if the shared memory interface should be made available])
465 fi
466
467 dnl
468 dnl check whether we have a random device
469 dnl
470 if test "$try_dev_random" = yes ; then
471     AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
472     [if test -r "$NAME_OF_DEV_RANDOM" && test -r "$NAME_OF_DEV_URANDOM" ; then
473       ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
474     if test "$ac_cv_have_dev_random" = yes; then
475         AC_DEFINE(HAVE_DEV_RANDOM,1,
476                  [defined if the system supports a random device] )
477     fi
478 else
479     AC_MSG_CHECKING(for random device)
480     ac_cv_have_dev_random=no
481     AC_MSG_RESULT(has been disabled)
482 fi
483
484 dnl
485 dnl and whether this device supports ioctl
486 dnl (Note, that we should do a real test here)
487 dnl
488 if test "$ac_cv_have_dev_random" = yes ; then
489     AC_CHECK_HEADERS(linux/random.h)
490     AC_CACHE_CHECK(for random device ioctl, ac_cv_have_dev_random_ioctl,
491       [ if test "$ac_cv_header_linux_random_h" = yes ; then
492           ac_cv_have_dev_random_ioctl=yes;
493         else
494           ac_cv_have_dev_random_ioctl=no;
495         fi
496       ])
497     if test "$ac_cv_have_dev_random_ioctl" = yes; then
498         AC_DEFINE(HAVE_DEV_RANDOM_IOCTL,1,
499                   [defined if the random device supports some IOCTLs])
500     fi
501 fi
502
503
504 dnl
505 dnl Figure out the default linkage mode for cipher modules
506 dnl
507 print_egd_notice=no
508 if test "$use_static_rnd" = default; then
509   if test "$ac_cv_have_dev_random" = yes; then
510       static_random_module="rndlinux"
511   else
512       case "${target}" in
513           *-*-mingw32*)
514               static_random_module="rndw32"
515               AC_DEFINE(USE_STATIC_RNDW32,1,
516                        [At a certain point in the code we need to know that
517                         we use the Windows random module.])
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
597 dnl        dnl Very ugly way to do this, but I don't knwo how to
598 dnl        dnl cope with AC_SUBST otherwise
599 dnl        case "$name" in
600 dnl          tiger)
601 dnl            AM_CONDITIONAL(BUILD_MODULE_TIGER,   [test $x = no])
602 dnl            ;;                                   
603 dnl          twofish)                               
604 dnl            AM_CONDITIONAL(BUILD_MODULE_TWOFISH, [test $x = no])
605 dnl            ;;                                   
606 dnl          rndunix)                               
607 dnl            AM_CONDITIONAL(BUILD_MODULE_RNDUNIX, [test $x = no])
608 dnl            ;;                                   
609 dnl          rndlinux)                              
610 dnl            AM_CONDITIONAL(BUILD_MODULE_RNDLINUX,[test $x = no])
611 dnl            ;;                                   
612 dnl          rndegd)                                
613 dnl            AM_CONDITIONAL(BUILD_MODULE_RNDEGD,  [test $x = no])
614 dnl            ;;
615 dnl          *)
616 dnl            ;;
617 dnl        esac
618     fi
619 done
620 AC_MSG_RESULT()
621 AC_SUBST(STATIC_CIPHER_OBJS)
622 AC_SUBST(STATIC_CIPHER_NAMES)
623 AC_SUBST(DYNAMIC_CIPHER_MODS)
624
625
626 dnl
627 dnl And build the constructor file
628 dnl
629
630 test -d cipher || mkdir cipher
631 cat <<G10EOF >cipher/construct.c
632 /* automatically generated by configure - do not edit */
633
634 G10EOF
635 GNUPG_MSG_PRINT([statically linked cipher modules:])
636 for name in $STATIC_CIPHER_NAMES; do
637     echo "void _gcry_${name}_constructor(void);" >>cipher/construct.c
638     GNUPG_MSG_PRINT([$name])
639 done
640 AC_MSG_RESULT()
641 cat <<G10EOF >>cipher/construct.c
642
643 void
644 _gcry_cipher_modules_constructor(void)
645 {
646     static int done = 0;
647     if( done )
648         return;
649     done = 1;
650
651 G10EOF
652 for name in $STATIC_CIPHER_NAMES; do
653     echo "   _gcry_${name}_constructor();" >>cipher/construct.c
654 done
655 echo '}' >>cipher/construct.c
656
657
658
659
660 dnl
661 dnl Figure how to link the cipher modules
662 dnl
663 AC_SUBST(STATIC_CIPHER_OBJS)
664 AC_SUBST(DYNAMIC_CIPHER_MODS)
665
666 #
667 # setup assembler stuff
668 #
669 AC_MSG_CHECKING(for mpi assembler functions)
670 if test -f $srcdir/mpi/config.links ; then
671     . $srcdir/mpi/config.links
672     AC_CONFIG_LINKS("$mpi_ln_list")
673     ac_cv_mpi_extra_asm_modules="$mpi_extra_modules"
674     ac_cv_mpi_sflags="$mpi_sflags"
675     ac_cv_mpi_config_done="yes"
676     AC_MSG_RESULT(done)
677 else
678     AC_MSG_RESULT(failed)
679     AC_MSG_ERROR([mpi/config.links missing!])
680 fi
681 MPI_EXTRA_ASM_OBJS=""
682 show_extraasm=""
683 if test "$ac_cv_mpi_extra_asm_modules" != ""; then
684 for i in $ac_cv_mpi_extra_asm_modules; do
685     show_extraasm="$show_extraasm $i"
686     MPI_EXTRA_ASM_OBJS="$MPI_EXTRA_ASM_OBJS $i.o"
687 done
688 fi
689 AC_SUBST(MPI_EXTRA_ASM_OBJS)
690 MPI_SFLAGS="$ac_cv_mpi_sflags"
691 AC_SUBST(MPI_SFLAGS)
692
693
694 # Allow users to append something to the version string without
695 # flagging it as development version.  The user version part is
696 # considered everything after a dash.
697 changequote(,)dnl
698 tmp_pat='[a-zA-Z]'
699 changequote([,])dnl
700 if echo "$VERSION" | sed 's/-.*//' | grep "$tmp_pat" >/dev/null ; then
701     AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
702               [Defined if this is not a regular release])
703 fi
704
705 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
706
707 GNUPG_CHECK_GNUMAKE
708
709 if test "$GCC" = yes; then
710     if test "$MAINTAINER_MODE" = "yes"; then
711         CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
712     else
713         CFLAGS="$CFLAGS -Wall"
714     fi
715 fi
716
717 dnl
718 dnl Make the version number in src/gcrypt.h the same as the one here.
719 dnl (this is easier than to have a *.in file just for one substitution)
720 dnl
721 GNUPG_FIX_HDR_VERSION([src/gcrypt.h], GCRYPT_VERSION)
722
723 LIBGCRYPT_LIBS="-L${libdir} -lgcrypt"
724 LIBGCRYPT_CFLAGS=""
725 AC_SUBST(LIBGCRYPT_LIBS)
726 AC_SUBST(LIBGCRYPT_CFLAGS)
727
728 AC_CONFIG_COMMANDS([gcrypt-defs],[[
729 chmod +x scripts/db2any
730 chmod +x src/libgcrypt-config
731 cat >gcrypt-defs.tmp <<G10EOF
732 /* Generated automatically by configure */
733 #ifdef HAVE_DRIVE_LETTERS
734   #define GNUPG_LOCALEDIR "c:/lib/gnupg/locale"
735   #define GNUPG_LIBDIR  "c:/lib/gnupg"
736   #define GNUPG_DATADIR "c:/lib/gnupg"
737   #define GNUPG_HOMEDIR "c:/gnupg-test"
738 #else
739   #define GNUPG_LOCALEDIR "${prefix}/${DATADIRNAME}/locale"
740   #define GNUPG_LIBDIR  "${libdir}/gnupg"
741   #define GNUPG_DATADIR "${datadir}/gnupg"
742   #ifdef __VMS
743     #define GNUPG_HOMEDIR "/SYS\$LOGIN/gnupg" 
744   #else
745     #define GNUPG_HOMEDIR "~/.gnupg-test" 
746   #endif
747 #endif
748 G10EOF
749 if cmp -s gcrypt-defs.h gcrypt-defs.tmp 2>/dev/null; then
750     echo "gcrypt-defs.h is unchanged"
751     rm -f gcrypt-defs.tmp
752 else
753     rm -f gcrypt-defs.h
754     mv gcrypt-defs.tmp gcrypt-defs.h
755     echo "gcrypt-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_CONFIG_FILES([
767 Makefile
768 jnlib/Makefile
769 mpi/Makefile
770 cipher/Makefile
771 doc/Makefile
772 doc/version.sgml
773 src/Makefile
774 src/libgcrypt-config
775 tests/Makefile
776 ])
777 AC_OUTPUT
778