GSS_S_PROMPTING_NEEDED is a bit
[cyrus-sasl.git] / cmulocal / kerberos_v5.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: kerberos_v5.m4,v 1.9 2005/04/26 19:14:08 shadow Exp $
5
6 AC_DEFUN([CMU_KRB5_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_krb5_inc=yes,
12 ac_cv_found_krb5_inc=no)
13 CPPFLAGS=$saved_CPPFLAGS
14 ])
15
16 AC_DEFUN([CMU_KRB5_INC_WHERE], [
17    for i in $1; do
18       AC_MSG_CHECKING(for krb5 headers in $i)
19       CMU_KRB5_INC_WHERE1($i)
20       CMU_TEST_INCPATH($i, krb5)
21       if test "$ac_cv_found_krb5_inc" = "yes"; then
22         ac_cv_krb5_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_KRB5_LIB_WHERE1], [
36 saved_LIBS=$LIBS
37 LIBS="$saved_LIBS -L$1 -lkrb5 -lk5crypto"
38 AC_TRY_LINK(,
39 [krb5_get_in_tkt();],
40 [ac_cv_found_krb5_lib=yes],
41 ac_cv_found_krb5_lib=no)
42 LIBS=$saved_LIBS
43 ])
44
45 AC_DEFUN([CMU_KRB5_LIB_WHERE], [
46    for i in $1; do
47       AC_MSG_CHECKING(for krb5 libraries in $i)
48       CMU_KRB5_LIB_WHERE1($i)
49       CMU_TEST_LIBPATH($i, krb5)
50       if test "$ac_cv_found_krb5_lib" = "yes" ; then
51         ac_cv_krb5_where_lib=$i
52         AC_MSG_RESULT(found)
53         break
54       else
55         AC_MSG_RESULT(not found)
56       fi
57     done
58 ])
59
60 AC_DEFUN([CMU_KRB5], [
61 AC_REQUIRE([CMU_FIND_LIB_SUBDIR])
62 AC_REQUIRE([CMU_SOCKETS])
63 AC_REQUIRE([CMU_USE_COMERR])
64 AC_ARG_WITH(krb5,
65         [  --with-krb5=PREFIX      Compile with Kerberos 5 support],
66         [if test "X$with_krb5" = "X"; then
67                 with_krb5=yes
68         fi])
69 AC_ARG_WITH(krb5-lib,
70         [  --with-krb5-lib=dir     use kerberos 5 libraries in dir],
71         [if test "$withval" = "yes" -o "$withval" = "no"; then
72                 AC_MSG_ERROR([No argument for --with-krb5-lib])
73         fi])
74 AC_ARG_WITH(krb5-include,
75         [  --with-krb5-include=dir use kerberos 5 headers in dir],
76         [if test "$withval" = "yes" -o "$withval" = "no"; then
77                 AC_MSG_ERROR([No argument for --with-krb5-include])
78         fi])
79 AC_ARG_WITH(krb5-impl,
80         [  --with-krb5-impl=heimdal use heimdal kerberos 5 libraries
81   --with-krb5-impl=mit     use MIT kerberos 5 libraries],
82         [if test "$withval" != "heimdal" -a "$withval" != "mit"; then
83                 AC_MSG_ERROR([Invalid argument for --with-krb5-impl])
84         fi])
85
86         if test "X$with_krb5" != "X"; then
87           if test "$with_krb5" != "yes" -a "$with_krb5" != "no"; then
88             ac_cv_krb5_where_lib=$with_krb5/$CMU_LIB_SUBDIR
89             ac_cv_krb5_where_inc=$with_krb5/include
90             ac_cv_krb5_impl=mit
91           fi
92         fi
93
94         if test "$with_krb5" != "no"; then
95           if test "X$with_krb5_lib" != "X"; then
96             ac_cv_krb5_where_lib=$with_krb5_lib
97             ac_cv_krb5_impl=mit
98           fi
99           if test "X$with_krb5_impl" != "X"; then
100             ac_cv_krb5_impl=$with_krb5_impl
101           fi
102           if test "X$ac_cv_krb5_where_lib" = "X" -a "X$with_krb5_impl" != "Xheimdal"; then
103             CMU_KRB5_LIB_WHERE(/usr/athena/$CMU_LIB_SUBDIR /usr/$CMU_LIB_SUBDIR /usr/local/$CMU_LIB_SUBDIR)
104             if test "X$ac_cv_krb5_where_lib" != "X"; then
105               ac_cv_krb5_impl=mit
106             fi
107           fi
108           if test "X$ac_cv_krb5_where_lib" = "X" -a "X$with_krb5_impl" != "Xmit"; then
109             CMU_LIBHEIMDAL_LIB_WHERE(/usr/athena/$CMU_LIB_SUBDIR /usr/$CMU_LIB_SUBDIR /usr/heimdal/$CMU_LIB_SUBDIR /usr/local/$CMU_LIB_SUBDIR)
110             if test "X$ac_cv_libheimdal_where_lib" != "X"; then
111               ac_cv_krb5_where_lib=$ac_cv_libheimdal_where_lib
112               ac_cv_krb5_impl=heimdal
113             fi
114           fi
115
116           if test "X$with_krb5_include" != "X"; then
117             ac_cv_krb5_where_inc=$with_krb5_include
118           fi
119           if test "X$ac_cv_krb5_where_inc" = "X"; then
120             CMU_KRB5_INC_WHERE(/usr/athena/include /usr/include/kerberos /usr/local/include /usr/include)
121           fi
122         fi
123
124         AC_MSG_CHECKING(whether to include kerberos 5)
125         if test "X$ac_cv_krb5_where_lib" = "X" -o "X$ac_cv_krb5_where_inc" = "X"; then
126           ac_cv_found_krb5=no
127           AC_MSG_RESULT(no)
128         else
129           ac_cv_found_krb5=yes
130           AC_MSG_RESULT(yes)
131           KRB5_INC_DIR=$ac_cv_krb5_where_inc
132           KRB5_LIB_DIR=$ac_cv_krb5_where_lib
133           if test "X$ac_cv_krb5_impl" != "Xheimdal"; then
134             KRB5_LIB_FLAGS="-L${KRB5_LIB_DIR} -lkrb5 -lk5crypto"
135           else
136             CMU_LIBHEIMDAL_LIBDES($KRB5_LIB_DIR)
137             KRB5_LIB_FLAGS="-L${KRB5_LIB_DIR} -lkadm5clnt -lkrb5 -lasn1 ${HEIM_LIBDES} -lroken $LIB_SOCKET"
138             AC_DEFINE(HEIMDAL,,[we found heimdal krb5 and not MIT krb5])
139           fi
140           KRB5_INC_FLAGS="-I${KRB5_INC_DIR}"
141           AC_SUBST(KRB5_INC_FLAGS)
142           AC_SUBST(KRB5_LIB_FLAGS)
143           AC_DEFINE(HAVE_KRB5,,[Kerberos V5 is present])dnl zephyr uses this
144           AC_DEFINE(KRB5,,[Use Kerberos 5. (maybe find what needs this and nuke it)])
145           if test "X$RPATH" = "X"; then
146                 RPATH=""
147           fi
148           case "${host}" in
149             *-*-linux*)
150               if test "X$RPATH" = "X"; then
151                 RPATH="-Wl,-rpath,${KRB5_LIB_DIR}"
152               else 
153                 RPATH="${RPATH}:${KRB5_LIB_DIR}"
154               fi
155               ;;
156             *-*-hpux*)
157               if test "X$RPATH" = "X"; then
158                 RPATH="-Wl,+b${KRB5_LIB_DIR}"
159               else 
160                 RPATH="${RPATH}:${KRB5_LIB_DIR}"
161               fi
162               ;;
163             *-*-irix*)
164               if test "X$RPATH" = "X"; then
165                 RPATH="-Wl,-rpath,${KRB5_LIB_DIR}"
166               else 
167                 RPATH="${RPATH}:${KRB5_LIB_DIR}"
168               fi
169               ;;
170             *-*-solaris2*)
171               if test "$ac_cv_prog_gcc" = yes; then
172                 if test "X$RPATH" = "X"; then
173                   RPATH="-Wl,-R${KRB5_LIB_DIR}"
174                 else 
175                   RPATH="${RPATH}:${KRB5_LIB_DIR}"
176                 fi
177               else
178                 RPATH="${RPATH} -R${KRB5_LIB_DIR}"
179               fi
180               ;;
181           esac
182           AC_SUBST(RPATH)
183         fi
184         ])
185