1dnl $Id: gssapi-check.m4,v 1.3 2005-04-28 20:50:05 bfernhomberg Exp $
2dnl Autoconf macro to check for kerberos
3
4AC_DEFUN([NETATALK_GSSAPI_CHECK], 
5[
6	FOUND_GSSAPI=no
7	GSSAPI_LIBS=""
8	GSSAPI_CFLAGS=""
9
10        AC_ARG_WITH(gssapi,
11                [  --with-gssapi[[=PATH]]    path to GSSAPI for Kerberos V UAM [[auto]]],
12                [compilegssapi=$withval],
13                [compilegssapi=auto]
14        )
15
16	if test x"$compilegssapi" != x"no"; then
17
18                if test "x$compilegssapi" != "xyes" -a "x$compilegssapi" != "xauto"; then
19            		GSSAPI_CFLAGS="-I$withval/include"
20            		GSSAPI_CPPFLAGS="-I$withval/include"
21            		GSSAPI_LDFLAGS="-L$withval/${atalk_libname}"
22            		FOUND_GSSAPI=yes
23			AC_MSG_CHECKING([checking for GSSAPI support in])
24			AC_MSG_RESULT([$compilegssapi])
25                fi
26
27
28  	  # Do no harm to the values of CFLAGS and LIBS while testing for
29	  # Kerberos support.
30
31		ac_save_CFLAGS=$CFLAGS
32		ac_save_CPPFLAGS=$CPPFLAGS
33		ac_save_LDFLAGS=$LDFLAGS
34		ac_save_LIBS=$LIBS
35
36	if test x$FOUND_GSSAPI = x"no"; then
37	  #################################################
38	  # check for krb5-config from recent MIT and Heimdal kerberos 5
39	  AC_PATH_PROG(KRB5_CONFIG, krb5-config)
40	  AC_MSG_CHECKING(for working krb5-config)
41	  if test -x "$KRB5_CONFIG"; then
42	    ac_save_CFLAGS=$CFLAGS
43	    CFLAGS="";export CFLAGS
44	    ac_save_LDFLAGS=$LDFLAGS
45	    LDFLAGS="";export LDFLAGS
46	    GSSAPI_LIBS="`$KRB5_CONFIG --libs gssapi`"
47	    GSSAPI_CFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`"
48	    GSSAPI_CPPFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`"
49	    CFLAGS=$ac_save_CFLAGS;export CFLAGS
50	    LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
51	    FOUND_GSSAPI=yes
52	    AC_MSG_RESULT(yes)
53	  else
54	    AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
55	  fi
56	fi
57
58	if test x$FOUND_GSSAPI = x"no"; then
59	#################################################
60	# see if this box has the SuSE location for the heimdal krb implementation
61	  AC_MSG_CHECKING(for /usr/include/heimdal)
62	  if test -d /usr/include/heimdal; then
63	    if test -f /usr/lib/heimdal/lib/libkrb5.a; then
64		GSSAPI_CFLAGS="-I/usr/include/heimdal"
65		GSSAPI_CPPFLAGS="-I/usr/include/heimdal"
66		GSSAPI_LDFLAGS="-L/usr/lib/heimdal/lib"
67		AC_MSG_RESULT(yes)
68            	FOUND_GSSAPI=yes
69	    else
70		GSSAPI_CFLAGS="-I/usr/include/heimdal"
71		GSSAPI_CPPFLAGS="-I/usr/include/heimdal"
72		AC_MSG_RESULT(yes)
73            	FOUND_GSSAPI=yes
74	    fi
75	  else
76	    AC_MSG_RESULT(no)
77	  fi
78	fi
79
80	if test x$FOUND_GSSAPI = x"no"; then
81	#################################################
82	# see if this box has the RedHat location for kerberos
83	  AC_MSG_CHECKING(for /usr/kerberos)
84	  if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
85		GSSAPI_LDFLAGS="-L/usr/kerberos/lib"
86		GSSAPI_CFLAGS="-I/usr/kerberos/include"
87		GSSAPI_CPPFLAGS="-I/usr/kerberos/include"
88		AC_MSG_RESULT(yes)
89	  else
90		AC_MSG_RESULT(no)
91	  fi
92	fi
93
94	CFLAGS="$CFLAGS $GSSAPI_CFLAGS"
95	CPPFLAGS="$CPPFLAGS $GSSAPI_CPPFLAGS"
96	LDFLAGS="$LDFLAGS $GSSAPI_LDFLAGS"
97	LIBS="$GSSAPI_LIBS"
98
99
100	# check for gssapi headers
101
102	gss_headers_found=no
103	AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h gssapi/gssapi_krb5.h,[gss_headers_found=yes],[],[])
104	if test x"$gss_headers_found" = x"no"; then
105		AC_MSG_ERROR([GSSAPI installation not found, headers missing])
106	fi
107
108	# check for libs
109
110	AC_CHECK_LIB(gssapi, gss_display_status) 
111	AC_CHECK_LIB(gssapi_krb5, gss_display_status) 
112	AC_CHECK_LIB(gss, gss_display_status) 
113
114	# check for functions
115
116  	AC_CHECK_FUNC(gss_acquire_cred,[],[AC_MSG_ERROR([GSSAPI: required function gss_acquire_cred missing])])
117
118	# Heimdal/MIT compatibility fix
119	if test "$ac_cv_header_gssapi_h" = "yes"; then
120	    AC_EGREP_HEADER(GSS_C_NT_HOSTBASED_SERVICE, gssapi.h, AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE,1,[Wheter GSS_C_NT_HOSTBASED_SERVICE is in gssapi.h]))
121	else
122	    AC_EGREP_HEADER(GSS_C_NT_HOSTBASED_SERVICE, gssapi/gssapi.h, AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE,1,[Wheter GSS_C_NT_HOSTBASED_SERVICE is in gssapi.h]))
123	fi
124
125
126	AC_MSG_CHECKING(whether GSSAPI support is used)
127	if test x"$ac_cv_func_gss_acquire_cred" = x"yes"; then
128   		AC_DEFINE(HAVE_GSSAPI,1,[Whether to enable GSSAPI support])
129		AC_MSG_RESULT([yes])
130		GSSAPI_LIBS="$LDFLAGS $LIBS"
131	else
132		AC_MSG_RESULT([no])
133		if test x"$compilegssapi" = x"yes"; then
134			AC_MSG_ERROR([GSSAPI installation not found])
135		fi
136        	GSSAPI_LIBS=""
137	fi
138
139        LIBS="$ac_save_LIBS"
140        CFLAGS="$ac_save_CFLAGS"
141        LDFLAGS="$ac_save_LDFLAGS"
142        CPPFLAGS="$ac_save_CPPFLAGS"
143	fi
144
145        if test x"$ac_cv_func_gss_acquire_cred" = x"yes"; then
146                ifelse([$1], , :, [$1])
147        else
148                ifelse([$2], , :, [$2])
149        fi
150
151
152	AC_SUBST(GSSAPI_LIBS)
153	AC_SUBST(GSSAPI_CFLAGS)
154
155])
156