Add the DragonFly cvs id and perform general cleanups on cvs/rcs/sccs ids. Most
[dragonfly.git] / crypto / heimdal / cf / crypto.m4
1 dnl $Id: crypto.m4,v 1.13 2002/09/10 19:55:48 joda Exp $
2 dnl
3 dnl test for crypto libraries:
4 dnl - libcrypto (from openssl)
5 dnl - libdes (from krb4)
6 dnl - own-built libdes
7
8 m4_define([test_headers], [
9                 #undef KRB5 /* makes md4.h et al unhappy */
10                 #ifdef HAVE_OPENSSL
11                 #include <openssl/md4.h>
12                 #include <openssl/md5.h>
13                 #include <openssl/sha.h>
14                 #include <openssl/des.h>
15                 #include <openssl/rc4.h>
16                 #else
17                 #include <md4.h>
18                 #include <md5.h>
19                 #include <sha.h>
20                 #include <des.h>
21                 #include <rc4.h>
22                 #endif
23                 #ifdef OLD_HASH_NAMES
24                 typedef struct md4 MD4_CTX;
25                 #define MD4_Init(C) md4_init((C))
26                 #define MD4_Update(C, D, L) md4_update((C), (D), (L))
27                 #define MD4_Final(D, C) md4_finito((C), (D))
28                 typedef struct md5 MD5_CTX;
29                 #define MD5_Init(C) md5_init((C))
30                 #define MD5_Update(C, D, L) md5_update((C), (D), (L))
31                 #define MD5_Final(D, C) md5_finito((C), (D))
32                 typedef struct sha SHA_CTX;
33                 #define SHA1_Init(C) sha_init((C))
34                 #define SHA1_Update(C, D, L) sha_update((C), (D), (L))
35                 #define SHA1_Final(D, C) sha_finito((C), (D))
36                 #endif
37                 ])
38 m4_define([test_body], [
39                 void *schedule = 0;
40                 MD4_CTX md4;
41                 MD5_CTX md5;
42                 SHA_CTX sha1;
43
44                 MD4_Init(&md4);
45                 MD5_Init(&md5);
46                 SHA1_Init(&sha1);
47
48                 des_cbc_encrypt(0, 0, 0, schedule, 0, 0);
49                 RC4(0, 0, 0, 0);])
50
51
52 AC_DEFUN([KRB_CRYPTO],[
53 crypto_lib=unknown
54 AC_WITH_ALL([openssl])
55
56 DIR_des=
57
58 AC_MSG_CHECKING([for crypto library])
59
60 openssl=no
61 old_hash=no
62
63 if test "$crypto_lib" = "unknown" -a "$with_krb4" != "no"; then
64         save_CPPFLAGS="$CPPFLAGS"
65         save_LIBS="$LIBS"
66
67         cdirs= clibs=
68         for i in $LIB_krb4; do
69                 case "$i" in
70                 -L*) cdirs="$cdirs $i";;
71                 -l*) clibs="$clibs $i";;
72                 esac
73         done
74
75         ires=
76         for i in $INCLUDE_krb4; do
77                 CFLAGS="-DHAVE_OPENSSL $i $save_CFLAGS"
78                 AC_TRY_COMPILE(test_headers, test_body,
79                         openssl=yes ires="$i"; break)
80                 CFLAGS="$i $save_CFLAGS"
81                 AC_TRY_COMPILE(test_headers, test_body,
82                         openssl=no ires="$i"; break)
83                 CFLAGS="-DOLD_HASH_NAMES $i $save_CFLAGS"
84                 AC_TRY_COMPILE(test_headers, test_body,
85                         openssl=no ires="$i" old_hash=yes; break)
86         done
87         lres=
88         for i in $cdirs; do
89                 for j in $clibs; do
90                         LIBS="$i $j $save_LIBS"
91                         AC_TRY_LINK(test_headers, test_body,
92                                 lres="$i $j"; break 2)
93                 done
94         done
95         CFLAGS="$save_CFLAGS"
96         LIBS="$save_LIBS"
97         if test "$ires" -a "$lres"; then
98                 INCLUDE_des="$ires"
99                 LIB_des="$lres"
100                 crypto_lib=krb4
101                 AC_MSG_RESULT([same as krb4])
102                 LIB_des_a='$(LIB_des)'
103                 LIB_des_so='$(LIB_des)'
104                 LIB_des_appl='$(LIB_des)'
105         fi
106 fi
107
108 if test "$crypto_lib" = "unknown" -a "$with_openssl" != "no"; then
109         save_CFLAGS="$CFLAGS"
110         save_LIBS="$LIBS"
111         INCLUDE_des=
112         LIB_des=
113         if test "$with_openssl_include" != ""; then
114                 INCLUDE_des="-I${with_openssl}/include"
115         fi
116         if test "$with_openssl_lib" != ""; then
117                 LIB_des="-L${with_openssl}/lib"
118         fi
119         CFLAGS="-DHAVE_OPENSSL ${INCLUDE_des} ${CFLAGS}"
120         LIB_des="${LIB_des} -lcrypto"
121         LIB_des_a="$LIB_des"
122         LIB_des_so="$LIB_des"
123         LIB_des_appl="$LIB_des"
124         LIBS="${LIBS} ${LIB_des}"
125         AC_TRY_LINK(test_headers, test_body, [
126                 crypto_lib=libcrypto openssl=yes
127                 AC_MSG_RESULT([libcrypto])
128         ])
129         CFLAGS="$save_CFLAGS"
130         LIBS="$save_LIBS"
131 fi
132
133 if test "$crypto_lib" = "unknown"; then
134
135   DIR_des='des'
136   LIB_des='$(top_builddir)/lib/des/libdes.la'
137   LIB_des_a='$(top_builddir)/lib/des/.libs/libdes.a'
138   LIB_des_so='$(top_builddir)/lib/des/.libs/libdes.so'
139   LIB_des_appl="-ldes"
140
141   AC_MSG_RESULT([included libdes])
142
143 fi
144
145 if test "$with_krb4" != no -a "$crypto_lib" != krb4; then
146         AC_MSG_ERROR([the crypto library used by krb4 lacks features
147 required by Kerberos 5; to continue, you need to install a newer 
148 Kerberos 4 or configure --without-krb4])
149 fi
150
151 if test "$openssl" = "yes"; then
152   AC_DEFINE([HAVE_OPENSSL], 1, [define to use openssl's libcrypto])
153 fi
154 if test "$old_hash" = yes; then
155   AC_DEFINE([HAVE_OLD_HASH_NAMES], 1,
156                 [define if you have hash functions like md4_finito()])
157 fi
158 AM_CONDITIONAL(HAVE_OPENSSL, test "$openssl" = yes)dnl
159
160 AC_SUBST(DIR_des)
161 AC_SUBST(INCLUDE_des)
162 AC_SUBST(LIB_des)
163 AC_SUBST(LIB_des_a)
164 AC_SUBST(LIB_des_so)
165 AC_SUBST(LIB_des_appl)
166 ])