GSS_S_PROMPTING_NEEDED is a bit
[cyrus-sasl.git] / cmulocal / heimdal.m4
1 dnl kerberos_v5.m4--Kerberos 5 libraries and includes
2 dnl Derrick Brashear
3 dnl from KTH krb and Arla
4 dnl $Id: heimdal.m4,v 1.9 2005/04/26 19:14:07 shadow Exp $
5
6 AC_DEFUN([CMU_LIBHEIMDAL_INC_WHERE1], [
7 saved_CPPFLAGS=$CPPFLAGS
8 CPPFLAGS="$saved_CPPFLAGS -I$1"
9 AC_TRY_COMPILE([#include <krb5.h>],
10 [krb5_keyblock foo;],
11 ac_cv_found_libheimdal_inc=yes,
12 ac_cv_found_libheimdal_inc=no)
13 CPPFLAGS=$saved_CPPFLAGS
14 ])
15
16 AC_DEFUN([CMU_LIBHEIMDAL_INC_WHERE], [
17    for i in $1; do
18       AC_MSG_CHECKING(for heimdal headers in $i)
19       CMU_LIBHEIMDAL_INC_WHERE1($i)
20       CMU_TEST_INCPATH($i, krb5)
21       if test "$ac_cv_found_libheimdal_inc" = "yes"; then
22         ac_cv_libheimdal_where_inc=$i
23         AC_MSG_RESULT(found)
24         break
25       else
26         AC_MSG_RESULT(not found)
27       fi
28     done
29 ])
30
31 #
32 # Test for kerberos lib files
33 #
34
35 AC_DEFUN([CMU_LIBHEIMDAL_LIB_WHERE1], [
36 AC_REQUIRE([CMU_SOCKETS])
37 saved_LIBS=$LIBS
38 LIBS="$saved_LIBS -L$1 -lkadm5clnt -lkrb5 -lasn1 -lkadm5clnt -lroken $LIB_SOCKET"
39 AC_TRY_LINK(,
40 [krb5_get_in_tkt();],
41 [ac_cv_found_libheimdal_lib=yes],
42 ac_cv_found_libheimdal_lib=no)
43 LIBS=$saved_LIBS
44 ])
45
46 AC_DEFUN([CMU_LIBHEIMDAL_LIB_WHERE], [
47    for i in $1; do
48       AC_MSG_CHECKING(for heimdal libraries in $i)
49       CMU_LIBHEIMDAL_LIB_WHERE1($i)
50       CMU_TEST_LIBPATH($i, krb5)
51       if test "$ac_cv_found_libheimdal_lib" = "yes" ; then
52         ac_cv_libheimdal_where_lib=$i
53         AC_MSG_RESULT(found)
54         break
55       else
56         AC_MSG_RESULT(not found)
57       fi
58     done
59 ])
60
61 AC_DEFUN([CMU_LIBHEIMDAL_LIBDES], [
62   AC_REQUIRE([CMU_LIBSSL])
63   cmu_save_LIBS=$LIBS
64   AC_MSG_CHECKING([if libdes is needed])
65   AC_TRY_LINK([],[des_quad_cksum();],HEIM_DES_LIB="",HEIM_DES_LIB="maybe")
66   if test "X$HEIM_DES_LIB" != "X"; then
67       LIBS="$cmu_save_LIBS -L$1 -ldes"
68       AC_TRY_LINK([], [des_quad_cksum();],HEIM_DES_LIB="yes")
69       if test "X$HEIM_DES_LIB" = "Xyes"; then
70           AC_MSG_RESULT([yes])
71           HEIM_LIBDES="-ldes"
72           HEIM_LIBDESA="$1/libdes.a"
73       else
74           LIBS="$cmu_save_LIBS $LIBSSL_LIB_FLAGS"
75           AC_TRY_LINK([],
76           [des_quad_cksum();],HEIM_DES_LIB="libcrypto")
77           if test "X$HEIM_DES_LIB" = "Xlibcrypto"; then
78               AC_MSG_RESULT([libcrypto])
79               HEIM_LIBDES="$LIBSSL_LIB_FLAGS"
80               HEIM_LIBDESA="$LIBSSL_LIB_FLAGS"
81           else
82               LIBS="$cmu_save_LIBS -L$LIBSSL_LIB_DIR -ldescompat $LIBSSL_LIB_FLAGS"
83               AC_TRY_LINK([],
84               [des_quad_cksum();],HEIM_DES_LIB="libcrypto+descompat")
85               if test "X$HEIM_DES_LIB" = "Xlibcrypto+descompat"; then
86                   AC_MSG_RESULT([libcrypto+descompat])
87                   HEIM_LIBDES="-L$LIBSSL_LIB_DIR -ldescompat $LIBSSL_LIB_FLAGS"
88                   HEIM_LIBDESA="-L$LIBSSL_LIB_DIR -ldescompat $LIBSSL_LIB_FLAGS"
89               else
90                   AC_MSG_RESULT([unknown])
91                   AC_MSG_ERROR([Could not use -ldes])
92               fi 
93           fi 
94       fi 
95   else
96      AC_MSG_RESULT([no])
97   fi
98 ])
99
100 AC_DEFUN([CMU_LIBHEIMDAL], [
101 AC_REQUIRE([CMU_FIND_LIB_SUBDIR])
102 AC_REQUIRE([CMU_SOCKETS])
103 AC_REQUIRE([CMU_USE_COMERR])
104 AC_ARG_WITH(LIBHEIMDAL,
105         [  --with-libheimdal=PREFIX      Compile with Heimdal support],
106         [if test "X$with_libheimdal" = "X"; then
107                 with_libheimdal=yes
108         fi])
109 AC_ARG_WITH(libheimdal-lib,
110         [  --with-libheimdal-lib=dir     use heimdal libraries in dir],
111         [if test "$withval" = "yes" -o "$withval" = "no"; then
112                 AC_MSG_ERROR([No argument for --with-libheimdal-lib])
113         fi])
114 AC_ARG_WITH(libheimdal-include,
115         [  --with-libheimdal-include=dir use heimdal headers in dir],
116         [if test "$withval" = "yes" -o "$withval" = "no"; then
117                 AC_MSG_ERROR([No argument for --with-libheimdal-include])
118         fi])
119
120         if test "X$with_libheimdal" != "X"; then
121           if test "$with_libheimdal" != "yes" -a "$with_libheimdal" != "no"; then
122             ac_cv_libheimdal_where_lib=$with_libheimdal/$CMU_LIB_SUBDIR
123             ac_cv_libheimdal_where_inc=$with_libheimdal/include
124           fi
125         fi
126
127         if test "$with_libheimdal" != "no"; then
128           if test "X$with_libheimdal_lib" != "X"; then
129             ac_cv_libheimdal_where_lib=$with_libheimdal_lib
130           fi
131           if test "X$ac_cv_libheimdal_where_lib" = "X"; then
132             CMU_LIBHEIMDAL_LIB_WHERE(/usr/athena/$CMU_LIB_SUBDIR /usr/$CMU_LIB_SUBDIR /usr/heimdal/$CMU_LIB_SUBDIR /usr/local/$CMU_LIB_SUBDIR)
133           fi
134
135           if test "X$with_libheimdal_include" != "X"; then
136             ac_cv_libheimdal_where_inc=$with_libheimdal_include
137           fi
138           if test "X$ac_cv_libheimdal_where_inc" = "X"; then
139             CMU_LIBHEIMDAL_INC_WHERE(/usr/athena/include /usr/heimdal/include /usr/local/include)
140           fi
141         fi
142
143         AC_MSG_CHECKING(whether to include heimdal)
144         if test "X$ac_cv_libheimdal_where_lib" = "X" -a "X$ac_cv_libheimdal_where_inc" = "X"; then
145           ac_cv_found_libheimdal=no
146           AC_MSG_RESULT(no)
147         else
148           ac_cv_found_libheimdal=yes
149           AC_MSG_RESULT(yes)
150           LIBHEIMDAL_INC_DIR=$ac_cv_libheimdal_where_inc
151           LIBHEIMDAL_LIB_DIR=$ac_cv_libheimdal_where_lib
152           CMU_LIBHEIMDAL_LIBDES($LIBHEIMDAL_LIB_DIR)
153           LIBHEIMDAL_INC_FLAGS="-I${LIBHEIMDAL_INC_DIR}"
154           LIBHEIMDAL_LIB_FLAGS="-L${LIBHEIMDAL_LIB_DIR} -lkadm5clnt -lkrb5 -lasn1 ${HEIM_LIBDES} -lroken $LIB_SOCKET"
155           AC_SUBST(LIBHEIMDAL_INC_FLAGS)
156           AC_SUBST(LIBHEIMDAL_LIB_FLAGS)
157           if test "X$RPATH" = "X"; then
158                 RPATH=""
159           fi
160           case "${host}" in
161             *-*-linux*)
162               if test "X$RPATH" = "X"; then
163                 RPATH="-Wl,-rpath,${LIBHEIMDAL_LIB_DIR}"
164               else 
165                 RPATH="${RPATH}:${LIBHEIMDAL_LIB_DIR}"
166               fi
167               ;;
168             *-*-hpux*)
169               if test "X$RPATH" = "X"; then
170                 RPATH="-Wl,+b${LIBHEIMDAL_LIB_DIR}"
171               else 
172                 RPATH="${RPATH}:${LIBHEIMDAL_LIB_DIR}"
173               fi
174               ;;
175             *-*-irix*)
176               if test "X$RPATH" = "X"; then
177                 RPATH="-Wl,-rpath,${LIBHEIMDAL_LIB_DIR}"
178               else 
179                 RPATH="${RPATH}:${LIBHEIMDAL_LIB_DIR}"
180               fi
181               ;;
182             *-*-solaris2*)
183               if test "$ac_cv_prog_gcc" = yes; then
184                 if test "X$RPATH" = "X"; then
185                   RPATH="-Wl,-R${LIBHEIMDAL_LIB_DIR}"
186                 else 
187                   RPATH="${RPATH}:${LIBHEIMDAL_LIB_DIR}"
188                 fi
189               else
190                 RPATH="${RPATH} -R${LIBHEIMDAL_LIB_DIR}"
191               fi
192               ;;
193           esac
194           AC_SUBST(RPATH)
195         fi
196         ])
197