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