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