Split parts of the gc module into gc-md5 and gc-hmac-md5 modules.
[gnulib.git] / m4 / gc.m4
1 # gc.m4 serial 1
2 dnl Copyright (C) 2005 Free Software Foundation, Inc.
3 dnl This file is free software; the Free Software Foundation
4 dnl gives unlimited permission to copy and/or distribute it,
5 dnl with or without modifications, as long as this notice is preserved.
6
7 AC_DEFUN([gl_GC],
8 [
9   AC_LIBSOURCES([gc.h, gc-gnulib.c, gc-libgcrypt.c])
10   AC_ARG_WITH(libgcrypt,
11     AS_HELP_STRING([--with-libgcrypt], [use libgcrypt for low-level crypto]),
12     libgcrypt=$withval, libgcrypt=no)
13   if test "$libgcrypt" != no; then
14     AC_LIB_HAVE_LINKFLAGS([gcrypt])
15   fi
16   if test "$ac_cv_libgcrypt" = yes; then
17     AC_CHECK_HEADER(gcrypt.h)
18     AC_LIBOBJ([gc-libgcrypt])
19   else
20     AC_LIBOBJ([gc-gnulib])
21
22     # Devices with randomness.
23     # FIXME: Are these the best defaults?
24
25     case "${target}" in
26       *-openbsd*)
27         NAME_OF_RANDOM_DEVICE="/dev/srandom"
28         NAME_OF_PSEUDO_RANDOM_DEVICE="/dev/prandom"
29         NAME_OF_NONCE_DEVICE="/dev/urandom"
30           ;;
31   
32       *-netbsd*)
33         NAME_OF_RANDOM_DEVICE="/dev/srandom"
34         NAME_OF_PSEUDO_RANDOM_DEVICE="/dev/urandom"
35         NAME_OF_NONCE_DEVICE="/dev/urandom"
36           ;;
37   
38       *-solaris* | *-irix* | *-dec-osf* )
39         NAME_OF_RANDOM_DEVICE="/dev/random"
40         NAME_OF_PSEUDO_RANDOM_DEVICE="/dev/random"
41         NAME_OF_NONCE_DEVICE="/dev/random"
42           ;;
43   
44       *)
45         NAME_OF_RANDOM_DEVICE="/dev/random"
46         NAME_OF_PSEUDO_RANDOM_DEVICE="/dev/urandom"
47         NAME_OF_NONCE_DEVICE="/dev/urandom"
48           ;;
49     esac
50   
51     AC_MSG_CHECKING([device with (strong) random data...])
52     AC_ARG_ENABLE(random-device,
53         AC_HELP_STRING([--enable-random-device],
54                 [device with (strong) randomness (for Nettle)]),
55         NAME_OF_RANDOM_DEVICE=$enableval)
56     AC_MSG_RESULT($NAME_OF_RANDOM_DEVICE)
57   
58     AC_MSG_CHECKING([device with pseudo random data...])
59     AC_ARG_ENABLE(pseudo-random-device,
60         AC_HELP_STRING([--enable-pseudo-random-device],
61                 [device with pseudo randomness (for Nettle)]),
62         NAME_OF_PSEUDO_RANDOM_DEVICE=$enableval)
63     AC_MSG_RESULT($NAME_OF_PSEUDO_RANDOM_DEVICE)
64   
65     AC_MSG_CHECKING([device with unpredictable data for nonces...])
66     AC_ARG_ENABLE(nonce-device,
67         AC_HELP_STRING([--enable-nonce-device],
68                 [device with unpredictable nonces (for Nettle)]),
69         NAME_OF_NONCE_DEVICE=$enableval)
70     AC_MSG_RESULT($NAME_OF_NONCE_DEVICE)
71   
72     if test "$cross_compiling" != yes; then
73       AC_CHECK_FILE($NAME_OF_RANDOM_DEVICE,, AC_MSG_ERROR([[
74         *** Device for (strong) random data $NAME_OF_RANDOM_DEVICE does not exist
75       ]]))
76       AC_CHECK_FILE($NAME_OF_PSEUDO_RANDOM_DEVICE,, AC_MSG_ERROR([[
77         *** Device for pseudo-random data $NAME_OF_PSEUDO_RANDOM_DEVICE does not exist
78       ]]))
79       AC_CHECK_FILE($NAME_OF_NONCE_DEVICE,, AC_MSG_ERROR([[
80         *** Device for unpredictable nonces $NAME_OF_NONCE_DEVICE does not exist
81       ]]))
82     else
83       AC_MSG_NOTICE([[Cross compiling, assuming random devices exists...]])  
84     fi
85   
86     # FIXME: Open+read 42 bytes+close twice and compare data.  Should differ.
87   
88     AC_DEFINE_UNQUOTED(NAME_OF_RANDOM_DEVICE, "$NAME_OF_RANDOM_DEVICE",
89                      [defined to the name of the (strong) random device])
90     AC_DEFINE_UNQUOTED(NAME_OF_PSEUDO_RANDOM_DEVICE,
91                          "$NAME_OF_PSEUDO_RANDOM_DEVICE",
92                      [defined to the name of the pseudo random device])
93     AC_DEFINE_UNQUOTED(NAME_OF_NONCE_DEVICE, "$NAME_OF_NONCE_DEVICE",
94                      [defined to the name of the unpredictable nonce device])
95   fi
96 ])
97
98 # Prerequisites of lib/gc.h
99 AC_DEFUN([gl_PREREQ_GC], [:])